GitHub Actions 是 GitHub 提供的自动化平台,能够将代码的构建、测试和部署过程自动化。通过配置 YAML 文件,开发者可以定义工作流,实现持续集成(CI)和持续部署(CD)。
在编写配置文件前,需理解三个核心概念:
- Workflow(工作流):一个完整的自动化流程,配置在一个 YAML 文件中。
- Job(任务):工作流中的一个独立执行单元,包含多个步骤。默认情况下,不同 Job 之间并行执行。
- Step(步骤):Job 中的具体操作,可以是执行命令或引用外部脚本。
它们之间的层级关系如下:
GitHub Actions 的配置文件必须存放在仓库的特定目录下。
- 打开 GitHub 仓库页面。
- 点击
Add file按钮,选择Create new file。 - 输入 文件路径
.github/workflows/main.yml。.github是隐藏目录。workflows是必须的子目录名。main.yml是文件名,可自定义,但后缀必须是.yml或.yaml。
文件创建后,需定义该工作流的名称以及何时运行。
- 输入
name字段定义名称。 - 输入
on字段定义触发条件。
name: CI Pipeline
on: push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
此配置表示:当 main 分支有代码推送或提交 Pull Request 时,自动触发工作流。
在 jobs 字段下定义具体的任务。
- 输入
jobs字段。 - 定义 任务名称(如
build)。 - 指定 运行环境
runs-on。
jobs: build:
runs-on: ubuntu-latest
runs-on 指定了虚拟机的操作系统,常用选项包括 ubuntu-latest(Linux)、windows-latest(Windows)和 macos-latest(macOS)。
在任务中通过 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:直接在终端执行命令行指令。
在 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:使用矩阵构建
若需在多个版本或操作系统上同时测试,可使用矩阵策略。
- 添加
strategy.matrix配置。 - 定义 变量数组。
”`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
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/251251.html