name: Extract executable binary, upload artifacts, create release on: workflow_run: workflows: - "Release - Build and publish docker, and trigger package release" types: - "completed" branches: - main - develop repository_dispatch: types: - release-event jobs: on-success: runs-on: ubuntu-latest if: ${{ github.event_name == 'workflow_run' && github.event.workflow_run.conclusion == 'success' }} || ${{ github.event_name == 'repositry_dispatch' }} strategy: fail-fast: false matrix: include: - target: "gnu" platform: linux/amd64 - target: "gnu" platform: linux/arm64 - target: "musl" platform: linux/amd64 tags-suffix: "-slim" - target: "musl" platform: linux/arm64 tags-suffix: "-slim" - target: "gnu" build-feature: "-s2n" platform: linux/amd64 tags-suffix: "-s2n" - target: "gnu" build-feature: "-s2n" platform: linux/arm64 tags-suffix: "-s2n" - target: "gnu" build-feature: "-native-roots" platform: linux/amd64 tags-suffix: "-native-roots" - target: "gnu" build-feature: "-native-roots" platform: linux/arm64 tags-suffix: "-native-roots" - target: "musl" build-feature: "-native-roots" platform: linux/amd64 tags-suffix: "-slim-native-roots" - target: "musl" build-feature: "-native-roots" platform: linux/arm64 tags-suffix: "-slim-native-roots" - target: "gnu" build-feature: "-s2n-native-roots" platform: linux/amd64 tags-suffix: "-s2n-native-roots" - target: "gnu" build-feature: "-s2n-native-roots" platform: linux/arm64 tags-suffix: "-s2n-native-roots" steps: - run: "echo 'The relese triggering workflows passed'" - name: "set env" id: "set-env" run: | if [ ${{ matrix.platform }} == 'linux/amd64' ]; then PLATFORM_MAP="x86_64"; else PLATFORM_MAP="aarch64"; fi if [ ${{ github.ref_name }} == 'develop' ]; then BUILD_NAME="-nightly"; else BUILD_NAME=""; fi if [ ${{ github.ref_name }} == 'develop' ]; then BUILD_IMG="nightly"; else BUILD_IMG="latest"; fi echo "build_img=${BUILD_IMG}" >> $GITHUB_OUTPUT echo "target_name=rpxy${BUILD_NAME}-${PLATFORM_MAP}-unknown-linux-${{ matrix.target }}${{ matrix.build-feature }}" >> $GITHUB_OUTPUT - name: "docker pull and extract binary from docker image" id: "extract-binary" run: | CONTAINER_ID=`docker create --platform=${{ matrix.platform }} ghcr.io/junkurihara/rust-rpxy:${{ steps.set-env.outputs.build_img }}${{ matrix.tags-suffix }}` docker cp ${CONTAINER_ID}:/rpxy/bin/rpxy /tmp/${{ steps.set-env.outputs.target_name }} - name: "upload artifacts" uses: actions/upload-artifact@v3 with: name: ${{ steps.set-env.outputs.target_name }} path: "/tmp/${{ steps.set-env.outputs.target_name }}" on-failure: runs-on: ubuntu-latest if: ${{ github.event_name == 'workflow_run' && github.event.workflow_run.conclusion == 'failure' }} steps: - run: echo 'The release triggering workflows failed' release: runs-on: ubuntu-latest if: ${{ github.event_name == 'repository_dispatch' }} needs: on-success steps: - name: check pull_request title uses: kaisugi/action-regex-match@v1.0.0 id: regex-match with: text: ${{ github.event.client_payload.pull_request.title }} regex: "^(\\d+\\.\\d+\\.\\d+)$" - name: checkout if: ${{ steps.regex-match.outputs.match != '' }} uses: actions/checkout@v4 - name: download artifacts if: ${{ steps.regex-match.outputs.match != ''}} uses: actions/download-artifact@v3 with: path: /tmp/rpxy - name: make tar.gz of assets if: ${{ steps.regex-match.outputs.match != ''}} run: | mkdir /tmp/assets cd /tmp/rpxy for i in ./*; do sh -c "cd $i && tar zcvf $i.tar.gz $i && mv $i.tar.gz /tmp/assets/"; done ls -lha /tmp/assets - name: release if: ${{ steps.regex-match.outputs.match != ''}} uses: softprops/action-gh-release@v1 with: files: /tmp/assets/*.tar.gz name: ${{ github.event.client_payload.pull_request.title }} tag_name: ${{ github.event.client_payload.pull_request.title }} body: ${{ github.event.client_payload.pull_request.body }} draft: true prerelease: false generate_release_notes: true