CI/CD 基础:GitHub Actions 配置
GitHub Actions 是 GitHub 提供的自动化平台,能够将代码的构建、测试和部署过程自动化。通过配置 YAML 文件,开发者可以定义工作流,实现持续集成(CI)和持续部署(CD)。
核心概念解析
在编写配置文件前,需理解三个核心概念:
- Workflow(工作流):一个完整的自动化流程,配置在一个 YAML 文件中。
- Job(任务):工作流中的一个独立执行单元,包含多个步骤。默认情况下,不同 Job 之间并行执行。
- Step(步骤):Job 中的具体操作,可以是执行命令或引用外部脚本。
它们之间的层级关系如下:
graph TD
A["Workflow (工作流)"] --> B["Job 1 (任务)"]
A --> C["Job 2 (任务)"]
B --> D["Step 1: Checkout"]
B --> E["Step 2: Build"]
B --> F["Step 3: Test"]
C --> G["Step 1: Deploy"]
步骤 1:创建配置文件
GitHub Actions 的配置文件必须存放在仓库的特定目录下。
- 打开 GitHub 仓库页面。
- 点击
Add file按钮,选择Create new file。 - 输入 文件路径
.github/workflows/main.yml。.github是隐藏目录。workflows是必须的子目录名。main.yml是文件名,可自定义,但后缀必须是.yml或.yaml。
步骤 2:定义工作流名称和触发条件
文件创建后,需定义该工作流的名称以及何时运行。
- 输入
name字段定义名称。 - 输入
on字段定义触发条件。
name: CI Pipeline
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
此配置表示:当 main 分支有代码推送或提交 Pull Request 时,自动触发工作流。
步骤 3:配置任务和运行环境
在 jobs 字段下定义具体的任务。
- 输入
jobs字段。 - 定义 任务名称(如
build)。 - 指定 运行环境
runs-on。
jobs:
build:
runs-on: ubuntu-latest
runs-on 指定了虚拟机的操作系统,常用选项包括 ubuntu-latest(Linux)、windows-latest(Windows)和 macos-latest(macOS)。
步骤 4:编写具体执行步骤
在任务中通过 steps 定义执行顺序。每个步骤可以是直接运行命令,也可以引用现成的 Action。
- 引用 官方检出代码的 Action
actions/checkout。 - 执行 环境配置命令(如设置 Node.js)。
- 运行 安装依赖和构建命令。
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install dependencies
run: npm install
- name: Build project
run: npm run build
uses:引用他人编写好的 Action。run:直接在终端执行命令行指令。
步骤 5:管理敏感信息
在 CI/CD 过程中,常需使用密码或 Token 等敏感数据。严禁将这些信息直接写入代码,应使用 GitHub Secrets。
- 进入 仓库的
Settings页面。 - 点击 左侧菜单
Secrets and variables下的Actions。 - 点击
New repository secret按钮。 - 输入 名称(如
API_KEY)和对应的值。 - 点击
Add secret保存。
在 YAML 文件中,通过上下文变量引用:
- name: Deploy to Server
env:
API_KEY: ${{ secrets.API_KEY }}
run: |
echo "Deploying with key..."
# 这里执行真实的部署脚本
```
---
### 步骤 6:使用矩阵构建
若需在多个版本或操作系统上同时测试,可使用矩阵策略。
1. **添加** `strategy.matrix` 配置。
2. **定义** 变量数组。
```yaml
jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
node: [18, 20]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
- run: npm test
此配置会自动生成 4 个并行任务(2 个操作系统 × 2 个 Node 版本),极大提高测试效率。
常用字段速查表
以下为配置中高频使用的字段说明:
| 字段名 | 作用 | 示例值 |
|---|---|---|
name |
工作流或步骤的显示名称 | CI Pipeline |
on |
触发条件 | push, schedule |
runs-on |
虚拟机操作系统 | ubuntu-latest |
needs |
定义任务依赖关系(顺序执行) | needs: [build] |
env |
设置环境变量 | NODE_ENV: prod |
if |
条件判断,满足条件才执行 | if: success() |
完整示例配置
以下是一个包含检出代码、安装依赖、运行测试及打包的完整配置示例:
name: Full CI Flow
on:
push:
branches: [ "main" ]
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- name: 1. Checkout Repository
uses: actions/checkout@v4
- name: 2. Setup Node Environment
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
- name: 3. Install Dependencies
run: npm ci
- name: 4. Run Linter
run: npm run lint
- name: 5. Run Tests
run: npm test
- name: 6. Build Artifacts
run: npm run build
暂无评论,快来抢沙发吧!