Прежде всего, вы всегда должны ставить задание опубликовать sh артефактов в конце этапа. Или вы просто опубликуете sh пустую папку.
Во-вторых, сборка команды dock compose и сохранение образа в папке docker на хост-компьютере. Ничего не будет выводиться в папку артефактов $(Build.ArtifactStagingDirectory)
агента.
В качестве обходного пути для передачи изображения docker между этапами, вы можете использовать команду docker image save
, чтобы специально сохранить изображение в папке $(Build.ArtifactStagingDirectory)
. И используйте задачу publi sh artifacts, чтобы опубликовать sh изображение на azure devops сервере. Затем вы можете использовать артефакты загрузки для загрузки изображения на следующем этапе.
Вы можете проверить пример ниже:
1, В этапе сборки добавьте Docker@0 ( версия 0. *) после DockerCompose для запуска команды сохранения образа для сохранения изображения в папку $(Build.ArtifactStagingDirectory)
- task: Docker@0
displayName: 'Run a Docker command'
inputs:
containerregistrytype: 'Azure Container Registry'
azureSubscription: '************'
azureContainerRegistry: '************'
action: 'Run a Docker command'
customCommand: 'image save <imageName>:$(Build.BuildId) -o $(Build.ArtifactStagingDirectory)/imagetest.tar'
2, поставьте задачу артефакта publi sh в конце Этап сборки, чтобы опубликовать sh изображение
- publish: $(Build.ArtifactStagingDirectory)
artifact: docker-images
3, Теперь вы можете скачать файл архива изображений из этапа сборки на этап Publi sh. И вы можете запустить команду docker load , чтобы загрузить образ архива. После того, как он будет загружен, вы можете добавить его в ACR
- download: current
artifact: docker-images
- task: Docker@0
displayName: 'Run a Docker command'
inputs:
containerregistrytype: 'Azure Container Registry'
azureSubscription: '************'
azureContainerRegistry: '************'
action: 'Run a Docker command'
customCommand: 'load --input $(Pipeline.Workspace)/docker-images/imagetest.tar'
Надеюсь, что это поможет!