14 作业与步骤之间的依赖关系

在上一篇中,我们探讨了在 GitHub Actions 中如何实现作业之间的并行与串行执行。本篇将继续深入探讨作业与步骤之间的依赖关系,帮助您更好地控制工作流的执行顺序。

什么是依赖关系?

在 GitHub Actions 中,依赖关系是指某个作业或步骤的执行必须依赖于先前作业或步骤的结果。通过定义这些依赖关系,我们可以确保某些操作在其他操作完成后才执行,从而避免潜在的错误和不一致。

例如,您可能希望在构建应用程序之前,先运行测试用例。这可以通过在工作流配置文件中设置依赖关系来实现。

步骤的依赖关系

GitHub Actions 中的步骤(steps)是作业(jobs)中的基本单元。每个作业都可以由多个步骤构成,而步骤之间的依赖关系是通过执行顺序来管理的。默认情况下,步骤是按顺序依次执行的,但我们也可以通过条件语句来控制某些步骤的执行。

示例:简单的步骤依赖关系

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
name: CI

on: [push, pull_request]

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Check out code
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

- name: Build application
run: npm run build

在上述示例中,步骤 Run tests 依赖于 Install dependencies 步骤,这表明我们必须先安装依赖后才能运行测试。依赖关系通过执行的顺序来隐含定义。

使用条件控制步骤的执行

为了更精细地控制步骤的执行,我们可以使用 if 语句来设定条件。例如,假设我们希望仅在测试通过时才执行构建步骤,可以加入条件判断。

1
2
3
4
5
6
7
- name: Run tests
run: npm test
id: test_step

- name: Build application
run: npm run build
if: steps.test_step.outcome == 'success'

在此示例中,Build application 步骤依赖于 Run tests 的执行结果,仅在测试成功时才会被执行。

作业之间的依赖关系

除了步骤之间的依赖关系,作业之间的依赖关系同样重要。为了使得一个作业在另一个作业完成后才开始执行,可以使用 needs 关键字。

示例:作业依赖关系

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
30
31
name: CI

on: [push, pull_request]

jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Check out code
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

build:
runs-on: ubuntu-latest
needs: test
steps:
- name: Check out code
uses: actions/checkout@v2

- name: Build application
run: npm run build

在这个例子中,build 作业依赖于 test 作业的完成(通过 needs: test 来建立依赖关系)。这样可以确保在测试完成后,才开始执行构建作业。

结论

本篇文章详细探讨了 GitHub Actions 中作业与步骤之间的依赖关系。通过合理设置步骤的执行顺序和作业之间的依赖,您可以确保工作流的顺利和精确执行。在下一篇中,我们将讨论如何设定作业的条件执行,这将进一步提升您的工作流的灵活性与控制力。

继续关注系列教程,深入了解 GitHub Actions 的强大功能!

14 作业与步骤之间的依赖关系

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

作者

AI免费学习网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论