name: Extract executable binary, upload artifacts, create release on: workflow_run: workflows: - "Build and publish docker" types: - "completed" branches: - main - develop jobs: on-success: runs-on: ubuntu-latest if: ${{ github.event_name == 'workflow_run' && github.event.workflow_run.conclusion == 'success' }} || ${{ github.event_name == 'pull_request' }} 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.ref_name == 'main' }} needs: on-success steps: # - name: check pull_request title # uses: actions-ecosystem/action-regex-match@v2 # id: regex-match # with: # text: ${{ github.event.pull_request.title }} # regex: "^(\\d+\\.\\d+\\.\\d+)$" - name: retrive github script context uses: actions/github-script@v6 with: script: | core.info(JSON.stringify(context.payload)) - 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.pull_request.title }} # tag_name: ${{ github.event.pull_request.title }} # body: ${{ github.event.pull_request.body }} # draft: true # prerelease: false # generate_release_notes: true