Дополнительный артефакт опубликован при использовании шаблонов

В настоящее время начал использовать глобальные шаблоны в большинстве моих конвейеров, и возникает проблема, когда в дополнение к исходному артефакту публикуется пустой артефакт.

Это вызывает незначительные проблемы с некоторыми из моих групп развертывания (обходной путь - просто игнорировать его при загрузке). Хотя это не вызывает серьезных проблем, мне просто любопытно, почему публикуется дополнительный файл, а также предотвращает его.

Опубликованный артефакт

РЕДАКТИРОВАТЬ:

Включен мой шаблон yaml, который используется как:

parameters:
  ArtifactPath: ''
  ArtifactName: ''
  ArtifactPublish: false
  Artifacts: []
  Solution: '**/*.sln'

jobs:
- job: Build
  displayName: 'Build, Pack, and Publish'
  pool:
    vmImage: 'windows-latest'
  variables:
    solution: ${{ parameters.Solution }}
    buildPlatform: 'Any CPU'
    buildConfiguration: 'Release'
    prereleaseVersion: '$(majorVersion).$(minorVersion).$(Build.BuildNumber)-$(Build.SourceBranchName)'
    releaseVersion: '$(majorVersion).$(minorVersion).$(Build.BuildNumber)'
  steps:
  - task: NuGetToolInstaller@1
    displayName: "Install Nuget Tool"
  - task: NuGetCommand@2
    displayName: 'Restore Nuget Packages'
    inputs:
      command: 'restore'
      restoreSolution: '$(solution)'
      feedsToUse: 'select'
      vstsFeed: 'FEED'
  - task: VSBuild@1
    displayName: 'Build Solution'
    inputs:
      solution: '$(solution)'
      msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(Build.ArtifactStagingDirectory)"'
      platform: '$(buildPlatform)'
      configuration: '$(buildConfiguration)'
  - task: VSTest@2
    displayName: 'Run Unit Tests'
    inputs:
      platform: '$(buildPlatform)'
      configuration: '$(buildConfiguration)'
  - task: NuGetCommand@2
    displayName: 'Pack Prerelease Nuget Packages'
    condition: and(succeeded(), ne(variables['Build.SourceBranch'], 'refs/heads/master'), ne(variables['Build.SourceBranch'], 'refs/heads/release'))
    inputs:
      command: 'pack'
      configuration: '$(buildConfiguration)'
      packagesToPack: '**/nuspec/*.nuspec'
      versioningScheme: 'byEnvVar'
      versionEnvVar: prereleaseVersion
      verbosityPack: 'detailed'
  - task: NuGetCommand@2 
    displayName: 'Push Prerelease Nuget Packages'
    condition: and(succeeded(), ne(variables['Build.SourceBranch'], 'refs/heads/master'), ne(variables['Build.SourceBranch'], 'refs/heads/release'))
    inputs:
      command: 'push'
      packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg'
      nuGetFeedType: 'internal'
      publishVstsFeed: 'FEED'
      verbosityPush: 'normal'
  - task: NuGetCommand@2
    displayName: 'Pack Release Nuget Packages'
    condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/release'))
    inputs:
      command: 'pack'
      configuration: '$(buildConfiguration)'
      packagesToPack: '**/nuspec/*.nuspec'
      versioningScheme: 'byEnvVar'
      versionEnvVar: releaseVersion
      verbosityPack: 'detailed'
  - task: NuGetCommand@2 
    displayName: 'Push Release Nuget Packages'
    condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/release'))
    continueOnError: true
    inputs:
      command: 'push'
      packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg'
      nuGetFeedType: 'internal'
      publishVstsFeed: 'FEED'
      verbosityPush: 'detailed'
  - task: PublishSymbols@2
    displayName: 'Publish Symbols to Symbol Server'
    inputs:
      SearchPattern: '**/bin/**/*.pdb'
      SymbolServerType: 'TeamServices'
  - ${{ if eq(parameters.ArtifactPublish, true) }}:
    - ${{ each artifact in parameters.Artifacts }}:
      - task: CopyFiles@2
        displayName: 'Copy .artifactignore: ${{ artifact.ArtifactPath }}'
        inputs:
          SourceFolder: '$(Build.SourcesDirectory)'
          Contents: '.artifactignore'
          TargetFolder: '$(Build.SourcesDirectory)/${{ artifact.ArtifactPath }}'
    - ${{ each artifact in parameters.Artifacts }}:
      - task: PublishPipelineArtifact@1
        displayName: 'Publish Artifact: ${{ artifact.ArtifactName }}'
        inputs:
          targetPath: '$(Build.SourcesDirectory)/${{ artifact.ArtifactPath }}'
          artifactName: '${{ artifact.ArtifactName }}'

Yaml-файл, который его использует:

trigger:
  - release
  - development
  - master
  - feature/*
  - task/*

resources:
  repositories:
    - repository: templates
      name: Project/Repo-Name
      type: git
      ref: refs/heads/release
  
variables:
  # This is the version displayed in package manager (Major.Minor.BuildNumber)
  majorVersion: 1
  minorVersion: 1
  
jobs:
- template: Templates/build.yml@templates
  parameters:
    Solution: 'SolutionName'
    ArtifactPublish: true
    Artifacts:
    - ArtifactPath: 'bin/directory/$(buildConfiguration)'
      ArtifactName: 'ArtifactName'

person cybersnow1989    schedule 14.09.2020    source источник
comment
Нам сложно определить причину проблемы с помощью приведенной выше информации. Не могли бы вы поделиться некоторыми подробностями о том, как выглядят ваши azure-pipelines.yml и templates.yml, чтобы мы могли проверить вас напрямую?   -  person LoLance    schedule 15.09.2020
comment
Извините за задержку, я не получил никаких уведомлений, когда вы обновили вопрос с подробностями. Рекомендуется комментировать @somebody, чтобы он знал, есть ли обновления :)   -  person LoLance    schedule 28.09.2020
comment
Я только что нашел причину вашей проблемы с помощью ваших обновленных данных, пожалуйста, проверьте ее и не стесняйтесь сообщить мне, поможет ли это решить вашу загадку / проблему.   -  person LoLance    schedule 28.09.2020
comment
Привет, друг, есть ли обновления по этой проблеме?   -  person LoLance    schedule 30.09.2020
comment
Похоже, вы были правы, и этого следовало ожидать. Я беспокоился о том, что лишний материал попадет в мой конвейер релизов, но оказалось, что это ничего не повредит.   -  person cybersnow1989    schedule 05.10.2020


Ответы (1)


У вас есть один Опубликовать символы в вашем шаблоне, эта задача опубликует символы на сервере символов в артефактах Azure со случайным именем. Вот почему мы видим дополнительный артефакт на вкладке Published, это ожидаемое поведение при использовании PublishSymbols@2 задачи.

введите описание изображения здесь

Мне просто любопытно, почему публикуется дополнительный файл, а также предотвращает его.

Не рекомендуется отключать или удалять шаг Publish Symbols, хотя он помогает удалить артефакт. Эта задача очень важна для некоторых сценариев, когда вы хотите иметь возможность отлаживать опубликованные пакеты nuget, проверьте мой другая похожая проблема. Поэтому я просто игнорирую это ~

person LoLance    schedule 28.09.2020