我有多个相互依赖的工作流程。第一个工作流程将生成一些 ID 或编号,相关工作流程将读取这些 ID 或编号。
流动:
第一个工作流程(generated number
)手动触发-->第一个工作流程执行后将触发第二个工作流程(需要generated number
)-->第二个工作流程执行后将触发第三个工作流程(需要generated number
)
工作流程1.yml
name: First workflow
on:
workflow_dispatch:
jobs:
some_job:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Generate some number
run: ${{ github.run_number }}
# How to save/store this number?
工作流程2.yml
name: Second workflow
on:
workflow_run:
workflows: ["First workflow"]
types:
- completed
jobs:
deploy:
runs-on: ubuntu-latest
steps:
# How do we get the generated number in the First workflow?
工作流程3.yml
name: Third workflow
on:
workflow_run:
workflows: ["Second workflow"]
types:
- completed
jobs:
deploy:
runs-on: ubuntu-latest
steps:
# How do we get the generated number in the First workflow?
在上面的评论中共享的解决
workflow_dispatch
方案在您的情况下看起来像这样,通过使用创建工作流调度事件 Github API第一个工作流程的最后一步将发送请求以启动下面的第二个工作流程:
第二个工作流程的最后一步将向第三个工作流程发送请求。
正如您所看到的,该解决方案的升级效果不是很好,因为您需要向添加到链中的每个新工作流程添加新输入。
这就是为什么使用某些工件(正如 @Azeem 在评论中所建议的那样)可能有用的原因(即使有点复杂)。
请注意,您甚至可以在收到上一个工作流程的回调后再次触发工作流程,例如此工作流程触发另一个存储库中的另一个工作流程以执行操作并向原始存储库返回响应(例如,如果使用 IaC,这可能很有用)在另一个工作流程中)