test(registry): add final ci job as merge gate#7390
Conversation
Add a `ci` job that runs after all other jobs and checks that they all succeeded. This simplifies branch protection rules - only need to require the `ci` job instead of listing all individual jobs. Note: list-changed-tools is allowed to be skipped (only runs on PRs). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
This PR adds a final ci job to the GitHub Actions workflow that serves as a merge gate by verifying all required CI jobs have completed successfully. This consolidates branch protection requirements into a single job check rather than requiring each individual job.
Key changes:
- Added a
cijob that depends onbuild,list-changed-tools, andtest-tool - Implemented logic to check each job's result, allowing
list-changed-toolsto be skipped (PR-only job) - Configured the job to always run with
if: always()to ensure it executes regardless of dependency outcomes
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| if [ "${{ needs.build.result }}" != "success" ]; then | ||
| echo "build failed or was skipped" | ||
| exit 1 | ||
| fi |
There was a problem hiding this comment.
The error message indicates 'or was skipped', but the condition only checks for non-success states. If the build job is actually skipped, this message would be misleading since skipped jobs should potentially be treated differently than failed ones. Consider either checking explicitly for 'skipped' status or removing the 'or was skipped' text from the error message.
| exit 1 | ||
| fi | ||
| if [ "${{ needs.test-tool.result }}" != "success" ]; then | ||
| echo "test-tool failed or was skipped" |
There was a problem hiding this comment.
The error message indicates 'or was skipped', but unlike list-changed-tools, there's no conditional logic allowing test-tool to be skipped. This creates inconsistency with how the two jobs are validated. Either add explicit handling for the skipped state or clarify the error message to only mention failure.
| echo "test-tool failed or was skipped" | |
| echo "test-tool failed" |
Hyperfine Performance
|
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2025.12.11 x -- echo |
20.1 ± 0.4 | 19.2 | 23.3 | 1.01 ± 0.04 |
mise x -- echo |
19.9 ± 0.8 | 19.3 | 31.4 | 1.00 |
mise env
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2025.12.11 env |
19.7 ± 0.9 | 18.6 | 27.8 | 1.00 |
mise env |
20.9 ± 0.7 | 19.5 | 24.6 | 1.06 ± 0.06 |
mise hook-env
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2025.12.11 hook-env |
20.3 ± 0.4 | 19.5 | 21.8 | 1.00 |
mise hook-env |
20.8 ± 0.7 | 19.5 | 26.3 | 1.02 ± 0.04 |
mise ls
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2025.12.11 ls |
17.5 ± 0.4 | 16.6 | 19.3 | 1.00 |
mise ls |
18.0 ± 0.7 | 16.9 | 20.4 | 1.03 ± 0.05 |
xtasks/test/perf
| Command | mise-2025.12.11 | mise | Variance |
|---|---|---|---|
| install (cached) | 108ms | 110ms | -1% |
| ls (cached) | 66ms | 66ms | +0% |
| bin-paths (cached) | 72ms | 72ms | +0% |
| task-ls (cached) | 2264ms | ✅ 290ms | +680% |
✅ Performance improvement: task-ls cached is 680%
* upstream/renovate/lockfile-maintenance: chore(deps): lock file maintenance fix(ci): improve GHA cache efficiency and fix registry-ci bug (jdx#7404) feat(tera): add haiku() function for random name generation (jdx#7399) feat: implement independent versioning for subcrates (jdx#7402) docs: add comprehensive glossary (jdx#7401) docs: improve installation documentation (jdx#7403) test: add token pool integration for rate limit distribution (jdx#7397) docs: add link to COPR package page for Fedora/RHEL test: rename duplicate 'ci' job names for clarity (jdx#7398) registry: add github backend for swiftformat (jdx#7396) chore: rename mise-tools to mise-versions chore: release 2025.12.12 (jdx#7386) fix(github): use version_prefix when fetching release for SLSA verification (jdx#7391) refactor(vfox): remove submodules, embed plugins directly (jdx#7389) test(registry): add final ci job as merge gate (jdx#7390) test: split unit job to speed up macOS CI (jdx#7388) feat(backend): add security features to github backend (jdx#7387)
Summary
Add a
cijob to registry.yml that runs after all other jobs and checks that they all succeeded. This simplifies branch protection rules - only need to require thecijob instead of listing all individual jobs.Jobs checked:
build- must succeedlist-changed-tools- must succeed or be skipped (only runs on PRs)test-tool- must succeedTest plan
cijob correctly gates on all other jobs🤖 Generated with Claude Code
Note
Add a
cijob in.github/workflows/registry.ymlthat depends onbuild,list-changed-tools, andtest-tooland fails if any are not successful.Written by Cursor Bugbot for commit 697b4e6. This will update automatically on new commits. Configure here.