Как извлечь образ Docker из конвейера Azure после сборки контейнера

#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 тегом без каких-либо изменений вручную.