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

如何在CircleCI的CodeDeploy Orb中正确使用变量?

解决CircleCI CodeDeploy Orb无法识别自定义变量的问题

你的问题出在CircleCI步骤的环境隔离上:run步骤里定义的stage变量仅存在于当前步骤的shell进程中,后续的aws-code-deploy/deploy-bundle步骤无法直接读取到这个变量,导致最终生成的应用名称里$stage为空。

解决方案

修改Set stage name的run步骤,将stage变量写入$BASH_ENV文件——CircleCI会在每个步骤执行前自动加载这个文件,确保变量能被后续步骤继承:

deploy:
    executor: aws-cli/default
    steps: 
      - aws-cli/setup:
          profile-name: my-role
      - checkout
      - run :
          name: "Set stage name"
          command: |
            stage=$(echo "${CIRCLE_USERNAME}" | tr '[:upper:]' '[:lower:]')
            echo "export stage=$stage" >> $BASH_ENV
      - aws-code-deploy/deploy-bundle:
          application-name: "my-app-$stage-application"
          deployment-group: "my-app-$stage-deployment-group"
          bundle-bucket: "my-app-$stage-bucket"
          bundle-key: "appspec"
          bundle-type: "yaml"
          deployment-config: "CodeDeployDefault.ECSAllAtOnce"

原理说明

CircleCI的每个步骤都是独立运行的shell进程,进程间默认不共享环境变量。通过将变量导出到$BASH_ENV,相当于把变量全局化,所有后续步骤的shell都会加载这个变量,这样aws-code-deploy/deploy-bundle就能正确解析$stage的值了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 11:55:26