【发布时间】:2021-10-05 12:40:21
【问题描述】:
我在 GitLab 中有一个由多个阶段组成的管道。
每个阶段都有一些作业并产生工件,如果一个阶段的所有作业都通过,则这些工件将传递到下一个阶段。
有没有办法在 GitHub 操作中实现类似的功能?
【问题讨论】:
-
@attin83 - 我已经有一个这样的 GitLab 管道。现在我想在 GitHub 操作中有类似的东西。
我在 GitLab 中有一个由多个阶段组成的管道。
每个阶段都有一些作业并产生工件,如果一个阶段的所有作业都通过,则这些工件将传递到下一个阶段。
有没有办法在 GitHub 操作中实现类似的功能?
【问题讨论】:
一般来说,您可以在 GitHub 操作中非常接近您上面的内容。您将触发基于 push 和 pull_request 事件的工作流,以便在有人推送到您的存储库时触发它,然后您将定义每个作业。然后,您将使用 needs 语法来定义依赖项而不是阶段(这类似于 GitLab 中的 14.2 needs 语法),例如,您的 auto-deploy 作业将具有 needs: [test1, test2]。
您将无法复制的一件事是手动等待推送到生产。 GitHub 操作无法在作业步骤暂停并等待手动操作。您通常可以通过运行基于 release 事件的工作流来解决此问题,或者通过使用给定变量集手动启动整个管道。
查看如何处理工件时,请查看另一个堆栈溢出问题的答案:Github actions share workspace/artifacts between jobs?
【讨论】: