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

CircleCI 2.1:parameters中声明的变量报未知变量错误排查

问题排查:CircleCI Job参数提示“Unknown variable(s)”错误

问题描述

在Job下定义了如下配置,但通过Web UI运行时,所有在parameters下定义的变量均提示“Unknown variable(s)”错误:

terraform_import_resources:
    docker:
      - image: myecrrepo/ansibleterraformpython3:tf0.12.18-1
    parameters:
      aws_ssoadmin_permission_set:
        type: string
        default: "AWSAdministratorAccess"
      aws_ssoadmin_permission_set_params:
        type: string
        default: "arn:aws:sso:::permissionSet/xxxxxx,arn:aws:sso:::instance/ssoins-xxxx"
      aws_ssoadmin_account_assignment:
        type: string
        default: "AWSAdministratorAccess"
      aws_ssoadmin_account_assignment_params:
        type: string
        default: "xxxxxx"
    steps:
      - checkout
      - attach_workspace:
          at: ~/
      - add_ssh_keys: *add_ssh_keys_infra_modules
      - run: *infra_modules_checkout
      - run:
          name: Run Terraform import
          command: |
            . ~/.env
            ansible --version
            terraform --version
            TAG_NAMES=`git log -1 --pretty=%B | perl -nle 'print $1 if /\((.*)\)/'`
            echo $TAG_NAMES 
            terraform import aws_ssoadmin_permission_set.<< pipeline.parameters.aws_ssoadmin_permission_set>> << pipeline.parameters.aws_ssoadmin_permission_set_params >>
            terraform import aws_ssoadmin_account_assignment.<< pipeline.parameters.aws_ssoadmin_account_assignment >> << pipeline.parameters.aws_ssoadmin_account_assignment_params >>

问题原因与解决方法

问题出在参数引用语法错误:你用了pipeline.parameters.xxx的写法,但这是引用全局管道参数的语法,而当前定义的是Job级别的参数,Job内部引用自身参数的正确语法是<< parameters.xxx >>,不需要加pipeline.前缀。

修正后的Run步骤代码

- run:
    name: Run Terraform import
    command: |
      . ~/.env
      ansible --version
      terraform --version
      TAG_NAMES=`git log -1 --pretty=%B | perl -nle 'print $1 if /\((.*)\)/'`
      echo $TAG_NAMES 
      terraform import aws_ssoadmin_permission_set.<< parameters.aws_ssoadmin_permission_set >> << parameters.aws_ssoadmin_permission_set_params >>
      terraform import aws_ssoadmin_account_assignment.<< parameters.aws_ssoadmin_account_assignment >> << parameters.aws_ssoadmin_account_assignment_params >>

额外说明

  • 如果是在Workflow中调用这个Job时,需要从全局管道参数传递值到Job参数,才会用到pipeline.parameters,比如:
    workflows:
      my_workflow:
        jobs:
          - terraform_import_resources:
              aws_ssoadmin_permission_set: << pipeline.parameters.global_permission_set >>
    
  • 但Job内部直接引用自己定义的参数,必须使用parameters.参数名的格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 19:05:30