feat(ci): cut devnet fixture releases from any branch - #3601
danceratopz merged 2 commits into
Conversation
`<feat>-devnet` releases were only accepted from a `devnets/<feat>/<n>` branch, so every devnet that tracks an EIP feature branch one-to-one needed a throwaway copy of it just to satisfy the release workflow (`devnets/frames/0` is byte-identical to `eips/amsterdam/eip-8141`). Accept any `branch` for devnet releases. The tag is still named by the feature and version (`tests-frames-devnet@v0.1.0`), which is all consumers see, and the `branch` input stays required so a devnet release can never silently fill the default branch. When the branch does follow the `devnets/<feat>/<n>` scheme, the version major is still cross-checked against `<n>`, so the glamsterdam-style guard is kept.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## forks/amsterdam #3601 +/- ##
================================================
Coverage 94.44% 94.44%
================================================
Files 624 624
Lines 36928 36928
Branches 3326 3326
================================================
Hits 34875 34875
Misses 1450 1450
Partials 603 603
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
danceratopz
left a comment
There was a problem hiding this comment.
Nice! Below are a few comments from Claude. The first one about not checking well-formed devnet branch names seems worth fixing. The other three are docs/tests and less important.
He also mentioned:
Follow-up, not for this PR. Nothing guards against a version whose tag already exists, and this is the first path with a fully unconstrained major, so a collision only shows up at
gh release createafter the fill.
Gate the version-major cross-check on the `devnets/` namespace instead of skipping it for any branch the regex does not match: a branch under `devnets/` that is not `devnets/<feat>/<n>` (e.g. the real `devnets/bal/7-benchmark`) fails again with "could not parse a devnet number", while branches outside the namespace stay unchecked. Trim the branch first, matching `actions/checkout`, so a blank branch is still "missing" and a padded `devnets/bal/7` is still checked. Tests fence the near miss, the blank branch and the trimming. Docs: the `branch` input is optional for other fresh fills and must be empty for cached releases; the devnet section is split and says where the major comes from when the branch does not encode it; a warning notes that the release scripts run from the selected branch, so it must carry them and be current with its base.
Description
Allow devnet fixture releases from any explicitly selected branch, including EIP branches, avoiding duplicate
devnets/branches. A branch remains required; a branch underdevnets/must still followdevnets/<feat>/<n>with version major<n>, and only branches outside that namespace skip the check. Release tags are unchanged.The selected branch must contain the updated validator. Selecting the workflow with
--refalone is insufficient.Set
branchto the source branch you want to release. For example, draft a release from the EIP-8141 branch:Publishing the draft creates
tests-frames-devnet@v0.4.0at the EIP branch commit used for the build. Choose an unused version.Related Issues or PRs
#3384 update the devnet-release skill wording.
Checklist
just static<type>(<area>): <title>, where<type>and<area>come from an appropriateC-<type>, respectivelyA-<area>, label. The title should match the target squash commit message.