本文档详细解释GitHub Actions的CI/CD工作流程,帮助你理解持续集成和持续部署。
持续集成 (Continuous Integration) 是指开发人员频繁地将代码集成到主分支的实践。每次集成都会通过自动化构建和测试来验证,从而尽早发现集成错误。
主要好处:
持续交付 (Continuous Delivery) 是在持续集成的基础上,将集成后的代码自动部署到测试环境或生产环境。
持续部署 (Continuous Deployment) 更进一步,完全自动化地将代码部署到生产环境。
GitHub Actions是GitHub提供的CI/CD平台,可以自动化你的软件开发工作流程。
.github/workflows/目录下的YAML文件中触发事件 → 工作流启动 → 并行/串行执行任务 → 每个任务执行多个步骤 → 生成结果
让我们逐步解析.github/workflows/ci.yml文件:
name: C++ CI/CD Pipeline
on:
push:
branches: [ main, master ]
pull_request:
branches: [ main, master ]
workflow_dispatch:
说明:
name: 工作流的名称,会显示在GitHub界面上on: 定义触发条件
push: 当代码推送到main或master分支时触发pull_request: 当创建PR到main或master分支时触发workflow_dispatch: 允许在GitHub界面手动触发jobs:
build-and-test:
name: Build and Test on $
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
build_type: [Release]
说明:
jobs: 定义工作流中的所有任务strategy.matrix: 矩阵策略,自动在多个配置上运行
fail-fast: false: 一个平台失败不影响其他平台$: 引用矩阵变量runs-on: $
说明:
ubuntu-latest, macos-latest, windows-latest- name: 📥 Checkout code
uses: actions/checkout@v4
- name: 🐧 Install dependencies (Ubuntu)
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y build-essential
if: 条件判断,只在Linux上执行run: 执行shell命令|: YAML多行字符串语法- name: 🔨 Build Project
working-directory: $/build
run: cmake --build . --config $
- name: 🧪 Run Tests
working-directory: $/build
run: ctest -C $ --output-on-failure
working-directory: 指定命令执行目录$: GitHub提供的上下文变量- name: 📦 Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: calculator-$-$
path: |
build/calculator_app*
build/calculator_tests*
retention-days: 7
retention-days: 保留天数summary:
name: CI Summary
needs: [build-and-test, code-quality]
if: always()
说明:
needs: 指定依赖关系,只有前面的任务完成后才执行if: always(): 无论前面任务成功与否都执行cd c:\Users\tyk\Desktop\test
git init
git add .
git commit -m "Initial commit: C++ CI/CD project"
仓库地址:https://github.com/tyk-lab/test-github-cicd
git remote add origin git@github.com:tyk-lab/test-github-cicd.git
git branch -M main
git push -u origin main
推送代码后,GitHub会自动:
.github/workflows/ci.yml 文件访问以下链接:
在Actions页面点击某次运行后:
在Actions页面:
修改on部分:
on:
push:
branches: [ main ]
paths:
- 'src/**'
- 'tests/**'
在任务或步骤中添加env:
env:
MY_VAR: value
steps:
- name: Use env
run: echo $MY_VAR
$actions/cache 加速构建通过这个项目,你学到了:
✅ CI/CD的基本概念和重要性
✅ GitHub Actions的工作原理
✅ 如何编写工作流配置文件
✅ 多平台构建和测试
✅ 构建产物管理
✅ 如何查看和调试CI/CD运行结果
下一步: 尝试修改代码,观察CI/CD如何自动运行并验证你的更改!