1name: CI23on: [push]45jobs:6 test:7 name: Test Suite8 runs-on: ubuntu-latest9 steps:10 - name: Checkout sources11 uses: actions/checkout@v212 - name: Install stable toolchain13 uses: actions-rs/toolchain@v114 with:15 toolchain: stable16 override: true17 - name: Run tests18 uses: actions-rs/cargo@v119 with:20 command: test21 args: --all2223 cargo-release:24 if: startsWith(github.ref, 'refs/tags/')25 needs: [test]26 runs-on: ubuntu-latest27 steps:28 - name: Checkout sources29 uses: actions/checkout@v230 - name: Install stable toolchain31 uses: actions-rs/toolchain@v132 with:33 toolchain: stable34 override: true35 - name: Install cargo release command36 uses: actions-rs/cargo@v137 with:38 command: install39 args: cargo-release40 - name: Run cargo login41 uses: actions-rs/cargo@v142 with:43 command: login44 args: ${{ secrets.CARGO_TOKEN }}45 - name: Publish crates46 uses: actions-rs/cargo@v147 with:48 command: release49 args: --no-dev-version --skip-push --skip-tag --no-confirm5051 github-release:52 if: startsWith(github.ref, 'refs/tags/')53 needs: [test]54 strategy:55 matrix:56 target:57 58 - aarch64-unknown-linux-gnu59 - i686-pc-windows-gnu60 - i686-pc-windows-msvc61 - i686-unknown-linux-gnu62 - x86_64-apple-darwin63 - x86_64-pc-windows-gnu64 - x86_64-pc-windows-msvc65 - x86_64-unknown-linux-gnu6667 68 - x86_64-unknown-linux-musl69 include:70 - target: aarch64-unknown-linux-gnu71 os: ubuntu-latest72 bin: jrsonnet73 name: jrsonnet-linux-gnu-aarch6474 - target: i686-pc-windows-gnu75 os: windows-latest76 bin: jrsonnet.exe77 name: jrsonnet-windows-gnu-i686.exe78 - target: i686-pc-windows-msvc79 os: windows-latest80 bin: jrsonnet.exe81 name: jrsonnet-windows-msvc-i686.exe82 - target: i686-unknown-linux-gnu83 os: ubuntu-latest84 bin: jrsonnet85 name: jrsonnet-linux-gnu-i68686 - target: x86_64-apple-darwin87 os: macOS-latest88 bin: jrsonnet89 name: jrsonnet-darwin-amd6490 - target: x86_64-pc-windows-gnu91 os: windows-latest92 bin: jrsonnet.exe93 name: jrsonnet-windows-gnu-amd64.exe94 - target: x86_64-pc-windows-msvc95 os: windows-latest96 bin: jrsonnet.exe97 name: jrsonnet-windows-msvc-amd64.exe98 - target: x86_64-unknown-linux-gnu99 os: ubuntu-latest100 bin: jrsonnet101 name: jrsonnet-linux-gnu-amd64102103 - target: x86_64-unknown-linux-musl104 os: ubuntu-latest105 bin: jrsonnet106 name: jrsonnet-linux-musl-amd64107 runs-on: ${{ matrix.os }}108 steps:109 - name: Install stable toolchain110 uses: actions-rs/toolchain@v1111 with:112 toolchain: stable113 override: true114 target: ${{ matrix.target }}115116 - name: Checkout117 uses: actions/checkout@v2118119 - name: Linux x86 cross compiler120 if: ${{ matrix.target == 'i686-unknown-linux-gnu' }}121 run: sudo apt install gcc-multilib122123 - name: Windows x86 cross compiler124 if: ${{ matrix.target == 'i686-pc-windows-gnu' }}125 uses: egor-tensin/setup-mingw@v2126 with:127 platform: x86128129 - name: Musl gcc130 if: ${{ endsWith(matrix.target, '-musl') }}131 run: sudo apt install musl musl-tools132133 - name: ARM cross compiler134 if: ${{ startsWith(matrix.target, 'aarch64-unknown-linux-') }}135 uses: actions-rs/cargo@v1136 with:137 command: install138 args: cross139140 - name: ARM gcc141 if: ${{ startsWith(matrix.target, 'aarch64-unknown-linux-') }}142 run: sudo apt install gcc-aarch64-linux-gnu143144 - name: Run ARM build145 if: ${{ startsWith(matrix.target, 'aarch64-unknown-linux-') }}146 shell: bash147 run: cross build --bin=jrsonnet --release --target ${{ matrix.target }}148149 - name: Run ARM strip150 if: ${{ startsWith(matrix.target, 'aarch64-unknown-linux-') }}151 shell: bash152 run: aarch64-linux-gnu-strip target/${{ matrix.target }}/release/${{ matrix.bin }}153154 - name: Run build155 if: ${{ !startsWith(matrix.target, 'aarch64-unknown-linux-') }}156 uses: actions-rs/cargo@v1157 with:158 command: build159 args: --bin=jrsonnet --release --target ${{ matrix.target }}160161 - name: Run strip162 if: ${{ !startsWith(matrix.target, 'aarch64-unknown-linux-') }}163 shell: bash164 run: strip target/${{ matrix.target }}/release/${{ matrix.bin }}165166 - name: Package167 shell: bash168 run: |169 cd target/${{ matrix.target }}/release170171 cp ${{ matrix.bin }} ../../../${{ matrix.name }}172 cd -173174 - name: Generate SHA-256175 run: shasum -a 256 ${{ matrix.name }} > ${{ matrix.name }}.sha256176177 - name: Publish178 uses: softprops/action-gh-release@v1179 with:180 draft: true181 files: "jrsonnet*"182 env:183 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}