我们使用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在步骤之间未设置。这很奇怪,因为通常这只发生在作业之间,而不是步骤之间。
2条答案
按热度按时间hsvhsicv1#
因为在第一步中只导出
SNAPCRAFT_STORE_CREDENTIALS
,所以这个变量的可见性是任务级别的。您可以从脚本中设置作业范围的变量。要从脚本设置变量,请使用
task.setvariable
logging命令。这不会更新环境变量,但会使新变量可用于同一作业中的下游步骤。例如,如果您使用的是命令行任务,请在第一步中添加此命令:
pdtvr36n2#
谢谢。我通过在同一步骤中登录和释放解决了这个问题。我和我的老板商量了一下,我们都认为遗留代码不是最佳实践。我们也有一个任务组的任务,所以它真的很容易改变。