一、基础环境准备
- 创建仓库:在GitHub上创建新仓库或使用已有仓库。
- 启用Actions:进入仓库「Settings」→「Actions」→「General」,启用Actions并选择允许的分支。
- 创建工作流文件:在仓库根目录的
.github/workflows
目录下新建YAML文件(如ci-cd.yml
)。
二、定义工作流结构
1 | name: CI/CD Pipeline # 工作流名称 |
三、核心功能实现
自动化测试
- 集成测试框架(如Python的
pytest
、JavaScript的Jest
),在test
作业中运行测试用例。 - 示例:
pytest tests/ --cov=src --cov-report=xml
(生成代码覆盖率报告)。
- 集成测试框架(如Python的
代码质量检查
- 使用
flake8
/eslint
等工具检查代码风格。 - 示例:
flake8 src/ tests/
。
- 使用
自动化部署
- 部署到GitHub Pages:使用
actions-gh-pages
Action。 - 部署到云服务:通过SSH或API调用(需配置密钥)。
- 示例:
twine upload dist/*
(发布Python包到PyPI)。
- 部署到GitHub Pages:使用
四、高级配置技巧
矩阵测试:跨多环境/版本并行测试
strategy: matrix: os: [ubuntu-latest, windows-latest] python-version: [3.8, 3.9] steps: - uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }}
密钥管理
- 在仓库「Settings」→「Secrets」中存储敏感信息(如API密钥),通过
${{ secrets.SECRET_NAME }}
引用。
- 在仓库「Settings」→「Secrets」中存储敏感信息(如API密钥),通过
条件执行
- 通过
if
条件控制步骤执行,例如仅在特定分支或事件触发时部署。 - 示例:
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
(仅标签推送时部署)。
- 通过
工件存储
- 使用
actions/upload-artifact
保存构建产物,供后续作业使用。 - 示例:
actions/upload-artifact@v3
保存dist/
目录。
- 使用
五、最佳实践
- 分离职责:将构建、测试、部署拆分为独立作业,通过
needs
定义依赖关系。 - 缓存优化:缓存依赖包(如
npm
/pip
)以加速构建。 - 监控与通知:集成GitHub Status Checks或第三方工具(如Slack)接收构建结果通知。
六、验证与调试
- 查看工作流日志:在仓库「Actions」标签页中查看运行状态和详细日志。
- 手动触发:通过「workflow_dispatch」事件手动运行工作流,方便调试。
通过以上步骤,可快速在GitHub上构建完整的CI/CD流程,实现代码从提交到部署的全流程自动化。