Skip to content

Commit

Permalink
GHA Migration - build misc (#5346)
Browse files Browse the repository at this point in the history
Closes paritytech/ci_cd#1017

- Enabled subsystem-benchmarks 100% + adjusted them to publish as
separate job so it can use environment for scope secrets
- Added -v1.* triggers for GHA checks
- Removed remove subkey & polkavm from gitlab

---------

Co-authored-by: Alexander Samusev <41779041+alvicsam@users.noreply.github.com>
  • Loading branch information
mordamax and alvicsam committed Sep 3, 2024
1 parent 09331f2 commit d7b5753
Show file tree
Hide file tree
Showing 8 changed files with 184 additions and 274 deletions.
98 changes: 98 additions & 0 deletions .github/workflows/build-misc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
name: Build Misc

on:
push:
branches:
- master
pull_request:
types: [ opened, synchronize, reopened, ready_for_review ]
merge_group:


concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

permissions:
contents: read

jobs:
set-image:
# 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@v4
- id: set_image
run: cat .github/env >> $GITHUB_OUTPUT
- id: set_runner
run: |
# Run merge queues on persistent runners
if [[ $GITHUB_REF_NAME == *"gh-readonly-queue"* ]]; then
echo "RUNNER=arc-runners-polkadot-sdk-beefy-persistent" >> $GITHUB_OUTPUT
else
echo "RUNNER=arc-runners-polkadot-sdk-beefy" >> $GITHUB_OUTPUT
fi
build-runtimes-polkavm:
timeout-minutes: 20
needs: [ set-image ]
runs-on: ${{ needs.set-image.outputs.RUNNER }}
container:
image: ${{ needs.set-image.outputs.IMAGE }}
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Check Rust
run: |
rustup show
rustup +nightly show
- name: Build
env:
SUBSTRATE_RUNTIME_TARGET: riscv
run: |
forklift cargo check -p minimal-template-runtime
forklift cargo check -p westend-runtime
forklift cargo check -p rococo-runtime
forklift cargo check -p polkadot-test-runtime
build-subkey:
timeout-minutes: 20
needs: [ set-image ]
runs-on: ${{ needs.set-image.outputs.RUNNER }}
container:
image: ${{ needs.set-image.outputs.IMAGE }}
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Check Rust
run: |
rustup show
rustup +nightly show
- name: Build
env:
SKIP_WASM_BUILD: 1
run: |
cd ./substrate/bin/utils/subkey
forklift cargo build --locked --release
confirm-required-build-misc-jobs-passed:
runs-on: ubuntu-latest
name: All build misc jobs passed
# If any new job gets added, be sure to add it to this array
needs:
[
build-runtimes-polkavm,
build-subkey
]
steps:
- run: echo '### Good job! All the build misc tests passed 🚀' >> $GITHUB_STEP_SUMMARY
2 changes: 1 addition & 1 deletion .github/workflows/check-runtime-migration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ jobs:
# We need to set this to rather long to allow the snapshot to be created, but the average time
# should be much lower.
timeout-minutes: 60
needs: [set-image]
needs: [ set-image ]
container:
image: ${{ needs.set-image.outputs.IMAGE }}
strategy:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

permissions: {}
permissions: { }

jobs:
# temporary disabled because currently doesn't work in merge queue
Expand Down
55 changes: 0 additions & 55 deletions .github/workflows/publish-subsystem-benchmarks.yml

This file was deleted.

94 changes: 74 additions & 20 deletions .github/workflows/subsystem-benchmarks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ on:
branches:
- master
pull_request:
types: [ opened, synchronize, reopened, closed, labeled ]
types: [ opened, synchronize, reopened, ready_for_review ]
merge_group:

concurrency:
Expand All @@ -12,12 +12,9 @@ concurrency:

permissions:
contents: read
pull-requests: write

jobs:
set-image:
# TODO: remove once migration is complete or this workflow is fully stable
if: contains(github.event.label.name, 'GHA-migration')
# 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.
Expand All @@ -31,13 +28,11 @@ jobs:
run: cat .github/env >> $GITHUB_OUTPUT

build:
timeout-minutes: 80
needs: [ set-image ]
runs-on: arc-runners-polkadot-sdk-benchmark
container:
image: ${{ needs.set-image.outputs.IMAGE }}
env:
BENCH_DIR: ./charts/bench/${{ matrix.features.bench }}
BENCH_FILE_NAME: ${{ matrix.features.bench }}
strategy:
fail-fast: false
matrix:
Expand All @@ -57,26 +52,85 @@ jobs:
rustup +nightly show
- name: Run Benchmarks
continue-on-error: true
id: run-benchmarks
run: |
cargo bench -p ${{ matrix.features.name }} --bench ${{ matrix.features.bench }} --features subsystem-benchmarks || echo "Benchmarks failed"
forklift cargo bench -p ${{ matrix.features.name }} --bench ${{ matrix.features.bench }} --features subsystem-benchmarks || echo "Benchmarks failed"
ls -lsa ./charts
mkdir -p $BENCH_DIR || echo "Directory exists"
cp charts/${BENCH_FILE_NAME}.json $BENCH_DIR
ls -lsa $BENCH_DIR
mkdir ./artifacts
cp ./charts/${{ matrix.features.bench }}.json ./artifacts/${{ matrix.features.bench }}.json
- name: Upload artifacts
uses: actions/upload-artifact@v4.3.6
with:
name: ${{matrix.features.bench}}
path: ./artifacts

publish-benchmarks:
timeout-minutes: 60
needs: [ build ]
if: github.ref == 'refs/heads/master'
environment: subsystem-benchmarks
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Download artifacts
uses: actions/download-artifact@v4.1.8
with:
path: ./artifacts

- name: Setup git
run: |
# Fixes "detected dubious ownership" error in the ci
git config --global --add safe.directory '*'
ls -lsR ./artifacts
- uses: actions/create-github-app-token@v1
id: app-token
with:
app-id: ${{ secrets.POLKADOTSDK_GHPAGES_APP_ID }}
private-key: ${{ secrets.POLKADOTSDK_GHPAGES_APP_KEY }}

- name: Publish result to GH Pages
if: ${{ steps.run-benchmarks.outcome == 'success' }}
- name: Publish ${{ env.BENCH_NAME }}
uses: benchmark-action/github-action-benchmark@v1
env:
BENCH_NAME: availability-recovery-regression-bench
with:
tool: "customSmallerIsBetter"
name: ${{ env.BENCH_FILE_NAME }}
output-file-path: ${{ env.BENCH_DIR }}/${{ env.BENCH_FILE_NAME }}.json
benchmark-data-dir-path: ${{ env.BENCH_DIR }}
github-token: ${{ secrets.GITHUB_TOKEN }}
comment-on-alert: ${{ github.event_name == 'pull_request' }} # will comment on PRs if regression is detected
auto-push: false # TODO: enable when gitlab part is removed ${{ github.ref == 'refs/heads/master' }}
name: ${{ env.BENCH_NAME }}
output-file-path: ./artifacts/${{ env.BENCH_NAME }}/${{ env.BENCH_NAME }}.json
benchmark-data-dir-path: ./artifacts/${{ env.BENCH_NAME }}
github-token: ${{ steps.app-token.outputs.token }}

- name: Publish ${{ env.BENCH_NAME }}
uses: benchmark-action/github-action-benchmark@v1
env:
BENCH_NAME: availability-distribution-regression-bench
with:
tool: "customSmallerIsBetter"
name: ${{ env.BENCH_NAME }}
output-file-path: ./artifacts/${{ env.BENCH_NAME }}/${{ env.BENCH_NAME }}.json
benchmark-data-dir-path: ./artifacts/${{ env.BENCH_NAME }}
github-token: ${{ steps.app-token.outputs.token }}

- name: Publish ${{ env.BENCH_NAME }}
uses: benchmark-action/github-action-benchmark@v1
env:
BENCH_NAME: approval-voting-regression-bench
with:
tool: "customSmallerIsBetter"
name: ${{ env.BENCH_NAME }}
output-file-path: ./artifacts/${{ env.BENCH_NAME }}/${{ env.BENCH_NAME }}.json
benchmark-data-dir-path: ./artifacts/${{ env.BENCH_NAME }}
github-token: ${{ steps.app-token.outputs.token }}

- name: Publish ${{ env.BENCH_NAME }}
uses: benchmark-action/github-action-benchmark@v1
env:
BENCH_NAME: statement-distribution-regression-bench
with:
tool: "customSmallerIsBetter"
name: ${{ env.BENCH_NAME }}
output-file-path: ./artifacts/${{ env.BENCH_NAME }}/${{ env.BENCH_NAME }}.json
benchmark-data-dir-path: ./artifacts/${{ env.BENCH_NAME }}
github-token: ${{ steps.app-token.outputs.token }}
69 changes: 1 addition & 68 deletions .gitlab/pipeline/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -313,7 +313,7 @@ build-linux-substrate:
# tldr: we need to checkout the branch HEAD explicitly because of our dynamic versioning approach while building the substrate binary
# see https://github.com/paritytech/ci_cd/issues/682#issuecomment-1340953589
- git checkout -B "$CI_COMMIT_REF_NAME" "$CI_COMMIT_SHA"
- !reference [.forklift-cache, before_script]
- !reference [ .forklift-cache, before_script ]
script:
- time WASM_BUILD_NO_COLOR=1 cargo build --locked --release -p staging-node-cli
- mv $CARGO_TARGET_DIR/release/substrate-node ./artifacts/substrate/substrate
Expand All @@ -329,73 +329,6 @@ build-linux-substrate:
# - printf '\n# building node-template\n\n'
# - ./scripts/ci/node-template-release.sh ./artifacts/substrate/substrate-node-template.tar.gz

build-runtimes-polkavm:
stage: build
extends:
- .docker-env
- .common-refs
- .run-immediately
script:
- SUBSTRATE_RUNTIME_TARGET=riscv cargo check -p minimal-template-runtime
- SUBSTRATE_RUNTIME_TARGET=riscv cargo check -p westend-runtime
- SUBSTRATE_RUNTIME_TARGET=riscv cargo check -p rococo-runtime
- SUBSTRATE_RUNTIME_TARGET=riscv cargo check -p polkadot-test-runtime

.build-subkey:
stage: build
extends:
- .docker-env
- .common-refs
- .run-immediately
# - .collect-artifact
variables:
# this variable gets overridden by "rusty-cachier environment inject", use the value as default
CARGO_TARGET_DIR: "$CI_PROJECT_DIR/target"
before_script:
- mkdir -p ./artifacts/subkey
- !reference [.forklift-cache, before_script]
script:
- cd ./substrate/bin/utils/subkey
- time SKIP_WASM_BUILD=1 cargo build --locked --release
# - cd -
# - mv $CARGO_TARGET_DIR/release/subkey ./artifacts/subkey/.
# - echo -n "Subkey version = "
# - ./artifacts/subkey/subkey --version |
# sed -n -E 's/^subkey ([0-9.]+.*)/\1/p' |
# tee ./artifacts/subkey/VERSION;
# - sha256sum ./artifacts/subkey/subkey | tee ./artifacts/subkey/subkey.sha256
# - cp -r ./scripts/ci/docker/subkey.Dockerfile ./artifacts/subkey/

build-subkey-linux:
extends: .build-subkey
# DAG
needs:
- job: build-malus
artifacts: false
# tbd
# build-subkey-macos:
# extends: .build-subkey
# # duplicating before_script & script sections from .build-subkey hidden job
# # to overwrite rusty-cachier integration as it doesn't work on macos
# before_script:
# # skip timestamp script, the osx bash doesn't support printf %()T
# - !reference [.job-switcher, before_script]
# - mkdir -p ./artifacts/subkey
# script:
# - cd ./bin/utils/subkey
# - SKIP_WASM_BUILD=1 time cargo build --locked --release
# - cd -
# - mv ./target/release/subkey ./artifacts/subkey/.
# - echo -n "Subkey version = "
# - ./artifacts/subkey/subkey --version |
# sed -n -E 's/^subkey ([0-9.]+.*)/\1/p' |
# tee ./artifacts/subkey/VERSION;
# - sha256sum ./artifacts/subkey/subkey | tee ./artifacts/subkey/subkey.sha256
# - cp -r ./scripts/ci/docker/subkey.Dockerfile ./artifacts/subkey/
# after_script: [""]
# tags:
# - osx

# bridges

# we need some non-binary artifacts in our bridges+zombienet image
Expand Down
Loading

0 comments on commit d7b5753

Please sign in to comment.