5 分钟快速入门 Github Actions

GitHub Actions 是 GitHub 官方提供的 CI/CD 解决方案,它内置于 GitHub 平台,用于自动化你的软件构建、测试和部署工作流。


🚀 快速入门 GitHub Actions:自动化你的开发流程

核心概念:理解 Actions 的基石

在开始编写配置文件之前,理解以下几个关键概念是掌握 GitHub Actions 的前提:

1. Workflow(工作流程)

这是 GitHub CI/CD 的最高级别组件。Workflow 是一个 YAML 格式的文件,用于定义完整的自动化流程。

  • 存储位置: 必须位于项目根目录下的 .github/workflows/ 文件夹内。
  • 触发机制: 定义了什么事件(如 pushpull_request、定时任务等)会触发这个流程运行。

2. Job(作业)

Job 是 Workflow 中定义的一组任务,它们可以在不同的 Runner 上并行执行。

  • 阶段划分: 类似于 GitLab CI 的 Stage,但 Job 默认并行。如果需要按顺序执行,可以使用 needs 关键字。
  • 运行环境: 使用 runs-on 关键字指定运行环境,如 ubuntu-latestwindows-latest 或自托管 Runner。

3. Step(步骤)

Step 是 Job 中最小的执行单元,定义了要执行的具体操作。一个 Job 由多个 Step 组成,按顺序执行。Step 可以是:

  • Action: 使用已有的、预打包的操作(如 actions/checkout@v4)。
  • Shell 命令: 直接执行 Shell 脚本 (run: npm install)。

4. Action(操作)

Action 是 GitHub Actions 最大的特色。它是可复用、封装好的代码块,由社区或 GitHub 官方提供。

  • 复用性: 让你无需从头编写脚本,即可完成检出代码、设置环境、上传产物等复杂任务。
  • 格式: 使用 uses: owner/repo@ref 格式引用。

⚙️ 动手实践:编写你的第一个 Workflow

我们将创建一个简单的 Node.js 项目工作流,包含"安装依赖"和"运行测试"两个步骤。

1. 创建工作流文件

在你的 GitHub 仓库中,创建路径和文件:.github/workflows/ci.yml

2. 编写 ci.yml 内容

yaml 复制代码
# .github/workflows/ci.yml

# 1. Workflow 名称
name: Node.js CI

# 2. 触发机制:何时运行?
on:
  push:
    branches: [ main, develop ] # 在 main 或 develop 分支有推送时触发
  pull_request:
    branches: [ main ]          # 在向 main 分支发起 Pull Request 时触发

# 3. 定义 Job (作业)
jobs:
  build_and_test: # Job 的 ID
    name: Build and Test
    
    # 4. 运行环境:在哪台机器上运行?
    runs-on: ubuntu-latest # 使用 GitHub 托管的最新版 Ubuntu Runner

    # 5. 定义 Step (步骤)
    steps:
    
      # Step 1: 检出代码 (使用官方 Action)
    - name: Checkout Repository
      uses: actions/checkout@v4 # 必须的步骤,将仓库代码下载到 Runner 上
      
      # Step 2: 设置 Node.js 环境 (使用官方 Action)
    - name: Set up Node.js
      uses: actions/setup-node@v4
      with:
        node-version: '20' # 指定使用的 Node.js 版本
        cache: 'npm'       # 启用 npm 缓存,加快后续运行速度
        
      # Step 3: 安装依赖 (使用 Shell 命令)
    - name: Install Dependencies
      run: npm ci # 使用 npm ci 确保干净安装,适用于 CI/CD
      
      # Step 4: 运行测试 (使用 Shell 命令)
    - name: Run Unit Tests
      run: npm test

3. 提交并查看结果

  1. 将上述 ci.yml 文件提交并推送到你的 GitHub 仓库。
  2. 进入你的 GitHub 仓库,点击顶部的 Actions 标签页。
  3. 你会看到一个名为 Node.js CI 的新 Workflow 正在运行。
  4. 点击进入,你可以看到 Build and Test Job 及其所有 Step 的实时日志输出。

🚀 进阶配置:让 Actions 更强大

1. 部署 Job (使用 needs 排序)

如果你想在测试成功后,再执行部署 Job,你需要使用 needs 来定义 Job 的依赖关系:

yaml 复制代码
jobs:
  # 1. 测试 Job
  test:
    name: Run Tests
    runs-on: ubuntu-latest
    steps:
      # ... (检出代码, 设置环境, npm install, npm test 的步骤) ...
      
  # 2. 部署 Job:依赖测试 Job 成功
  deploy:
    name: Deploy to Production
    runs-on: ubuntu-latest
    needs: [test] # 明确指定:只有 test Job 成功后,才运行 deploy Job
    environment: production # 关联到 GitHub 环境,用于审批和保护
    steps:
      # Step 1: 配置云服务凭证
    - name: Configure AWS Credentials
      uses: aws-actions/configure-aws-credentials@v4
      with:
        aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} # 使用 Secrets 存储敏感信息
        aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
        aws-region: ap-southeast-1
        
      # Step 2: 执行部署命令
    - name: Deploy Application
      run: |
        npm run build
        aws s3 sync ./build s3://my-prod-bucket --delete

🔑 安全提示: 部署 Job 中使用的敏感信息(如 API 密钥、密码)绝对不应 直接写在 YAML 文件中,而应存储在 GitHub 仓库的 Settings > Secrets and variables > Actions 中。

2. 矩阵构建(Strategy Matrix)

如果你需要针对多个操作系统、Node 版本或浏览器版本运行相同的测试,使用矩阵策略可以大大简化配置:

yaml 复制代码
jobs:
  test:
    runs-on: ${{ matrix.os }} # 运行时依赖 matrix.os 的值

    strategy:
      matrix:
        node-version: [18, 20, 22] # 三个 Node 版本
        os: [ubuntu-latest, windows-latest] # 两个操作系统

    steps:
      # ...
      - name: Set up Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v4
        with:
          node-version: ${{ matrix.node-version }}
      # ...
      # 这个 Job 将运行 3 x 2 = 6 次,每个组合运行一次。

总结与下一步

恭喜你,现在你已经掌握了 GitHub Actions 的核心概念和基础工作流。

概念 作用 配置文件中的关键字 相当于 GitLab CI
Workflow 自动化流程的定义文件 name, on Pipeline
Job 一组任务的集合,默认并行 jobs, runs-on, needs Stage
Step 最小执行单元 name, uses, run Job / Script
Action 可复用的代码块 uses: (无直接对应,是 Actions 特色)

你的下一步:

  1. 在你的 GitHub 仓库中,创建 .github/workflows/ci.yml 文件。
  2. 尝试使用 on: schedule: 来定义一个定时运行的工作流,例如每天凌晨运行一次健康检查。
相关推荐
无限进步_1 天前
206. 反转链表 - 题解与详细分析
c语言·开发语言·数据结构·git·链表·github·visual studio
慧都小项1 天前
解析CI/CD工具TeamCity的可视化失败追踪功能
ci/cd
游戏开发爱好者81 天前
在 Windows、Linux 与 CI 环境下命令行上传 IPA 到 App Store
linux·windows·ios·ci/cd·小程序·uni-app·iphone
freejackman1 天前
持续集成-Jenkins 基础教程
java·python·ci/cd·自动化·jenkins·持续部署·持续集成
无限进步_1 天前
203. 移除链表元素 - 题解与详细分析
c语言·开发语言·数据结构·git·链表·github·visual studio
测试_AI_一辰1 天前
Agent & RAG 测试工程 02:RAG 从最小闭环到可信
开发语言·前端·人工智能·github·ai编程
Xxtaoaooo1 天前
React Native 跨平台鸿蒙开发实战:构建 CI/CD 与自动化发布流程
react native·ci/cd·harmonyos
iwanghang1 天前
Windows下AndroidStudio4.0.0使用GitHub管理版本,以及如何改成码云Gitee
windows·github
CoderJia程序员甲2 天前
GitHub 热榜项目 - 日榜(2026-01-26)
ai·开源·大模型·github·ai教程
轻抚酸~2 天前
使用git维护github项目的简单实践
git·github