15 作业与步骤的条件执行

在上一课中,我们探讨了作业与步骤之间的依赖关系,了解了如何通过依赖链来控制工作流的执行顺序。本篇将继续深入探讨 GitHub Actions 中的条件执行,帮助你掌握如何根据特定条件来决定某个作业或步骤是否执行。

什么是条件执行?

条件执行允许我们根据特定条件来决定是否执行某个作业或步骤。你可以使用 if 语句来定义条件,可以根据环境变量、作业结果或任何布尔表达式来实现。

基本语法

GitHub Actions 中,条件执行通常与工作流的作业或步骤结合使用。条件使用 if 关键字定义,格式如下:

1
if: <条件表达式>

条件语法示例

示例一:根据作业结果执行步骤

假设我们有一个 CI 流程,其中一个作业是测试(test),另一个作业是部署(deploy)。我们希望仅在测试通过时才执行部署。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
name: CI Workflow

on: [push]

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

- name: Run tests
run: |
echo "Running tests..."
exit 0 # 假设测试通过

deploy:
runs-on: ubuntu-latest
needs: test
if: success() # 仅在测试成功时执行
steps:
- name: Deploy to production
run: echo "Deploying to production..."

在这个示例中,deploy 作业的执行条件是 test 作业成功完成。你可以通过 success() 函数来定义这种条件。

示例二:根据环境变量执行步骤

条件执行不仅限于作业间的依赖关系,还可以基于环境变量,允许你更灵活地控制工作流。假设我们有一个环境变量 RUN_DEPLOY,它决定了是否进行部署。

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
name: Conditional Deployment Workflow

on: [push]

env:
RUN_DEPLOY: ${{ secrets.RUN_DEPLOY }}

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

- name: Run tests
run: |
echo "Running tests..."
exit 0 # 假设测试通过

deploy:
runs-on: ubuntu-latest
needs: test
if: env.RUN_DEPLOY == 'true' # 基于环境变量决定是否执行
steps:
- name: Deploy to staging
run: echo "Deploying to staging..."

在这个示例中,deploy 作业仅在环境变量 RUN_DEPLOY 的值为 'true' 时执行。这使得你可以控制部署过程而不必修改工作流的逻辑。

组合条件

你还可以使用复合条件来增强条件判断的灵活性。例如,你可以将作业的成功状态与环境变量结合。

1
if: success() && env.RUN_DEPLOY == 'true'  # 同时检查作业成功与环境变量

小结

在本篇中,我们深入探讨了 GitHub Actions 中的条件执行,学习了如何根据作业结果和环境变量动态控制作业或步骤的执行。通过这些条件控制,你能够构建更复杂且灵活的 CI/CD 流程,确保工作流在合适的条件下执行。

在下一篇教程中,我们将讨论环境变量与秘密变量的使用,深入了解如何安全且高效地管理敏感数据。希望你能持续关注,掌握更多 GitHub Actions 的技巧!

15 作业与步骤的条件执行

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

作者

IT教程网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论