Conversation
Published releases currently require a manual server update. Chain a pinned Compose deployment after release creation with serialized execution and health checks. Ordinary main updates stay undeployed and failed releases can be retried.
Release deployment must not select later commits or conceal build failures. Exercise release selection, failure handling and a real Git checkout with preserved server configuration. Regressions are checked without connecting to production services.
The contribution guide still describes manual deployment after a release. Document production secrets, pinned releases, verification and failure retries. Maintainers can operate the automated path without changing the release policy.
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
Codecov Report✅ All modified and coverable lines are covered by tests. @@ Coverage Diff @@
## main #953 +/- ##
=======================================
Coverage 91.27% 91.27%
=======================================
Files 193 193
Lines 13204 13204
=======================================
Hits 12052 12052
Misses 1152 1152
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
| execute( | ||
| "curl", "--fail", "--silent", "--show-error", "--retry", "12", | ||
| "--retry-all-errors", "--retry-delay", "5", "--max-time", "10", | ||
| "http://127.0.0.1:8000/api/health", |
There was a problem hiding this comment.
[P1] Probe the backend's actual local health route
deploy() runs this curl directly against 127.0.0.1:8000, which bypasses nginx, but the backend registers its health endpoint as /health (see backend/packages/app/src/windup_app/bootstrap/app.py:151). /api/health is the browser/nginx-facing prefix and is not served by the backend on port 8000, so every fresh release deployment will start the services and then fail here; the deployment markers are never written and the Actions job reports failure. Use the local /health route (and add an assertion for the URL to the new tests).
正式 Release 创建后自动部署到 windup.xin,固定使用该版本的 tag/SHA。普通 main 更新不会部署,本 PR 不提升 VERSION 或发布新版本。
Why
现有 Version 工作流已负责 CI 闸口、Tag 和 Release,上线仍靠人工操作。把部署直接接在同一工作流后,也避免 GITHUB_TOKEN 创建 Release 不触发另一个工作流的问题。
Changes
needs: release的 Production 部署,沿用服务器现有 Compose,配置串行执行和 SSH 主机校验。.env和 override;核对 tag/SHA 与 main 祖先关系后部署确切提交。Verification
uv run --no-project --with pytest==8.3.4 python -m pytest -q tests/test_version_gate.py tests/test_release_deploy.py:39 passed,包含真实 Git 仓库中 main 前进后仍部署 tag、保留本地配置的验证。go run github.com/rhysd/actionlint/cmd/actionlint@v1.7.12 -shellcheck= .github/workflows/version.yml:通过工作流语法与表达式检查;未运行 ShellCheck。git diff --check:通过。Scope
仅补 Release 后的前后端与 worker 自动部署;不改应用功能、VERSION、路由、数据卷或服务器登录配置。不增加部署人工审批,保留现有 PR Review 与 CI。不是零停机或原子发布;启动/健康失败可能产生部分更新,不会自动回退数据库。恢复方式见部署说明。
Related Issues
Closes #952
Refs #653