name: Release - Combined Builds Flow on: workflow_dispatch: inputs: chain: description: The chain to use for runtime builds default: all required: true type: choice options: - all - zagros - asset-hub-zagros - bridge-hub-zagros - collectives-zagros - coretime-zagros - glutton-zagros - people-zagros runtime_dir: description: The runtime dir to be used (⚠️ this parameter is optional and needed only in case of the single runtime build, set it accordingly to the runtime you want to build) default: pezkuwi/runtime/zagros type: choice options: - pezkuwi/runtime/zagros - pezcumulus/teyrchains/runtimes/assets/asset-hub-zagros - pezcumulus/teyrchains/runtimes/bridge-hubs/bridge-hub-zagros - pezcumulus/teyrchains/runtimes/collectives/collectives-zagros - pezcumulus/teyrchains/runtimes/coretime/coretime-zagros - pezcumulus/teyrchains/runtimes/people/people-zagros - pezcumulus/teyrchains/runtimes/glutton/glutton-zagros binary: description: Binary to be built for the release candidate default: all type: choice options: - pezkuwi - pezkuwi-teyrchain - pezkuwi-omni-node - pezframe-omni-bencher - chain-spec-builder - bizinikiwi-node - eth-rpc - pez-subkey - all release_tag: description: Tag matching the actual release candidate with the format pezkuwi-stableYYMM(-X)-rcY or pezkuwi-stableYYMM(-X) type: string required: true no_runtimes: description: If true, no runtime build will be triggered and release draft will be published without runtimes (⚠️ use it for the patch releases of the latest stable) required: true type: boolean default: false jobs: # DISABLED: Workflow synchronization check # check-synchronization: # uses: pezkuwichain-release/sync-workflows/.github/workflows/check-synchronization.yml@main # secrets: # fork_writer_app_key: ${{ secrets.UPSTREAM_CONTENT_SYNC_APP_KEY }} validate-inputs: runs-on: ubuntu-latest outputs: release_tag: ${{ steps.validate_inputs.outputs.release_tag }} steps: - name: Checkout sources uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Validate inputs id: validate_inputs run: | . ./.github/scripts/common/lib.sh RELEASE_TAG=$(validate_stable_tag ${{ inputs.release_tag }}) echo "release_tag=${RELEASE_TAG}" >> $GITHUB_OUTPUT build-runtimes-flow: if: ${{ inputs.no_runtimes == false }} needs: [validate-inputs] uses: "./.github/workflows/release-21_build-runtimes.yml" with: chain: ${{ inputs.chain }} runtime_dir: ${{ inputs.runtime_dir }} release_tag: ${{ needs.validate-inputs.outputs.release_tag }} secrets: inherit permissions: id-token: write attestations: write contents: read build-rc-flow: needs: [validate-inputs] uses: "./.github/workflows/release-20_build-rc.yml" with: binary: ${{ inputs.binary }} release_tag: ${{ needs.validate-inputs.outputs.release_tag }} secrets: inherit permissions: id-token: write attestations: write contents: read trigger-release-draft-with-runtimes: if: ${{ inputs.no_runtimes == false }} needs: [build-runtimes-flow, build-rc-flow, validate-inputs] uses: "./.github/workflows/release-30_publish_release_draft.yml" with: release_tag: ${{ needs.validate-inputs.outputs.release_tag }} build_run_id: ${{ github.run_id }} runtimes: '${{ needs.build-runtimes-flow.outputs.published_runtimes }}' no_runtimes: ${{ inputs.no_runtimes }} crates_only: false secrets: inherit trigger-release-draft-without-runtimes: if: ${{ inputs.no_runtimes == true }} needs: [build-rc-flow, validate-inputs] uses: "./.github/workflows/release-30_publish_release_draft.yml" with: release_tag: ${{ needs.validate-inputs.outputs.release_tag }} build_run_id: ${{ github.run_id }} no_runtimes: ${{ inputs.no_runtimes }} crates_only: false secrets: inherit