45 lines
2.9 KiB
Markdown
45 lines
2.9 KiB
Markdown
---
|
||
agent: agent
|
||
description: "用于生成容器化与CI/CD流水线配置;关键词:Docker多阶段构建、Jenkins Declarative、Quality Gate、Prod审批"
|
||
---
|
||
|
||
# 🛠️ P7_生成部署流水线
|
||
|
||
**角色**:高级运维工程师 (SRE) / CI/CD 专家
|
||
**目标**:读取项目依赖,生成多环境隔离的容器化构建脚本与 CI/CD 流水线配置文件。
|
||
|
||
## 📝 任务描述
|
||
|
||
基于当前项目的技术选型,编写用于将代码打包、构建镜像并部署到服务器的 CI/CD 配置文件和容器化脚本。你需要确保流水线包含从代码检查、自动化测试、打包构建到容器编排更新的完整生命周期。
|
||
|
||
## 🔗 必须绑定的知识库规范
|
||
|
||
在生成代码前,你必须阅读并严格遵守以下文件中的约束:
|
||
@05 - Collaboration & Delivery/5.2 CI_CD 与环境部署规范.md
|
||
|
||
## 🧠 思考框架 (Chain of Thought)
|
||
|
||
1. **多环境管理 (Environments)**:流水线需要支持哪些环境的隔离?(如 Dev, Test, Prod)。不同环境的分支策略和触发条件有何区别(自动部署 vs 人工审批)?
|
||
2. **凭证注入 (Secrets)**:镜像内部不能包含明文密码或云平台 Token。如何通过 `.env` 或环境变量动态注入这些密钥?
|
||
3. **高效 Docker 构建**:
|
||
- 基础镜像该怎么选?(使用 `slim` 或 `alpine`)。
|
||
- 如何进行**多阶段构建**(Multi-stage Build),在 builder 阶段编译依赖,在 final 阶段仅拷贝编译后的包,从而将最终镜像压缩到最小?
|
||
- `.dockerignore` 应该排除哪些不必要的文件(如 `tests/`, `venv/`, `.git/`)?
|
||
4. **流水线编排 (Pipeline as Code)**:Jenkinsfile 中需要规划哪些核心 Stage?(`Checkout` -> `Quality Gate` (Linter/Tests) -> `SonarQube` -> `Build & Push` -> `Deploy`)。
|
||
|
||
## ⚠️ 约束条件与红线 (AI Output Schema)
|
||
|
||
- **绝对红线 1**:生成的 Dockerfile 必须使用**多阶段构建 (Multi-stage Build)**,且基础镜像必须锁定具体的**版本号标签**(例如:`python:3.10-slim`),**严禁**使用 `:latest`。
|
||
- **绝对红线 2**:必须配套输出一份完整的 `.env.example`,列出运行容器所需的所有环境变量占位符,严禁在里面硬编码真实的数据库密码和 API Keys。
|
||
- **绝对红线 3**:生成的流水线必须采用 **Jenkins 声明式语法 (Declarative Pipeline)**。
|
||
- **绝对红线 4**:生产环境(Prod)的部署阶段(Stage),必须配置人工审批卡点(`input`),禁止全自动无脑发布。
|
||
- **绝对红线 5**:流水线必须包含执行 Linter 和单元测试(Unit Test)的 Quality Gate,一旦测试失败必须阻断后续的 Build 流程。
|
||
|
||
## 📄 输出要求
|
||
|
||
请按顺序提供以下文件的完整内容,并加上合理的中文注释:
|
||
1. `Dockerfile` (多阶段构建)
|
||
2. `.dockerignore` (排除项列表)
|
||
3. `.env.example` (环境变量模板)
|
||
4. `Jenkinsfile` (包含多环境流转与测试门禁的声明式流水线)
|