feat(ops): 添加发布 smoke test
- 新增只读发布 smoke runner 和 dry-run 测试\n- 将生产部署 workflow 从单点版本检查升级为 smoke test\n- 补充 Docker web runtime 脚本复制、package script 和部署文档\n\nCo-Authored-By: GPT-5 Codex <codex@openai.com>
This commit is contained in:
19
.github/workflows/deploy-production.yml
vendored
19
.github/workflows/deploy-production.yml
vendored
@@ -123,26 +123,11 @@ jobs:
|
||||
docker compose --env-file .env.production -f docker-compose.prod.yml up -d --remove-orphans
|
||||
|
||||
for attempt in $(seq 1 30); do
|
||||
if docker compose --env-file .env.production -f docker-compose.prod.yml exec -T web node -e "
|
||||
const expected = process.argv[1];
|
||||
fetch('http://nginx/api/v1/health/version')
|
||||
.then(async (response) => {
|
||||
if (!response.ok) throw new Error('HTTP ' + response.status);
|
||||
const payload = await response.json();
|
||||
if (payload.version !== expected) {
|
||||
throw new Error('Expected ' + expected + ', got ' + payload.version);
|
||||
}
|
||||
console.log('Runtime version verified: ' + payload.version);
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error(error.message);
|
||||
process.exit(1);
|
||||
});
|
||||
" "${{ github.sha }}"; then
|
||||
if docker compose --env-file .env.production -f docker-compose.prod.yml exec -T web node scripts/smoke-test-release.mjs --base-url http://nginx --expected-version "${{ github.sha }}"; then
|
||||
exit 0
|
||||
fi
|
||||
sleep 2
|
||||
done
|
||||
|
||||
echo "Runtime version check failed after retries"
|
||||
echo "Release smoke check failed after retries"
|
||||
exit 1
|
||||
|
||||
Reference in New Issue
Block a user