如何使用 github 操作从 Github 中存储库 A 的工作流作业触发存储库 B(下游作业)中的工作流作业

Posted

技术标签:

【中文标题】如何使用 github 操作从 Github 中存储库 A 的工作流作业触发存储库 B(下游作业)中的工作流作业【英文标题】:How to trigger a workflow job in repository B(downstream job) from workflow job of repository A in Github using github actions 【发布时间】:2021-07-29 11:54:58 【问题描述】:

我有 3 个 GitHub 存储库的要求。 回购 A 回购 B 回购 C

当手动执行 Repo A 的参数化作业 1(使用 workflow_disptach)时,工作流开始。 传递了四个参数。 这个job1触发了Repo B(job2)和Repo C(job3)->(downstream jobs)的另外两个job 成功执行 Repo B 和 C 的作业后,应执行包含所有 4 个参数的 Repo A 的 job1(shell 脚本)。

如何在不同的存储库中触发工作流程? 如何将代码签出到除 GITHUB_WORKSPACE env 之外的其他位置? 如何在 Github 中使用 Github Actions 实现上述用例?

【问题讨论】:

拥有正确的权限,您可以使用 Github Actions API 通过post /repos/owner/repo/actions/workflows/workflow_id/dispatches 端点从任何存储库触发任何工作流。 【参考方案1】:

如何在不同的存储库中触发作业流程?

正如soltex 在 cmets 中所说,您可以使用dispatches 在任何使用repository_dispatch 触发器的存储库上触发工作流。

Github API repositories documentation

以下是使用 Github API 发送dispatch event 的工作流示例:triggered - receiver。

如何在 Github 中使用 Github Actions 实现上述用例?

Github Marketplace 上有一些操作可以更轻松地调度事件。

以下是执行此操作的工作流示例:triggered - receiver

如何将代码签出到 GITHUB_WORKSPACE 环境以外的其他位置?

如果在同一个存储库中,一旦您使用actions/checkout 访问 GITHUB_WORKSPACE,您可以使用 shell 命令(例如:cd path/to/specific/file)导航存储库以访问您想要的文件夹或文件。

现在,如果您想从另一个存储库访问特定文件或文件夹,您必须将其克隆到工作流程的某个位置。

【讨论】:

以上是关于如何使用 github 操作从 Github 中存储库 A 的工作流作业触发存储库 B(下游作业)中的工作流作业的主要内容,如果未能解决你的问题,请参考以下文章

如何从 GitHub 操作中升级 Visual Studio 项目?

如何从github下载流浪动物代码

Git 第六章 GitHub操作 -- 如何生成GitHub的Token

如何从github获取源代码

如何使用个人访问令牌在 github 操作工作流 (B) 中从不同的 repo(B) 提交和推送到私有 repo(A)

如何从github获取源代码