我如何告诉 Azure Devops 中 Microsoft 托管的代理保留作业之间的工作区?
How can I tell a Microsoft-hosted agent in Azure Devops to preserve the workspace between jobs?
我想将 Microsoft 托管代理上的大型作业 运行 分解为较小的作业 运行 在同一个代理上按顺序进行。大作业是这样组织的:
pool:
vmImage: 'windows-latest'
jobs:
- job: large_job
steps:
- task: NuGetCommand@2
inputs:
command: 'restore'
- task: VSBuild@1
- task: VSTest@2
我想把它分解成两个较小的工作,像这样:
pool:
vmImage: 'windows-latest'
jobs:
- job: job_one
steps:
- task: NuGetCommand@2
inputs:
command: 'restore'
- job: job_two
dependsOn: job_one
steps:
- checkout: none
- task: VSBuild@1
- task: VSTest@2
... 这样我的所有二进制资源将在 job_one
内下载,构建和测试将在 job_two
.
内完成
作业包括一个可选参数 workspace:clean
,它与自托管代理一起使用,以指定是否应从代理中删除二进制资源、构建结果或所有内容。如果省略 workspace:clean
参数,则不会删除任何内容——所有内容都会保留。这就是我想要的。
然而,根据Workspace topic in the Azure Devops documentation:
The workspace clean options are applicable only for self-hosted agents. When using Microsoft-hosted agents, jobs are always run on a new agent.
这意味着在 job_two
可以 运行 构建任务之前我的所有二进制资源都被删除了。我想做类似的事情:
- job: job_two
dependsOn: job_one
workspace:
clean: none
steps:
- checkout: none
- task: VSBuild@1
- task: VSTest@2
我想避免使用自托管代理。我如何使用 Microsoft 托管的代理执行此操作?
您永远不能依赖作业之间的工作区相同,period -- 作业可能 运行 在任何一个可用代理上,这些代理是分布在多个工作文件夹中,甚至可能分布在不同的物理机器上。
有你的工作publish artifacts。
即
steps:
- publish: $(System.DefaultWorkingDirectory)/bin/WebApp
artifact: WebApp
然后在下游作业中,
steps:
- download: current
artifact: WebApp
但是,您真正想要的似乎是使用 pipeline cache 作为您的包裹。
我想将 Microsoft 托管代理上的大型作业 运行 分解为较小的作业 运行 在同一个代理上按顺序进行。大作业是这样组织的:
pool:
vmImage: 'windows-latest'
jobs:
- job: large_job
steps:
- task: NuGetCommand@2
inputs:
command: 'restore'
- task: VSBuild@1
- task: VSTest@2
我想把它分解成两个较小的工作,像这样:
pool:
vmImage: 'windows-latest'
jobs:
- job: job_one
steps:
- task: NuGetCommand@2
inputs:
command: 'restore'
- job: job_two
dependsOn: job_one
steps:
- checkout: none
- task: VSBuild@1
- task: VSTest@2
... 这样我的所有二进制资源将在 job_one
内下载,构建和测试将在 job_two
.
作业包括一个可选参数 workspace:clean
,它与自托管代理一起使用,以指定是否应从代理中删除二进制资源、构建结果或所有内容。如果省略 workspace:clean
参数,则不会删除任何内容——所有内容都会保留。这就是我想要的。
然而,根据Workspace topic in the Azure Devops documentation:
The workspace clean options are applicable only for self-hosted agents. When using Microsoft-hosted agents, jobs are always run on a new agent.
这意味着在 job_two
可以 运行 构建任务之前我的所有二进制资源都被删除了。我想做类似的事情:
- job: job_two
dependsOn: job_one
workspace:
clean: none
steps:
- checkout: none
- task: VSBuild@1
- task: VSTest@2
我想避免使用自托管代理。我如何使用 Microsoft 托管的代理执行此操作?
您永远不能依赖作业之间的工作区相同,period -- 作业可能 运行 在任何一个可用代理上,这些代理是分布在多个工作文件夹中,甚至可能分布在不同的物理机器上。
有你的工作publish artifacts。
即
steps:
- publish: $(System.DefaultWorkingDirectory)/bin/WebApp
artifact: WebApp
然后在下游作业中,
steps:
- download: current
artifact: WebApp
但是,您真正想要的似乎是使用 pipeline cache 作为您的包裹。