gpt4 book ai didi

azure - 在 Azure 构建管道的整个阶段中保留对 defaultWorkingDirectory 的更改

转载 作者:行者123 更新时间:2023-12-02 08:29:48 26 4
gpt4 key购买 nike

我有一个类似于以下内容的 YAML 文件:

stages: 
- stage: A
pool:
vmImage: 'windows-2019'
jobs:
- job: a
steps:
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
#edits file "$(System.DefaultWorkingDirectory)/myfolder/myfile.json"

- stage: B
dependsOn: A
pool:
vmImage: 'windows-2019'
jobs:
- job: b
steps:
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
#uses file "$(System.DefaultWorkingDirectory)/myfolder/myfile.json"

我已将管道分为两个阶段; A:编辑存储库中的文件,B:使用编辑后的文件。

我的问题是,文件似乎在阶段之间被重置。有没有办法在整个阶段中保留更改,而不是重置它们?

我不想像阶段 b 那样发布工件等,尽管不在上面的 YAML 中,但我正在运行多个包含硬编码文件路径的 PowerShell 脚本文件,将文件路径覆盖到在运行阶段之前指向工件目录。

一个

最佳答案

根据我的测试,这个问题的原因是两个阶段运行在不同的Agent机器上。

例如:阶段 A -> 代理计算机名称:'fv-az146',阶段 B -> 代理计算机名称:'fv-az151'

您可以在构建日志->初始化作业中查看代理信息。

Initialize job

Is there any way of keeping the changes throughout the stages, rather than resetting them?

由于您不想发布工件,您可以尝试使用 Self-hosted agents运行两个阶段。

您需要向代理添加要求,以确保各个阶段在同一个自托管代理上运行。

根据this doc :

The demands keyword is supported by private pools.

我们无法在 Microsoft 托管的代理中指定特定的“代理功能”。因此我们无法确保两个阶段可以在同一个代理上运行

更新:

由于两个阶段在同一代理上运行,因此阶段 B 中的“ checkout ”步骤可能会覆盖阶段 A 中的文件。

因此您还需要在阶段 B 中添加 - checkout: none

这是更新后的 Yaml 模板:

stages:      
- stage: A
pool:
name: Pool name
demands:
- Agent.Name -equals agentname1
jobs:
- job: a
steps:
- task: PowerShell@2
...

- stage: B
dependsOn: A
pool:
name: Pool name
demands:
- Agent.Name -equals agentname1
jobs:
- job: b
steps:
- checkout: none
- task: PowerShell@2
...

总体工作流程:阶段A编辑文件并将其保存到$(System.DefaultWorkingDirectory)。

然后Stage B就可以直接使用$(System.DefaultWorkingDirectory)中的文件了。

$(System.DefaultWorkingDirectory) 中的文件将保留阶段 A 和 B 中的更改。

关于azure - 在 Azure 构建管道的整个阶段中保留对 defaultWorkingDirectory 的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62068956/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com