本文目录导读:

- GitHub Actions(.github/workflows/*.yml)
- GitLab CI/CD(.gitlab-ci.yml)
- Jenkins(Jenkinsfile)
- CircleCI(.circleci/config.yml)
- 通用配置模式(适合任何 CI 工具)
- 最佳实践提示
在脚本中配置持续集成(CI)流水线,通常需要根据你使用的 CI 工具(如 GitHub Actions、GitLab CI/CD、Jenkins、CircleCI 等)来编写对应的配置文件,下面以几种主流工具为例,说明如何在脚本(YAML 或 Jenkinsfile)中配置 CI 流水线。
GitHub Actions(.github/workflows/*.yml)
GitHub Actions 的流水线文件放在仓库的 .github/workflows/ 目录下,以 YAML 格式编写。
示例:Node.js 项目的 CI 流水线
name: Node.js CI
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main ]
jobs:
build-and-test:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [16, 18, 20]
steps:
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
- run: npm ci
- run: npm run build --if-present
- run: npm test
- name: Upload test coverage
uses: actions/upload-artifact@v4
if: always()
with:
name: coverage-report
path: coverage/
关键配置说明:
on:触发条件(push、PR 等)jobs:定义多个任务(可并行或依赖)runs-on:运行环境(ubuntu、windows、macOS)steps:每个任务的具体步骤matrix:矩阵构建(多版本测试)
GitLab CI/CD(.gitlab-ci.yml)
GitLab 的 CI 配置文件位于项目根目录,名为 .gitlab-ci.yml。
示例:Python 项目的 CI 流水线
stages:
- build
- test
- deploy
variables:
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
cache:
paths:
- .cache/pip/
before_script:
- python --version
- pip install -r requirements.txt
build-job:
stage: build
script:
- echo "Building the project..."
- python setup.py build
test-job:
stage: test
script:
- echo "Running tests..."
- pytest --cov=src tests/
artifacts:
reports:
coverage_report:
coverage_format: cobertura
path: coverage.xml
deploy-job:
stage: deploy
script:
- echo "Deploying to production..."
only:
- main
关键配置说明:
stages:定义流水线阶段(顺序执行)variables:全局环境变量cache:缓存依赖,加速构建artifacts:保存构建产物或测试报告only/except:分支或标签过滤
Jenkins(Jenkinsfile)
Jenkins 使用 Jenkinsfile(Groovy 脚本)定义流水线,可以声明式或脚本式。
示例:声明式流水线(Declarative Pipeline)
pipeline {
agent any
stages {
stage('Checkout') {
steps {
checkout scm
}
}
stage('Build') {
steps {
sh 'make build'
}
}
stage('Test') {
steps {
sh 'make test'
}
post {
success {
junit 'reports/**/*.xml'
}
failure {
echo 'Tests failed!'
}
}
}
stage('Deploy') {
when {
branch 'main'
}
steps {
sh 'make deploy'
}
}
}
post {
always {
cleanWs()
}
}
}
关键配置说明:
agent:指定运行节点(any、docker、label)stages:阶段定义steps:每个阶段的具体命令when:条件执行(如仅 main 分支部署)post:后处理(成功/失败通知、清理等)
CircleCI(.circleci/config.yml)
CircleCI 配置文件位于 .circleci/config.yml。
示例:Java/Maven 项目的 CI
version: 2.1
orbs:
maven: circleci/maven@1.4
workflows:
main:
jobs:
- maven/test:
name: unit-tests
context: maven-settings
pre-steps:
- checkout
test_command: mvn test
post-steps:
- store_test_results:
path: target/surefire-reports
- maven/deploy:
name: deploy-snapshot
requires:
- unit-tests
filters:
branches:
only: main
关键配置说明:
orbs:复用社区或官方 orb(简化配置)workflows:定义流水线编排jobs:具体任务定义requires:任务依赖关系filters:分支/标签过滤
通用配置模式(适合任何 CI 工具)
无论使用哪种工具,一个典型的 CI 流水线脚本通常包含以下步骤:
# 1. 环境准备 checkout code setup dependencies (install packages, restore NuGet, etc.) # 2. 构建 build the project (compile, bundle, etc.) # 3. 代码质量检查 lint, static analysis, formatting check # 4. 测试 run unit tests run integration tests run security scans # 5. 产物打包 package artifacts (Docker image, ZIP, installer) # 6. 部署(可选) deploy to staging/production environment # 7. 通知 send notifications (Slack, email, etc.)
最佳实践提示
- 流水线即代码:将 CI 配置脚本与代码一同版本控制。
- 分阶段执行:将构建、测试、部署分离,便于定位问题。
- 并行化:利用矩阵或并行 job 加速测试(多版本、多平台)。
- 缓存依赖:缓存 npm、pip、Maven 等包管理器缓存,加速构建。
- 错误处理:设置超时、重试、失败通知。
- 安全敏感信息:使用 CI 工具提供的 secrets 管理功能,切勿硬编码。