1name: Release2on:3 push:4 tags: [ 'v*' ]5jobs:6 tests:7 uses: ./.github/workflows/test.yaml89 cargo-release:10 if: !endsWith(github.ref, '-test')11 needs: [ tests ]12 runs-on: ubuntu-latest13 steps:14 - uses: actions/checkout@v4.1.415 - name: Install stable toolchain16 uses: actions-rust-lang/setup-rust-toolchain@v1.8.017 with:18 toolchain: stable19 - run: cargo install cargo-release20 - run: cargo login ${{ secrets.CARGO_TOKEN }}21 - run: cargo release --no-dev-version --skip-push --skip-tag --no-confirm2223 github-release:24 needs: [ tests ]25 strategy:26 matrix:27 target:28 # Linux build notes:29 # While musl targets are not as supported as gnu, those are most relevant to users,30 # which want to download binaries from github, as glibc has compatibility issues31 # with older distros3233 # Tier 134 - i686-pc-windows-msvc35 - x86_64-apple-darwin36 - x86_64-pc-windows-msvc3738 # Tier 239 - aarch64-apple-darwin40 - aarch64-unknown-linux-musl41 - i686-unknown-linux-musl42 - x86_64-unknown-linux-musl43 include:44 # Linux45 - target: aarch64-unknown-linux-musl46 os: ubuntu-latest47 bin: jrsonnet48 name: jrsonnet-linux-aarch6449 - target: i686-unknown-linux-musl50 os: ubuntu-latest51 bin: jrsonnet52 name: jrsonnet-linux-i68653 - target: x86_64-unknown-linux-musl54 os: ubuntu-latest55 bin: jrsonnet56 name: jrsonnet-linux-amd645758 # Windows59 - target: i686-pc-windows-msvc60 os: windows-latest61 bin: jrsonnet.exe62 name: jrsonnet-windows-i686.exe63 - target: x86_64-pc-windows-msvc64 os: windows-latest65 bin: jrsonnet.exe66 name: jrsonnet-windows-amd64.exe6768 # Apple69 - target: aarch64-apple-darwin70 os: macOS-latest71 bin: jrsonnet72 name: jrsonnet-darwin-aarch6473 - target: x86_64-apple-darwin74 os: macOS-latest75 bin: jrsonnet76 name: jrsonnet-darwin-amd6477 runs-on: ${{ matrix.os }}78 steps:79 - name: Fetch apt repo updates80 if: ${{ startsWith(matrix.os, 'ubuntu-') }}81 run: sudo apt update8283 - name: Install stable toolchain84 uses: actions-rust-lang/setup-rust-toolchain@v1.8.085 with:86 toolchain: stable87 target: ${{ matrix.target }}8889 - uses: actions/checkout@v4.1.49091 - name: Add experimental flags92 if: ${{ endsWith(github.ref, '-test' )}}93 run: echo 'EXPERIMENTAL_FLAGS=--features=experimental' >> $GITHUB_ENV9495 - name: Linux x86 cross compiler96 if: ${{ startsWith(matrix.target, 'i686-unknown-linux-') }}97 run: sudo apt install gcc-multilib9899 - name: ARM cross compiler100 if: ${{ startsWith(matrix.target, 'aarch64-unknown-linux-') }}101 uses: actions-rs/cargo@v1102 with:103 command: install104 args: cross105106 - name: ARM gcc107 if: ${{ startsWith(matrix.target, 'aarch64-unknown-linux-') }}108 run: sudo apt install gcc-aarch64-linux-gnu109110 - name: Musl gcc111 if: ${{ endsWith(matrix.target, '-musl') }}112 run: sudo apt install musl musl-tools113114 - name: Run cross build115 if: ${{ startsWith(matrix.target, 'aarch64-unknown-linux-') }}116 shell: bash117 run: cross build --bin=jrsonnet --release --target ${{ matrix.target }} ${{ env.EXPERIMENTAL_FLAGS }}118119 - name: Run build120 if: ${{ !startsWith(matrix.target, 'aarch64-unknown-linux-') }}121 run: cargo build --bin=jrsonnet --release --target ${{ matrix.target }} ${{ env.EXPERIMENTAL_FLAGS }}122123 - name: Package124 shell: bash125 run: |126 cd target/${{ matrix.target }}/release127128 cp ${{ matrix.bin }} ../../../${{ matrix.name }}129 cd -130131 - name: Generate SHA-256132 run: shasum -a 256 ${{ matrix.name }} > ${{ matrix.name }}.sha256133134 - name: Publish135 uses: softprops/action-gh-release@v2.0.4136 with:137 draft: true138 files: "jrsonnet*"139 env:140 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}