# Based on ripgrep's release action: # https://github.com/BurntSushi/ripgrep/blob/master/.github/workflows/release.yml name: Build Release Binaries on: release: types: [created] jobs: build-release: name: build-release runs-on: ${{ matrix.os }} strategy: matrix: build: [linux, macos, win-msvc] include: - build: linux os: ubuntu-22.04 target: x86_64-unknown-linux-gnu - build: macos os: macos-12 target: x86_64-apple-darwin - build: win-msvc os: windows-2022 target: x86_64-pc-windows-msvc steps: - uses: actions/checkout@v3 - uses: dtolnay/rust-toolchain@stable - name: Build release binary run: cargo build -p typst-cli --release - name: Strip binary (Linux and macOS) if: matrix.build == 'linux' || matrix.build == 'macos' run: strip "target/release/typst" - name: Build archive shell: bash run: | directory="typst-${{ matrix.target }}" mkdir "$directory" cp {README.md,LICENSE,NOTICE} "$directory/" if [ "${{ matrix.os }}" = "windows-2022" ]; then cp "target/release/typst.exe" "$directory/" 7z a "$directory.zip" "$directory" echo "ASSET=$directory.zip" >> $GITHUB_ENV else cp "target/release/typst" "$directory/" tar czf "$directory.tar.gz" "$directory" echo "ASSET=$directory.tar.gz" >> $GITHUB_ENV fi - name: Upload release archive uses: actions/upload-release-asset@v1.0.2 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ github.event.release.upload_url }} asset_path: ${{ env.ASSET }} asset_name: ${{ env.ASSET }} asset_content_type: application/octet-stream