问题描述
当前在我的大部分管道中都开始使用全局模板,并且出现了一个问题,即除了原始工件之外,还发布了一个空工件。
这在我的某些部署组中引起了一些小问题(解决方法是在下载时忽略它)。虽然它不会引起重大问题,但我只是很好奇为什么要发布额外的文件并加以阻止。
编辑:
包括了我的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'),'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(),'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(),'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
任务时的预期行为。
我很好奇为什么还要发布额外的文件 作为预防措施。
不建议禁用或删除Publish Symbols
步骤,尽管它有助于删除工件。对于某些需要调试已发布的nuget程序包的功能,请检查我的another similar issue,此任务非常重要。所以我的建议就是忽略它〜