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

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

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

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

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

避免不必要的步骤

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

示例

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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..."

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

使用明确的命名

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

1
2
3
4
5
- name: Install Dependencies
run: npm install

- name: Run Unit Tests
run: npm test

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

将逻辑分解成多个作业

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

1
2
3
4
5
6
7
8
9
10
11
12
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 的复合操作,可以在多个工作流中重用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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 }}

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

文档化工作流

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

1
2
3
4
5
6
7
8
9
10
# 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 的使用。

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

https://zglg.work/github-actions-zero/28/

作者

IT教程网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论