振动DevOps环境变量在并行运行时会被交叉污染

问题描述 投票:0回答:1
我们有一个可以部署的环境的管道; Dev,QA,IAT,preprod。我们进行构建,一些检查并部署到开发人员。该部分完成后,接下来的三个环境将被封闭,我们可以并行运行它们。

Deployment pipeline 我们目前必须一次运行QA,IAT和VNEXTIAT的管道,因为环境变量似乎是从其他环境中污染的。

错误是指从错误的存储帐户中检索状态的尝试:

Deployment Error图像显示IAT部署失败,因为它试图从vnextiat环境中获取状态文件(我认为)。 PKSVNextiatsa是来自Vnextiat环境中的存储帐户。它应该针对Pksiatsa(它是一个简单的命名方案)。

为什么这是发生的?

为什么自己运行时可以吗?
    我可以解决这个问题吗?
  • 要清楚,因为大门,它们并没有完全同时被踢出,但很快就会接一个。当其中多个正在运行并且似乎总是试图获取下一个环境资源时,总是会失败。并非总是如此,但主要是
  • 我们目前必须一次运行QA,IAT和VNEXTIAT的管道,因为环境变量似乎是从其他环境中污染的。
您没有显示有关这些变量的任何细节,但我的第一印象是这是一个问题。

在YAML管道(和通讯模板)中,您可以在各种范围内设置一个变量:

azure-devops azure-pipelines cicd
1个回答
0
投票
根级(管道):可用于管道中的所有作业。

级级别
:仅适用于特定阶段。

工作级:仅适用于特定工作。 您应该尽可能多地降低与环境相关变量的范围 - 理想情况下将它们设置为

job级别

,但在某些情况下,在阶段级别上也可能还可以。这应该防止其他环境中变量的“ concontamination”(使用您的表达式)。

示例 - 在作业级别引用
    变量模板
  • parameters: # other parameters here - name: environment type: string displayName: 'Environment' jobs: - job: deploy_${{ parameters.environment }} displayName: 'Deploy to ${{ parameters.environment }}' variables: # Consumers of this job are expected to provide a variables template # using the following folder structure: # /pipelines/variables/{environment}-variables.yaml - template: /pipelines/variables/${{ parameters.environment }}-variables.yaml@self steps: # ...
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.