使用模板时发布的额外工件
Extra Artifact published when using templates
目前开始在我的大部分管道中使用全局模板,但出现了一个问题,即除了原始工件之外还发布了一个空工件。
这导致我的一些部署组出现小问题(解决方法是在下载时忽略它)。虽然它不会造成重大问题,但我只是好奇为什么要发布额外文件并阻止它。
编辑:
包括我的 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'
您的模板中有一个 Publish Symbols 任务,该任务将使用随机名称将符号发布到 Azure Artifacts 中的符号服务器。这就是为什么我们可以在 Published
选项卡中看到额外的工件,它是使用 PublishSymbols@2
任务时的 预期行为 。
I'm just curious about why the extra file is being published as well
as preventing it.
不建议禁用或删除 Publish Symbols
步骤,尽管它有助于删除工件。这个任务对于某些你希望能够调试已发布的 nuget 包的场景非常重要,请查看我的 。所以我的建议是无视它~
目前开始在我的大部分管道中使用全局模板,但出现了一个问题,即除了原始工件之外还发布了一个空工件。
这导致我的一些部署组出现小问题(解决方法是在下载时忽略它)。虽然它不会造成重大问题,但我只是好奇为什么要发布额外文件并阻止它。
编辑:
包括我的 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'
您的模板中有一个 Publish Symbols 任务,该任务将使用随机名称将符号发布到 Azure Artifacts 中的符号服务器。这就是为什么我们可以在 Published
选项卡中看到额外的工件,它是使用 PublishSymbols@2
任务时的 预期行为 。
I'm just curious about why the extra file is being published as well as preventing it.
不建议禁用或删除 Publish Symbols
步骤,尽管它有助于删除工件。这个任务对于某些你希望能够调试已发布的 nuget 包的场景非常重要,请查看我的