feat(node-ci): parallelize lint/test/build as independent jobs - #39
Merged
Conversation
Adds node-ci.yml: lint, test, build, and an optional extra_check run as four separate jobs with no needs: between them (each only needs install), so they execute concurrently instead of queued behind one another. Replaces api-build.yml and web-build.yml, which were both single sequential jobs and unused by any actual consumer. env_vars input covers non-secret values a test suite needs (e.g. a mocked login) without hardcoding repo-specific names into the shared workflow. DB-backed e2e/integration jobs are intentionally left out — too repo-specific (engine/version, env vars, seed steps) to generalize without turning this into a pile of pass-through inputs; consumers keep those as plain jobs alongside the ci: call, with no needs: unless they truly consume its build output.
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.
Summary
node-ci.yml:lint,test,build, and an optionalextra_checkrun as four independent jobs with noneeds:between them — each only needsinstall, so they execute concurrently instead of queued behind one another.api-build.ymlandweb-build.yml— both were a single sequential job (lint → test → build) and, on inspection, not actually used by any consumer:gardenia-api/gardenia-webhave their own hand-rolledci.yml, not a call to these.env_varsinput: extra environment variables applied to every job as newline-separatedKEY=VALUEpairs, for non-secret values a test suite needs (e.g. a mocked login), without hardcoding repo-specific names into the shared workflow.Deliberately out of scope: DB-backed
e2e/integrationjobs (Postgres services, migrations). Too repo-specific (engine/version, env var names, extra steps) to generalize without turning this into a pile of pass-through inputs — those stay as plain jobs in each consumer's ownci.yml, just no longer gated behindneeds: <the old build job>when they don't actually consume its output.Known gap, not fixed here:
docs/index.html(a separate static GH Pages doc) still referencesweb-build.yml/api-build.ymland was already stale before this PR (missingrelease-train,docker-release,codeql,pr-labelerentirely). Left untouched — happy to do a follow-up pass if that page is actually in use.Consumed by
gardenia-api,gardenia-web,nestjs-kit,nestjs-template, andcookidoo-mcp(companion PRs rewiring theirci.yml).Test plan
yaml.safe_load)Generated by Claude Code