ci: run CI on push to dev and main, widen coverage, and fix the release skill for this fork - #6
Conversation
deploy-beta.yml builds and publishes an OCI image on every push to dev, but ci.yml only triggered on pull_request. A direct push to dev therefore shipped a beta image that no test had ever seen. Add the push trigger with the same paths-ignore list, so documentation-only pushes still skip. Widen the jobs to cover test files that already exist and already pass: - go vet -tags dev ./... as its own step - internal/builders, internal/bootstrap and internal/handlers added to the Go test command; all three contain tests that were never being run - node --test for the frontend unit tests, which nothing was running - pnpm lint, non-blocking. The tree carries pre-existing react-hooks errors (tracked as PROC-16), so making lint blocking before those are fixed would turn every unrelated pull request red. The step reports without gating. Also rewrite .codex/skills/release-version for this fork. It was inherited from upstream and no longer matched the repository: it required a bare ^vX.Y.Z$ tag, which allocates from the upstream namespace and makes sync-upstream.yml skip a sync entirely once the fork holds a tag of that name; it wrote bilingual changelogs into a docs submodule removed in upstream PR huabeitech#35; and it published to Gitee and to huabeitech/agent-desk. The rewrite documents the -crove.N tag rule and why it exists, the root CHANGELOG.md as the single English changelog, the dev/main reconciliation that has to happen before tagging, the verification commands that work in this tree, and the fact that neither deploy workflow actually deploys anything. collect_release_context.py now validates a release target against the -crove.N form while still parsing inherited upstream tags permissively enough to choose a baseline from them.
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_100ea553-aece-47ef-b607-19bc390ce680) |
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Code Review
This pull request updates the release-version skill documentation, configuration, and helper script to adapt to a fork-specific release process. This includes using vX.Y.Z-crove.N tags, maintaining a single English CHANGELOG.md at the repository root, and targeting the DOS/Crove-Desk repository. Feedback was provided on the verification commands in SKILL.md, suggesting the use of subshells for sequential cd web commands to prevent directory resolution errors in persistent shell sessions.
| cd web && pnpm install --frozen-lockfile | ||
| cd web && pnpm typecheck | ||
| cd web && node --test "**/*.test.mjs" |
There was a problem hiding this comment.
If these commands are executed sequentially in a single persistent shell session (which is common for AI agents or developers running scripts), the second and third cd web commands will fail because the shell is already inside the web directory.
Using subshells (cd web && ...) ensures that the working directory of the parent shell remains at the repository root, making the sequence robust and preventing directory resolution errors.
| cd web && pnpm install --frozen-lockfile | |
| cd web && pnpm typecheck | |
| cd web && node --test "**/*.test.mjs" | |
| (cd web && pnpm install --frozen-lockfile) | |
| (cd web && pnpm typecheck) | |
| (cd web && node --test "**/*.test.mjs") |
What this does
Two independent process fixes. Neither changes application behaviour.
1. CI actually runs on
devdeploy-beta.ymltriggers onpush: branches: [dev]and publishesghcr.io/dos/crove-desk:beta.ci.ymltriggered onpull_requestonly. A direct push todevtherefore built and shipped an image that no test had ever seen.This happened in practice: commits
e66b1043(a Critical security fix),99355186,2f369422,1e7c8327andc69bc397all produced a successful Build & Deploy Beta run and zero CI runs. The gap is recorded as PROC-01 indocs/CROVE_DESK_AUDIT.html.The
pushtrigger uses the samepaths-ignorelist aspull_request, so documentation-only pushes still skip.2. The jobs cover what already exists
Adding a trigger to a job that misses half the test files is half a fix. Every addition below was run locally on this tree and passed:
go vet -tags dev ./..../internal/builders/..../internal/bootstrap/..../internal/handlers/...added to the Go test commandinternal/buildersalone has six_test.gofiles.node --test "**/*.test.mjs"pnpm lintwithcontinue-on-error: truereact-hookserrors (PROC-16). Making lint blocking before those are fixed would turn every unrelated PR red, so this reports without gating.-tags devis required for the vet and test steps: without it the//go:embed all:outdirective inweb/embed.gofails on a checkout that has noweb/out.Known limitation, not fixed here: CI and
deploy-beta.ymlstill run independently, so a push todevcan publish a beta image while CI is still red. Making the image build wait on CI needsworkflow_runchaining indeploy-beta.yml, which is a larger change to a pipeline that currently works.3.
.codex/skills/release-versionrewritten for the forkThe skill was inherited from upstream and no longer described this repository:
^v\d+\.\d+\.\d+$tag and rejected anything else. Bare tags allocate from the upstream namespace, andsync-upstream.yml:79-88skips the entire sync when this fork already holds a tag matching upstream's target tag.v1.7.0here would silently disable a future upstreamv1.7.0sync.docs/zh/docs/changelog.mdanddocs/en/docs/changelog.md. Thedocssubmodule was removed in upstream PR chore: remove docs submodule pointing to a private repository huabeitech/agent-desk#35; those paths do not exist. The fork's changelog is the rootCHANGELOG.md, English only, Keep a Changelog format.huabeitech/agent-desk. There is no Gitee mirror and the release repo isDOS/Crove-Desk.devwithmain. That omission is not theoretical: theweb/pnpm-workspace.yamlfix and the 28 dependency overrides that took Dependabot from 162 alerts to 34 existed only onmain, so taggingdevwithout mergingmainin first would have regressed them. The skill now covers the reconciliation, including resolving apnpm-lock.yamlconflict by runningpnpm install --frozen-lockfilerather than reasoning about it.references/changelog-style.mdkeeps the useful Keep / Drop-or-Compress / Before-Finalizing guidance, drops the bilingual sections, and adds a rule for partial fixes: state what a fix does not cover, because marking a half-fixed issue as fixed removes it from tracking without removing it from the product.scripts/collect_release_context.pynow validates a release target against^v\d+\.\d+\.\d+-crove\.\d+$while still parsing inherited upstream tags (v1.6.3,v20260622) permissively enough to select a baseline from them. Both paths verified:agents/openai.yamlno longer promises to "push docs".Verification
ci.ymlparsed withjs-yaml: three triggers (push,pull_request,workflow_dispatch),push.branches = ["main","dev"], backend stepsCheckout | Set up Go | Run Go Vet | Run Go Tests, frontend steps... | Run Typecheck | Run Node Tests | Run Lint [non-blocking].go vet -tags dev ./...clean,go test -count=1 -tags devover all eight package rootsok,node --test "**/*.test.mjs"68/68 pass.collect_release_context.pyexercised in both directions, output above.Not included
Recording the branch-and-pull-request rule in
AGENTS.mdwas attempted and blocked by tooling policy, which requires an explicit owner request to edit that file. The rule is therefore demonstrated by this PR rather than written down. Proposed text, if the owner wants it added under §1 Scope and Priorities:Note
Low Risk
Changes are limited to CI triggers, test coverage, and release documentation/tooling; no production app logic is modified.
Overview
CI now runs on direct pushes to
devandmain, closing the gap wheredeploy-beta.ymlcould ship a:betaimage without any workflow having tested the commit. The workflow addsgo vet -tags dev, expands Go tests tointernal/builders,bootstrap, andhandlers, runsnode --test "**/*.test.mjs", and reportspnpm lintwithcontinue-on-error(PROC-16).The
release-versionCodex skill is rewritten for this fork:vX.Y.Z-crove.Ntags (barevX.Y.Zrejected because ofsync-upstream.yml), rootCHANGELOG.mdinstead of removed bilingual docs submodule,dev/mainreconciliation before tagging, pre-tag verification commands, GitHub Release onDOS/Crove-Deskonly (no Gitee).collect_release_context.pyenforces fork tag format while still parsing upstream tags for baselines;changelog-style.mdandagents/openai.yamlmatch the new process.No application runtime behavior changes—process and automation only.
Reviewed by Cursor Bugbot for commit 8a3979e. Configure here.