Ci/full pipeline foundation#30
Conversation
…assification Declares locked_paths, sme_owned_paths, tier_2_paths, and promotion rules. Read from the PR base branch so a PR cannot modify its own judge. Signed-off-by: yreyricord <yoann.rey-ricord@acri-st.fr>
Consumes .github/tier-policy.yml from the base branch and the diff between base and head to emit the tier on stdout. Signed-off-by: yreyricord <yoann.rey-ricord@acri-st.fr>
Signed-off-by: yreyricord <yoann.rey-ricord@acri-st.fr>
Brings .github/tier-policy.yml, scripts/ci_tier_decision.py and scripts/check-dco-commit-msg.sh into the foundation branch.
…estpaths Declares baseline, extended, and heavy markers. Points testpaths at the three tier-graduated directories under test/, leaving the existing test/integration/ suite to be invoked explicitly when its dev environment is available. Legacy markers (unit, smoke, integration, public) are kept for compatibility. Signed-off-by: yreyricord <yoann.rey-ricord@acri-st.fr>
Minimal placeholders so the directory layout is complete and the workflows have something to execute before real tests are added. Signed-off-by: yreyricord <yoann.rey-ricord@acri-st.fr>
Jobs: tier-decision, dco, reuse, lint, baseline-tests, build. Consumes scripts/ci_tier_decision.py (added in tier-policy). Signed-off-by: yreyricord <yoann.rey-ricord@acri-st.fr>
Brings .github/workflows/ci.yml, pytest.ini with scoped testpaths, and the
placeholder tests under test/{baseline,extended,heavy} into the foundation
branch.
Runs when ci_tier_decision returns 1 or 2. Executes test/extended on top of baseline. Pass-through if test/extended is missing. Signed-off-by: yreyricord <yoann.rey-ricord@acri-st.fr>
Runs when ci_tier_decision returns 2 or on manual workflow_dispatch with run_heavy=true. Executes test/heavy after the extended prerequisite. Pass-through if test/heavy is missing. Signed-off-by: yreyricord <yoann.rey-ricord@acri-st.fr>
Brings .github/workflows/extended-ci.yml and heavy-ci.yml into the foundation branch. They consume the tier-decision script and the test scaffold landed in earlier merges.
Lint and format configuration consumed by the pre-commit hook and by the CI lint job. Signed-off-by: yreyricord <yoann.rey-ricord@acri-st.fr>
Brings .pre-commit-config.yaml, ruff.toml, noxfile.py, scripts helpers, the root pyproject.toml with tool configuration sections, and the detect-secrets baseline into the foundation branch.
CI status summary❌ Baseline gate: failure Tier rationale (summary): Policy fetch failed on 'develop' (6f1e234): Command '['gh', 'api', 'repos/BioPAL/BPS/contents/.github/tier-policy.yml?ref=6f1e2343a04a9d369ee8f070df3c13b49aff2733']' returned non-zero exit status 1. | Fallback tier 1 for safety.
Suggested next actions
|
|
CI failure expected depends on #24 : The 3 red jobs (Baseline / Dependabot governance, Baseline / Pre-commit, Baseline / Gate) fail because they expect files that this PR does not introduce:
These files are landed by the sibling foundation PR #24. Both PRs are siblings of the same migration plan and intentionally split for review clarity. Required merge order
|
Linked issue
Closes #21
status:approved,good-first-issueorhelp-wanted.Being open in the backlog is not enough on its own: only these three labels mean the scope has been triaged and approved for implementation.
What this PR changes
.github/tier-policy.yml) and its decision script (scripts/ci_tier_decision.py). Every PR is automatically classified Tier 0, 1, or 2. Addsscripts/check-dco-commit-msg.shthat verifiesSigned-off-by:trailers.ci.yml(baseline, every PR),extended-ci.yml(tier 1+),heavy-ci.yml(tier 2 or manual dispatch withrun_heavy=true).test/{baseline,extended,heavy}withpytest.inideclaring the matching markers. The existingtest/integration/suite is left untouched..pre-commit-config.yaml,ruff.toml,noxfile.py,scripts/noxfile_common.py,scripts/fawltydeps.toml, the rootpyproject.tomlwith[tool.ruff]and[tool.mypy]sections, and the.secrets.baselineconsumed by the detect-secrets hook.Notes for reviewers
Chicken-and-egg. This PR triggers its own CI on the first push. The new
ci.ymlruns against the diff that introduces it. Expected and intentional.CI ordering with the foundation PR (CODEOWNERS + Dependabot + REUSE). This PR's
reusejob is expected to fail until the foundation PR is merged intodevelop. Once that PR lands and this branch is rebased, REUSE turns green. The two PRs are siblings of the same migration plan.Root
pyproject.tomlis new. Only tool configuration sections ([tool.ruff],[tool.mypy]). No runtime dependency is added. Per-packagepyproject.tomlunderbps-*/are untouched.Integration branch. This PR was assembled on
ci/full-pipeline-foundationfrom four atomic sub-branches:ci/tier-policy,ci/baseline-workflow,ci/extended-heavy-workflows,ci/quality-tooling. The squash merge collapses everything into a single commit ondevelop.User-facing change
If yes, write one short release-note sentence here (it will be picked up in
CHANGELOG.md):Documentation
Tier rationale
The CI computes the tier automatically from the diff against the base branch. You do not assign it, but stating your expectation helps reviewers spot a mismatch quickly.
VERSIONpromoted tomain, designated heavy paths, manualrun_heavyFull rules:
.github/tier-policy.yml. Background: Contribution tiers in the contributor guide.AI assistance disclosure
What was generated (code, tests, documentation, commit messages): structure and wording of the PR description + commit message + sanity-check commands.
I have reviewed the generated content and take responsibility for it.
Checklist