目录
- 一、介绍
- 二、项目、流水线和 Stage
- 1. 项目(Project)
- 2. 流水线(Pipeline)
- 3. Stage(阶段)
- 示例:配置一个简单的 CI/CD 流程的基本步骤
- 总结
- 三、一条完整的流水线包括什么 Stage
- 1. 源代码管理(Source Code Management)
- 2. 构建(Build)
- 3. 静态分析(Static Analysis)
- 4. 测试(Test)
- 5. 部署(Deploy)
- 6. 通知和报告(Notification & Reporting)
- 7. 清理(Cleanup)
- 总结
- 四、变量配置(前置 Stage)
- 五、产出物
一、介绍
-
官方文档
-
Github 开源地址
根据官方介绍:
持续交付强调更快、更可靠、低成本的自动化软件交付,蓝盾流水线(Pipeline)提供可视化、一键式部署服务,和持续集成无缝集成,支持并行部署。
具体功能:
二、项目、流水线和 Stage
在腾讯蓝盾(Tencent BlueShield)中,项目、流水线和Stage是实现持续集成和持续部署的核心概念。了解这些概念可以帮助你更好地配置和管理你的 CI/CD 流程。
1. 项目(Project)
项目是腾讯蓝盾中的基本单位,用于组织和管理 CI/CD 流程。一个项目通常对应于一个软件开发的项目,里面包含了所有相关的代码、构建配置和部署设置。
- 创建项目:在腾讯蓝盾控制台中,你可以创建一个新的项目,填写项目名称、描述等基本信息。
- 项目配置:在项目中,你可以配置代码仓库、构建和部署任务等。
- 管理:在项目中,你可以查看构建和部署历史记录,配置通知,设置权限等。
2. 流水线(Pipeline)
5 分钟读懂 BK-CI 流水线
流水线是腾讯蓝盾中用于定义 CI/CD 流程的结构。一个流水线由多个阶段(Stage)组成,描述了从代码提交到生产环境的整个流程。
- 创建流水线:在项目中,你可以创建多个流水线。每个流水线都可以有不同的构建和部署配置。
- 配置流水线:在流水线配置中,你可以设置触发条件、定义构建和部署步骤、配置流水线参数等。
- 执行流水线:每次代码提交或手动触发时,流水线会按照定义的步骤自动执行。
更多具体的实践内容可以阅读:创建你的第一条流水线
3. Stage(阶段)
Stage(阶段)是流水线中的一个步骤,用于定义特定的 Job 作业。可以说,一个 Stage 由多个 Job 组成,一个 Job 由多个 Task(插件)组成。
具体关系图示如下:
一个流水线通常包含多个阶段,每个阶段执行特定的操作,例如构建、测试、部署等。
- 定义阶段:在流水线中,你可以定义多个阶段,每个阶段可以包含多个任务。
- 阶段任务:每个阶段中的任务可以包括构建代码、运行测试、部署应用、发送通知等。
- 阶段配置:你可以为每个阶段配置具体的操作步骤,设置条件和参数。
示例:配置一个简单的 CI/CD 流程的基本步骤
假设你有一个 React 应用,希望配置一个流水线来自动构建和部署应用。以下是配置流程的基本步骤:
-
创建项目:
- 登录腾讯蓝盾控制台。
- 创建一个新项目,命名为“ReactApp”或其他合适的名称。
-
配置流水线:
- 在项目中,选择 流水线 标签,点击 创建流水线。
- 命名流水线,例如“DeployToProduction”。
- 设置流水线触发条件,比如在代码推送到
main
分支时触发。
-
定义阶段:
- 在流水线配置中,添加一个新的阶段,例如“Build and Deploy”。
- 在这个阶段中,配置具体的任务:
- 构建任务:
- 使用 Node.js 环境,运行
npm install
和npm run build
命令来构建应用。
- 使用 Node.js 环境,运行
- 部署任务:
- 使用 FTP、SFTP、SSH 或其他方式将构建文件上传到目标服务器。
- 构建任务:
-
配置阶段任务:
- 构建任务:在构建阶段配置以下步骤:
npm install npm run build
- 部署任务:在部署阶段配置以下步骤(假设使用 SSH 部署):
rsync -avz --delete ./build/ user@your-server-ip:/path/to/your/deployment/directory
- 构建任务:在构建阶段配置以下步骤:
-
保存并执行流水线:
- 保存流水线配置。
- 手动触发流水线或等待自动触发,检查构建和部署过程是否正常。
总结
- 项目:用于组织和管理 CI/CD 流程。
- 流水线:定义了从代码提交到生产环境的整个 CI/CD 流程,由多个阶段组成。
- Stage(阶段):流水线中的具体步骤,执行特定的任务,如构建、测试和部署。
通过配置这些元素,你可以实现自动化的构建、测试和部署过程,从而提高开发效率和软件质量。如果需要更详细的操作说明,可以参考腾讯蓝盾的官方文档或获取腾讯云的技术支持。
三、一条完整的流水线包括什么 Stage
在持续集成(CI)和持续部署(CD)流程中,一个完整的流水线通常包括多个阶段(Stage),每个阶段包含多个任务。流水线的设计可以根据具体项目的需求进行调整,但一般来说,一个典型的流水线会包含以下几个主要阶段:
1. 源代码管理(Source Code Management)
目的:获取最新的代码。
- 任务:
- 从代码仓库拉取最新代码(通常是
git pull
或checkout
)。 - 确保工作目录是干净的,避免旧的构建文件影响当前构建。
- 从代码仓库拉取最新代码(通常是
2. 构建(Build)
目的:编译源代码、生成可执行文件或构建产物。
- 任务:
- 安装依赖:安装项目所需的所有依赖项。例如,对于 Node.js 项目,运行
npm install
或yarn install
。 - 编译/打包:运行构建命令。例如,对于 React 应用,运行
npm run build
以生成生产环境的静态文件。 - 生成报告:如果需要,可以生成构建报告。
- 安装依赖:安装项目所需的所有依赖项。例如,对于 Node.js 项目,运行
3. 静态分析(Static Analysis)
目的:分析代码质量,发现潜在问题。
- 任务:
- 代码检查:运行代码风格检查工具,如 ESLint、Prettier。
- 安全扫描:扫描代码中可能存在的安全漏洞。
- 依赖检查:检查项目依赖是否存在已知漏洞。
4. 测试(Test)
目的:运行各种测试,确保代码质量和功能正确。
- 任务:
- 单元测试:运行单元测试,验证代码的各个单元是否按预期工作。例如,使用
npm test
。 - 集成测试:运行集成测试,验证多个组件之间的交互。
- 端到端测试:运行端到端测试,模拟真实用户行为测试应用的整体功能。
- 测试报告:生成测试报告和覆盖率报告。
- 单元测试:运行单元测试,验证代码的各个单元是否按预期工作。例如,使用
5. 部署(Deploy)
目的:将构建产物部署到目标环境中。
- 任务:
- 上传文件:将构建产物上传到目标服务器。可以使用 FTP、SFTP、SSH、Docker 等方式。
- 更新环境:更新服务器上的应用,可能需要重启服务或容器。
- 配置管理:更新配置文件或环境变量。
6. 通知和报告(Notification & Reporting)
目的:通知相关人员构建和部署的状态。
- 任务:
- 发送通知:将构建和部署结果发送到 Slack、邮件、或其他通知系统。
- 生成报告:生成构建和测试的总结报告。
7. 清理(Cleanup)
目的:清理构建过程中产生的临时文件和资源。
- 任务:
- 删除临时文件:删除构建过程中生成的临时文件和缓存。
- 归档构建产物:将构建产物归档,备份或清理旧的构建版本。
总结
一个完整的 CI/CD 流水线通常包括以下几个阶段:
- 源代码管理:获取最新代码。
- 构建:编译和打包代码。
- 测试:运行单元测试、集成测试和端到端测试。
- 静态分析:分析代码质量和安全性。
- 部署:将构建产物部署到目标环境。
- 通知和报告:发送构建和部署状态通知。
- 清理:清理临时文件和资源。
你可以根据项目的具体需求调整这些阶段和任务。
四、变量配置(前置 Stage)
在流水线执行过程中,前置变量通常用于以下几个方面:
- 配置:根据环境配置应用的参数。例如,数据库连接字符串、API 密钥等。
- 安全:使用秘密管理工具来存储和访问敏感信息。确保敏感信息不被泄露。
- 条件执行:根据变量的值决定是否执行某些任务或阶段。例如,只在特定环境下部署应用。
具体可阅读:使用变量来控制流水线
五、产出物
执行一次流水线构建,会有很多产出物出现,我们按照下面的维度进行了分类:
-
构件(Artifact) :顾名思义,就是编译或打包之后产生的二进制文件,包括镜像、版本压缩包、IPA 包、APK 包等等,利用插件你可以将构件归档到指定的仓库中。
-
代码检查报告:如果你的流水线中包含了 CodeCC 代码检查任务插件,那么你的流水线就会多出这样一个代码检查报告页面,该页面数据会随着你的流水线构建执行而不断刷新。
-
测试报告
-
安装程序
-
版本日志
-
文档
如果想在不同 Job 之间共享产出物,需要用到【Upload】和【Download】插件。