【问题标题】:Output from one stage is not available for a subsequent one一个阶段的输出不可用于后续阶段
【发布时间】:2021-03-29 14:07:08
【问题描述】:

我有这两个阶段

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 任务构建解决方案并在D:\a\1\a\ 中生成WebApp.zip

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

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

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

pool:
 vmImage: 'windows-latest'

然后假设所有阶段都将在该阶段运行,但不是。

【问题讨论】:

    标签: azure azure-devops yaml


    【解决方案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

    【讨论】:

    • 您好,很高兴听到您解决了您的问题!可以accept it as an answer让有相关问题的人受益~
    猜你喜欢
    • 2019-03-03
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2021-12-29
    • 2020-01-07
    • 2020-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多