我开始使用azure-pipelines.yml
我想在同一阶段有2个工作。一个用于构建解决方案,另一个用于运行单元测试。
问题是第二个作业执行了脚本步骤,并且找不到上一个应该创建的文件夹Release
:
trigger:
- master
pool:
vmImage: 'ubuntu-18.04'
stages:
- stage: CI
jobs:
- job: Build
steps:
- task: NuGetAuthenticate@0
- script: dotnet restore --no-cache --force
- script: dotnet build --configuration Release --no-restore
- job: UnitTests
dependsOn: Build
steps:
- script: dotnet vstest test/*UnitTests/bin/Release/**/*UnitTests.dll
但是,如果我在同一作业中添加所有步骤,则它会起作用:
trigger:
- master
pool:
vmImage: 'ubuntu-18.04'
stages:
- stage: CI
jobs:
- job: Build
steps:
- task: NuGetAuthenticate@0
- script: dotnet restore --no-cache --force
- script: dotnet build --configuration Release --no-restore
- script: dotnet vstest test/*UnitTests/bin/Release/**/*UnitTests.dll
我找不到答案,为什么一个依赖作业无法在文件系统上找到上一个文件夹生成的文件夹。任何解释或澄清的链接将不胜感激。
我过去曾经使用过gitlab,尽管我不知道它是否具有作业的概念与步骤不同,但我不记得有类似的行为。
答案 0 :(得分:2)
您缺少的关键要素是作业在独立的代理(独立的计算机)上运行,并且没有任何类型的共享文件系统。
https://docs.microsoft.com/en-us/azure/devops/pipelines/process/phases?view=azure-devops&tabs=yaml
在一个作业中创建的任何要在从属作业中可用的文件,都必须显式暂存(在作业“ A”中),然后显式下载(在作业“ B”中)。
请参见发布:
并下载: