azure - 取消设置环境变量 经典 Azure Pipeline 步骤

标签 azure azure-pipelines

我们使用 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/

相关文章:

azure - 使用 Azure KeyVault,无法在 Azure Active Directory 租户中找到对象

azure - 使用来自不同来源的多个容器通过 Docker Compose 部署到 Azure 应用服务

azure-devops - 有没有办法识别在 Azure Devops CI 构建中 checkin 的 TFS 分支?

yaml - 如何在 Build Yaml 中进行 dotnet 发布

asp.net-core - 使用 VSTS 的 ASP.NET Core 2.1 CI/CD 构建错误

azure - 在 Azure Devops SSH 任务中运行 `sudo` 命令的安全方法

c# - 如何使用用户凭据从 azure 广告生成不记名 token

linux - 如何通过 bash 检查 Linux 上自托管 Azure DevOps Agent 上正在运行的作业

ios - 适用于 iOS 的 Azure Devops 管道集成

azure - 使用破折号 (-) 作为参数中键名称的一部分