Skip to content

ci: get the pipeline & docker workflows running green (5 pre-existing breakages)#95

Merged
PAMulligan merged 6 commits into
mainfrom
ci/fix-workflow-startup-failure
May 31, 2026
Merged

ci: get the pipeline & docker workflows running green (5 pre-existing breakages)#95
PAMulligan merged 6 commits into
mainfrom
ci/fix-workflow-startup-failure

Conversation

@PAMulligan
Copy link
Copy Markdown
Collaborator

@PAMulligan PAMulligan commented May 31, 2026

Takes the repo from "no pipeline/docker workflow can even start" to a fully green CI suite. Five independent, pre-existing breakages — none introduced by the InDesign epic; all surfaced while confirming the InDesign fixture test actually runs in CI (#61). Each fix is validated (CI for the test/lint jobs; CI + local Docker for the heavy workflows).

# Breakage Fix
1 6 workflows startup_failure — repo Actions policy whitelists only actions/*, shivammathur/setup-php@*, dorny/paths-filter@* Swap disallowed actions: pnpm/action-setup→Corepack, wagoid/commitlint-github-action@commitlint/cli, treosh/lighthouse-ci-action→vendored @lhci/cli
2 Tests never executed on Node 20 — node --test "<glob>" needs Node 21+ Pipeline test→ no-args node --test; init-wizard→Node 22
3 Docker build fails on Debian trixie — libzip4 renamed libzip4libzip5 (verified vs trixie base; full build runs locally)
4 WooCommerce installer bails "WordPress is not installed" — a 200 from the install wizard ≠ installed Add idempotent wp core install step before the WooCommerce step in both docker workflows
5 lhci fails every run: "timing-budget" is not a known audit — LH12 doesn't emit budget meta-audits Drop the two budget meta-audit assertions; real gates (performance/accessibility/CLS) stay and pass

Result — every check green

  • test-indesign-pkg (Pipeline Tests): runs the InDesign fixture test (.idml + PDF) on Node 20 ✅ — satisfies epic Add InDesign-to-WordPress conversion pipeline #61's "exercised in CI" criterion
  • visual-regression: boot → WP install → WooCommerce → seed → capture → diff ✅
  • lighthouse-ci: lhci runs on all 4 URLs, assertions pass ✅
  • init-wizard, commitlint, security-audit, theme-validation, WPCS ✅

Not changed

release-please.yml still uses googleapis/release-please-action@v4 (disallowed; it only runs on push to main so it's not a PR check). Allowlist that one official action in Settings → Actions → General, or convert it to the release-please CLI in a follow-up.

🤖 Generated with Claude Code

PAMulligan and others added 4 commits May 31, 2026 02:38
The repo's Actions policy is "Allow select actions" with only actions/*,
shivammathur/setup-php@*, and dorny/paths-filter@* permitted. Six workflows
used other marketplace actions, so GitHub rejected them at startup
(startup_failure, zero jobs) — Pipeline Tests, Security Audit, commitlint,
Init Wizard, Lighthouse CI, and visual-regression never actually ran.

Swap the disallowed actions for GitHub-owned / already-vendored equivalents:

- pnpm/action-setup@v4 → Corepack (`corepack enable`; pnpm version comes from
  the root package.json `packageManager` field) in pipeline-tests,
  security-audit, init-wizard, visual-regression, lighthouse-ci.
- wagoid/commitlint-github-action@v6 → the repo's own @commitlint/cli
  (`pnpm exec commitlint --from <base> --to <head>`).
- treosh/lighthouse-ci-action@v12 → the already-vendored @lhci/cli
  (`pnpm exec lhci autorun --upload.target=temporary-public-storage`).

This unblocks the InDesign pipeline tests + fixture test so they actually
execute in CI (epic #61's "exercised in CI" criterion).

release-please.yml still uses googleapis/release-please-action@v4 — left as-is
rather than hand-rewriting release automation; allowlist that one official
action in repo Settings → Actions, or convert it in a dedicated change.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Now that the workflows actually start, the test step ran for the first time
and failed: `node --test "<glob>"` needs Node 21+ (test-runner glob support),
but pipeline CI runs Node 20, so zero tests executed.

- packages/pipeline test script → `node --test` (no-args auto-discovery),
  which works on Node 20 and 24 alike and keeps the Node-20 floor meaningful
  (the directory form is broken on Node 24; only no-args/explicit work on both).
- init-wizard CI → Node 22 (its test:init script keeps the node-glob form,
  which needs ≥21; the init wizard has no Node-20 pin, unlike the pipeline).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The floating wordpress:php8.3-apache base moved to Debian 13 (trixie), where
the libzip soname bumped to .so.5, so `apt-get install libzip4` in the
production stage failed ("Unable to locate package libzip4") and the whole
image build — and thus every docker-booting workflow (lighthouse-ci,
visual-regression) and local `wordpress-local.sh build` — broke.

Verified against the trixie base: libzip's runtime package is now libzip5
(libzip-dev depends on it); the other runtime libs (libpng16-16,
libjpeg62-turbo, libfreetype6, libwebp7) kept their names. Full multi-stage
`docker build --target production` now completes locally.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@PAMulligan PAMulligan changed the title ci: fix workflow startup_failure (non-allowlisted actions) ci: fix broken CI — Actions allowlist, Node-20 test runner, and Docker trixie May 31, 2026
PAMulligan and others added 2 commits May 31, 2026 03:33
The lighthouse-ci and visual-regression workflows booted the WordPress stack
and waited for an HTTP 200, then ran the WooCommerce installer — which bailed
with "WordPress is not installed yet". A fresh container answers 200 with the
*install wizard*, so "responding" ≠ "installed", and the compose stack has no
core-install step (locally that's `wordpress-local.sh install`).

Add an idempotent "Install WordPress core" step (the same `wp core install`
the host script runs, guarded by `wp core is-installed ||`) before the
WooCommerce step in both workflows. Verified locally end-to-end: build → boot →
wp core install → WooCommerce installer now proceeds ("Installed 1 of 1
plugins", pages created) instead of erroring.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
`lhci autorun` failed every run with: `"timing-budget" is not a known audit`
(and the same for performance-budget). Lighthouse 12 — the version bundled
with @lhci/cli 0.14 — doesn't emit the performance-budget/timing-budget
meta-audits, so asserting on them fails unconditionally on `auditRan`. This
was never caught because the workflow had never actually run (it was in
startup_failure).

Remove those two assertions. The real perf gates remain and were already
passing in CI: categories:performance (≥0.70), categories:accessibility
(≥0.90), and cumulative-layout-shift (≤0.1). budgets.json stays — Lighthouse
still consumes it for the report — and a comment notes how to re-add budget
assertions in a LH12-compatible way.

With this, the lhci assert step passes (only the non-failing best-practices/seo
warnings remain), so lighthouse-ci is green end to end.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@PAMulligan PAMulligan merged commit 8fabd0a into main May 31, 2026
13 checks passed
@PAMulligan PAMulligan deleted the ci/fix-workflow-startup-failure branch May 31, 2026 07:54
@PAMulligan PAMulligan changed the title ci: fix broken CI — Actions allowlist, Node-20 test runner, and Docker trixie ci: get the pipeline & docker workflows running green (5 pre-existing breakages) May 31, 2026
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.

1 participant