我们使用 snapcraft snap 来发布我们的软件。我们有一个经典的管道步骤用于登录 snapcraft,一个用于释放 snap,一个用于注销。但是,我们无法释放快照,因为代理丢失了登录和释放之间的上下文,因此无法释放快照。
第一步:
导出 SNAPRAFT_STORE_CREDENTIALS=$(cat $(Agent.TempDirectory)/[OUR-EXPORTED-LOGIN])
第二步:
snapcraft 发布 [SNAPNAME]“$(Revision)”“候选”
第三步:
取消设置 SNAPRAFT_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 在步骤之间未设置。这很奇怪,因为通常这只发生在作业之间,而不是步骤之间。
最佳答案
由于您在第一步中仅导出 SNAPCRAFT_STORE_CREDENTIALS
,因此该变量的可见性是任务级别的。
您可以set a job-scoped variable from a script 。要从脚本设置变量,请使用 task.setvariable
日志记录命令。这不会更新环境变量,但它确实使新变量可用于同一作业中的下游步骤。
例如,如果您使用命令行任务,请在第一步中添加此命令:
echo "##vso[task.setvariable variable=SNAPCRAFT_STORE_CREDENTIALS]$(SNAPCRAFT_STORE_CREDENTIALS)"
关于azure - 取消设置环境变量 经典 Azure Pipeline 步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77214671/