如何让变量组中的机密变量保留$(...)语法不被展开?
如何在Azure Pipelines中输出机密变量的字面量(避免内部变量展开)
在Azure Pipelines中,当变量组里的机密变量包含$(变量名)语法时,管道会自动解析并展开内部变量,导致bash步骤输出展开后的值而非原始字面量。要实现输出hello$(anotherVar)而非helloXXX,可以通过以下方法解决:
方案1:在变量组中配置转义后的变量值
Azure Pipelines中使用两个连续的$符号转义单个$,因此在变量组SomeVariableGroup中,将机密变量someVar的值设置为hello$$(anotherVar)。
这样管道解析变量时,会自动将$$转换为单个$,最终传递给bash步骤的变量值就是hello$(anotherVar),执行echo $(someVar)即可得到预期的字面量输出。
修改后的流水线YAML无需调整,保持原有代码即可:
trigger: none variables: - group: SomeVariableGroup # 变量组中someVar的值为hello$$(anotherVar) - name: anotherVar value: XXX stages: - stage: stage1 jobs: - job: job1 steps: - bash: echo $(someVar) # 输出结果为hello$(anotherVar)
补充说明
由于是机密变量,在Azure DevOps变量组的配置界面输入值时,直接填写hello$$(anotherVar)即可,无需额外处理。管道在解析阶段会完成转义转换,确保bash步骤拿到的是未展开的原始字面量格式。
内容的提问来源于stack exchange,提问作者AS3
相关产品推荐
相关产品推荐

