Azure DevOps 管道创建空 zip

Azure DevOps Pipeline create empty zip

我想请教一下我在创建Azure pipeline过程中遇到的一个问题如何解决。

问题描述:

可能是负责构建项目的“砖头”没有创建 bin 文件夹,所以我最终得到了空 zip。 尽管事实上所有测试都成功完成(通过)。

我的 yaml 文件:

trigger:
- main

pool:
  vmImage: 'windows-latest'

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'

steps:
- task: NuGetToolInstaller@1

- task: UseDotNet@2
  inputs:
    packageType: 'sdk'
    version: '3.1.x'

- task: NuGetCommand@2
  inputs:
    restoreSolution: '$(solution)'

- task: DotNetCoreCLI@2
  inputs:
    command: 'build'
    projects: '**/XXX.EvaluateFunction.csproj'

- task: ArchiveFiles@2
  inputs:
    rootFolderOrFile: '$(Build.BinariesDirectory)'
    includeRootFolder: true
    archiveType: 'zip'
    archiveFile: '$(Build.ArtifactStagingDirectory)/Evaluate.zip'
    replaceExistingArchive: true

- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'PortalArtifact'
    publishLocation: 'Container'

 

根据关于 predefined variables 的文档:Build.BinariesDirectory 是代理上的本地路径,您可以将其用作已编译二进制文件的输出文件夹。您的 yaml 文件没有将其用作输出文件夹,因此该文件夹为空。您可以使用 Build.BinariesDirectory 作为 .NET Core 任务中的输出文件夹:arguments: '--output $(Build.BinariesDirectory)'

这是我的完整示例:

trigger:
- main

pool:
  vmImage: 'windows-latest'

variables:
  solution: '**/*.csproj'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'

stages:
- stage: Build
  jobs:
  - job: Build
    steps:
    - task: DotNetCoreCLI@2
      inputs:
        command: 'restore'
        projects: '**/*.csproj'
        feedsToUse: 'select'

    - task: DotNetCoreCLI@2
      inputs:
        command: 'build'
        projects: '**/*.csproj'
        arguments: '--configuration $(BuildConfiguration)'
    - task: DotNetCoreCLI@2
      inputs:
        command: 'publish'
        publishWebProjects: true
        arguments: '--configuration $(BuildConfiguration) --output $(Build.BinariesDirectory)'
    
    - task: ArchiveFiles@2
      inputs:
       rootFolderOrFile: '$(Build.BinariesDirectory)'
       includeRootFolder: true
       archiveType: 'zip'
       archiveFile: '$(Build.ArtifactStagingDirectory)/Evaluate.zip'
       replaceExistingArchive: true
    
    - task: PublishBuildArtifacts@1
      inputs:
        PathtoPublish: '$(Build.ArtifactStagingDirectory)'
        ArtifactName: 'drop'
        publishLocation: 'Container'

也可以参考create your first .NET Core pipeline的例子。