GitHub Actions 学习笔记

你的名字,GitHub ActionsCI/CD自动化

这篇文章记录了我学习 GitHub Actions 的过程和心得。

什么是 GitHub Actions?

GitHub Actions 是 GitHub 提供的持续集成和持续部署(CI/CD)平台,可以自动化构建、测试和部署流程。

核心概念

1. Workflow(工作流)

工作流是自动化流程的配置文件,保存在 .github/workflows/ 目录下。

name: CI
 
on:
  push:
    branches: [main]
 
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Run tests
        run: npm test

2. Event(事件)

触发工作流的事件,常见的有:

3. Job(任务)

一个工作流可以包含多个 job,可以并行或串行执行。

4. Step(步骤)

每个 job 由多个 step 组成,每个 step 可以:

实战:自动部署到 Vercel

下面是我配置的自动部署 workflow:

name: Deploy to Vercel
 
on:
  push:
    branches: [main]
 
jobs:
  deploy:
    runs-on: ubuntu-latest
    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 ci
 
      - name: Build
        run: npm run build
 
      - name: Deploy to Vercel
        uses: amondnet/vercel-action@v25
        with:
          vercel-token: ${{ secrets.VERCEL_TOKEN }}
          vercel-org-id: ${{ secrets.VERCEL_ORG_ID }}
          vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID }}
          vercel-args: '--prod'

关键步骤

  1. Checkout 代码 - 获取仓库代码
  2. Setup Node.js - 配置 Node.js 环境
  3. Install dependencies - 安装依赖
  4. Build - 构建项目
  5. Deploy - 部署到 Vercel

Secrets 配置

在 GitHub 仓库的 Settings → Secrets 中配置:

最佳实践

1. 使用缓存加速构建

- name: Cache dependencies
  uses: actions/cache@v3
  with:
    path: ~/.npm
    key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}

2. 矩阵测试(多版本测试)

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

3. 条件执行

- name: Deploy to production
  if: github.ref == 'refs/heads/main'
  run: npm run deploy

4. 失败通知

- name: Notify on failure
  if: failure()
  run: echo "Build failed!"

常用 Actions

官方 Actions

社区 Actions

学习资源

总结

GitHub Actions 是一个强大的自动化工具,学习曲线不陡峭。通过实践,我成功实现了:

✅ 自动化测试 ✅ 自动化部署 ✅ 自动化发布

下一步计划学习更多高级特性,如自定义 Action、矩阵构建等。


发布于 2025/01/18 · 标签: #GitHub-Actions #CI/CD

© 2025 我的技术博客