一个阶段的输出不可用于后续阶段

时间:2021-03-29 14:07:08

标签: azure azure-devops yaml

我有这两个阶段

Vector3 forceDir = boxTransform.position - hit.point;

如您所见,stages: - stage: PrepareBuildTools jobs: - job: steps: - task: NuGetToolInstaller@1 - task: NuGetCommand@2 inputs: restoreSolution: '$(solution)' - stage: Build jobs: - job: steps: - task: DotNetCoreCLI@2 displayName: 'Initialize EntityFrameworkCore' inputs: command: custom custom: tool arguments: 'install --global dotnet-ef' - task: DotNetCoreCLI@2 displayName: 'Create migration' inputs: command: custom custom: ef arguments: 'migrations script -i -o $(System.DefaultWorkingDirectory)\migration.sql --project $(dbProject) -s $(startUpProject)' - task: VSBuild@1 displayName: Build solution inputs: solution: '$(solution)' msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactStagingDirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"' platform: '$(buildPlatform)' configuration: '$(buildConfiguration)' - task: FileTransform@1 displayName: Transform appSettings.json inputs: folderPath: '$(build.artifactStagingDirectory)\WebApp.zip' fileType: 'json' targetFiles: '**/appsettings.json' 任务构建解决方案并在 Build solution 中生成 WebApp.zip

问题是在后续阶段,ZIP 文件不存在,这让我相信这些阶段都在自己的环境(不同的虚拟机?)中运行。

有没有办法确保每个阶段都在相同的环境中运行?我真的不需要它们在不同的阶段运行,我主要想使用阶段,这样我就可以在最终的“部署”阶段之前进行批准。

我尝试在我的 YAML 定义文件的根目录定义一个池:

D:\a\1\a\

然后假设所有阶段都会在那个阶段运行,但没有。

1 个答案:

答案 0 :(得分:1)

我不得不添加更多的任务来完成这项工作

- task: CopyFiles@2
  displayName: Copy build output
  inputs:
    contents: '$(build.artifactStagingDirectory)\WebApp.zip'
    targetFolder: '$(Build.StagingDirectory)'
- task: CopyFiles@2
  displayName: Copy migration file
  inputs:
   contents: '$(System.DefaultWorkingDirectory)\migration.sql'
   targetFolder: '$(Build.StagingDirectory)'
- task: PublishBuildArtifacts@1
  inputs:
   PathtoPublish: '$(Build.StagingDirectory)'
   ArtifactName: 'buildoutput'
   publishLocation: 'Container'

在我需要上述文件的阶段,只需下载工件

- task: DownloadBuildArtifacts@0
  inputs:
   artifactName: 'buildoutput'
   buildType: 'current'
   downloadType: 'single'
   downloadPath: '$(System.ArtifactsDirectory)'

然后我可以这样使用它们:$(System.ArtifactsDirectory)\buildoutput\WebApp.zip