#azure #docker #ubuntu
#azure #docker #ubuntu
Вопрос:
Я создал конвейер в Azure DevOps, который создает новый контейнер, в который объединяется запрос на main
извлечение. После сборки конвейер помещает новый контейнер в мой репозиторий контейнеров Azure. Текущий конвейер выглядит следующим образом
trigger:
- main
resources:
- repo: self
variables:
# Container registry service connection established during pipeline creation
dockerRegistryServiceConnection: 'xxx'
imageRepository: 'shinyproxyimage'
containerRegistry: 'myrepo.azurecr.io'
dockerfilePath: '$(Build.SourcesDirectory)/DOCKERFILE'
tag: '$(Build.BuildId)'
# Agent VM image name
vmImageName: 'ubuntu-latest'
stages:
- stage: Build
displayName: Build and push stage
jobs:
- job: Build
displayName: Build
pool:
vmImage: $(vmImageName)
steps:
- task: Docker@2
displayName: Build and push an image to container registry
inputs:
command: buildAndPush
repository: $(imageRepository)
dockerfile: $(dockerfilePath)
containerRegistry: $(dockerRegistryServiceConnection)
tags: |
latest
После этого мне нужно вручную выполнить вход в виртуальную машину Ubuntu в Azure и извлечь новую версию контейнера. Я заменяю последнюю строку tags
словом latest
, чтобы в этом теге всегда была последняя версия. По умолчанию tags
имеет значение from tag: '$(Build.BuildId)'
. Правильно ли то, что я сделал?
Возможно ли добавить этот шаг в конвейер без моего ручного вмешательства?
Комментарии:
1. да, то, что вы ищете, — это процесс развертывания / выпуска. проверьте это руководство и измените его для вашего случая docs.microsoft.com/en-us/azure/devops/pipelines/ecosystems /…
2. кстати, является ли размещение контейнера Docker единственным, для чего вы используете свою виртуальную машину? если это так, вы можете вместо этого обратиться к службе PaaS, такой как экземпляры контейнеров Azure или службы приложений для контейнеров
3. Процесс немного сложный. В Azure DevOps есть 2 конвейера для 2 сервисов (ShinyProxy и ShinyApp). ShinyProxy — это обычный контейнер, который имеет соединения с другими ShinyApps. По сути, я ищу способ запустить скрипт bash в конце конвейера на компьютер Ubuntu, чтобы получить новую версию контейнера
4. Есть какие-либо обновления по этому вопросу? Решает ли это вашу проблему? Если это работает для вас, пожалуйста, примите это.
5. Я нашел свой путь. Я создал полный пост, чтобы объяснить, что я сделал puresourcecode.com/programming-languages/r /…
Ответ №1:
Я заменяю теги последней строки словом latest, чтобы в этом теге всегда была последняя версия. По умолчанию теги имеют значение из тега: ‘$(Build.buildId)’. Правильно ли то, что я сделал?
С вашим действием проблем нет. Тег по умолчанию tag: '$(Build.BuildId)'
— это просто выбор, вы можете использовать его, а можете и не использовать, это зависит от ваших требований. Вы всегда можете использовать latest
тег для изображения, тогда в ACR есть только latest
тег для изображения. Но это также означает, что вы можете найти предыдущую версию изображения в ACR. Имея только один latest
тег, вы можете развернуть изображение с latest
тегом без каких-либо изменений вручную.