yml 管道:使用来自多个存储库的代码发布工件

发布于 2025-01-14 11:18:44 字数 958 浏览 4 评论 0原文

我正在尝试从多个存储库构建代码并将其作为单个构建工件发布。

当我签出另一个存储库时,它会清除 ArtifactStagingDirectory。

有没有办法在作业之间保存代码?

resources:
  repositories:
  - repository: A
    type: git
    name: Engineering/A
    ref: master
  - repository: B
    type: git
    name: Engineering/B
    ref: pipeline_publish

jobs:
- job: jobA
  steps:
  - checkout: A
  - template: Pipelines/BuildTemplate.yml@A
  - template: Pipelines/CopyPluginsTemplate.yml@A
    parameters:
      destinationFolder: A

- job: jobB
  steps:
  - checkout: B
  - template: Pipelines/BuildTemplate.yml@A
  - template: Pipelines/CopyPluginsTemplate.yml@A
    parameters:
      destinationFolder: B

- job: jobPublishArtifact
  dependsOn:
  - jobA
  - jobB
  steps:
  - task: PublishBuildArtifacts@1
    displayName: Publish Files to be used by the Release build
    inputs:
      PathtoPublish: '$(Build.BinariesDirectory)'
      ArtifactName: 'HMI'
      publishLocation: 'Container'

I am attempting to build code from multiple repositories and publish it as a single build artifact.

When I checkout another repository it clears the ArtifactStagingDirectory.

Is there a way to save code between jobs?

resources:
  repositories:
  - repository: A
    type: git
    name: Engineering/A
    ref: master
  - repository: B
    type: git
    name: Engineering/B
    ref: pipeline_publish

jobs:
- job: jobA
  steps:
  - checkout: A
  - template: Pipelines/BuildTemplate.yml@A
  - template: Pipelines/CopyPluginsTemplate.yml@A
    parameters:
      destinationFolder: A

- job: jobB
  steps:
  - checkout: B
  - template: Pipelines/BuildTemplate.yml@A
  - template: Pipelines/CopyPluginsTemplate.yml@A
    parameters:
      destinationFolder: B

- job: jobPublishArtifact
  dependsOn:
  - jobA
  - jobB
  steps:
  - task: PublishBuildArtifacts@1
    displayName: Publish Files to be used by the Release build
    inputs:
      PathtoPublish: '$(Build.BinariesDirectory)'
      ArtifactName: 'HMI'
      publishLocation: 'Container'

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

緦唸λ蓇 2025-01-21 11:18:44

一个简单的答案是,不。但是,如果您想“玩”工件,您可以下载先前代理运行的构建结果。例如:

阶段 1:

pool:
  name: Azure Pipelines

steps:
- script: 'echo "Write your commands here" >> $(Build.ArtifactStagingDirectory)/fl1.txt'
  displayName: 'Command Line Script'

- task: PublishPipelineArtifact@1
  displayName: 'Publish Pipeline Artifact'
  inputs:
    targetPath: '$(Build.ArtifactStagingDirectory)'
    artifact: drop

阶段 2:

pool:
  name: Azure Pipelines

steps:
- script: |
   echo "Hello world"  >> $(Build.ArtifactStagingDirectory)/fl2.txt
  displayName: 'Command Line Script'

- task: DownloadPipelineArtifact@2
  displayName: 'Download Pipeline Artifact'
  inputs:
    artifactName: drop
    targetPath: '$(Build.ArtifactStagingDirectory)'

- task: PublishPipelineArtifact@1
  displayName: 'Publish Pipeline Artifact'
  inputs:
    targetPath: '$(Build.ArtifactStagingDirectory)'
    artifact: drop1

构建结果:

在此处输入图像描述

As a simple answer, No. However, if you want to "play" with artifacts, you can download the build results of the previous agent run. As example:

Stage 1:

pool:
  name: Azure Pipelines

steps:
- script: 'echo "Write your commands here" >> $(Build.ArtifactStagingDirectory)/fl1.txt'
  displayName: 'Command Line Script'

- task: PublishPipelineArtifact@1
  displayName: 'Publish Pipeline Artifact'
  inputs:
    targetPath: '$(Build.ArtifactStagingDirectory)'
    artifact: drop

Stage 2:

pool:
  name: Azure Pipelines

steps:
- script: |
   echo "Hello world"  >> $(Build.ArtifactStagingDirectory)/fl2.txt
  displayName: 'Command Line Script'

- task: DownloadPipelineArtifact@2
  displayName: 'Download Pipeline Artifact'
  inputs:
    artifactName: drop
    targetPath: '$(Build.ArtifactStagingDirectory)'

- task: PublishPipelineArtifact@1
  displayName: 'Publish Pipeline Artifact'
  inputs:
    targetPath: '$(Build.ArtifactStagingDirectory)'
    artifact: drop1

The build results:

enter image description here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文