Jupyter AI

28 GitHub Actions自动化教程系列 - 保持工作流简单

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

分类: ⚙️GitHub Actions 入门

👁️阅读: --

在上一篇中,我们讨论了如何使用重试机制来调试和提高工作流的稳定性。这一篇我们将专注于保持工作流的简单性,这对于维护可读性、可管理性和高效性至关重要。简单的工作流不仅更容易理解,还可以降低出错的几率和增加开发者的协作效率。

为什么要保持工作流简单?

保持工作流简单可以帮助减少维护成本和理解成本。复杂的工作流可能会引入不必要的复杂性,即使在简单问题上也可能增加出错的风险。以下是几个保持工作流简单的最佳实践:

  1. 避免不必要的步骤
  2. 使用明确的命名
  3. 将逻辑分解成多个作业
  4. 使用预定义的模板
  5. 文档化工作流

避免不必要的步骤

许多工作流可能包含冗余步骤,比如多个状态检查、无用的构建或部署步骤。保持工作流的精简是提高效率的重要方式。

示例

假设您有一个工作流,首先运行测试,然后构建项目,再进行部署。如果测试失败,构建和部署的步骤是多余的。我们可以使用 if 条件跳过这些步骤:

name: CI

on: [push]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Run Tests
        run: npm test

  build:
    runs-on: ubuntu-latest
    needs: test
    if: success() # 仅当测试成功时才执行构建
    steps:
      - name: Build Project
        run: npm run build

  deploy:
    runs-on: ubuntu-latest
    needs: build
    if: success() # 仅当构建成功时才执行部署
    steps:
      - name: Deploy
        run: echo "Deploying..."

在这个示例中,我们避免了冗余的构建和部署步骤,确保只有在测试和构建成功的情况下才执行相应的操作。

使用明确的命名

清晰的命名可以帮助团队成员快速理解每个步骤的目的和作用。命名应简洁明了,并且遵循统一的命名规范。

- name: Install Dependencies
  run: npm install

- name: Run Unit Tests
  run: npm test

这里的命名不仅清楚表明了每一步的目的,还使得工作流结构一目了然。

将逻辑分解成多个作业

如果一个工作流包含多个独立的逻辑部分,可以将其分解成多个作业(jobs)。这样做不仅可以提升可阅读性,还有助于并行处理,提高效率。

jobs:
  job1:
    runs-on: ubuntu-latest
    steps:
      - name: Step A
        run: echo "This is job 1 step A"

  job2:
    runs-on: ubuntu-latest
    steps:
      - name: Step B
        run: echo "This is job 2 step B"

在这个例子中,我们将不同的逻辑部分分解成了单独的作业。每个作业都是独立的,使得整体结构更加清晰。

使用预定义的模板

在多个工作流中重复使用相同的步骤时,您可以考虑创建复用的步骤或使用共享库。GitHub 提供了 composite actions 来简化这一过程。

示例

创建一个名为 build.yml 的复合操作,可以在多个工作流中重用:

name: 'Build'

description: 'A composite action for building projects'

inputs:
  platform:
    description: 'The platform to build for'
    required: true

runs:
  using: 'composite'
  steps:
    - name: Checkout
      uses: actions/checkout@v2
      
    - name: Build the project
      run: npm run build ${{ inputs.platform }}

在其他工作流中,您可以简单地调用这个操作,而不必重复每一步骤的实现。

文档化工作流

最后,不要忘记为工作流编写文档。即使工作流足够简单,也要在代码中加上注释,特别是在复杂的步骤上。

# This job runs tests against the codebase.
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Running tests
        run: npm test

良好的文档可以帮助后来者快速上手并理解工作流的逻辑。

结论

在 GitHub Actions 的工作流中,保持简单是提高可维护性、可读性和高效性的重要策略。通过避免不必要的步骤、使用明确的命名、将逻辑分解成多个作业、使用预定义的模板以及文档化工作流,您可以有效提升工作流的质量。

在接下来的章节中,我们将讨论“最佳实践之版本控制与依赖管理”,进一步帮助你优化 GitHub Actions 的使用。

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