dev*_*ife 4 azure-pipelines multistage-pipeline
两个作业是否可以在多阶段管道构建中共享文件?Publish
stage有dotnet publish
job(单任务)和publish artifacts
job(单任务)。但是, 的输出dotnet publish
似乎不可用于publish artifacts
.
如果两个作业中的每一个都有一个任务,并且第二个任务消耗第一个任务的输出。那么为什么不在同一个工作下运行它们呢?
可以参考下面的yaml
stages:
- stage: Publish
displayName: 'Publish stage'
jobs:
- job: dotnetpublishartifacts
pool:
vmImage: 'windows-latest'
steps:
- task: DotNetCoreCLI@2
displayName: 'dotnet publish'
inputs:
command: publish
projects: '**/*.csproj'
arguments: '-o $(build.artifactstagingdirectory)'
publishWebProjects: false
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: drop'
inputs:
PathtoPublish: '$(build.artifactstagingdirectory)'
Run Code Online (Sandbox Code Playgroud)
如果这两个任务必须在单独的作业中。并且这些作业在同一个代理上运行。然后您可以尝试将 dotnet 发布任务输出到下一个作业不会清除的文件夹(因为代理作业将清除build.artifactstagingdirectory
上一个作业),
在下面的示例中,dotnet 将任务输出发布到$(Agent.BuildDirectory)\firtjobpublish
,以下作业执行不会清除该文件夹。
您可能需要单击yaml 管道编辑页面右上角的3 个点,单击“触发器”,转到“YAML”,然后在“获取源”部分中将“清理”设置为“假”。
以下 yaml 为例:
jobs:
- job: dotnetpublishartifacts
pool: Default
steps:
- task: DotNetCoreCLI@2
displayName: 'dotnet publish'
inputs:
command: publish
projects: '**/*.csproj'
arguments: '-o $(Agent.BuildDirectory)\firtjobpublish'
publishWebProjects: false
- job: publishartifacts
dependsOn: dotnetpublishartifacts
pool: Default
steps:
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: drop'
inputs:
PathtoPublish: '$(Agent.BuildDirectory)\firtjobpublish'
Run Code Online (Sandbox Code Playgroud)
添加:为了在作业之间共享文件,如果作业在不同的代理上运行,您可以尝试在第一个作业中添加发布工件任务,以将工件发布到azure服务器。并在以下作业中添加下载工件任务以下载上一个作业发布的工件。这种方法显然不适合你的情况。
希望以上内容对您有所帮助!
归档时间: |
|
查看次数: |
10835 次 |
最近记录: |