Releases: kethalia/workflows
v3.2.0
Minor Changes
-
368e3a5:
helm-lint.yml: add two opt-in inputs.chart-discovery-command: optional bash command that prints newline-separated chart paths (orChart.yamlpaths, which are normalized to their parent directory). Use when the chart layout is dynamic (e.g.find infrastructure -name Chart.yaml -not -path '*/charts/*'). Eitherchartsorchart-discovery-commandmust be provided; when both are set,chartswins.kubeconform-schema-locations: newline-separated list of-schema-locationvalues passed to kubeconform whenvalidate-templates: true. Defaults preserve the prior behavior (default+ datreeio CRDs catalog). Override to point at internal CRD schema bundles.
The
chartsinput is now optional but mutually-exclusive with discovery. Existing callers that passcharts:keep working unchanged.
v3.1.0
Minor Changes
-
555bd91: feat(ci-quality): add opt-in
shellcheck-commandandcspell-commandinputsfeat(helm-lint): add
validate-templatesinput that runs kubeconform against
helm-rendered manifests. Configurable viakubernetes-versionand
kubeconform-version. Defaults to off — non-breaking.feat(kubeconform): new
kubeconform.ymlreusable for validating raw
Kubernetes manifests outside helm charts. Takesinstall-command(optional)
andlint-command(required). Routes throughresolve-runnerheavy tier.All new jobs are additive opt-ins; existing callers are unaffected.
v3.0.0
Major Changes
-
c9a73ed:
reusable-visual-tests.ymlandupdate-snapshots.ymlnow resolve their runner labels viaresolve-runner.yml@v2.0.0instead of hardcodingruns-on: ubuntu-latest. This brings both workflows in line withci-build-lint-test.ymlandci-quality.yml, so a caller repo (or its org) can opt the Playwright suite onto the self-hosted heavy tier viavars.RUNNER_HEAVYwithout forking the reusables.Breaking change. Both workflows now default to the heavy tier:
reusable-visual-tests.ymlvisual-tests job →vars.RUNNER_HEAVY→self-hostedupdate-snapshots.ymldispatch job →vars.RUNNER_HEAVY→self-hosted
Existing callers under the kethalia/chillwhales/phlox-labs orgs (where
vars.RUNNER_HEAVYis already pinned toubuntu-latest) see no change. Standalone consumers that previously inherited the hardcodedubuntu-latestand have noRUNNER_HEAVYset will fall back toself-hostedfor both jobs — pinvars.RUNNER_HEAVY=ubuntu-lateston the caller repo (or org) to preserve prior behavior.Self-hosted runners that consume the visual workflow must have Docker available and be able to pull the configured Playwright image, since the suite still runs inside
container:.
v2.0.0
Major Changes
- 9ae2fdd: BREAKING: Remove the
label-gatejob and theapproval-labelinput fromreusable-visual-tests.yml. Baseline-approval enforcement was redundant with ordinary PR review and thepull_requesttrigger lacked thelabeledactivity type, so the gate stayed red until the workflow was manually re-run after the label was applied — pure friction for no added security. Callers must (1) droplabel-gatefrom any required-check list in branch protection, and (2) removeapproval-label:from theirwith:block — passing an unknown input now fails workflow startup.
v1.5.5
Patch Changes
- bcf3ef2: Add additive
pr-<num>-<head_short_sha_8>tag tobuild-stack.ymlso ArgoCD's PullRequest-generated ApplicationSets can resolve per-PR images. The existingpr-<num>-<github.sha>tag (which onpull_requestevents is the synthetic merge-commit SHA, not the PR head SHA) is unchanged and continues to be published — the new tag is additive and non-breaking. ArgoCD's PullRequest generator exposes onlyhead_sha/head_short_sha; without an 8-char head-sha tag, every preview Application ImagePullBackOff'd because the merge ref and head ref never match. GHCR retention prunes both tags together since they share thepr-prefix; no extra cleanup configuration required.
v1.5.4
Patch Changes
- bc82277: Sign baseline-refresh commits in
reusable-visual-tests.ymlvia the GitHub API. Theupdate-baselinesmode previously created the refresh commit withgit commit+git pushfrom the runner, producing unsigned commits that fail branch-protection rules requiring signed commits (and blocking PR merges via the "verified" badge). The commit is now created with the GraphQLcreateCommitOnBranchmutation using the workflow'sGITHUB_TOKEN, which GitHub signs with its web-flow key and attributes togithub-actions[bot]. A single mutation carries all additions and deletions, avoiding secondary rate limits on baseline refreshes that touch many PNGs. No caller changes required; thegit-user-name/git-user-emailinputs are now deprecated (accepted-but-ignored) since the author is fixed by web-flow signing.
v1.5.3
Patch Changes
- 11c25fe: Fix YAML syntax error in
reusable-visual-tests.ymlplaywright-imageinput description. The unquoted plain scalar contained`defaults.run.shell: bash`, whose embedded:broke YAML parsing and triggered GitHub's "Invalid workflow file" phantom failure run on every push touching the file. Converted the description to a|block scalar to match neighboring inputs.
v1.5.2
Patch Changes
-
0d022b4: fix(visual-tests): rename
visual-tests.ymltoreusable-visual-tests.ymlto clear stuck workflow registrationThe original
visual-tests.ymlfile was first registered with a broken parse during the initial commit, leaving its registerednamestuck at the file path (.github/workflows/visual-tests.yml) instead of the declared workflow name. GitHub never refreshes the registered name on subsequent commits, so every push that touches the file emits a phantompush-event startup-failure run with zero jobs. Renaming the file forces GitHub to create a fresh workflow registration row, clearing the noise.The
update-snapshots.ymlreusable'starget-workflowinput default remainsvisual-tests.yml— that input names the caller's local shim workflow (which still owns theworkflow_dispatchtrigger), not this reusable file. Callers that pin a tag (e.g.@v1.5.1) are unaffected — the rename only changes the file path going forward. Callers consuming@mainof this workflow must update theiruses:path:- uses: kethalia/workflows/.github/workflows/visual-tests.yml@main + uses: kethalia/workflows/.github/workflows/reusable-visual-tests.yml@main
v1.5.1
Patch Changes
-
c361d3e: fix(visual-tests): force bash for inline run steps inside the Playwright container
The reusable
visual-testsjob runs insidemcr.microsoft.com/playwright, where the default shell GitHub Actions selects issh(dash). The "Guard refresh-mode ref is a branch" and "Commit and push" steps both begin withset -euo pipefail, which dash rejects (set: Illegal option -o pipefail), causing the refresh job to crash on its first real step.Set
defaults.run.shell: bashon thevisual-testsjob so every inlinerun:step uses bash. The playwright-jammy image ships bash. Thelabel-gatejob already runs onubuntu-latest(no container) and is unaffected.
v1.5.0
Minor Changes
-
5c9230b: Breaking-ish:
update-snapshots.ymlno longer declares a job-level
permissions:block. A reusable workflow's job permissions can only cap
the caller's grants, never elevate them — declaring them here masked the
real contract and gave consumers a false sense of security when their
caller omitted the grants. The caller must now declare the following
permissions at workflow-level or on the calling job:permissions: pull-requests: write # PR-context comment reactions + dispatch follow-up actions: write # gh workflow run (dispatch the target workflow) contents: read # actions/github-script + gh CLI base scope
Also fixes the documented
issues: writescope, which was wrong: PR-context
issue_commentAPI calls (reactions, comments) route through the
pull-requestsscope despite the URL shape. Consumers using v1.4.0 with
issues: writeinstead ofpull-requests: writewill 403 on the
"React to comment" and "Comment with dispatch confirmation" steps.Consumers should update their caller's
permissions:block (workflow- or
job-level) in lockstep with the version bump.