name: Release Ninja Binaries on: pull_request: push: release: types: published jobs: build: runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, macOS-latest, windows-latest] include: - os: ubuntu-latest zip_name: ninja-linux - os: macOS-latest zip_name: ninja-mac - os: windows-latest zip_name: ninja-win steps: - uses: actions/checkout@v1 # Install OS specific dependencies - name: Install Linux dependencies if: matrix.os == 'ubuntu-latest' run: sudo apt-get install re2c - name: Install macOS dependencies if: matrix.os == 'macOS-latest' run: brew install re2c p7zip cmake - name: Install Windows dependencies if: matrix.os == 'windows-latest' run: choco install re2c - name: Build ninja shell: bash run: | mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=Release .. cmake --build . --parallel --config Release --target ninja - name: Strip Linux binary if: matrix.os == 'ubuntu-latest' run: cd build && strip ninja - name: Create ninja archive shell: bash env: ZIP_NAME: ${{ matrix.zip_name }} run: | mkdir artifact 7z a artifact/${ZIP_NAME}.zip $(find ./build -name ninja -or -name ninja.exe) # Upload ninja binary archive as an artifact - name: Upload artifact uses: actions/upload-artifact@v1 with: name: ninja-binary-archives path: artifact - name: Upload release asset if: github.event.action == 'published' uses: actions/upload-release-asset@v1.0.1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ github.event.release.upload_url }} asset_path: ./artifact/${{ matrix.zip_name }}.zip asset_name: ${{ matrix.zip_name }}.zip asset_content_type: application/zip