取消设置环境变量经典Azure管道步骤

4sup72z8  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(89)

我们使用snapcraft snaps来发布我们的软件。我们有一个经典的管道步骤用于登录到snapcraft,一个用于释放快照,一个用于注销。但是,我们无法释放快照,因为代理丢失了登录和释放之间的上下文,因此无法释放快照。
第一步:export SNAPCRAFT_STORE_CREDENTIALS=$(cat $(Agent.TempDirectory)/[OUR-EXPORTED-LOGIN])
第二步:snapcraft release [SNAPNAME] "$(Revision)" "candidate"
第三步:unset SNAPCRAFT_STORE_CREDENTIALS
所以在第二步中我们得到:

Starting Snapcraft 7.5.2
craft-store error: No keyring found to store or retrieve credentials from.
Ensure the keyring is working or SNAPCRAFT_STORE_CREDENTIALS is correctly exported into the environment
For more information, check out: https://snapcraft.io/docs/snapcraft-authentication

如果我们将第2步的内容放在第1步中,命令将按预期工作。这向我们表明SNAPCRAFT_STORE_CREDENTIALS在步骤之间未设置。这很奇怪,因为通常这只发生在作业之间,而不是步骤之间。

hsvhsicv

hsvhsicv1#

因为在第一步中只导出SNAPCRAFT_STORE_CREDENTIALS,所以这个变量的可见性是任务级别的。
您可以从脚本中设置作业范围的变量。要从脚本设置变量,请使用task.setvariable logging命令。这不会更新环境变量,但会使新变量可用于同一作业中的下游步骤。
例如,如果您使用的是命令行任务,请在第一步中添加此命令:

echo "##vso[task.setvariable variable=SNAPCRAFT_STORE_CREDENTIALS]$(SNAPCRAFT_STORE_CREDENTIALS)"
pdtvr36n

pdtvr36n2#

谢谢。我通过在同一步骤中登录和释放解决了这个问题。我和我的老板商量了一下,我们都认为遗留代码不是最佳实践。我们也有一个任务组的任务,所以它真的很容易改变。

相关问题