test-github-cicd

GitHub CI/CD 操作流程详解

本文档详细解释GitHub Actions的CI/CD工作流程,帮助你理解持续集成和持续部署。

📋 目录

  1. CI/CD基本概念
  2. GitHub Actions简介
  3. 工作流配置详解
  4. 实际操作步骤
  5. 查看运行结果
  6. 常见问题

CI/CD基本概念

什么是CI (持续集成)?

持续集成 (Continuous Integration) 是指开发人员频繁地将代码集成到主分支的实践。每次集成都会通过自动化构建和测试来验证,从而尽早发现集成错误。

主要好处:

什么是CD (持续交付/持续部署)?

持续交付 (Continuous Delivery) 是在持续集成的基础上,将集成后的代码自动部署到测试环境或生产环境。

持续部署 (Continuous Deployment) 更进一步,完全自动化地将代码部署到生产环境。


GitHub Actions简介

GitHub Actions是GitHub提供的CI/CD平台,可以自动化你的软件开发工作流程。

核心概念

  1. Workflow (工作流): 自动化流程,定义在.github/workflows/目录下的YAML文件中
  2. Job (任务): 工作流中的一组步骤,在同一个运行器上执行
  3. Step (步骤): 任务中的单个操作
  4. Action (动作): 可重用的步骤单元
  5. Runner (运行器): 执行工作流的服务器

工作流执行流程

触发事件 → 工作流启动 → 并行/串行执行任务 → 每个任务执行多个步骤 → 生成结果

工作流配置详解

让我们逐步解析.github/workflows/ci.yml文件:

1. 工作流名称和触发条件

name: C++ CI/CD Pipeline

on:
  push:
    branches: [ main, master ]
  pull_request:
    branches: [ main, master ]
  workflow_dispatch:

说明:

2. 任务定义和矩阵策略

jobs:
  build-and-test:
    name: Build and Test on $
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
        build_type: [Release]

说明:

3. 运行环境

runs-on: $

说明:

4. 步骤详解

检出代码

- 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

构建和测试

- name: 🔨 Build Project
  working-directory: $/build
  run: cmake --build . --config $

- name: 🧪 Run Tests
  working-directory: $/build
  run: ctest -C $ --output-on-failure

上传构建产物

- name: 📦 Upload Artifacts
  uses: actions/upload-artifact@v4
  with:
    name: calculator-$-$
    path: |
      build/calculator_app*
      build/calculator_tests*
    retention-days: 7

5. 任务依赖

summary:
  name: CI Summary
  needs: [build-and-test, code-quality]
  if: always()

说明:


实际操作步骤

步骤1: 初始化Git仓库(已完成 ✅)

cd c:\Users\tyk\Desktop\test
git init
git add .
git commit -m "Initial commit: C++ CI/CD project"

步骤2: 在GitHub上创建仓库(已完成 ✅)

仓库地址:https://github.com/tyk-lab/test-github-cicd

步骤3: 推送到GitHub(已完成 ✅)

git remote add origin git@github.com:tyk-lab/test-github-cicd.git
git branch -M main
git push -u origin main

步骤4: GitHub自动运行CI/CD(已运行 ✅)

推送代码后,GitHub会自动:

  1. 检测 .github/workflows/ci.yml 文件
  2. 触发工作流
  3. 在3个平台上并行构建和测试
  4. 运行代码质量检查
  5. 创建GitHub Release并上传编译产物

步骤5: 查看运行结果

访问以下链接:


查看运行结果

在GitHub界面查看

  1. 打开你的GitHub仓库
  2. 点击顶部的 “Actions” 标签
  3. 你会看到:
    • 工作流运行列表
    • 每次运行的状态 (✅成功 / ❌失败 / 🟡进行中)
    • 点击某次运行可以查看详细日志

查看任务详情

在Actions页面点击某次运行后:

理解运行状态


常见问题

Q1: 如何手动触发工作流?

在Actions页面:

  1. 选择你的工作流
  2. 点击右侧”Run workflow”按钮
  3. 选择分支,点击”Run workflow”

Q2: 构建失败怎么办?

  1. 点击失败的运行
  2. 查看失败步骤的日志
  3. 根据错误信息修复代码
  4. 提交修复并推送,自动触发新的运行

Q3: 如何只在某些文件改变时触发?

修改on部分:

on:
  push:
    branches: [ main ]
    paths:
      - 'src/**'
      - 'tests/**'

Q4: 如何添加环境变量?

在任务或步骤中添加env:

env:
  MY_VAR: value
steps:
  - name: Use env
    run: echo $MY_VAR

Q5: 如何使用secrets?

  1. 在GitHub仓库设置中添加Secrets
  2. 在工作流中引用: $

进阶学习建议

  1. 添加代码覆盖率: 集成gcov/lcov生成覆盖率报告
  2. 静态分析: 添加cppcheck或clang-tidy
  3. 性能测试: 添加基准测试步骤
  4. 自动发布: 使用GitHub Releases自动发布版本(✅ 已实现)
  5. 缓存依赖: 使用 actions/cache 加速构建
  6. 通知集成: 失败时发送邮件或Slack通知
  7. Docker支持: 添加容器化构建和部署
  8. 文档生成: 自动生成Doxygen文档并发布到GitHub Pages

🎯 本项目已实现的功能


总结

通过这个项目,你学到了:

✅ CI/CD的基本概念和重要性
✅ GitHub Actions的工作原理
✅ 如何编写工作流配置文件
✅ 多平台构建和测试
✅ 构建产物管理
✅ 如何查看和调试CI/CD运行结果

下一步: 尝试修改代码,观察CI/CD如何自动运行并验证你的更改!


参考资源