繁体   English   中英

Azure Devops Pipeline 中的 Python 脚本不能使用库中的值,如果它是一个秘密

[英]Python script in Azure Devops Pipeline cannot use a value from library if it's a secret

我有一个 Azure Devops Pipeline 设置。 它通过 yaml 获得了一些秘密

variables
 - group: GROUP_WITH_SECRET

然后在管道的后半部分,我运行了一个 python 脚本,该脚本通过

my_pat = os.environ["my_secret"]

然后将其用于 Microsoft ( msrest ) 提供的库中,如下所示:

BasicAuthentication("", my_pat)

如果有问题的变量在 ADO 库中设置为普通,则脚本可以正常工作。 如果我将其更改为机密,则连接失败。 如果我将它设置回纯文本,它会再次起作用。

问题是,我怎样才能让它与秘密一起工作? 我已经尝试将值打印出来,但由于它是一个秘密,它不会向我显示除The user 'aaaaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaa' is not authorized to access this resource之外的实际值

要在 Azure 管道中使用秘密变量,您需要在代理作业中显式地指定 map 秘密变量。

根据我的测试,Python 脚本任务没有 map 秘密变量的环境字段。

因此,您可以将 PowerShell 任务中的环境变量添加到 map 秘密变量中。 您可以将其设置为下一个任务的管道变量。

这是一个例子:

- powershell: |
   echo "##vso[task.setvariable variable=myPass]$env:myPass"
   
  displayName: 'PowerShell Script'
  env:
    myPass: $(myPass)

然后您可以在接下来的任务中使用该变量。

有关更多详细信息,您可以参考此文档: Secret Variable

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM