name: Build for release on: workflow_dispatch: # can't publish from dispatch workflow_call: inputs: publish: description: "Set to the release metadata JSON to publish the release" required: false type: string env: CARGO_TERM_COLOR: always CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse jobs: build: strategy: fail-fast: false matrix: include: - { o: macos-latest, t: x86_64-apple-darwin, r: true } - { o: macos-latest, t: aarch64-apple-darwin } - { o: ubuntu-latest, t: x86_64-unknown-linux-gnu, g: 2.17, r: true, c: true } - { o: ubuntu-latest, t: armv7-unknown-linux-gnueabihf, g: 2.17, c: true } - { o: ubuntu-latest, t: aarch64-unknown-linux-gnu, g: 2.17, c: true } - { o: ubuntu-latest, t: x86_64-unknown-linux-musl, r: true, c: true } - { o: ubuntu-latest, t: armv7-unknown-linux-musleabihf, c: true } - { o: ubuntu-latest, t: aarch64-unknown-linux-musl, c: true } - { o: windows-latest, t: x86_64-pc-windows-msvc, r: true } - { o: windows-latest, t: aarch64-pc-windows-msvc } name: ${{ matrix.t }} runs-on: ${{ matrix.o }} env: CARGO_BUILD_TARGET: ${{ matrix.t }} GLIBC_VERSION: ${{ matrix.g }} JUST_USE_CARGO_ZIGBUILD: ${{ matrix.c }} JUST_FOR_RELEASE: true JUST_USE_AUDITABLE: true steps: - uses: actions/checkout@v3 - uses: ./.github/actions/just-setup with: cache-suffix: release-${{ matrix.t }} tools: cargo-auditable - run: just toolchain rust-src - run: just ci-install-deps - run: just package - if: runner.os == 'Windows' run: Get-ChildItem packages/ - if: runner.os != 'Windows' run: ls -shal packages/ - name: Ensure release binary is runnable if: "matrix.r" run: just e2e-tests env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - if: inputs.publish name: Upload to release uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} tag: v${{ fromJSON(inputs.publish).version }} body: ${{ fromJSON(inputs.publish).notes }} file: packages/cargo-binstall-* file_glob: true - if: "! inputs.publish || runner.os == 'macOS'" name: Upload artifact uses: actions/upload-artifact@v3 with: name: ${{ matrix.t }} path: packages/cargo-binstall-* retention-days: 1 lipo: needs: build name: universal-apple-darwin runs-on: macos-latest env: JUST_FOR_RELEASE: true steps: - uses: actions/checkout@v3 - uses: ./.github/actions/just-setup with: indexcache: false buildcache: false - uses: actions/download-artifact@v3 with: name: x86_64-apple-darwin path: packages/ - uses: actions/download-artifact@v3 with: name: aarch64-apple-darwin path: packages/ - run: ls -shalr packages/ - run: just repackage-lipo - run: ls -shal packages/ - if: inputs.publish name: Upload to release uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} tag: v${{ fromJSON(inputs.publish).version }} release_name: v${{ fromJSON(inputs.publish).version }} body: ${{ fromJSON(inputs.publish).notes }} file: packages/cargo-binstall-universal-* file_glob: true overwrite: true - if: "! inputs.publish" name: Upload artifact uses: actions/upload-artifact@v3 with: name: universal-apple-darwin path: packages/cargo-binstall-universal-* retention-days: 1