[英]Reuse Jobs in GitHub Actions Workflow
我正在将管道从 Circle CI 迁移到 Github Actions 并且发现我只能运行一次作业而不是创建作业,然后从工作流部分调用它,这使得可以多次调用作业而无需复制该作业中的命令/脚本。
我的管道将代码推送到三个环境,然后对每个环境运行一次灯塔扫描。 在循环 ci 中,我有 1 份工作将代码推送到我的环境,还有 1 份工作来运行灯塔。 然后从我的工作流部分,我只调用了 3 次作业,将 env 作为参数传递。 我是否遗漏了什么,或者在 github 动作中没有办法做到这一点? 我是否只需要在每个工作中写出我的命令 3 次?
GitHub Actions 中有 3 种主要的代码重用方法:
显而易见的选择是使用“可重用工作流程”功能,该功能允许您将一些步骤提取到单独的“可重用”工作流程中,并将此工作流程称为其他工作流程中的作业。
strategy
属性。needs
键的作业排序来管理它)。GitHub 给我们的另一种可能性是可以触发工作流运行的workflow_dispatch事件。 简而言之,您可以手动或通过 GitHub API 触发工作流并提供其输入。
Marketplace 上有一些可用的操作,可让您触发“已调度”工作流程作为“主要”工作流程的一个步骤。
其中一些还允许以同步方式执行此操作(等到分派的工作流完成)。 值得一提的是,这个特性是通过轮询 repo 工作流的状态来实现的,这不是很可靠,尤其是在并发环境中。 此外,它受 GitHub API 使用限制的限制,因此在查找已调度工作流的状态时会有延迟。
secrets.GITHUB_TOKEN
不允许你调度工作流。在这种方法中,我们将步骤提取到不同的复合操作中,该操作可以位于相同或单独的存储库中。
从您的“主要”工作流程来看,它看起来像一个通常的操作(一个步骤),但在内部它由多个步骤组成,每个步骤都可以调用自己的操作。
continue-on-error
选项。来源:我的“DRY:在 GitHub Actions 中重用代码”文章
我目前在同一条船上,刚刚找到了答案。 您正在寻找一个Composite Action ,正如this answer中所建议的那样。
可重用工作流不能调用其他可重用工作流。
实际上,自 2022 年 8 月以来,他们可以:
GitHub 操作:改进可重用工作流
现在可以从矩阵和其他可重用工作流中调用可重用工作流。
您现在可以嵌套多达 4 个级别的可重用工作流,从而为您提供更大的灵活性和更好的代码重用。
从矩阵调用可重用的工作流允许您创建更丰富的参数化构建和部署。
了解有关嵌套可重用工作流的更多信息。
了解有关使用矩阵策略的可重用工作流的更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.