ci: close ci-status gate gap + drop redundant installs#394
Conversation
Release Preview — no release
Updated automatically by ReleaseKit |
|
| Filename | Overview |
|---|---|
| .github/workflows/ci.yml | Three targeted changes: adds build-tauri-package-app-macos-arm/intel to ci-status.needs (closing false-green gap), drops build from build-matrix.needs (unnecessary serialisation), and adds the Dependabot gate on detect-changes plus a ci-status fail-step to block Dependabot merges until CI is manually run. |
| .github/workflows/dependabot-ci.yml | New workflow: dispatches the full CI pipeline (force_all=true) when ci:run label is added to a Dependabot PR, then removes the label so re-adding it re-triggers. Permissions scoped to actions:write + pull-requests:write + contents:read. |
| .github/workflows/_ci-build-tauri-e2e-app.reusable.yml | Removes the redundant pnpm install --frozen-lockfile step; setup-workspace already performs this install before any downstream steps run. |
| .github/workflows/_ci-build-dioxus-e2e-app.reusable.yml | Removes redundant pnpm install --frozen-lockfile; same rationale as the Tauri reusable. |
| .github/workflows/_ci-build-dioxus-package-app.reusable.yml | Removes redundant pnpm install --frozen-lockfile; same rationale as the Tauri reusable. |
| .github/workflows/_ci-build-electrobun-e2e-app.reusable.yml | Removes redundant pnpm install --frozen-lockfile; same rationale as the Tauri reusable. |
| .github/workflows/_ci-build-electrobun-package-app.reusable.yml | Removes redundant pnpm install --frozen-lockfile; same rationale as the Tauri reusable. |
| .github/workflows/_ci-build-electron-package-apps.reusable.yml | Removes redundant pnpm install --frozen-lockfile; same rationale as the Tauri reusable. |
Flowchart
%%{init: {'theme': 'neutral'}}%%
flowchart TD
PR[Pull Request Event]
WD[workflow_dispatch\n force_all=true]
LABEL[ci:run label added\nto Dependabot PR]
PR -->|Dependabot PR| GATE{detect-changes\nif: login != dependabot}
PR -->|Regular PR| GATE
GATE -->|Regular PR: runs| DC[detect-changes]
GATE -->|Dependabot PR: skipped| SKIP[All build/test/\npackage jobs skipped]
DC --> BUILD[build\nLinux artifact only]
DC --> BM[build-matrix\nneeds: detect-changes only]
BUILD --> BTP_ARM[build-tauri-package-app\nmacos-arm]
BUILD --> BTP_INTEL[build-tauri-package-app\nmacos-intel]
BTP_ARM --> PKG_ARM[package-tauri-macos-arm]
BTP_INTEL --> PKG_INTEL[package-tauri-macos-intel]
SKIP --> CISTATUS
PKG_ARM --> CISTATUS[ci-status\nif: always]
PKG_INTEL --> CISTATUS
BM --> CISTATUS
CISTATUS -->|Dependabot PR| FAIL[exit 1\nblocks merge]
CISTATUS -->|Regular PR| CHECK[Check results\nfail on failure/cancelled]
LABEL --> DEPBOT[dependabot-ci.yml\ndispatch + remove label]
DEPBOT --> WD
WD -->|no pull_request context| GATE
Reviews (3): Last reviewed commit: "ci: skip CI on Dependabot PRs by default..." | Re-trigger Greptile
build-tauri-package-app-macos-arm and -macos-intel exist and feed
package-tauri-macos-{arm,intel}, but were missing from ci-status.needs
(every other build-app job is listed). If one failed, its consumer was
skipped — and ci-status only trips on failure/cancelled, not skipped —
so the build job's failure wasn't in the needs set and CI reported green.
Add both to ci-status.needs.
Also decouple build-matrix (Electron Windows/macOS build-verify) from
`build`: it builds from source per-OS and never downloads the Linux
artifact, so `needs: build` only delayed its start. Drop to
`needs: [detect-changes]`.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The setup-workspace composite action already runs `pnpm install --frozen-lockfile`. Six build reusables called it a second time after setup-workspace (the tauri/dioxus/electrobun e2e + package builds and the electron package build). The intervening artifact download only drops dist/ folders — it doesn't invalidate the install or the workspace symlinks — so the second install was a no-op repeated per job. Remove it from: _ci-build-tauri-e2e-app, _ci-build-dioxus-e2e-app, _ci-build-dioxus-package-app, _ci-build-electrobun-e2e-app, _ci-build-electrobun-package-app, _ci-build-electron-package-apps Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1da091c to
a1ce374
Compare
…ispatch Dependabot opens up to 20 PRs/week, each fanning out the full OS matrix and draining the runners. Gate detect-changes (the root every job depends on) so Dependabot PRs skip the whole pipeline, and fail the ci-status required check for them so branch protection blocks the merge until CI runs. Both manual triggers arrive as a workflow_dispatch (no pull_request context), which bypasses the gate and the red ci-status step: - the existing Actions -> CI -> Run workflow button, and - a new `ci:run` label, handled by dependabot-ci.yml: dispatches with force_all and removes the label so re-adding re-runs CI. Requires a one-time `ci:run` label in the repo. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Two small, low-risk CI fixes found during a review of the workflow graph. No behavior change to what the tests do — only which jobs gate CI and how fast they start.
P1 —
ci-statusgating gap (correctness)ci-statusis the single required check, designed to list every job inneeds:. Two real jobs were missing from the list:build-tauri-package-app-macos-armbuild-tauri-package-app-macos-intel(every other
build-*-appjob is listed). Failure mode: if one of these builds fails, its consumerpackage-tauri-macos-{arm,intel}isskipped(a failedneeds:skips the dependent), andci-statusonly trips onfailure/cancelled—skippedpasses. The build job itself isn't in theneedsset, so a failed macOS Tauri package build reported CI green. Added both toci-status.needs.Perf-3 — decouple
build-matrixfrombuildbuild-matrix(Electron Windows/macOS build-verify) builds from source on each OS and never downloads the Linuxbuildartifact (_ci-build.reusable.ymlonly uploads on Linux), soneeds: buildonly delayed its start. Dropped toneeds: [detect-changes].Perf-2 — drop redundant
pnpm installactions/setup-workspacealready runspnpm install --frozen-lockfile. Six build reusables ran it a second time. The intervening artifact download only dropsdist/folders — it doesn't invalidate the install or the workspace symlinks — so the second install was a per-job no-op. Removed from:_ci-build-tauri-e2e-app_ci-build-dioxus-e2e-app_ci-build-dioxus-package-app_ci-build-electrobun-e2e-app_ci-build-electrobun-package-app_ci-build-electron-package-appsValidation
actionlint1.7.12 (the pinned version CI runs) — clean across all top-level workflows and reusables.Not included (from the same review, deferred)
buildchain (needs: [detect-changes], build their small JS surface locally like the RN/Flutter iOS builds already do). Kept separate so the build-graph change is isolated and easy to bisect.setup-workspace(currently disabled).🤖 Generated with Claude Code