-
Notifications
You must be signed in to change notification settings - Fork 810
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[CI/CD] Add a pipeline to build binaries in different profiles (#7496)
Recently there were some requests to build and deploy a binary, for example `polkadot`, in the `release` or `production` profile to do some testing. So far we had only a [release](https://github.com/paritytech/polkadot-sdk/blob/master/.github/workflows/release-20_build-rc.yml) pipeline that could do it in the GitHub but to use it, there was a lot of extra overhead needed. This pipeline should simplify this case and give a possibility to build a binary in desired profile from any branch for the testing purposes. Something similar to what we have for runtimes in the [srtool repo](https://github.com/paritytech/srtool/actions/workflows/manual.yml) It won't be used in any release activities though. CC: @BulatSaif
- Loading branch information
1 parent
bb5e05c
commit a484ccc
Showing
2 changed files
with
80 additions
and
5 deletions.
There are no files selected for viewing
This file contains 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
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
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/** |