簡體   English   中英

從多級 YAML 中的其他管道下載工件

[英]Download Artifact from other pipeline in Multistage YAML

在 azure devops 中,我試圖通過 yaml 創建多階段發布定義。 通過經典編輯器完成構建,並將工件上傳到 azure 管道。 所以我想訪問一個特定的工件進行部署

- task: DownloadPipelineArtifact@2 displayName: 'Download Pipeline Artifact' inputs: buildType: specific project: 'vvxxxxxx-vxxv-xxxv-vxxx-xxxxxxvvxxvv' definition: 5 buildVersionToDownload: specific pipelineId: 'SSE_XXXXXXXXXXXXXXXXXX_Auto-import_dev_20200423.4' artifactName: Service targetPath: '$(Pipeline.Workspace)'

當我使用任務“下載管道工件”通過經典版本嘗試它時它是成功的,但是當我通過 yaml 嘗試它時它失敗並出現錯誤“##[error]Run Id is not valid: SSE_XXXXXXXXXXXXXXXXXX_Auto-import_dev_20200423.4”如果有任何其他方式從管道中獲取工件會很有幫助,而且我也想讓它動態化,而不是硬編碼 pipelineId。

從多級 YAML 中的其他管道下載工件

pipelineId的值應該是您要下載的構建管道的 ID,而不是構建管道的名稱/標題。

找到您要下載的構建管道,點擊您要下載的構建記錄,您可以在瀏覽器的web地址欄中看到:

在此處輸入圖像描述

我也想讓它動態化,而不是硬編碼 pipelineId。

如果您不想在 YAML 定義中對pipelineId/runid進行硬編碼,您可以考慮傳遞隊列變量作為解決方法。

例如:

- task: DownloadPipelineArtifact@2
  inputs:
    source: 'specific'
    artifact: 'drop'
    path: $(Build.SourcesDirectory)/bin
    project: 'AndroidBuild'
    pipeline: 12
    runVersion: 'specific'
    runId: $(buildid)

在上面的定義中, buildid是變量,你可以在隊列時配置它的值:

在此處輸入圖像描述

當您想選擇另一個runId時,這不需要您對管道進行任何修改,只需在排隊時傳遞值即可。

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM