name: Binary on: workflow_run: workflows: [Deploy] types: [completed] release: types: [created] workflow_dispatch: jobs: get_last_release: runs-on: ubuntu-latest outputs: latest_release_tag: ${{ steps.latest-release.outputs.LATEST_RELEASE_TAG }} steps: - uses: actions/checkout@v4 - name: Extract the latest release id: latest-release run: echo "LATEST_RELEASE_TAG=$(gh release ls --json isLatest,tagName -q '.[] | select(.isLatest == true) | .tagName')" >> $GITHUB_OUTPUT env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} build: if: ${{ github.event_name != 'workflow_run' || github.event.workflow_run.conclusion == 'success' }} name: Build runs-on: ubuntu-latest needs: get_last_release strategy: fail-fast: false matrix: platform: - {target: x86_64-unknown-linux-gnu, zipext: ".tar.gz"} - {target: aarch64-unknown-linux-gnu, zipext: ".tar.gz"} steps: - uses: actions/checkout@v4 with: ref: ${{ needs.get_last_release.outputs.latest_release_tag }} - uses: taiki-e/install-action@v2 with: tool: cross - name: Add OpenSSL crate (vendored) run: cargo add openssl --features vendored - name: Cross Build Release run: cross build --locked --release --target=${{ matrix.platform.target }} - name: Get name of Binary from metadata run: echo "BINARY_NAME=$(cargo metadata --no-deps --format-version 1 | jq -r '.packages[].targets[] | select( .kind | map(. == "bin") | any ) | .name')" >> $GITHUB_ENV - name: Compress the built binary if: ${{ matrix.platform.zipext == '.tar.gz' }} run: tar -zcvf ${{env.BINARY_NAME}}-${{needs.get_last_release.outputs.latest_release_tag}}-${{matrix.platform.target}}.tar.gz -C target/${{matrix.platform.target}}/release ${{env.BINARY_NAME}} - name: Upload to release run: gh release upload ${{needs.get_last_release.outputs.latest_release_tag}} ${{env.BINARY_NAME}}-${{needs.get_last_release.outputs.latest_release_tag}}-${{matrix.platform.target}}${{matrix.platform.zipext}} env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} on-failure: runs-on: ubuntu-latest if: ${{ github.event_name == 'workflow_run' && github.event.workflow_run.conclusion == 'failure' }} steps: - run: echo 'The triggering workflow Deploy failed' - run: exit 1