【发布时间】:2022-01-27 22:52:21
【问题描述】:
我正在使用 Jenkinsfile 运行 Jenkins 管道作业。主要目的是运行 terraform <plan|apply>,根据 choice 参数选择plan 或apply,如下所示:
stages {
stage('tf_run') {
steps {
sh '''#!/usr/bin/env bash
terragrunt ${Action} --terragrunt-source "/var/temp/tf_modules//${tfm}"
'''
}
}
}
Action 是选择参数变量,这对 计划 来说都是好的,但对于 apply 来说却失败了em> 因为它要求确认是否继续,并且工作立即下降。我可以在这里做什么,以便用户输入yes/no(或从列表中选择),然后可以将其传递给terraform apply?
我被困在了中间,如果有人能把我引向正确的方向,我将不胜感激。感谢您提供的任何帮助。
-S
【问题讨论】:
-
这里的问题是 Jenkins Pipeline 输入步骤会先于用于执行 Terraform CLI(端到端)的 shell 脚本方法。因此,您将在查看计划之前批准
terraform apply,这不是您想要的。可以重构此管道以适应正常的 Terraform 部署管道,在该管道中生成、批准计划,然后在获得批准后传递给应用程序。如果没问题,那我可以给你写答案。 -
另外,如果这适合传统的 Terraform git 工作流程,那么您可以在 PR 上生成计划并在合并时应用,如果接口移动到您的 SCM 服务器并进行接口,这也适用于您到您的 Jenkins 流水线。
-
感谢@MattSchuchard 的提议。这正是我对
input步骤的问题。只要我不盲目运行-auto-approve,我对其他选项持开放态度。如果您能按照您提到的方式写下答案,我将不胜感激。 -
添加了答案。老实说,这种管道有很多不同的蓝图,所以除了下面的功能答案之外,还有很多定制和扩展的机会。
标签: jenkins groovy terraform jenkins-plugins jenkins-groovy