-
Notifications
You must be signed in to change notification settings - Fork 809
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
bench all weekly - and fix for pallet_multisig lib (#6789)
Closes #6196 Closes #7204 Example of PR: #6816 Every sunday 01:00 AM it's going to start to benchmark (with /cmd bench) all runtimes and all pallets Then diff total will be pushed to a branch and PR open,. I assume review-bot is going assign required reviewers per changed files I afraid each weeks will be too much to review & merge, but we can adjust later Bonus: fix for pallet_multisig lib and substrate/.maintain/frame-weight-template.hbs , which didn't let to compile new weights --------- Signed-off-by: Oliver Tale-Yazdi <[email protected]> Co-authored-by: command-bot <> Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Oliver Tale-Yazdi <[email protected]>
- Loading branch information
1 parent
e9393a9
commit f845a9f
Showing
15 changed files
with
949 additions
and
751 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,165 @@ | ||
name: Bench all runtimes | ||
|
||
on: | ||
# schedule: | ||
# - cron: '0 1 * * 0' # weekly on Sunday night 01:00 UTC | ||
workflow_dispatch: | ||
# pull_request: | ||
|
||
permissions: # allow the action to create a PR | ||
contents: write | ||
issues: write | ||
pull-requests: write | ||
actions: read | ||
|
||
jobs: | ||
preflight: | ||
uses: ./.github/workflows/reusable-preflight.yml | ||
|
||
runtime-matrix: | ||
runs-on: ubuntu-latest | ||
needs: [preflight] | ||
timeout-minutes: 30 | ||
outputs: | ||
runtime: ${{ steps.runtime.outputs.runtime }} | ||
container: | ||
image: ${{ needs.preflight.outputs.IMAGE }} | ||
name: Extract runtimes from matrix | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- id: runtime | ||
run: | | ||
RUNTIMES=$(jq '[.[] | select(.package != null)]' .github/workflows/runtimes-matrix.json) | ||
RUNTIMES=$(echo $RUNTIMES | jq -c .) | ||
echo "runtime=$RUNTIMES" | ||
echo "runtime=$RUNTIMES" >> $GITHUB_OUTPUT | ||
run-frame-omni-bencher: | ||
needs: [preflight, runtime-matrix] | ||
runs-on: ${{ needs.preflight.outputs.RUNNER_WEIGHTS }} | ||
# 24 hours per runtime. | ||
# Max it takes 14hr for westend to recalculate, but due to limited runners, | ||
# sometimes it can take longer. | ||
timeout-minutes: 1440 | ||
strategy: | ||
fail-fast: false # keep running other workflows even if one fails, to see the logs of all possible failures | ||
matrix: | ||
runtime: ${{ fromJSON(needs.runtime-matrix.outputs.runtime) }} | ||
container: | ||
image: ${{ needs.preflight.outputs.IMAGE }} | ||
env: | ||
PACKAGE_NAME: ${{ matrix.runtime.package }} | ||
FLAGS: ${{ matrix.runtime.bench_flags }} | ||
RUST_LOG: "frame_omni_bencher=info,polkadot_sdk_frame=info" | ||
steps: | ||
|
||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 | ||
ref: master | ||
|
||
- name: script | ||
id: required | ||
run: | | ||
# Fixes "detected dubious ownership" error in the ci | ||
git config --global --add safe.directory $GITHUB_WORKSPACE | ||
git remote -v | ||
python3 -m pip install -r .github/scripts/generate-prdoc.requirements.txt | ||
python3 .github/scripts/cmd/cmd.py bench --runtime ${{ matrix.runtime.name }} | ||
git add . | ||
git status | ||
if [ -f /tmp/cmd/command_output.log ]; then | ||
CMD_OUTPUT=$(cat /tmp/cmd/command_output.log) | ||
# export to summary to display in the PR | ||
echo "$CMD_OUTPUT" >> $GITHUB_STEP_SUMMARY | ||
# should be multiline, otherwise it captures the first line only | ||
echo 'cmd_output<<EOF' >> $GITHUB_OUTPUT | ||
echo "$CMD_OUTPUT" >> $GITHUB_OUTPUT | ||
echo 'EOF' >> $GITHUB_OUTPUT | ||
fi | ||
# Create patch that includes both modifications and new files | ||
git add -A | ||
git diff --staged > diff-${{ matrix.runtime.name }}.patch -U0 | ||
git reset | ||
- name: Upload diff | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: diff-${{ matrix.runtime.name }} | ||
path: diff-${{ matrix.runtime.name }}.patch | ||
|
||
apply-diff-commit: | ||
runs-on: ubuntu-latest | ||
needs: [run-frame-omni-bencher] | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 | ||
ref: master | ||
|
||
- name: Download all artifacts | ||
uses: actions/download-artifact@v4 | ||
with: | ||
path: patches | ||
|
||
- name: Install subweight | ||
run: cargo install subweight | ||
|
||
# needs to be able to trigger CI | ||
- uses: actions/create-github-app-token@v1 | ||
id: generate_token | ||
with: | ||
app-id: ${{ secrets.CMD_BOT_APP_ID }} | ||
private-key: ${{ secrets.CMD_BOT_APP_KEY }} | ||
|
||
- name: Apply diff and create PR | ||
env: | ||
GH_TOKEN: ${{ steps.generate_token.outputs.token }} | ||
run: | | ||
DATE=$(date +'%Y-%m-%d-%s') | ||
BRANCH="update-weights-weekly-$DATE" | ||
git config user.name "github-actions[bot]" | ||
git config user.email "41898282+github-actions[bot]@users.noreply.github.com" | ||
git switch -c "$BRANCH" | ||
for file in patches/diff-*/diff-*.patch; do | ||
if [ -f "$file" ] && [ -s "$file" ]; then | ||
echo "Applying $file" | ||
git apply "$file" --unidiff-zero --allow-empty || echo "Failed to apply $file" | ||
else | ||
echo "Skipping empty or non-existent patch file: $file" | ||
fi | ||
done | ||
rm -rf patches | ||
git add . | ||
git commit -m "Update all weights weekly for $DATE" | ||
git push --set-upstream origin "$BRANCH" | ||
PR_TITLE="Auto-update of all weights for $DATE" | ||
gh pr create \ | ||
--title "$PR_TITLE" \ | ||
--head "$BRANCH" \ | ||
--base "master" \ | ||
--reviewer paritytech/ci \ | ||
--reviewer paritytech/release-engineering \ | ||
--draft \ | ||
--label "R0-silent" \ | ||
--body "$PR_TITLE" | ||
subweight compare commits \ | ||
--path-pattern "./**/weights/**/*.rs,./**/weights.rs" \ | ||
--method asymptotic \ | ||
--format markdown \ | ||
--no-color \ | ||
--change added changed \ | ||
--ignore-errors \ | ||
--threshold 2 \ | ||
origin/master $BRANCH |
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
Oops, something went wrong.