You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gitlab CI中Terragrunt命令被忽略无报错问题求助

GitLab CI中Terragrunt命令被忽略、错误命令不报错的问题解决

问题根源

你的.gitlab-ci.yml脚本存在语法错误:aws sts get-caller-identity << FOR TESTING MY SANITY这行使用了Here文档(heredoc)的起始标记,但未添加对应的结束标记。

Shell会把后续所有行(包括cd、export、terragrunt命令)都当成该Here文档的输入内容,根本不会执行这些命令。而aws sts get-caller-identity本身不需要输入,正常执行后返回退出码0,GitLab CI就直接判定Job成功,自然看不到Terragrunt的任何输出或错误。

修复方案

方案1:替换成注释(推荐,因为你只是加备注)

把Here文档标记换成#注释,脚本就能正常执行所有命令:

plan:
    stage: plan_dev
    parallel:
        matrix:
            - WORKLOAD_NAME:
                - workload-test
    script: | 
        aws sts get-caller-identity  # FOR TESTING MY SANITY
        cd ./accounts/workload_accounts/$WORKLOAD_NAME/non_prod
        export TF_LOG=TRACE
        terragrunt run-all foo-fail  # NOTICE TYPO

方案2:正确使用Here文档(如果确实需要)

如果真的要用到Here文档,必须保证起始标记和结束标记完全一致,且结束标记单独占一行、无缩进:

plan:
    stage: plan_dev
    parallel:
        matrix:
            - WORKLOAD_NAME:
                - workload-test
    script: | 
        aws sts get-caller-identity << FOR TESTING MY SANITY
        # 这里可填写命令需要的输入内容
        FOR TESTING MY SANITY
        cd ./accounts/workload_accounts/$WORKLOAD_NAME/non_prod
        export TF_LOG=TRACE
        terragrunt run-all foo-fail  # NOTICE TYPO

验证效果

修复后,所有命令都会按顺序执行。错误的terragrunt run-all foo-fail会输出对应的错误信息,并且因为命令执行失败返回非0退出码,GitLab CI会正确标记Job为失败。

内容的提问来源于stack exchange,提问作者Nicollas Braga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 06:33:13