无法将工件从一个阶段复制到天蓝色管道中的另一个阶段
Unable to copy artifacts from one stage to another stage in azure pipeline
我有一个用于 nodejs 应用程序的多阶段 azure 构建管道。
在第一阶段,我构建源代码并将工件复制到暂存目录 (Build.ArtifactStagingDirectory
),在 Azure 构建管道的第三阶段,我尝试发布工件使用 PublishBuildArtifacts@1 任务。
但我收到以下警告:
Directory '/home/vsts/work/1/a' is empty. Nothing will be added to build artifact 'drop'.
我也尝试过 PipelineArtifacts 任务。
下面是构建管道概述。
蔚蓝-pipelines.yml
trigger:
- master
- feature
pool:
vmImage: 'ubuntu-latest'
stages:
- stage: BuildApplication
jobs:
- job: InstallNodejs
steps:
- task: NodeTool@0
inputs:
versionSpec: '10.x'
displayName: 'Step for installing Node.js'
- job: PrepareSonarCloud
steps:
- task: SonarCloudPrepare@1
inputs:
SonarCloud: ******
organization: ****
scannerMode: 'CLI'
configMode: 'manual'
cliProjectKey: ******
cliProjectName: ******
cliSources: '.'
condition: |
and
(
succeeded(),
eq(variables['Build.Reason'], 'Pull Request'),
eq(variables['System.PullRequest.TargetBranch'], 'master')
)
- job: BuildNodejs
steps:
- script: |
npm install
npm run build
displayName: 'npm install and build'
- job: CopyFiles
steps:
- task: CopyFiles@2
inputs:
sourceFolder: $(Build.SourcesDirectory)
targetFolder: $(Build.ArtifactStagingDirectory)
displayName: Copy Files to Staging Directory
- stage: StaticCodeAnalysis
jobs:
- job: AnalyzeSonarcloud
steps:
- task: SonarCloudAnalyze@1
displayName: 'Run SonarCloud code analysis'
condition: |
and
(
succeeded(),
eq(variables['Build.Reason'], 'Pull Request'),
eq(variables['System.PullRequest.TargetBranch'], 'master')
)
- job: PublishCodeAnalysisReport
steps:
- task: SonarCloudPublish@1
displayName: 'Publish SonarCloud quality gate results'
inputs:
pollingTimeoutSec: '300'
condition: |
and
(
succeeded(),
eq(variables['Build.Reason'], 'Pull Request'),
eq(variables['System.PullRequest.TargetReason'], 'master')
)
- stage: UploadArtifact
jobs:
- job: PublishBuildArtifact
steps:
- task: PublishBuildArtifacts@1
inputs:
pathtoPublish: $(Build.ArtifactStagingDirectory)
artifactName: drop
这是复制文件任务的日志。它将文件从源目录复制到暂存目录
下图显示了 PublishBuildArtifact 任务的日志
如果您有权访问 VSTS 代理,您可以查看构建文件夹(以检查构建是否正确)和 ArtifactStagingDirectory。
Unable to copy artifacts from one stage to another stage in azure pipeline
那是因为您在第一阶段复制文件,但在另一个阶段发布构建工件。
这两个阶段不在同一台机器上。
微软会在你每次使用一个阶段后回收代理并恢复它。之后,MS 将重新分配一个新代理到下一阶段。这就是为什么你把文件复制到对应的文件夹里,但是发布的时候是空的。因为不在同一台机器上。
因此,要解决此问题,我们必须在同一阶段使用复制文件任务和发布构建工件任务。
希望对您有所帮助。
我有一个用于 nodejs 应用程序的多阶段 azure 构建管道。
在第一阶段,我构建源代码并将工件复制到暂存目录 (Build.ArtifactStagingDirectory
),在 Azure 构建管道的第三阶段,我尝试发布工件使用 PublishBuildArtifacts@1 任务。
但我收到以下警告:
Directory '/home/vsts/work/1/a' is empty. Nothing will be added to build artifact 'drop'.
我也尝试过 PipelineArtifacts 任务。
下面是构建管道概述。
蔚蓝-pipelines.yml
trigger:
- master
- feature
pool:
vmImage: 'ubuntu-latest'
stages:
- stage: BuildApplication
jobs:
- job: InstallNodejs
steps:
- task: NodeTool@0
inputs:
versionSpec: '10.x'
displayName: 'Step for installing Node.js'
- job: PrepareSonarCloud
steps:
- task: SonarCloudPrepare@1
inputs:
SonarCloud: ******
organization: ****
scannerMode: 'CLI'
configMode: 'manual'
cliProjectKey: ******
cliProjectName: ******
cliSources: '.'
condition: |
and
(
succeeded(),
eq(variables['Build.Reason'], 'Pull Request'),
eq(variables['System.PullRequest.TargetBranch'], 'master')
)
- job: BuildNodejs
steps:
- script: |
npm install
npm run build
displayName: 'npm install and build'
- job: CopyFiles
steps:
- task: CopyFiles@2
inputs:
sourceFolder: $(Build.SourcesDirectory)
targetFolder: $(Build.ArtifactStagingDirectory)
displayName: Copy Files to Staging Directory
- stage: StaticCodeAnalysis
jobs:
- job: AnalyzeSonarcloud
steps:
- task: SonarCloudAnalyze@1
displayName: 'Run SonarCloud code analysis'
condition: |
and
(
succeeded(),
eq(variables['Build.Reason'], 'Pull Request'),
eq(variables['System.PullRequest.TargetBranch'], 'master')
)
- job: PublishCodeAnalysisReport
steps:
- task: SonarCloudPublish@1
displayName: 'Publish SonarCloud quality gate results'
inputs:
pollingTimeoutSec: '300'
condition: |
and
(
succeeded(),
eq(variables['Build.Reason'], 'Pull Request'),
eq(variables['System.PullRequest.TargetReason'], 'master')
)
- stage: UploadArtifact
jobs:
- job: PublishBuildArtifact
steps:
- task: PublishBuildArtifacts@1
inputs:
pathtoPublish: $(Build.ArtifactStagingDirectory)
artifactName: drop
这是复制文件任务的日志。它将文件从源目录复制到暂存目录
下图显示了 PublishBuildArtifact 任务的日志
如果您有权访问 VSTS 代理,您可以查看构建文件夹(以检查构建是否正确)和 ArtifactStagingDirectory。
Unable to copy artifacts from one stage to another stage in azure pipeline
那是因为您在第一阶段复制文件,但在另一个阶段发布构建工件。
这两个阶段不在同一台机器上。
微软会在你每次使用一个阶段后回收代理并恢复它。之后,MS 将重新分配一个新代理到下一阶段。这就是为什么你把文件复制到对应的文件夹里,但是发布的时候是空的。因为不在同一台机器上。
因此,要解决此问题,我们必须在同一阶段使用复制文件任务和发布构建工件任务。
希望对您有所帮助。