name: Build on: [pull_request] jobs: build: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: include: - os: macOS-latest target: x86_64-apple-darwin rust_flags: '' features: '' binary_postfix: '' upx_args: --best strip: true - os: ubuntu-latest target: x86_64-unknown-linux-gnu rust_flags: '' features: '' binary_postfix: '' upx_args: --best --lzma strip: true - os: ubuntu-latest target: x86_64-unknown-linux-musl rust_flags: '' features: '' binary: 'taskwarrior-tui-x86_64-unknown-linux-musl' upx_args: --best --lzma strip: true - os: windows-latest target: x86_64-pc-windows-gnu rust_flags: -C target-feature=+crt-static features: '' binary_postfix: '.exe' upx_args: -9 strip: false - os: windows-latest target: x86_64-pc-windows-msvc rust_flags: -C target-feature=+crt-static features: '' binary_postfix: '.exe' upx_args: -9 strip: false - os: windows-latest target: i686-pc-windows-msvc rust_flags: -C target-feature=+crt-static features: '' binary_postfix: '.exe' upx_args: -9 strip: false env: RUSTFLAGS: ${{ matrix.rust_flags }} MACOSX_DEPLOYMENT_TARGET: 10.7 steps: - uses: actions/checkout@master - uses: actions-rs/toolchain@v1 with: toolchain: stable target: ${{ matrix.target }} default: true - uses: actions-rs/cargo@v1 with: command: build args: --release ${{matrix.features}} --target=${{ matrix.target }} - name: Compress binaries uses: svenstaro/upx-action@v2 with: file: target/${{ matrix.target }}/release/taskwarrior-tui${{ matrix.binary_postfix }} args: ${{ matrix.upx_args }} strip: ${{ matrix.strip }} - name: Packaging binary shell: bash run: | cd target/${{ matrix.target }}/release tar czvf taskwarrior-tui-${{ matrix.target }}.tar.gz taskwarrior-tui${{ matrix.binary_postfix }} if [[ ${{ runner.os }} == 'Windows' ]]; then certutil -hashfile taskwarrior-tui-${{ matrix.target }}.tar.gz sha256 | grep -E [A-Fa-f0-9]{64} > taskwarrior-tui-${{ matrix.target }}.sha256 else shasum -a 256 taskwarrior-tui-${{ matrix.target }}.tar.gz > taskwarrior-tui-${{ matrix.target }}.sha256 fi - name: Upload artifacts uses: actions/upload-artifact@v2 with: name: taskwarrior-tui path: target/${{ matrix.target }}/release/taskwarrior-tui-${{ matrix.target }}.tar.gz - name: Releasing assets if: startsWith(github.ref, 'refs/tags/') uses: softprops/action-gh-release@v1 with: files: | target/${{ matrix.target }}/release/taskwarrior-tui-${{ matrix.target }}.tar.gz target/${{ matrix.target }}/release/taskwarrior-tui-${{ matrix.target }}.sha256 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}