From cf14f606db108e19aea19eb5e89751803de4ac4b Mon Sep 17 00:00:00 2001 From: ben Date: Sat, 30 Aug 2025 14:40:02 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=85=8D=E7=BD=AE=E9=87=91=E4=B8=9D?= =?UTF-8?q?=E9=9B=80/=E5=BC=80=E5=8F=91/=E6=B5=8B=E8=AF=95=E6=B8=90?= =?UTF-8?q?=E8=BF=9B=E5=8F=91=E5=B8=83=E7=8E=AF=E5=A2=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加渐进发布脚本和文档 - 配置canary/dev/beta三环境部署策略 - 包含快速发布、回滚和状态检查功能 --- .../development/CANARY_DEV_BETA_DEPLOYMENT.md | 102 ++++++++ docs/development/DEPLOYMENT_FLOW.md | 196 +++++++++++++++ docs/development/GRADUAL_DEPLOYMENT_PLAN.md | 225 +++++++++++++++++ scripts/check-status.sh | 33 +++ scripts/quick-release.sh | 35 +++ scripts/rollback.sh | 35 +++ scripts/setup_gradual_deployment.sh | 229 ++++++++++++++++++ 7 files changed, 855 insertions(+) create mode 100644 docs/development/CANARY_DEV_BETA_DEPLOYMENT.md create mode 100644 docs/development/DEPLOYMENT_FLOW.md create mode 100644 docs/development/GRADUAL_DEPLOYMENT_PLAN.md create mode 100755 scripts/check-status.sh create mode 100755 scripts/quick-release.sh create mode 100755 scripts/rollback.sh create mode 100755 scripts/setup_gradual_deployment.sh diff --git a/docs/development/CANARY_DEV_BETA_DEPLOYMENT.md b/docs/development/CANARY_DEV_BETA_DEPLOYMENT.md new file mode 100644 index 0000000..9549d50 --- /dev/null +++ b/docs/development/CANARY_DEV_BETA_DEPLOYMENT.md @@ -0,0 +1,102 @@ +# 金丝雀/开发/测试部署策略 + +## 环境命名 + +根据新的命名约定,三个环境重新命名为: + +- **canary** (金丝雀环境): `https://gitea.tailnet-68f9.ts.net/gitea/liurenchaxin.git` +- **dev** (开发环境): `git@bitbucket.org:capitaltrain/liurenchaxin.git` +- **beta** (测试环境): `https://github.com/jingminzhang/taigongxinyi.git` + +## 环境用途 + +- **canary (金丝雀)**: 最新功能测试,早期验证 +- **dev (开发)**: 功能开发和集成测试 +- **beta (测试)**: 预发布测试,用户验收 + +## 部署流程 + +### 1. 日常开发流程 + +```bash +# 在 canary 环境开发新功能 +git checkout develop +git pull canary develop +# 开发完成后 +git add . +git commit -m "feat: 新功能描述" +git push canary develop +``` + +### 2. 集成测试流程 + +```bash +# 将功能从 canary 推送到 dev 环境 +git checkout dev +git pull dev main +git merge develop +git push dev dev:main +``` + +### 3. 预发布流程 + +```bash +# 将功能从 dev 推送到 beta 环境 +git checkout main +git pull beta main +git merge dev +git push beta main +``` + +## 快速命令 + +### 发布新版本 + +```bash +# 金丝雀环境发布 +./scripts/quick-release.sh 1.2.3 canary + +# 开发环境发布 +./scripts/quick-release.sh 1.2.3 dev + +# 测试环境发布 +./scripts/quick-release.sh 1.2.3 beta +``` + +### 回滚操作 + +```bash +# 回滚金丝雀环境 +./scripts/rollback.sh canary 1.2.2 + +# 回滚开发环境 +./scripts/rollback.sh dev 1.2.2 + +# 回滚测试环境 +./scripts/rollback.sh beta 1.2.2 +``` + +### 状态检查 + +```bash +./scripts/check-status.sh +``` + +## 分支策略 + +- **develop**: 金丝雀环境主分支 +- **dev**: 开发环境主分支 +- **main**: 测试环境主分支 + +## 标签命名 + +- 金丝雀: `v1.2.3-canary` +- 开发: `v1.2.3-dev` +- 测试: `v1.2.3-beta` + +## 优势 + +1. **清晰的命名**: canary/dev/beta 更符合行业标准 +2. **渐进发布**: 从金丝雀到测试的渐进式验证 +3. **快速回滚**: 每个环境都可以独立回滚 +4. **隔离性好**: 不同环境完全隔离,减少干扰 \ No newline at end of file diff --git a/docs/development/DEPLOYMENT_FLOW.md b/docs/development/DEPLOYMENT_FLOW.md new file mode 100644 index 0000000..04cedb5 --- /dev/null +++ b/docs/development/DEPLOYMENT_FLOW.md @@ -0,0 +1,196 @@ +# 六壬神鉴渐进发布流程图 + +## 🎯 发布流程概览 + +``` +┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐ ┌─────────────────┐ +│ Development │ │ Staging │ │ Canary │ │ Production │ +│ (Gitea) │───▶│ (Bitbucket) │───▶│ (GitHub 10%) │───▶│ (GitHub 100%) │ +│ develop分支 │ │ staging分支 │ │ main分支 │ │ main分支 │ +└─────────────────┘ └──────────────────┘ └─────────────────┘ └─────────────────┘ + │ │ │ │ + │ │ │ │ + ▼ ▼ ▼ ▼ +┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐ ┌─────────────────┐ +│ 功能开发 │ │ 集成测试 │ │ 灰度验证 │ │ 全量发布 │ +│ 单元测试 │ │ 性能测试 │ │ 监控验证 │ │ 持续监控 │ +│ 代码审查 │ │ 安全扫描 │ │ 用户反馈 │ │ 性能优化 │ +└─────────────────┘ └──────────────────┘ └─────────────────┘ └─────────────────┘ +``` + +## 🚀 快速操作指南 + +### 1. 日常开发流程 + +#### 开始新功能开发 +```bash +# 从 develop 分支创建功能分支 +git checkout develop +git pull origin develop +git checkout -b feature/new-feature + +# 开发完成后 +git add . +git commit -m "feat: 添加新功能" +git push origin feature/new-feature + +# 创建 PR 到 develop 分支 +# 在 Gitea 上创建 Pull Request +``` + +#### 推送到开发环境 +```bash +# 一键推送到 Gitea 开发环境 +git checkout develop +git pull origin develop +git merge feature/new-feature +git push gitea develop +``` + +### 2. 预发布流程 + +#### 准备 staging 发布 +```bash +# 创建发布分支 +git checkout staging +git merge develop +git push staging staging:main + +# 或使用快捷命令 +git deploy-staging +``` + +#### 验证 staging 环境 +```bash +# 检查 staging 状态 +./scripts/check-status.sh +``` + +### 3. 灰度发布流程 + +#### 启动灰度发布 +```bash +# 创建灰度版本 +git checkout main +git merge staging +git tag v1.2.0-canary +git push origin main --tags +``` + +#### 监控灰度状态 +```bash +# 检查发布状态 +curl -s https://api.github.com/repos/jingminzhang/taigongxinyi/releases/latest +``` + +### 4. 全量发布流程 + +#### 正式版本发布 +```bash +# 使用快速发布脚本 +./scripts/quick-release.sh 1.2.0 prod + +# 或手动操作 +git checkout main +git tag v1.2.0 +git push origin main --tags +git deploy-prod +``` + +## 📊 发布检查清单 + +### 开发阶段检查 +- [ ] 代码通过单元测试 +- [ ] 功能测试完成 +- [ ] 代码审查通过 +- [ ] 文档已更新 + +### Staging 阶段检查 +- [ ] 集成测试通过 +- [ ] 性能测试完成 +- [ ] 安全扫描通过 +- [ ] 用户验收测试完成 + +### 灰度发布检查 +- [ ] 监控指标正常 +- [ ] 错误率 < 0.1% +- [ ] 用户反馈良好 +- [ ] 业务指标稳定 + +### 全量发布检查 +- [ ] 灰度验证通过 +- [ ] 回滚方案就绪 +- [ ] 监控告警配置 +- [ ] 紧急联系清单 + +## 🔄 回滚操作 + +### 紧急回滚 +```bash +# 快速回滚到指定版本 +./scripts/rollback.sh prod 1.1.9 + +# 或手动回滚 +git checkout v1.1.9 +git tag v1.2.0-rollback +git push origin main --force +``` + +### 回滚验证 +```bash +# 检查回滚状态 +./scripts/check-status.sh +``` + +## 📈 监控面板 + +### 关键指标监控 +- **系统性能**: CPU、内存、磁盘使用率 +- **应用性能**: 响应时间、吞吐量、错误率 +- **业务指标**: 用户活跃度、功能使用率 + +### 告警规则 +- 错误率 > 1% → 立即告警 +- 响应时间 > 1s → 立即告警 +- 服务不可用 → 立即告警 + +## 🛠️ 工具命令速查 + +| 操作 | 命令 | 说明 | +|------|------|------| +| 查看状态 | `./scripts/check-status.sh` | 检查所有环境状态 | +| 快速发布 | `./scripts/quick-release.sh 版本号 环境` | 一键发布到指定环境 | +| 紧急回滚 | `./scripts/rollback.sh 环境 版本号` | 快速回滚到指定版本 | +| 推送到 staging | `git deploy-staging` | 推送到 Bitbucket staging | +| 推送到 prod | `git deploy-prod` | 推送到 GitHub production | +| 同步所有远程 | `git sync-all` | 同步所有远程仓库 | + +## 📞 紧急联系 + +| 角色 | 联系方式 | 职责 | +|------|----------|------| +| 技术负责人 | ben@capitaltrain.cn | 技术决策、紧急响应 | +| 运维团队 | ops@capitaltrain.cn | 部署、监控、故障处理 | +| 产品团队 | product@capitaltrain.cn | 业务决策、用户沟通 | + +## 🎓 最佳实践 + +### 1. 分支管理 +- 功能分支从 `develop` 创建 +- 发布分支从 `staging` 创建 +- 热修复分支从 `main` 创建 + +### 2. 版本命名 +- 主版本: 不兼容的重大更新 +- 次版本: 向后兼容的功能添加 +- 修订版本: bug修复和微小改进 + +### 3. 发布频率 +- 紧急修复: 随时发布 +- 常规更新: 每2周一次 +- 大版本更新: 每季度一次 + +### 4. 监控策略 +- 灰度期间: 24-48小时密切监控 +- 全量发布: 72小时持续监控 +- 日常运维: 实时告警监控 \ No newline at end of file diff --git a/docs/development/GRADUAL_DEPLOYMENT_PLAN.md b/docs/development/GRADUAL_DEPLOYMENT_PLAN.md new file mode 100644 index 0000000..582cf28 --- /dev/null +++ b/docs/development/GRADUAL_DEPLOYMENT_PLAN.md @@ -0,0 +1,225 @@ +# 六壬神鉴渐进发布计划 + +## 概述 +本计划基于当前的多环境 Git 配置,实现从开发到生产的渐进式发布流程。 + +## 环境架构 + +### 当前配置 +- **GitHub** (production): `https://github.com/jingminzhang/taigongxinyi.git` +- **Bitbucket** (staging): `git@bitbucket.org:capitaltrain/liurenchaxin.git` +- **Gitea** (development): `https://gitea.tailnet-68f9.ts.net/gitea/liurenchaxin.git` + +### 分支策略 +``` +main (生产环境) +├── staging (预发布环境) +├── develop (开发环境) +└── feature/* (功能分支) +``` + +## 渐进发布阶段 + +### 阶段1:功能开发 (Development) +**目标环境**: Gitea (development) +**分支**: `feature/*` → `develop` + +#### 流程 +1. 从 `develop` 分支创建功能分支 +2. 在功能分支上进行开发 +3. 完成功能后合并到 `develop` +4. 推送到 Gitea 进行初步测试 + +#### 验证清单 +- [ ] 单元测试通过 +- [ ] 代码审查完成 +- [ ] 功能测试通过 +- [ ] 文档更新完成 + +### 阶段2:集成测试 (Staging) +**目标环境**: Bitbucket (staging) +**分支**: `develop` → `staging` + +#### 流程 +1. 从 `develop` 分支创建发布分支 `release/vX.Y.Z` +2. 在 staging 环境部署测试 +3. 进行集成测试和用户验收测试 +4. 修复发现的问题 +5. 合并到 `staging` 分支 +6. 推送到 Bitbucket staging 环境 + +#### 验证清单 +- [ ] 集成测试通过 +- [ ] 性能测试通过 +- [ ] 安全扫描通过 +- [ ] 用户验收测试完成 +- [ ] 回滚方案准备就绪 + +### 阶段3:灰度发布 (Canary) +**目标环境**: GitHub production (10%流量) +**分支**: `staging` → `main` + +#### 流程 +1. 创建灰度发布标签 `vX.Y.Z-canary` +2. 部署到生产环境 10% 流量 +3. 监控关键指标 24-48小时 +4. 根据监控结果决定全量发布或回滚 + +#### 监控指标 +- [ ] 错误率 < 0.1% +- [ ] 响应时间 < 500ms +- [ ] 用户满意度 > 95% +- [ ] 业务指标正常 + +### 阶段4:全量发布 (Production) +**目标环境**: GitHub production (100%流量) +**分支**: `main` + +#### 流程 +1. 创建正式版本标签 `vX.Y.Z` +2. 全量部署到生产环境 +3. 持续监控 72小时 +4. 准备热修复方案 + +## 发布策略 + +### 版本命名规范 +- **主版本** (X.0.0): 重大功能更新或不兼容变更 +- **次版本** (X.Y.0): 新功能添加,向后兼容 +- **修订版本** (X.Y.Z): bug修复或小改进 + +### 发布频率 +- **紧急修复**: 随时发布 +- **常规更新**: 每2周一次 +- **大版本更新**: 每季度一次 + +### 回滚策略 +```bash +# 快速回滚到上一个版本 +git revert HEAD +git push origin main --force + +# 或使用标签回滚 +git checkout vX.Y.Z-1 +git tag -a vX.Y.Z-rollback -m "Rollback to vX.Y.Z-1" +git push origin vX.Y.Z-rollback +``` + +## 自动化工具 + +### Git 钩子配置 +在 `.git/hooks/` 目录下创建以下钩子: + +#### pre-push +```bash +#!/bin/bash +# 检查测试是否通过 +pytest tests/ +if [ $? -ne 0 ]; then + echo "测试未通过,禁止推送" + exit 1 +fi +``` + +#### pre-commit +```bash +#!/bin/bash +# 代码格式检查 +black --check . +flake8 . +``` + +### CI/CD 配置 +创建 `.github/workflows/deploy.yml`: + +```yaml +name: Gradual Deployment + +on: + push: + branches: [staging, main] + release: + types: [published] + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Run tests + run: | + python -m pytest tests/ + + deploy-staging: + needs: test + if: github.ref == 'refs/heads/staging' + runs-on: ubuntu-latest + steps: + - name: Deploy to staging + run: echo "Deploying to staging..." + + deploy-production: + needs: test + if: github.ref == 'refs/heads/main' + runs-on: ubuntu-latest + steps: + - name: Deploy to production + run: echo "Deploying to production..." +``` + +## 监控和告警 + +### 关键指标 +- **系统指标**: CPU、内存、磁盘使用率 +- **应用指标**: 响应时间、错误率、吞吐量 +- **业务指标**: 用户活跃度、功能使用率 + +### 告警规则 +- 错误率 > 1% 触发告警 +- 响应时间 > 1秒 触发告警 +- 服务不可用 立即告警 + +## 发布检查清单 + +### 发布前检查 +- [ ] 所有测试通过 +- [ ] 代码审查完成 +- [ ] 文档已更新 +- [ ] 数据库迁移脚本准备就绪 +- [ ] 回滚方案已验证 + +### 发布后检查 +- [ ] 服务正常启动 +- [ ] 关键功能验证 +- [ ] 监控数据正常 +- [ ] 用户反馈收集 +- [ ] 性能指标对比 + +## 紧急响应 + +### 故障处理流程 +1. **发现故障** → 立即评估影响范围 +2. **5分钟内** → 决定是否回滚 +3. **10分钟内** → 执行回滚操作 +4. **30分钟内** → 修复问题并验证 +5. **1小时内** → 重新发布 + +### 联系方式 +- 技术负责人: ben@capitaltrain.cn +- 运维团队: ops@capitaltrain.cn +- 紧急热线: [待填写] + +## 持续改进 + +### 发布回顾 +每次发布后一周内进行回顾会议: +- 分析发布过程中的问题 +- 收集用户反馈 +- 更新发布流程 +- 优化监控指标 + +### 自动化改进 +- 逐步增加自动化测试覆盖率 +- 完善监控和告警系统 +- 优化部署脚本 +- 建立自动化回滚机制 \ No newline at end of file diff --git a/scripts/check-status.sh b/scripts/check-status.sh new file mode 100755 index 0000000..1e12fab --- /dev/null +++ b/scripts/check-status.sh @@ -0,0 +1,33 @@ +#!/bin/bash +# 环境状态检查脚本 + +echo "📊 环境状态检查" +echo "==================" + +# Git 状态 +echo "Git 状态:" +git status --short + +echo "" + +# 远程仓库状态 +echo "远程仓库状态:" +git remote -v + +echo "" + +# 分支状态 +echo "分支状态:" +git branch -a + +echo "" + +# 最新标签 +echo "最新标签:" +git tag --sort=-version:refname | head -5 + +echo "" + +# 提交历史 +echo "最近提交:" +git log --oneline -5 diff --git a/scripts/quick-release.sh b/scripts/quick-release.sh new file mode 100755 index 0000000..ae9888f --- /dev/null +++ b/scripts/quick-release.sh @@ -0,0 +1,35 @@ +#!/bin/bash +# 快速发布脚本 + +VERSION=$1 +ENV=$2 + +if [ -z "$VERSION" ] || [ -z "$ENV" ]; then + echo "用法: ./quick-release.sh <版本号> <环境>" + echo "环境选项: dev/staging/prod" + exit 1 +fi + +case $ENV in + canary) + git checkout develop + git tag "v${VERSION}-canary" + git push canary develop --tags + ;; + dev) + git checkout dev + git tag "v${VERSION}-dev" + git push dev dev:main --tags + ;; + beta) + git checkout main + git tag "v${VERSION}-beta" + git push beta main --tags + ;; + *) + echo "无效的环境选项: canary/dev/beta" + exit 1 + ;; +esac + +echo "✅ 发布完成: v${VERSION}-${ENV}" diff --git a/scripts/rollback.sh b/scripts/rollback.sh new file mode 100755 index 0000000..7285c45 --- /dev/null +++ b/scripts/rollback.sh @@ -0,0 +1,35 @@ +#!/bin/bash +# 快速回滚脚本 + +ENV=$1 +VERSION=$2 + +if [ -z "$ENV" ] || [ -z "$VERSION" ]; then + echo "用法: ./rollback.sh <环境> <版本号>" + echo "环境选项: staging/prod" + exit 1 +fi + +case $ENV in + canary) + git checkout develop + git reset --hard "v${VERSION}-canary" + git push canary develop --force + ;; + dev) + git checkout dev + git reset --hard "v${VERSION}-dev" + git push dev dev:main --force + ;; + beta) + git checkout main + git reset --hard "v${VERSION}-beta" + git push beta main --force + ;; + *) + echo "无效的环境选项: canary/dev/beta" + exit 1 + ;; +esac + +echo "✅ 回滚完成: ${ENV} -> v${VERSION}" diff --git a/scripts/setup_gradual_deployment.sh b/scripts/setup_gradual_deployment.sh new file mode 100755 index 0000000..0094389 --- /dev/null +++ b/scripts/setup_gradual_deployment.sh @@ -0,0 +1,229 @@ +#!/bin/bash +# 六壬神鉴渐进发布环境配置脚本 + +set -e + +echo "🚀 配置渐进发布环境..." + +# 1. 配置 Git 别名简化操作 +echo "配置 Git 别名..." +git config alias.deploy-staging '!git push staging staging:main' +git config alias.deploy-prod '!git push origin main' +git config alias.sync-all '!git fetch --all && git push --all' +git config alias.release-start '!git checkout develop && git pull && git checkout -b release/' +git config alias.release-finish '!git checkout main && git merge staging && git tag -a' + +# 2. 创建发布分支 +echo "创建发布分支..." +git checkout -b staging 2>/dev/null || git checkout staging +git checkout -b develop 2>/dev/null || git checkout develop + +# 3. 推送分支到所有远程仓库 +echo "推送分支到所有远程仓库..." +git push origin staging:staging 2>/dev/null || true +git push origin develop:develop 2>/dev/null || true +git push staging staging:main 2>/dev/null || true +git push staging develop:develop 2>/dev/null || true + +# 4. 设置分支保护(需要管理员权限) +echo "设置分支保护规则..." +echo "⚠️ 请在 GitHub/GitLab/Gitea 后台手动设置以下分支保护:" +echo "- main 分支:需要 PR 审查,禁止直接推送" +echo "- staging 分支:需要 PR 审查,禁止直接推送" +echo "- develop 分支:需要 PR 审查,禁止直接推送" + +# 5. 创建发布标签模板 +echo "创建发布标签模板..." +cat > .gitmessage.txt << 'EOF' +# 发布标签模板 +# 格式:v主版本.次版本.修订版本-环境 +# +# 示例: +# v1.2.0-canary (灰度发布) +# v1.2.0 (正式版本) +# v1.2.1-hotfix (热修复) +# +# 环境标识: +# -canary: 灰度发布 +# -staging: 预发布测试 +# -hotfix: 紧急修复 +# 无后缀:正式版本 + +发布类型: [feature/bugfix/hotfix/docs] +影响范围: [core/api/ui/config] +测试状态: [passed/failed/pending] +回滚策略: [已准备/无需回滚] +EOF + +git config commit.template .gitmessage.txt + +# 6. 创建快速发布脚本 +cat > scripts/quick-release.sh << 'EOF' +#!/bin/bash +# 快速发布脚本 + +VERSION=$1 +ENV=$2 + +if [ -z "$VERSION" ] || [ -z "$ENV" ]; then + echo "用法: ./quick-release.sh <版本号> <环境>" + echo "环境选项: dev/staging/prod" + exit 1 +fi + +case $ENV in + dev) + git checkout develop + git tag "v${VERSION}-dev" + git push gitea develop --tags + ;; + staging) + git checkout staging + git tag "v${VERSION}-staging" + git push staging staging:main --tags + ;; + prod) + git checkout main + git tag "v${VERSION}" + git push origin main --tags + ;; + *) + echo "无效的环境选项" + exit 1 + ;; +esac + +echo "✅ 发布完成: v${VERSION}-${ENV}" +EOF + +chmod +x scripts/quick-release.sh + +# 7. 创建回滚脚本 +cat > scripts/rollback.sh << 'EOF' +#!/bin/bash +# 快速回滚脚本 + +ENV=$1 +VERSION=$2 + +if [ -z "$ENV" ] || [ -z "$VERSION" ]; then + echo "用法: ./rollback.sh <环境> <版本号>" + echo "环境选项: staging/prod" + exit 1 +fi + +case $ENV in + staging) + git checkout staging + git reset --hard "v${VERSION}-staging" + git push staging staging:main --force + ;; + prod) + git checkout main + git reset --hard "v${VERSION}" + git push origin main --force + ;; + *) + echo "无效的环境选项" + exit 1 + ;; +esac + +echo "✅ 回滚完成: ${ENV} -> v${VERSION}" +EOF + +chmod +x scripts/rollback.sh + +# 8. 创建状态检查脚本 +cat > scripts/check-status.sh << 'EOF' +#!/bin/bash +# 环境状态检查脚本 + +echo "📊 环境状态检查" +echo "==================" + +# Git 状态 +echo "Git 状态:" +git status --short + +echo "" + +# 远程仓库状态 +echo "远程仓库状态:" +git remote -v + +echo "" + +# 分支状态 +echo "分支状态:" +git branch -a + +echo "" + +# 最新标签 +echo "最新标签:" +git tag --sort=-version:refname | head -5 + +echo "" + +# 提交历史 +echo "最近提交:" +git log --oneline -5 +EOF + +chmod +x scripts/check-status.sh + +# 9. 创建 GitHub Actions 工作流目录 +mkdir -p .github/workflows + +# 10. 创建部署验证 +echo "创建部署验证..." +cat > .github/workflows/deploy-validation.yml << 'EOF' +name: Deploy Validation + +on: + push: + branches: [develop, staging, main] + +jobs: + validate: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.9' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + + - name: Run tests + run: | + python -m pytest tests/ -v + + - name: Validate code style + run: | + pip install black flake8 + black --check . + flake8 . + + - name: Security scan + run: | + pip install safety bandit + safety check + bandit -r . -f json -o security-report.json +EOF + +echo "✅ 渐进发布环境配置完成!" +echo "" +echo "📋 使用指南:" +echo "1. 查看状态: ./scripts/check-status.sh" +echo "2. 快速发布: ./scripts/quick-release.sh 1.0.0 staging" +echo "3. 紧急回滚: ./scripts/rollback.sh prod 1.0.0" +echo "4. Git 别名: git deploy-staging, git deploy-prod" +echo "" +echo "📚 详细文档: docs/development/GRADUAL_DEPLOYMENT_PLAN.md" \ No newline at end of file