【问题标题】:Terraform with Github Actions Pattern带有 Github 操作模式的 Terraform
【发布时间】:2020-12-21 15:37:59
【问题描述】:

我正在尝试使用 Github 拉取请求和合并功能为 Terraform 计划和应用实施 Github 操作。

我无法实现的是,为项目中的每个新组件重用工作流。

例如,我要在项目中添加一个新的微服务,我已经创建了一个 Terraform 模块,如下所示,

#new-microservice.tf
module "new-microservice" {
  source = "",
  name   = "foo",
  nlb    = true,
  few other details
}

所以,当需要在项目中添加新的微服务时,任何人都可以通过更改属性值来创建带有模块块的新 TF 文件。

#one-more-microservice.tf
module "one-more-microservice" {
  source = "",
  name   = "bar",
  nlb    = false,
  few other details
}

到目前为止,一切都很好。当我想隔离这个微服务的每个资源状态时,问题就来了。

每个 TF 文件都将进入 Git 存储库中的单独目录,以便隔离 TF 状态。

但是,对于 Github Actions,工作流 yaml 应该保存在 Git 存储库的 .github/workflow 目录中。

如何找到拉取请求中发生更改的目录并在该目录中运行工作流?

我尝试在 Github Actions Marketplace 中搜索,找不到任何具体内容。

我不想在计划中创建多个作业并部署工作流 yaml 文件,其中一个用于微服务。

【问题讨论】:

    标签: git github terraform github-actions


    【解决方案1】:

    这很棘手,因为您基本上是在说您希望一个工作流在多个存储库推送上触发,而这目前在 github 操作中并不存在

    选项 1: 创建一个Workflow Template,它所做的只是启动服务推送并发送workflow dispatcher 事件。您基本上进行了触发该工作流程的 api 调用。唯一需要注意的是,目前组织工作流模板仅适用于公共存储库。

    选项 2: 跟踪每个服务的最后一次构建提交。这将允许您进行扫描。这样做的问题是您将需要设置一个workflow on a cronjob,然后它将检查您组织中所有存储库的列表,并进行提交差异。如果有可用的提交差异,那么您就知道为您的部署做您需要做的事情。 How to get list of organization repos

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-01
      • 2022-01-07
      • 2021-11-08
      • 2021-03-18
      • 2022-07-12
      • 2022-01-13
      • 2021-09-25
      • 2021-04-27
      相关资源
      最近更新 更多