azure - 在模板中读取时,Azure 管道中设置的变量会损坏
问题描述
变量 big_var_01 通过遵循 azure 管道 yaml 文件定义为值 '3q4w#V$X3q4w#V$X' 在 azure 管道模板中读回时被损坏为值 '3q4w#V#V'
cat parent_scott.yaml
variables:
- name: big_var_01
value: ${{ parameters.big_var_01 }}
parameters:
- name: big_var_01
displayName: "this var wants to get written to then read by templates"
type: string
default: '3q4w#V$X3q4w#V$X'
# CI Triggers
trigger:
branches:
exclude:
- '*'
pool:
vmImage: 'ubuntu-latest'
# Release Stages
stages:
- template: child_scott_one.yaml
后面的 azure 管道模板变量 big_var_01 被读回,但其值已损坏且与上述分配不匹配
cat child_scott_one.yaml
# Release Stages
stages:
- stage: A
jobs:
- job: JA
steps:
- script: |
echo "here is big_var_01 -->$(big_var_01)<-- "
local_var_01=$(big_var_01)
echo
echo "here is local_var_01 -->$local_var_01<-- "
echo
echo "length of local_var_01 is ${#local_var_01}"
echo
name: DetermineResult
见上述管道的运行
请参阅https://github.com/sekhemrekhutawysobekhotep/shared_variables_across_templates上的代码
如何使字符串变量 big_var_01 被视为文字,显然它以某种方式被评估并因此损坏......上面的代码是我实际天蓝色管道的简化,即使在设置带有值的键值秘密时,我也会遇到相同的变量损坏问题3q4w#V$X3q4w#V$X 在管道模板中读回时损坏
这是另一个明确显示此问题的管道运行 https://dev.azure.com/sekhemrekhutawysobekhotep/public_project/_build/results?buildId=530&view=logs&j=ed5db508-d8c1-5154-7d4e-a21cef45e99c&t=a9f49566-82d0-5c0a- 2e98-46af3de0d6e9&l=38 在这次运行中我检查了标记为 ON 管道运行选项:“启用系统诊断”...接下来我将尝试从 azure 变量中单引号我的 shell 分配
解决方案
在某个步骤,Azure DevOps 或 Ubuntu 替换了部分字符串。所以你有了:
3q4w#V$X3q4w#V$X
= 3q4w#V
+ $X3q4w
+ #V
+$X
这部分$X3q4w
和这$X
被替换为空字符串给你3q4w#V
+ #V
。
如果你像这里一样\
运行这个$
3q4w#V\$X3q4w#V\$X
This is job Foo.
here is big_var_01 -->3q4w#V$X3q4w#V$X<--
here is local_var_01 -->3q4w#V$X3q4w#V$X<--
length of local_var_01 is 16
我在运行它时遇到错误,windows-latest
但是我得到了正确的字符串:
"This is job Foo."
"here is big_var_01 -->3q4w#V$X3q4w#V$X<-- "
'local_var_01' is not recognized as an internal or external command,
operable program or batch file.
ECHO is off.
"here is local_var_01 -->$local_var_01<-- "
ECHO is off.
"length of local_var_01 is ${#local_var_01}"
ECHO is off.
##[error]Cmd.exe exited with code '9009'.
所以看起来ubuntu用env变量替换了它,因为没有像这样的变量$X3q4w
,$X
它用空字符串替换。
推荐阅读
- c++ - 错误:必须使用“类”标签来引用此范围内的“变量”类型
- pytorch - pytorch 的 grid_sample 返回不正确的值
- cassandra-3.0 - cassandra中的节点工具修复后的反压缩阶段
- mysql - 在批处理文件中提供 MySQL 密码的安全方法
- java - Android Picasso 导致 W/System: A resource failed to call close
- java - 如何为tomcat拆分catalina.out?
- c# - ORM - 在静态上下文中获取基类的类型?
- amazon-web-services - 无法在 aws http api 上发布数据?
- python - 如何在python中加入像拼图这样的矩阵
- android - 如何强制 Android 11 上的 OkHttp 使用 TLS 1.3 发送 ssl 客户端证书身份验证