Azure devops 发布管道工件以在其他管道中使用
我试图在构建过程中发布几个管道工件,以便在另一个解决方案的构建中使用它们 我的第一个构建使用以下yaml构建和测试soltuionAzure devops 发布管道工件以在其他管道中使用,azure-devops,azure-pipelines,azure-pipelines-build-task,azure-artifacts,azure-pipelines-yaml,Azure Devops,Azure Pipelines,Azure Pipelines Build Task,Azure Artifacts,Azure Pipelines Yaml,我试图在构建过程中发布几个管道工件,以便在另一个解决方案的构建中使用它们 我的第一个构建使用以下yaml构建和测试soltuion - stage: build_test_release displayName: Build pool: vmImage: 'windows-latest' variables: solution: '**/*.sln' buildPlatform: 'Any CPU' buildConfigu
- stage: build_test_release
displayName: Build
pool:
vmImage: 'windows-latest'
variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
jobs:
- job: build
steps:
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
inputs:
restoreSolution: '$(solution)'
- task: VSBuild@1
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
inputs:
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
这一切都很好,我已经能够在同一个文件中使用这个yaml进行部署
- task: AzureRmWebAppDeployment@4
inputs:
ConnectionType: 'AzureRM'
azureSubscription: 'azuresubscription'
appType: 'webApp'
WebAppName: 'webappname'
deployToSlotOrASE: true
ResourceGroupName: 'resourcegroupname'
SlotName: 'staging'
packageForLinux: '$(build.artifactStagingDirectory)/**/projectToPublish.zip'
我现在正试图发布一些作为管道工件构建的项目,以便在构建另一个引用它们的解决方案时使用它们。以下发布任务给出了错误信息:
“##[错误]路径不存在:D:\a\1\a**\projectToPublish.zip”
我错过了什么?我一直在考虑将两个解决方案都引用的项目转移到它们自己的解决方案中,并将它们添加为nuget包或类似的东西。我试图发布为工件以在第二个解决方案中使用的项目都是WCF客户机项目
谢谢 在
AzureRmWebAppDeployment@4
您有
'$(build.artifactStagingDirectory)/**/WebProjectToPublish.zip'
在PublishPipelineArtifact@1
您有不同的名称
'$(build.artifactStagingDirectory)/**/projectToPublish.zip'
问题是您正在使用的任务“发布管道工件”不支持“文件或目录路径”参数的通配符。对于此任务,
$(build.artifactStagingDirectory)
被替换为D:\a\1\a\
,在名为a
的第二个目录中,Azure DevOps正在查找名为**
的子目录,该子目录不存在并导致显示的错误。另一个任务AzureRmWebAppDeployment@4
您正在使用的不支持通配符
请参见下图,其中Azure DevOps显示在PublishPipelineArtifact@1任务不支持targetPath中的通配符:
其次,我想知道为什么要使用通配符,因为任务
VSBuild@1
只需将包放入build.artifactStagingDirectory
中,该目录应设置路径$(build.artifactStagingDirectory)/projectToPublish.zip
,以定位包。抱歉,该名称只是一个占位符,用于隐藏项目的实际名称。它们在实际的yaml文件中是相同的,我已经更新到post来显示这一点。这是PublishPipelineArtifact
和VSBuild
在同一个作业中吗?是的,所有任务都在同一个作业中可以添加此步骤-bash:ls'$(build.artifactStagingDirectory)
在VSBuild
步骤之后和PublishPipelineArtifact
之前的两个地方?嗨,汤姆,你的问题有更新吗?下面托马斯的回答是否有助于解决您的问题?检查一下,如果有帮助的话,你可以考虑接受它。如果这个问题仍然困扰着你,请随时告诉我。这只是一个提醒:)
'$(build.artifactStagingDirectory)/**/projectToPublish.zip'