Round-trip ci: block in .nf-core.yml - #4453
Draft
ewels wants to merge 2 commits into
Draft
Conversation
Add an optional permissive `ci: dict` field to NFCoreYamlConfig so the centralised nf-core/actions CI configuration survives model_dump() rewrites (sync, bump-version). Kept as a plain dict rather than a typed model on purpose: nf-core/actions defines these keys independently, so a strict schema would recouple every new CI setting to a tools release. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
ewels
marked this pull request as draft
August 24, 2026 10:49
Codecov Report✅ All modified and coverable lines are covered by tests. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
ewels
added a commit
to nf-core/actions
that referenced
this pull request
Aug 24, 2026
nf-core/tools#4453 adds the `ci:` block to `NFCoreYamlConfig` as a permissive dict with a round-trip test, which is the shape this repo needs: a strict schema would mean every new CI setting waits on a tools release and a template sync before a pipeline could use it. The follow-up now names the pull request and records that it is open rather than merged, along with what that means in the meantime: a pipeline that sets a `ci:` key can still lose it on a sync until this lands. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Tied to proof-of-concept around centralised GitHub actions in
nf-core/actions. That repo adds new config scope innf-core-config.ymland this PR lets tools know about it so that it doesn't get wiped.Feel free to ignore until strategy around centralised actions is decided, just didn't want to forget about it.
Details
PR checklist
CHANGELOG.mdis updateddocsis updatedDescription
A new top-level
ci:block in.nf-core.ymlis consumed by the centralised workflows in nf-core/actions (keys defined in that repo atsrc/actions/read-config/registry.ts:nf_test_version,nextflow_versions,profiles,max_shards,nf_test_workdir,runner,nextflow_lint,awsfulltest_required_approvals, all optional).NFCoreYamlConfiginnf_core/pydantic_models.pyrebuilds.nf-core.ymlfrom known fields only in itsmodel_dump(), so anyci:block was silently dropped whenever tools rewrote the file (sync,bump-version), deleting a pipeline's CI configuration.This adds an optional
cifield so the block round-trips.It is deliberately a permissive
dict[str, Any]rather than a strictly typed model: nf-core/actions adds and defines these keys independently, and a strict schema here would mean every new CI setting needs a tools release plus a template sync before any pipeline could use it — reintroducing exactly the coupling that centralising the workflows removed. tools only needs to round-trip this block, not validate it.nf-core pipelines lintneeds no change: thenfcore_ymllint test only checks specific known keys and does not flag unknown top-level blocks.Tests cover the round-trip of a config containing
ci:for bothrepository_typevalues.