From 7b3e474b4d0edb0d1979b1b0442c43f52cf021ae Mon Sep 17 00:00:00 2001 From: yumoqing Date: Sat, 22 Aug 2026 12:17:40 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20review-deploy=20=E6=94=B9=20Python=20?= =?UTF-8?q?=E7=9B=B4=E8=B7=91=E6=A0=87=E5=87=86(=E6=97=A0docker)=20+=20?= =?UTF-8?q?=E5=AF=B9=E5=A4=96=E5=9C=B0=E5=9D=80=E7=94=A8=E4=B8=BB=E5=9F=9F?= =?UTF-8?q?=E5=90=8D+=E7=AB=AF=E5=8F=A3=E7=A6=81=E7=BC=96=E9=80=A0?= =?UTF-8?q?=E5=AD=90=E5=9F=9F=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - QC review-deploy:去 Dockerfile/docker-compose/docker compose ps(测试环境无docker) - deploy_test + review-deploy:对外地址只用 hrstest.opencomputing.cn:端口,禁止编造子域名 --- .../roles/agent.deploy_test/role/SKILL.md | 4 +- .../roles/agent.qc/review-deploy/SKILL.md | 40 ++++++++++++------- 2 files changed, 29 insertions(+), 15 deletions(-) diff --git a/skills_library/pipelines/sdlc_general/roles/agent.deploy_test/role/SKILL.md b/skills_library/pipelines/sdlc_general/roles/agent.deploy_test/role/SKILL.md index eae82af..d8c7374 100644 --- a/skills_library/pipelines/sdlc_general/roles/agent.deploy_test/role/SKILL.md +++ b/skills_library/pipelines/sdlc_general/roles/agent.deploy_test/role/SKILL.md @@ -34,8 +34,10 @@ capability: deploy_capability ### 三、部署后验证(附真实输出,不是预期声明) - **检查进程**:`ssh hrs@hrstest "ps -ef | grep app.py"` 各模块进程确实在跑 -- **健康检查**:`curl http://127.0.0.1:{端口}/healthz` 返回 200 +- **健康检查**:`curl http://hrstest.opencomputing.cn:{端口}/healthz` 返回 200 - **DB 连通**:`mysql -h localhost -u test -ptest123 hrs -e "SHOW TABLES"` 看到各模块表 +- **对外地址只用主域名+端口**:`http://hrstest.opencomputing.cn:{端口}`(或内网 `http://{IP}:{端口}`)。 + **禁止编造子域名**(如 `selfservice.hrstest.opencomputing.cn`)——子域名未配 DNS/nginx,必然无法解析,会被 QC 退回。 ### 四、产出交付物 - 部署文档(deploy-test-env.md:真实部署步骤 + 端口表 + 验证输出) diff --git a/skills_library/pipelines/sdlc_general/roles/agent.qc/review-deploy/SKILL.md b/skills_library/pipelines/sdlc_general/roles/agent.qc/review-deploy/SKILL.md index ce0ff09..93da662 100644 --- a/skills_library/pipelines/sdlc_general/roles/agent.qc/review-deploy/SKILL.md +++ b/skills_library/pipelines/sdlc_general/roles/agent.qc/review-deploy/SKILL.md @@ -1,6 +1,6 @@ --- name: review-deploy -description: QC 审查部署工程师(agent.deploy_test/deploy_prod)产出的检查清单——部署配置落盘、部署文档、真实部署证据(健康检查/服务启动/DB连通)。触发:审查 deploy_test / deploy_prod 阶段交付件。 +description: QC 审查部署工程师(agent.deploy_test/deploy_prod)产出的检查清单——部署配置落盘、部署文档、真实部署证据(进程/健康检查/DB连通)。触发:审查 deploy_test / deploy_prod 阶段交付件。 capability: task_capability --- @@ -8,33 +8,45 @@ capability: task_capability 被查对象:agent.deploy_test(测试环境)、agent.deploy_prod(生产环境)。审查其产出时**以真实部署证据为准,不只看文档声明**。 +## 测试环境(hrstest)部署方式:Python 直跑,无 docker + +- 测试机 `hrstest.opencomputing.cn` **没有 docker**,部署一律 Python 直跑: + - 各模块 `app.py`(启动入口)+ `requirements.txt`(依赖)+ `deploy.sh`(建表/装依赖/起服务/写 PID) +- **不要要求 Dockerfile / docker-compose / docker compose ps** —— 测试环境根本没有 docker,要求这些是错误标准 + ## 一、部署配置落盘 - 对照 `project-directory-spec` + `webapp-deploy`: - - `repos/{项目名}_pc/config/test/`(或 config/prod/)下:Dockerfile、docker-compose.yml、requirements.txt、entrypoint.sh、nginx/default.conf、deploy.sh、init-db.sh -- 所有模块都要纳入部署(organization/payroll/recruitment 三服务齐全,build context 正确、depends_on 按 DDL 顺序) + - `repos/{项目名}_pc/config/test/` 下:`deploy.sh`、`requirements.txt`、`init-db.sh`、各模块 `app.py` 入口说明 + - 所有模块都要纳入部署(organization/payroll/recruitment/selfservice 各模块 app.py 齐全,端口互不冲突) ## 二、部署文档落盘 - `repos/{项目名}_pc/docs/04-deploy/deploy-test-env.md`(或 deploy-prod-env.md) -- 生产部署额外:高可用、备份、监控告警、域名证书、发布说明 +- 文档里写明:各模块端口表、启动命令、真实部署步骤 ## 三、部署前条件检查(QC 核查是否做了前置检查) -- 应用是否有部署脚本(deploy.sh/Dockerfile/docker-compose/entrypoint/requirements 齐全) -- 部署环境是否可用(SSH 可达、DB 可用、端口/域名就绪) -- 条件不具备时是否退出报错(不是硬部署) +- 应用是否有部署入口(各模块 app.py / deploy.sh) +- 测试机是否可达:`ssh -o BatchMode=yes hrs@hrstest.opencomputing.cn echo ok` +- 条件不具备时是否退出报错冒泡(不是硬部署) ## 四、真实部署证据(关键,禁止纸面部署) -- **必须实际执行部署**(docker compose up / bash deploy.sh),并附真实输出: - - **检查进程**:docker compose ps 各服务 healthy、ps 查看进程确实在跑 - - **检查外网/访问 URL**:对外地址实际连通(curl 健康检查返回 200、页面/API 可访问) - - 数据库 DDL 执行确认(SHOW TABLES 看到三模块表) -- 文档里写"三服务均 healthy / curl 200 / DDL 自动初始化"但标注"未实际执行" → 退回:这是预期不是实测 +- **必须实际执行部署**(ssh 到测试机跑 deploy.sh / nohup python3 app.py),并附真实输出: + - **检查进程**:`ssh hrs@hrstest.opencomputing.cn "ps -ef | grep app.py"` 各模块进程确实在跑(有 PID、端口监听) + - **健康检查**:`curl http://hrstest.opencomputing.cn:{端口}/healthz` 返回 200(**用真实可达地址,见下**) + - **DB 连通**:`mysql -h localhost -u test -ptest123 hrs -e "SHOW TABLES"` 看到各模块表 +- 文档里写"进程已启动 / curl 200 / 表已建"但标注"未实际执行" → 退回:这是预期不是实测 -## 五、真实性核查方法 +## 五、对外地址规范(关键,防止编造域名) + +- 测试环境对外地址**只用主域名 + 端口**:`http://hrstest.opencomputing.cn:{端口}`(或内网 `http://{IP}:{端口}`) +- **禁止编造子域名**(如 `selfservice.hrstest.opencomputing.cn`)——子域名未配 DNS/nginx,必然无法解析 +- QC 核实健康检查时,用 `curl http://hrstest.opencomputing.cn:{端口}/healthz` 或内网 IP:端口,不用子域名 + +## 六、真实性核查方法 - 用 read_file / list_files 验证配置文件真实落盘 -- 用 run_shell 在部署环境实际跑 docker compose ps / curl 健康检查,拿真实输出 +- 用 run_shell 实际 ssh 到测试机跑 `ps -ef | grep app.py` / `curl 健康检查` / `mysql SHOW TABLES`,拿真实输出 - 生产部署必须有人拍板(human gate)才验收