Binary Build #9
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Binary Build | |
| # This workflow can be used to build a binary like polkadot + workers, omninode or polkadot-parachain | |
| # from any branch with release or profuction profile to be later used for testing. | |
| # ⚠️ IT should not be used for release purposes! | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| binary: | |
| required: true | |
| default: "polkadot" | |
| description: "The binary to build" | |
| package: | |
| description: Package to be built, can be polkadot, polkadot-parachain-bin, polkadot-omni-node etc. | |
| required: true | |
| type: string | |
| profile: | |
| required: true | |
| default: "release" | |
| description: "The profile to use for the binary build" | |
| jobs: | |
| setup: | |
| # GitHub Actions allows using 'env' in a container context. | |
| # However, env variables don't work for forks: https://github.com/orgs/community/discussions/44322 | |
| # This workaround sets the container image for each job using 'set-image' job output. | |
| runs-on: ubuntu-latest | |
| outputs: | |
| IMAGE: ${{ steps.set_image.outputs.IMAGE }} | |
| RUNNER: ${{ steps.set_runner.outputs.RUNNER }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 | |
| - name: Set image | |
| id: set_image | |
| run: cat .github/env >> $GITHUB_OUTPUT | |
| - name: Set runner | |
| id: set_runner | |
| shell: bash | |
| run: | | |
| if [[ "${{ inputs.binary }}" == "polkadot-parachain" ]]; then | |
| echo "RUNNER=parity-large" >> $GITHUB_OUTPUT | |
| else | |
| echo "RUNNER=ubuntu-latest" >> $GITHUB_OUTPUT | |
| fi | |
| build: | |
| needs: [setup] | |
| runs-on: ${{ needs.setup.outputs.RUNNER }} | |
| container: | |
| image: ${{ needs.setup.outputs.IMAGE }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 | |
| - name: Build binary | |
| run: | | |
| git config --global --add safe.directory "${GITHUB_WORKSPACE}" #avoid "detected dubious ownership" error | |
| PROFILE=${{ inputs.profile }} | |
| if [ "${{ inputs.binary }}" = "polkadot" ]; then | |
| for binary in polkadot polkadot-prepare-worker polkadot-execute-worker; do | |
| echo "Building $binary..." | |
| ./.github/scripts/release/build-linux-release.sh $binary ${{ inputs.package }} "${PROFILE}" | |
| done | |
| else | |
| ./.github/scripts/release/build-linux-release.sh ${{ inputs.binary }} ${{ inputs.package }} "${PROFILE}" | |
| fi | |
| - name: Upload ${{ inputs.binary }} artifacts | |
| uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 | |
| with: | |
| name: ${{ inputs.binary }} | |
| path: /artifacts/** |