如何使用 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 项目?
Git 第六章 GitHub操作 -- 如何生成GitHub的Token