Поделиться через


Создание и отправка образов контейнеров в реестры с помощью Azure Pipelines

Azure DevOps Services

В этой статье описывается создание конвейера для создания и отправки образа Docker в реестр контейнеров Azure или Центр Docker.

Необходимые компоненты

продукт требования
Azure DevOps - Проект Azure DevOps.
Разрешения: -
    — Чтобы предоставить доступ ко всем конвейерам в проекте: необходимо быть членом группы администраторов проектов.
    — Для создания подключений к службам необходимо иметь роль администратора или создателя для подключений служб.
— Если вы используете локальный агент, убедитесь, что Docker установлен, и подсистема Docker работает с повышенными привилегиями. Размещенные корпорацией Майкрософт агенты предустановили Docker.
GitHub — учетная запись GitHub.
— репозиторий GitHub с Dockerfile. Используйте пример репозитория, если у вас нет собственного проекта.
— подключение службы GitHub для авторизации Azure Pipelines.
Azure подписка Azure.
реестр контейнеров Azure.
продукт требования
Azure DevOps - Проект Azure DevOps.
Разрешения: -
    — Чтобы предоставить доступ ко всем конвейерам в проекте: необходимо быть членом группы администраторов проектов.
    — Для создания подключений к службам необходимо иметь роль администратора или создателя для подключений служб.
— Если вы используете локальный агент, убедитесь, что Docker установлен, и подсистема Docker работает с повышенными привилегиями. Размещенные корпорацией Майкрософт агенты предустановили Docker.
GitHub — учетная запись GitHub.
— репозиторий GitHub с Dockerfile. Используйте пример репозитория, если у вас нет собственного проекта.
— подключение службы GitHub для авторизации Azure Pipelines.
Концентратор Docker — учетная запись Docker Hub.
— репозиторий образов Docker Hub.

Создание подключения службы реестра Docker

Перед отправкой образов контейнеров в реестр необходимо создать подключение к службе в Azure DevOps. Это подключение службы сохраняет учетные данные, необходимые для безопасной проверки подлинности в реестре контейнеров. Для получения дополнительной информации см. подключения к службе реестра Docker.

  1. В проекте Azure DevOps выберите параметры проекта >подключения службы.

    снимок экрана: выбор параметров проекта.

  2. Выберите Новое подключение службы и Регистратор Docker.

    снимок экрана: выбор реестра Docker.

  3. Выберите Docker Hub и введите следующие сведения:

    Поле Описание
    Идентификатор Docker Введите идентификатор Docker.
    Пароль Docker Введите пароль Docker.
    имя подключения службы Введите название подключения к службе.
    предоставить разрешение на доступ ко всем конвейерам Выберите этот параметр, чтобы предоставить доступ ко всем конвейерам.

    снимок экрана: диалоговое окно подключения службы Docker Hub.

  4. Выберите Проверить и сохранить.

Создание конвейера для сборки и отправки образа Docker

Задача Docker@2 используется для сборки и отправки образа в реестр контейнеров. Задача Docker@2 предназначена для упрощения процесса создания, отправки и управления образами Docker в Azure Pipelines. Эта задача поддерживает широкий спектр команд Docker, включая сборку, отправку, вход, выход, запуск, остановку и запуск.

Выполните следующие действия, чтобы создать конвейер YAML, использующий задачу Docker@2 для сборки и отправки образа.

  1. В проекте Azure DevOps выберите Pipelines и Новый конвейер.

  2. Выберите GitHub в качестве расположения исходного кода и выберите репозиторий.

    • Если вы перенаправлены на GitHub для входа, введите учетные данные GitHub.
    • Если вы перенаправляетесь на GitHub, чтобы установить приложение Azure Pipelines, выберите " Утвердить и установить".
  3. Выберите репозиторий.

  4. Выберите шаблон конвейера Starter, чтобы создать базовую конфигурацию конвейера.

  5. Замените содержимое azure-pipelines.yml следующим кодом:

    
    trigger:
    - main
    
    pool:
      vmImage: 'ubuntu-latest' 
    
    variables:
      repositoryName: '<target repository name>' 
    
    steps:
    - task: Docker@2
      inputs:
        containerRegistry: '<docker registry service connection>'
        repository: $(repositoryName)
        command: 'buildAndPush'
        Dockerfile: '**/Dockerfile'
    
    
  6. Измените файл YAML конвейера следующим образом:

    • Замените <target repository name> именем репозитория в реестре контейнеров, где нужно отправить образ.
    • Замените <docker registry service connection> именем созданного ранее подключения службы реестра Docker.
  7. По завершении выберите Сохранить и запустить>Сохранить и запустить.

  8. Выберите задание, чтобы просмотреть журналы и проверить успешное выполнение конвейера.

  1. Перейдите в проект Azure DevOps и выберите Pipelines в меню слева.

  2. Выберите Создать конвейер.

  3. Выберите GitHub в качестве расположения исходного кода и выберите репозиторий.

    • Если вы перенаправлены на GitHub для входа, введите учетные данные GitHub.
    • Если вы перенаправляетесь на GitHub, чтобы установить приложение Azure Pipelines, выберите " Утвердить и установить".
  4. Выберите шаблон Docker - создание и отправка образа в реестр контейнеров Azure.

  5. Выберите подписку Azure и Продолжить.

  6. Выберите реестр контейнеров, а затем выберите Проверить и настроить.

    Пример конвейера YAML:

    # Docker
    # Build and push an image to Azure Container Registry
    # https://docs.microsoft.com/azure/devops/pipelines/languages/docker
    
    trigger:
    - main
    
    resources:
    - repo: self
    
    variables:
      # Container registry service connection established during pipeline creation
      dockerRegistryServiceConnection: '7f9dc28e-5551-43ee-891f-33bf61a995de'
      imageRepository: 'usernamepipelinesjavascriptdocker'
      containerRegistry: 'repoistoryname.azurecr.io'
      dockerfilePath: '$(Build.SourcesDirectory)/app/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: |
              $(tag)
    
    
  7. Выберите Сохранить и запустить и Сохранить и снова запустить.

  8. Выберите задание, чтобы просмотреть журналы и проверить успешное выполнение конвейера.

Шаблон Docker создает подключение службы к реестру контейнеров Azure и использует задачу Docker@2 для сборки и отправки образа Docker в реестр.

Задача Docker@2 предназначена для упрощения процесса создания, отправки и управления образами Docker в Azure Pipelines. Эта задача поддерживает широкий спектр команд Docker, включая сборку, отправку, вход, выход, запуск, остановку и запуск.

При использовании локальных агентов убедитесь, что Docker установлен на узле агента, а подсистема Или управляющая программа Docker работает с повышенными привилегиями.