Jupyter AI

5 理解 GitHub Actions 工作流中的 YAML 文件内容

📅 发表日期: 2024年8月15日

分类: ⚙️GitHub Actions 入门

👁️阅读: --

在上一篇中,我们介绍了如何在 GitHub 上创建一个新的工作流,并简单描述了工作流的基本概念。现在,我们将更加深入地探讨 YAML 文件的结构,以及如何配置和理解写入其中的内容,以便为后续的工作流测试做好准备。

什么是 YAML 文件?

YAML(YAML Ain't Markup Language)是一种人类易读的数据序列化格式,广泛用于配置文件。在 GitHub Actions 中,工作流是通过 .github/workflows 目录下的 YAML 文件来定义的。这个文件描述了何时、如何以及如何执行 CI/CD 过程。

工作流文件结构

一个典型的 GitHub Actions 工作流 YAML 文件包括几个关键组成部分:nameonjobssteps。下面是一个简单的工作流示例:

name: CI Workflow

on:
  push:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v2

      - name: Set up Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '14'

      - name: Install dependencies
        run: npm install

      - name: Run tests
        run: npm test

组成部分详解

  1. name: 工作流的名称。可以自定义,使其方便理解,比如 CI Workflow 表示这是一个持续集成的工作流。

  2. on: 触发条件。该配置决定了工作流何时被触发。上述示例中,工作流在 main 分支上进行 push 操作时会被触发。

  3. jobs: 工作的集合。一个工作流可以包含多个工作(job)。在这个示例中,我们有一个叫做 build 的工作。

  4. runs-on: 指定一个虚拟环境来运行工作。在这个例子中,ubuntu-latest 表示该工作将在最新版本的 Ubuntu 虚拟机上运行。

  5. steps: 每个工作中的具体步骤。这些步骤会按顺序执行。在上述示例中,包含了以下步骤:

    • 使用 actions/checkout 动作将代码检出到虚拟环境。
    • 使用 actions/setup-node 动作来设置 Node.js 的版本。
    • 运行 npm installnpm test 命令来安装项目依赖并执行测试。

关键字解析

在 YAML 文件中,某些关键字有特定的意义:

  • uses 关键字用于调用其他的 GitHub Actions。这使得我们可以重用已有的操作,例如 actions/checkout@v2actions/setup-node@v2
  • run 关键字后面可以跟任意 shell 命令,所有命令将在运行时执行。

添加环境变量

在工作流中,你还可以定义环境变量,这有助于配置一些值而不需要在每个步骤中硬编码。例如,可以在 jobs 部分增加 env 关键字:

jobs:
  build:
    runs-on: ubuntu-latest
    env:
      NODE_ENV: production

这样,在后续的步骤中,你可以通过使用 $NODE_ENV 来引用这个环境变量。

工作流文件的最佳实践

  1. 使用注释: 在 YAML 文件中,使用 # 来添加注释,这样可以帮助后续的维护者理解每个部分的作用。

    # 这是一个持续集成工作流
    name: CI Workflow
    
  2. 保持简洁: 尽量避免冗余的步骤和重复杂的结构,保持清晰明了的配置。

  3. 版本控制: 在 uses 中指定每个 actions 的版本(如 @v2),可以确保工作流的可预测性。

  4. 分步骤调试: 如果出现错误,利用工作流的分步骤执行,便于定位问题。

示例总结

通过以上案例,我们了解到一个 GitHub Actions 工作流的基本构成及配置方法。YAML 文件的灵活性使我们能够根据项目需要快速调整工作流。

在下一篇中,我们将继续讨论如何有效测试创建的工作流,以确保它能按照预期执行。请继续关注我们系列教程,掌握 GitHub Actions 的更多技巧和工具!

⚙️GitHub Actions 入门 (滚动鼠标查看)