GitLab CI+Terraform部署需手动触发,如何设置为自动执行?
GitLab CI Terraform部署自动执行问题解决
问题根源
GitLab官方的Terraform Base模板中,.terraform:deploy这个基础Job默认配置了when: manual,这是导致你即使设置when: on_success仍需手动触发的核心原因——模板中的配置会被继承,若覆盖方式不明确,自定义的when规则无法生效。
解决方案
方案1:显式覆盖模板的手动触发设置
在你的deploy Job中明确覆盖when参数,同时按需调整执行规则:
deploy: extends: .terraform:deploy dependencies: - build environment: name: $TF_STATE_NAME action: start when: on_success # 若模板自带rules限制,可自定义规则(示例为默认分支自动执行) rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH when: on_success
方案2:自定义Deploy Job绕过模板限制
直接编写完整的deploy脚本,不依赖模板中的.terraform:deploy:
deploy: stage: deploy dependencies: - build environment: name: $TF_STATE_NAME action: start script: - terraform apply -auto-approve when: on_success
额外检查点
- 确认
build阶段Job执行成功,when: on_success仅在前置阶段无失败时触发 - 检查目标环境
$TF_STATE_NAME是否为受保护环境:受保护环境仅限制执行权限,不会强制手动触发,但权限不足会导致执行失败 - 若使用旧版GitLab CI,可能存在extends配置覆盖的兼容性问题,建议升级至稳定新版本
内容的提问来源于stack exchange,提问作者wanna_coder101
相关产品推荐
相关产品推荐

