运行 一个 GitHub 动作最后

Run a GitHub Action Last

我有一堆 GitHub 服务操作,如果相应目录发生变化,每个操作都会构建一个容器。然后我有一个最终的 GitHub 操作,它使用 Terraform 设置云环境并使用其他操作创建的容器来部署微服务和 API 我的项目。

目前,我 运行 在所有其他操作完成后手动执行最后一个操作。但是,我想知道是否有任何方法可以自动执行此操作。我知道我可以链接操作,但我不确定如何处理这个,因为任何数量的操作都可能 运行 并且可能以任何顺序完成。

在一个工作流程中?您可以 运行 在各自的工作中并行执行所有操作。然后对最终作业使用 needs: 以依赖于所有其他作业并在该作业中部署应用程序。

您可以将每个 GitHub 操作变成一个 composite action 以提高可重用性和可读性。

但是您可以将所有现有操作合并到 1 个工作流中 - 如果需要不同的运行器,则每个操作都在单独的作业中。

然后您可以使用 needs 语法设置这些作业之间的依赖关系。 最后,当它们全部完成时,您可以有 1 个作业,其中每个作业都有 needs,并检查它们是否成功,并根据该作业执行您需要的内容。

举个例子:

jobs:
  job1:
  job2:
    needs: job1 //if you want to queue jobs then set dependency, if you want to run job1, job2 in parallel, remove this dependency
  final_action:
    needs: [job1, job2]
    if: ${{ needs.job1.result == 'success' && needs.job2.result == 'success' }}
    run: //PUBLISH STUFF
  notify_error:
    needs: [job1, job2]
    if: ${{ always() && !cancelled() && (needs.job1.result != 'success' || needs.job2.result != 'success') }}
    run: //NOTIFY FAILURE