【问题标题】:No artifact created in Azure pipelineAzure 管道中未创建任何项目
【发布时间】:2020-10-12 15:50:52
【问题描述】:

我正在尝试为 .NET Framework 项目创建 Azure 管道。构建似乎完成且没有错误,但没有生成工件:

YAML 定义如下,谁能看到我在这里做错了什么?

name: 'App-Api-Dev'

trigger:
  batch: true
  branches:
    include: [ development ]
  paths:
    include:
      - src/App.Api/*

pool:
  name: 'Default'

variables:
  solution: '**/*.sln'
  project: '**/Api.csproj'
  buildPlatform: 'x86'
  buildConfiguration: 'Release'

stages: 
  - stage: Build
    jobs:
      - job: Build
        pool: 
          name: Default

        steps:
        - task: NuGetToolInstaller@1
          displayName: 'Install Nuget'

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

        - task: VSBuild@1
          displayName: 'Build'
          inputs:
            solution: '$(project)'
            msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)"'
            platform: '$(buildPlatform)'
            configuration: '$(buildConfiguration)'

        - task: PublishSymbols@2
          inputs:
            SearchPattern: '**/bin/**/*.pdb'
            PublishSymbols: false

        - task: PublishBuildArtifacts@1
          displayName: 'Publish Artifacts'
          inputs: 
            PathtoPublish: $(build.artifactStagingDirectory)
            ArtifactName: 'PublishBuildArtifact'


【问题讨论】:

    标签: azure azure-pipelines


    【解决方案1】:

    没有将任何内容复制到 build.artifactstaging 目录。尝试使用newer Publish Pipeline Artifact 任务。如果我没听错的话,这是使用 Azure DevOps Pipelines 进行发布时使用的正确任务。

    - task: PublishPipelineArtifact@1
      inputs:
        #targetPath: '$(Pipeline.Workspace)' 
        #artifactName:  'PublishBuildArtifact'
    

    【讨论】:

      【解决方案2】:

      根据您发布构建工件任务的配置,您将从 $(build.artifactStagingDirectory) 发布工件。但是,此目录在每次新构建之前都会被清除,并且它是空的。

      使用此文件夹的典型方法是使用复制文件和发布构建工件任务发布您的构建工件。您可以在发布之前将要发布的工件复制到此目录。例如:

      - task: CopyFiles@2
        inputs:
          SourceFolder: '$(Build.SourcesDirectory)'
          Contents: '**'
          TargetFolder: '$(Build.ArtifactStagingDirectory)'
      
      - task: PublishBuildArtifacts@1
        inputs:
          PathtoPublish: '$(Build.ArtifactStagingDirectory)'
          ArtifactName: 'drop'
          publishLocation: 'Container'
      

      如果您要发布的工件在某些目录中已经准备好,您也可以直接使用发布构建工件任务。例如:

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

      另外,建议大家了解一下各个变量的本地路径和作用。

      Build.ArtifactStagingDirectory:代理上的本地路径,任何工件在被推送到目的地之前都会复制到该路径。例如:c:\agent_work\1\a

      请在this document找到更多详细信息。

      【讨论】:

        猜你喜欢
        • 2020-11-24
        • 2020-05-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-19
        • 1970-01-01
        相关资源
        最近更新 更多