Optimize CI/CD pipeline setup, checks, and release builds #64
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
Reduce CI feedback time and release pipeline cost without weakening checks, merge gates, or publishing safeguards.
Recent Forgejo CI tasks provide an initial reference: #695 took 1m42s, #693 1m43s, #699 2m24s, and #700 2m35s. These are total task durations, not a measured breakdown or proof of a particular bottleneck. Establish a repeatable baseline before choosing optimizations.
Current behavior and opportunities
.forgejo/workflows/ci.ymlandrelease.ymleach install golangci-lint from source withgo installand download pinned ShellCheck on every run. Inspect effective cache hits and setup costs; there is no explicit workflow cache for these tool binaries.actions/setup-goandmake check. Audit the existing setup-go cache before adding another cache for Go modules or build output.make checkruns format, lint, race tests, vulnerability scanning, build, and installer checks serially. Measure stage times and evaluate parallel jobs against runner capacity, repeated setup costs, and cache contention.scripts/test-install.shrunsmake release, cross-compiling all four OS/architecture targets. The tag workflow subsequently runsmake releaseagain with the real tag version. Remove avoidable duplication while retaining coverage of archive names, platform contents, checksums, corruption handling, and install behavior. Do not publish test-version artifacts as real releases.Scope and implementation approach
make checkand CI requirements consistent. Preserve the requiredci / checkstatus or an equivalent aggregate gate that succeeds only when all required jobs pass; preserve dispatched-run status copying ingithub-pull.yml.Acceptance criteria
Out of scope
Application feature changes, dropping quality checks to gain speed, changing release policy, or expanding the GitHub synchronization behavior. Runner/infrastructure changes that require separate operational work should be documented or split into a follow-up ticket.
🤖 merged: #67 — warm CI 109s → 37s; details and measurements in the MR and ADR 0015.