IBX-11778: Added composite actions for metapackage Create Tag workflows - #105
Draft
alongosz wants to merge 6 commits into
Draft
IBX-11778: Added composite actions for metapackage Create Tag workflows#105alongosz wants to merge 6 commits into
alongosz wants to merge 6 commits into
Conversation
The auto_tag.yml workflows in the metapackage repositories (oss, headless, experience, commerce) are ~90% identical copies. These two composite actions extract the common logic so each workflow keeps only its edition-specific data (which parent/assets packages to check and pin): - check-composer-package asserts that a package version is available in a Composer repository (Packagist by default, or Satis via repository-url and basic auth), optionally re-checking on a retry schedule. It replaces both the GitHub-tag existence probe (a flawed proxy: the tag can exist while the package is not yet installable) and the Satis wait loop. - create-metapackage-tag covers the whole tagging job: fetching the release.json definition from the release repository, deriving minimum stability, pinning parent packages, patching require versions, updating composer.lock, and (behind real-op) committing, tagging and pushing with a GitHub App token. Shell logic lives in .bash files that receive inputs via the environment instead of workflow-expression interpolation. The sponge/moreutils dependency of the original steps is dropped in favour of tmpfile+mv. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The bats suites stub the external commands (curl, sleep, gh, git, composer) on PATH and use the real jq, covering the retry semantics of check-composer-package and the composer.json transformations of create-metapackage-tag. The new CI workflow runs bats and actionlint (pinned by version and checksum) on pushes to main and pull requests. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This was referenced Jul 22, 2026
- Redirected the check-composer-package error annotation to stderr; - Added an explicit default case to the stability switch and dropped the command-in-variable indirection (also replacing echo|cut with a plain parameter expansion); - Suppressed the unpredictable-dependency-versions rule on composer update: regenerating the lock file is the purpose of the action. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Enforced HTTPS on the actionlint download redirect; - Disabled the actionlint shellcheck integration for now — the pre-existing workflows are not shellcheck-clean — and added a dedicated shellcheck job covering the action scripts instead; - Added explicit returns to the bats helper functions. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
alongosz
commented
Jul 28, 2026
alongosz
left a comment
Member
Author
There was a problem hiding this comment.
Remarks for Claude-Code:
- Documented the private-packages repository URL next to the default; - Dropped the NOSONAR suppression on composer update — the finding is handled as a false positive in SonarCloud instead. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Switched the CI jobs to the ubuntu-26.04 runner used across the repositories, instead of ubuntu-latest; - Bumped actionlint from 1.7.7 to 1.7.12 (latest); - Added .github/actionlint.yaml declaring ubuntu-26.04, which actionlint's built-in runner label list does not know yet. 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.



Related PRs:
Description:
The
auto_tag.yml(Create Tag) workflows in the metapackage repositories (oss, headless, experience, commerce) are ~90% identical copies. This PR adds two composite actions extracting the common logic, so each workflow keeps only its edition-specific data (see the related PRs, which shrink each workflow to 40–60 lines):actions/check-composer-package— checks that a package version is available in a Composer repository: Packagist by default, or a Satis instance viarepository-url+ basic auth. Withretry: trueit re-checks on a configurableretry-schedule(the default reproduces the commerce Satis wait: 30/60/120 s ramp-up, then 5 × 300 s, ~28.5 min worst case). It replaces both preparation-phase patterns used so far:ibexa/headless-assetsis served by Satis, which is rebuilt by a 5-minute cron), andactions/create-metapackage-tag— the whole tagging job: fetchesreleases/<version>/release.jsonfrom the release repository (input, defaultibexa/release-maker), derives minimum stability from the version suffix, pins the parent/assets packages (pin-packagesinput), patches the require versions from the release definition, updatescomposer.lock, and — behindreal-op— commits, tags and pushes using a GitHub App token viagh auth setup-git.Implementation notes:
.bashscripts next to eachaction.yml(thecomposer-installconvention) and receives inputs via the environment — no${{ }}interpolation inside scripts.sponge/moreutils dependency of the original steps is dropped (tmpfile +mv), removing anapt-get installfrom every run.For QA:
No manual QA required at this stage. The actions are exercised end-to-end by the related metapackage PRs, which temporarily point their
uses:references at this branch ([TMP]commits) — the Create Tag dry-run dispatches (real_op: false) there validate this PR before it is merged.Documentation:
No documentation required.
🤖 Generated with Claude Code