Featured image of post 使用 GitHub Actions 开始使用 CI/CDFeatured image of post 使用 GitHub Actions 开始使用 CI/CD

使用 GitHub Actions 开始使用 CI/CD

适合初学者使用 GitHub Actions 进行 CI/CD 的指南,涵盖了首次自动化设置的要点。

如果“CI/CD”听起来像是您应该知道但不知道从哪里开始的东西,那么本指南适合您。 GitHub Actions 使拥有 GitHub 存储库的每个人都可以访问持续集成和交付。

什么是 GitHub 操作?

GitHub Actions 是直接内置于 GitHub 中的 CI/CD 平台。它允许您直接从存储库自动进行测试、构建和部署。工作流在推送、拉取请求或计划事件时触发。

1. 工作流程基础知识

将 YAML 文件放入 .github/workflows/ 中以定义您的工作流程。

.github/
└── workflows/
    └── ci.yml

这是基本结构:

name: CI

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 20
      - run: npm ci
      - run: npm test

关键要素

元素描述
占位符_0GitHub 上显示的工作流程名称
占位符_0触发事件(push、pull_request、schedule 等)
占位符_0可以并行运行的作业集合
占位符_0运行环境(ubuntu-最新、windows-最新、macos-最新)
占位符_0工作中的个人任务
占位符_0重用现有操作
占位符_0直接执行shell命令

2. 触发变化

# On push
on: push

# On pull request
on: pull_request

# Scheduled (cron)
on:
  schedule:
    - cron: '0 9 * * 1'  # Every Monday at 9:00 UTC

# Manual trigger
on:
  workflow_dispatch:

3. 使用市场操作

GitHub 市场 上有数千个操作可用。以下是最常见的:

- uses: actions/checkout@v4          # Checkout repository
- uses: actions/setup-node@v4        # Setup Node.js
- uses: actions/setup-python@v5      # Setup Python
- uses: docker/login-action@v3       # Login to Docker registry
- uses: actions/cache@v4             # Cache dependencies
- uses: actions/upload-artifact@v4   # Upload build artifacts

4. 并行测试的矩阵构建

jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [18, 20, 22]
        os: [ubuntu-latest, windows-latest]
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: ${{ matrix.node-version }}
      - run: npm ci
      - run: npm test

这是自动运行的六种组合。

5. 秘密和环境变量

将 API 密钥和密码存储在 GitHub 上的 设置 → 秘密和变量 → 操作 中。

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: deploy.sh
        env:
          API_KEY: ${{ secrets.API_KEY }}
          DEPLOY_TOKEN: ${{ secrets.DEPLOY_TOKEN }}

切勿将机密直接写入 YAML 文件中。

6. 缓存依赖

缓存 node_modules~/.npm 可以显着加快您的工作流程。

- name: Cache Node Modules
  uses: actions/cache@v4
  with:
    path: ~/.npm
    key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
    restore-keys: |
      ${{ runner.os }}-node-

7. 部署示例(GitHub 页面)

name: Deploy to GitHub Pages

on:
  push:
    branches: [main]

permissions:
  contents: read
  pages: write
  id-token: write

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
      - run: npm ci
      - run: npm run build
      - uses: actions/configure-pages@v4
      - uses: actions/upload-pages-artifact@v3
        with:
          path: ./out
      - uses: actions/deploy-pages@v4

摘要

GitHub Actions 是最容易上手的 CI/CD 工具之一 - 只需将 YAML 文件放入 .github/workflows/ 即可。从简单的“推送时运行测试”工作流程开始,然后逐步探索矩阵构建、缓存和自动化部署。