Skip to content

Add optional files scoping to the merge_github_workflows stage - #79

Merged
silug merged 1 commit into
simp:mainfrom
silug:merge-workflows-files-filter
Aug 10, 2026
Merged

Add optional files scoping to the merge_github_workflows stage#79
silug merged 1 commit into
simp:mainfrom
silug:merge-workflows-files-filter

Conversation

@silug

@silug silug commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Enables targeted workflow-template rollouts: a session config can scope the merge stage to specific files —

plans:
  sync:
    merge_github_workflows:
      files:
        - release_rpms.yml

Why now — the first live smoke found the template is behind the fleet

Running the merge stage against real repos (pupmod-simp-aide, pupmod-simp-acpid) showed the deployed pr_tests.yml contains jobs the baseline template lacks: the REFERENCE.md freshness job (#46), a Ruby Style job (#41's known divergence), an acceptance matrix, and parallel_spec/Ruby 3.4 updates. Template-canonical semantics would revert all of that fleet-wide — correct machinery, stale template. Until the template is reconciled (#41/#46), unscoped workflow syncs are unsafe; scoped ones (like the release_rpms.yml ghcr rollout for PR #48) are fine.

Verified live with a dynamic-inventory session scoped to release_rpms.yml against those two repos: each commit touched exactly one file (+6/−2, precisely PR #48's diff), Renovate-managed values everywhere untouched, and a second run reported 0 ok / 2 unchanged / 0 failed.

Also adds the first BoltSpec coverage for the merge_github_workflows stage itself: default behavior merges every templated workflow and skips untemplated (repo-specific) ones; the files list scopes it. 15 plan examples, 0 failures; plain suite 193 green.

🤖 Generated with Claude Code

A session config can now limit the workflow merge to specific files
(puppetsync.plans.sync.merge_github_workflows.files), enabling targeted
template rollouts. Motivation: the first live smoke of the merge stage
showed the deployed fleet's pr_tests.yml is AHEAD of the template
(REFERENCE.md freshness job, Ruby Style job, acceptance matrix — see
simp#41/simp#46), so an unscoped template-canonical refresh would revert
deployed improvements until the template is reconciled. Scoping lets
single-file rollouts (like the release_rpms.yml ghcr change, PR simp#48)
proceed safely in the meantime.

Adds BoltSpec coverage for the stage itself (previously untested at
the plan level): default merges every templated workflow and skips
untemplated ones; the files list scopes it.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@silug
silug merged commit 9e26bd4 into simp:main Aug 10, 2026
2 checks passed
@silug
silug deleted the merge-workflows-files-filter branch August 10, 2026 15:43
silug added a commit to silug/simp-puppetsync that referenced this pull request Aug 10, 2026
First dynamic-inventory session (repolist=github-org via the latest
symlink): rolls out PR simp#48's release_rpms.yml build-container change
fleet-wide, scoped to that single file via
merge_github_workflows.files — the pr_tests.yml template is currently
behind the deployed fleet (simp#41/simp#46), so unscoped workflow syncs stay
off until the template is reconciled.

Stage plan (verified via list_pipeline_stages): install_gems, checkout,
merge_github_workflows (scoped), git_commit_changes, then the GitHub
fork/remote/push/PR stages. Approve/merge plans configured; run them
with repolist=generated-20260731-release-rpms-ghcr.

Smoke-tested end-to-end against pupmod-simp-aide and pupmod-simp-acpid
(see simp#79): one-file commits matching PR simp#48's diff exactly, Renovate
values preserved, second run fully unchanged.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
silug added a commit that referenced this pull request Aug 11, 2026
…eet-wide RPM build failures) (#80)

* Add session config: fleet rollout of release_rpms.yml ghcr change

First dynamic-inventory session (repolist=github-org via the latest
symlink): rolls out PR #48's release_rpms.yml build-container change
fleet-wide, scoped to that single file via
merge_github_workflows.files — the pr_tests.yml template is currently
behind the deployed fleet (#41/#46), so unscoped workflow syncs stay
off until the template is reconciled.

Stage plan (verified via list_pipeline_stages): install_gems, checkout,
merge_github_workflows (scoped), git_commit_changes, then the GitHub
fork/remote/push/PR stages. Approve/merge plans configured; run them
with repolist=generated-20260731-release-rpms-ghcr.

Smoke-tested end-to-end against pupmod-simp-aide and pupmod-simp-acpid
(see #79): one-file commits matching PR #48's diff exactly, Renovate
values preserved, second run fully unchanged.

* Pull RPM build containers from ghcr.io/simp/simp-<os>-build

The docker.io/simpproject/simp_build_<os> images this template referenced have
no EL8/9/10 variants -- the newest are simp_build_centos7 (pushed 2024-08-09)
and simp_build_centos8 (2023-06-26). Builds against those die with
'NameError: uninitialized constant JSON::Fragment' (json >= 2.9 required).

Point at ghcr.io/simp/simp-el{8,9,10}-build, which are public and rebuilt
weekly, and add a build_container_tag input so a dated tag can be pinned.
Matches the proven configuration already deployed in pupmod-simp-mockup.

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
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.

2 participants