Azure DevOps YAML CI и конвейер CD - PullRequest
0 голосов
/ 18 июня 2020

У меня есть отдельные конвейеры yaml для CI и CD в Azure DevOps Services. Конвейер CI опубликует sh артефакт в общую папку. \ fileshare \ project

enter image description here

enter image description here

И в конвейере CD я использую CI конвейер в качестве ресурса, чтобы я мог развернуть артефакт, созданный из конвейера CI.

resources:
  pipelines:
  - pipeline: POC_pipeline # identifier for the pipeline resource
    source: CI-pipeline_YAML # source pipeline definition name

Мой вопрос в том, как мне загрузить этот артефакт и какое предварительно определенное имя переменной получить путь к опубликованному артефакту из CI-pipeline.

Я пробовал использовать, но ничего не загружается, это работает, только когда я sh артефакт отправляю Azure DevOps.

steps:
    - download: POC_pipeline

1 Ответ

1 голос
/ 19 июня 2020

Кажется, что download задача не может загрузить артефакты, опубликованные в общую папку. Я могу воспроизвести ту же проблему. Вы можете сообщить об этой проблеме (нажмите Сообщить о проблеме и выберите Azure DevOps ) команде разработчиков Microsoft.

В качестве временного решения вы можно использовать задачу загрузки файловых артефактов для загрузки файловых артефактов.

- task: DownloadFileshareArtifacts@1
      inputs:
        filesharePath:  '\fileshare\project'
        artifactName: artifactName
        downloadPath: $(Build.ArtifactStagingDirectory)

Артефакты будут загружены в папку, указанную в downloadPath. В приведенном выше примере вы найдете артефакты в $(Build.ArtifactStagingDirectory)/artifactName (ie. C:\agent\_work\2\a\artifactName)

Отметьте здесь , чтобы найти дополнительные предопределенные переменные.

Вы также можете используйте задачу Загрузить артефакты конвейера , чтобы загрузить артефакты совместного доступа к файлам. Вам необходимо указать source как specific и другие атрибуты project, pipeline, runVersion. См. Ниже:

 - task: DownloadPipelineArtifact@2
      inputs:
        source: specific
        project: yourProjectName
        pipeline: CI-pipeline_YAML
        runVersion: latest
        path: $(Build.ArtifactStagingDirectory)

Артефакты будут загружены в папку, указанную в path.

Примечание: вам необходимо запустить конвейер на локальных агентах, которые могут получить доступ к общей папке . (Это приведет к ошибке "Невозможно прочитать каталог \ fileshare \ project" на облачных агентах).

...