Skip to content

Comments

fix: make final CI check always run and fail if dependencies fail#344

Merged
jdx merged 3 commits intomainfrom
fix-final-ci-check
Oct 5, 2025
Merged

fix: make final CI check always run and fail if dependencies fail#344
jdx merged 3 commits intomainfrom
fix-final-ci-check

Conversation

@jdx
Copy link
Owner

@jdx jdx commented Oct 5, 2025

Summary

Fixes the final check in ci.yml to always run and properly gate PR merges, preventing PRs from being merged when CI jobs are skipped.

Problem

The final check was using needs: without if: always(), which meant:

  • If any dependent job was skipped, the final check would also be skipped
  • A skipped final check still allows "Squash and merge" to be clicked
  • This defeats the purpose of having a single required check

Solution

  1. Added if: always() to ensure the final check always runs
  2. Added explicit checks for each dependent job's result
  3. Fail with exit 1 if any job didn't succeed (failed or was skipped)
  4. Added build job to the dependencies for completeness

Now the final check will:

  • ✅ Always run (never skip)
  • ✅ Fail if any dependency failed
  • ✅ Fail if any dependency was skipped
  • ✅ Only pass when all dependencies succeed

Test plan

The workflow change will be tested by CI itself. The final check should:

  • Always appear in the checks list
  • Report failure if any upstream job fails
  • Block merge until all jobs pass

🤖 Generated with Claude Code


Note

Updates final CI job to always run and explicitly fail if any dependency (including build) did not succeed.

  • GitHub Actions CI (.github/workflows/ci.yml):
    • Final job robustness:
      • Added if: always() to final job to ensure it always executes.
      • Included build in needs dependencies.
      • Replaced single echo with explicit checks of needs.<job>.result for build, ci-libgit2, ci-nolibgit2, ci-other, and msrv; exits with non-zero if any are not success.

Written by Cursor Bugbot for commit 14401ad. This will update automatically on new commits. Configure here.

jdx and others added 2 commits October 5, 2025 09:37
When using --hk-pkl-root with a local path, the migrate command
generates local imports (e.g., import "/path/to/pkl/Builtins.pkl")
rather than package URLs (e.g., import "package://github.com/jdx/hk").

The test was incorrectly expecting a package URL even when passing
a local pkl root path. This fixes the assertion to check for the
correct local import format.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
The final check was getting skipped when dependencies were skipped,
which allowed PRs to be merged even when CI hadn't fully run.

Changes:
- Add `if: always()` to ensure the final check always runs
- Check the result of each dependent job and fail if any didn't succeed
- Add build job to dependencies for completeness

This ensures the final check is always a reliable gate for merging.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
cursor[bot]

This comment was marked as outdated.

@jdx jdx merged commit 4cdfd7b into main Oct 5, 2025
1 check passed
@jdx jdx deleted the fix-final-ci-check branch October 5, 2025 14:48
@jdx jdx mentioned this pull request Oct 5, 2025
jdx added a commit that referenced this pull request Oct 5, 2025
## [1.17.0](https://github.com/jdx/hk/compare/v1.16.0..v1.17.0) -
2025-10-05

### 🚀 Features

- Add hk util trailing-whitespace command by
[@jdx](https://github.com/jdx) in
[#319](#319)
- add mixed_line_ending builtin by [@jdx](https://github.com/jdx) in
[#324](#324)
- add check_symlinks builtin by [@jdx](https://github.com/jdx) in
[#326](#326)
- add check_executables_have_shebangs builtin by
[@jdx](https://github.com/jdx) in
[#325](#325)
- Add check-merge-conflict util command and builtin by
[@jdx](https://github.com/jdx) in
[#322](#322)
- add check_case_conflict builtin by [@jdx](https://github.com/jdx) in
[#323](#323)
- add detect_private_key builtin by [@jdx](https://github.com/jdx) in
[#332](#332)
- add check_added_large_files builtin by [@jdx](https://github.com/jdx)
in [#329](#329)
- add python_debug_statements builtin by [@jdx](https://github.com/jdx)
in [#331](#331)
- add python_check_ast builtin by [@jdx](https://github.com/jdx) in
[#330](#330)
- add no_commit_to_branch builtin by [@jdx](https://github.com/jdx) in
[#333](#333)
- add check_byte_order_marker and fix_byte_order_marker builtins by
[@jdx](https://github.com/jdx) in
[#328](#328)
- add regex pattern support for glob and exclude by
[@jdx](https://github.com/jdx) in
[#336](#336)
- automatically batch large file lists to prevent ARG_MAX errors by
[@jdx](https://github.com/jdx) in
[#338](#338)

### 🐛 Bug Fixes

- Add validation for stage attribute requiring fix command by
[@jdx](https://github.com/jdx) in
[#327](#327)
- display stderr when check_list_files returns empty list by
[@jdx](https://github.com/jdx) in
[#334](#334)
- added new builtins to Builtins.pkl by [@jdx](https://github.com/jdx)
in
[b8a2b17](b8a2b17)
- enable experimental settings in mise.toml for swift support by
[@jdx](https://github.com/jdx) in
[#342](#342)
- correct airflow migration test to expect local imports by
[@jdx](https://github.com/jdx) in
[#343](#343)
- make final CI check always run and fail if dependencies fail by
[@jdx](https://github.com/jdx) in
[#344](#344)
- add ruff format to ruff builtin by [@jdx](https://github.com/jdx) in
[#340](#340)

### 🚜 Refactor

- Split util module into separate files by
[@jdx](https://github.com/jdx) in
[#321](#321)

### 🛡️ Security

- migrate pre-commit by [@jdx](https://github.com/jdx) in
[#318](#318)

### 🔍 Other Changes

- split CI runs into parallel jobs and add docs-sync mise task by
[@jdx](https://github.com/jdx) in
[#337](#337)
- remove v0 pkl files from docs/public by [@jdx](https://github.com/jdx)
in [#341](#341)

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Release 1.17.0 with new migrate command, many util subcommands,
refreshed docs, and dependency updates.
> 
> - **Version**: bump `hk` to `1.17.0` (Cargo.toml, usage specs, docs).
> - **CLI**:
> - **New Command**: `migrate pre-commit` with flags (`--config`,
`--output`, `--force`, `--hk-pkl-root`).
> - **Util Subcommands**: add `check-added-large-files`,
`check-byte-order-marker`, `fix-byte-order-marker`,
`check-case-conflict`, `check-executables-have-shebangs`,
`check-merge-conflict`, `check-symlinks`, `detect-private-key`,
`end-of-file-fixer`, `mixed-line-ending`, `no-commit-to-branch`,
`python-check-ast`, `python-debug-statements`, `trailing-whitespace`.
> - **Docs**:
> - Update `docs/cli/index.md`, regenerate `docs/cli/commands.json`, and
`hk.usage.kdl`.
>   - Split `util` docs into per-command pages and add `migrate` docs.
> - **Dependencies**: update `Cargo.lock` crate versions and set `hk`
crate version to `1.17.0`.
> - **Changelog**: add `CHANGELOG.md` entry for `1.17.0` with
features/bug fixes.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
75b972a. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

Co-authored-by: mise-en-dev <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant