温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - Unable to copy artifacts from one stage to another stage in azure pipeline
azure-devops azure-pipelines azure-pipelines-build-task

其他 - 无法在天青管道中将工件从一个阶段复制到另一阶段

发布于 2020-03-27 15:48:56

我为nodejs应用程序提供了一个多阶段的Azure构建管道。

在第一阶段,我正在构建源代码并将工件复制到暂存目录(Build.ArtifactStagingDirectory),在azure构建管道的第三阶段中,我正在尝试使用PublishBuildArtifacts @ 1任务发布工件。

但是我收到以下警告:

目录“ / home / vsts / work / 1 / a”为空。不会添加任何东西来构建工件“放置”。

我也尝试过PipelineArtifacts任务。

以下是构建管道概述。 在此处输入图片说明

天蓝色管道

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任务的日志

该图显示了PublishBuildArtifact任务的日志

查看更多

查看更多

提问者
Navin prasad
被浏览
125
Leo Liu-MSFT 2020-01-31 16:14

无法在天青管道中将工件从一个阶段复制到另一阶段

那是因为您是在第一阶段复制文件,而在另一阶段发布构建工件。

这两个阶段不在同一台计算机上。

每次使用一个阶段后,Microsoft都会回收该代理并对其进行还原。之后,MS将把新代理重新分配到下一阶段这就是为什么您将文件复制到相应的文件夹,但是发布时该文件为空的原因。因为它不在同一台机器上。

因此,要解决此问题,我们必须在同一阶段使用复制文件任务并发布构建工件任务。

希望这可以帮助。