学习 GitHub Actions 工作流入门指南

431 阅读3分钟

GitHub Actions 是 GitHub 提供的一项持续集成和持续部署 (CI/CD) 服务,它允许你在代码仓库中自动化执行各种任务,比如构建、测试和部署。下面我将从 0 开始介绍如何配置一个 GitHub Actions 工作流。

什么是 GitHub Actions 工作流?

工作流是一组自动化的流程,定义了在 GitHub 仓库中触发特定事件时要执行的任务。这些事件可以是代码推送、拉取请求创建、发布新版本等。工作流由一个或多个作业组成,每个作业又包含多个步骤,这些步骤可以执行命令、运行脚本或使用预定义的操作。

从 0 开始配置 GitHub Actions 工作流

1. 前提条件

  • 你需要有一个 GitHub 账号
  • 你需要有一个 GitHub 仓库
  • 了解基本的 YAML 语法(YAML 是一种用于配置文件的格式)

2. 创建工作流文件

GitHub Actions 工作流配置文件是 YAML 文件,通常存储在仓库的 .github/workflows/ 目录下。下面是一个简单的示例,创建一个名为 release.yml 的文件:

name: My Workflow  # 工作流名称

# 触发条件
on:
  push:  # 当代码被推送时触发
    branches: [ main, develop ]  # 只在这些分支上触发
    paths:  # 只在这些文件变化时触发
      - 'src/**'
      - 'package.json'
  pull_request:  # 当有拉取请求时触发
    branches: [ main ]

# 定时触发
schedule:
  - cron: '0 0 * * *'  # 每天午夜运行

# 作业定义
jobs:
  build:  # 作业 ID
    name: Build Application  # 作业名称
    runs-on: ubuntu-latest  # 运行环境
    
    # 条件判断
    if: github.event_name == 'push' && github.ref == 'refs/heads/main'
    
    # 环境变量
    env:
      NODE_VERSION: '16'
      
    steps:  # 步骤列表
      - name: Checkout code  # 步骤名称
        uses: actions/checkout@v3  # 使用官方提供的检出代码操作
        
      - name: Set up Node.js
        uses: actions/setup-node@v3
        with:
          node-version: ${{ env.NODE_VERSION }}
          
      - name: Install dependencies
        run: npm install
        
      - name: Build
        run: npm run build
        
      # 保存构建产物供其他作业使用
      - name: Upload build artifacts
        uses: actions/upload-artifact@v3
        with:
          name: build-output
          path: dist/
        
      - name: Run a command  # 另一个步骤
        run: echo "Hello, world!"  # 执行命令

          
  test:  # 另一个作业
    needs: build  # 依赖 build 作业完成
    runs-on: ubuntu-latest
    
    steps:
      - name: Checkout code
        uses: actions/checkout@v3
        
      - name: Set up Node.js
        uses: actions/setup-node@v3
        with:
          node-version: ${{ env.NODE_VERSION }}
          
      - name: Install dependencies
        run: npm install
        
      - name: Run tests
        run: npm test


3. YAML 文件的作用

YAML 文件在 GitHub Actions 中扮演配置文件的角色,它定义了:

  • 工作流的名称和触发条件
  • 包含哪些作业及其运行环境
  • 每个作业包含哪些步骤
  • 每个步骤要执行的操作或命令

4. 工作流结构详解

  • name: 工作流的名称,显示在 GitHub 仓库的 Actions 标签页中
  • on: 定义触发工作流的事件,如 push、pull_request 等
  • jobs: 包含一个或多个作业
  • runs-on: 指定作业运行的环境(如 ubuntu-latest、windows-latest 等)
  • steps: 作业中的步骤列表
  • uses: 使用预定义的操作
  • run: 执行命令行命令
  • with: 为操作提供输入参数
  • env: 设置环境变量

5. 提交并触发工作流

  1. 将 .github/workflows/release.yml 文件添加到你的仓库
  2. 提交并推送到 GitHub
  3. 创建一个新的标签并推送(例如:git tag v1.0.0 && git push origin v1.0.0
  4. 这将触发 release.yml 工作流

6. 查看工作流执行结果

  1. 转到你的 GitHub 仓库
  2. 点击 "Actions" 标签
  3. 选择相应的工作流运行记录
  4. 查看执行日志和结果

常见的工作流场景

  • CI (持续集成) : 每次推送代码时自动构建和测试

  • CD (持续部署) : 代码通过测试后自动部署到生产环境

  • 发布管理: 创建新版本并自动打包发布

  • 自动化测试: 运行单元测试、集成测试等

  • 代码质量检查: 执行代码格式化、静态分析等

通过配置不同的 YAML 文件,你可以实现各种自动化任务,大大提高开发效率。希望这个入门指南能帮助你理解 GitHub Actions 工作流的基本概念和配置方法!