首页 > 解决方案 > Azure DevOps 变量组密码不起作用

问题描述

我有 userName 和 passWord 字段,我Azure DevOps Variable group,想将 userName 和 passWord 作为命令行参数传递给我的 python 脚本,我能够毫无问题地获取 userName 但是当我传递它时 passWord 没有出现从我的管道脚本。我尝试使用 echo 打印 - 它的打印是空的 - 不是晚上打印像这样的掩码值'*****'

请在下面找到我的管道代码:

trigger:
  - none

variables:
    - group: myVariableGrp

pool:
  name: myAgents

stages:
  - stage: Testing
    jobs:
      - job: Test
        displayName: Test script
        steps:
          - task: Bash@3
            displayName: Test variable
            inputs:
              targetType: inline
              script: |
                echo "hello variables"
                echo $USER_NAME
                echo $MY_PASSWORD 

          - task: CmdLine@2
            displayName: Test Python script
            inputs:
              script: python test.py $USER_NAME $MY_PASSWORD

测试.py

import sys

# total arguments
#n = len(sys.argv)
#print("Total arguments passed:", n)
print("UserName:", sys.argv[1])
print("Password:", sys.argv[2])

我收到以下错误:

Traceback (most recent call last):
  File "test.py", line 12, in <module>
    print("Password:", sys.argv[2])
IndexError: list index out of range
##[error]Bash exited with code '1'.
Finishing: Test Python script

标签: azure-devopsazure-pipelines-build-taskazure-pipelines-yamlazure-pipelines-tasks

解决方案


秘密变量不会自动公开为 env 变量。您必须明确映射它们:引用变量组中的秘密变量。在这种情况下,它将是:

          - task: Bash@3
            displayName: Test variable
            inputs:
              targetType: inline
              env:
                MAPPED_PASSWORD: $(MY_PASSWORD)
              script: |
                echo "hello variables"
                echo $USER_NAME
                echo $MAPPED_PASSWORD 

推荐阅读