Как использовать образ Docker на этапе разработки Azure DevOps? - PullRequest
0 голосов
/ 13 мая 2019

КОНТЕКСТ

Мне нужно создать несколько образов докеров, для которых требуется определенный порядок.Чтобы выполнить такой порядок, я создал 2 этапа: первый, который отвечает за построение всех базовых образов, и второй, для которого нужны эти базовые образы для построения определенных изображений.

stages:
- stage: base
  displayName: Base Images
  jobs:
  - job: Docker
    pool:
      vmImage: 'ubuntu-16.04'
    timeoutInMinutes: 120
    steps:
    - task: UsePythonVersion@0
      inputs:
        versionSpec: '3.6'
        architecture: 'x64'
    - script: python build.py
      env:
        DOCKER_PASSWORD: $(DOCKER_PASSWORD)
    strategy:
      matrix:        
        Ubuntu GCC 4.9 x86_64:
          GCC_VERSIONS: "4.9"
        Ubuntu GCC 4.9 x86:
          GCC_VERSIONS: "4.9"
          DOCKER_ARCHS: "x86"
        Ubuntu GCC 5 x86_64:
          GCC_VERSIONS: "5"
        Ubuntu GCC 5 x86:
          GCC_VERSIONS: "5"
          DOCKER_ARCHS: "x86"
        Ubuntu GCC 5.2 x86_64:
          GCC_VERSIONS: "5.2"
        Ubuntu GCC 5.3 x86_64:
          GCC_VERSIONS: "5.3"
        Ubuntu GCC 6 x86_64:
          GCC_VERSIONS: "6"
        Ubuntu GCC 6 x86:
          GCC_VERSIONS: "6"
          DOCKER_ARCHS: "x86"

- stage: specilized
  displayName: Specilized Images
  jobs:
  - job: Docker
    pool:
      vmImage: 'ubuntu-16.04'
    timeoutInMinutes: 120
    steps:
    - task: UsePythonVersion@0
      inputs:
        versionSpec: '3.6'
        architecture: 'x64'
    - script: python build.py
      env:
        DOCKER_PASSWORD: $(DOCKER_PASSWORD)
    strategy:
      matrix:                
        Jenkins Slave GCC 4.9 x86_64:
          GCC_VERSIONS: "4.9"
          DOCKER_ARCHS: "x86_64"
          DOCKER_DISTRO: "jnlp-slave"
        Jenkins Slave GCC 4.9 x86:
          GCC_VERSIONS: "4.9"
          DOCKER_ARCHS: "x86"
          DOCKER_DISTRO: "jnlp-slave"
        Jenkins Slave GCC 5 x86_64:
          GCC_VERSIONS: "5"
          DOCKER_ARCHS: "x86_64"
          DOCKER_DISTRO: "jnlp-slave"
        Jenkins Slave GCC 5 x86:
          GCC_VERSIONS: "5"
          DOCKER_ARCHS: "x86"
          DOCKER_DISTRO: "jnlp-slave"
        Jenkins Slave GCC 6 x86_64:
          GCC_VERSIONS: "6"
          DOCKER_ARCHS: "x86_64"
          DOCKER_DISTRO: "jnlp-slave"
        Jenkins Slave GCC 6 x86:
          GCC_VERSIONS: "6"
          DOCKER_ARCHS: "x86"
          DOCKER_DISTRO: "jnlp-slave"

Скриптpython build.py вызывает клиент Docker для создания образа Docker.Первый этап предоставляет все базовые изображения, которые должны использоваться на втором этапе.Кроме того, все эти изображения должны быть загружены, но только в мастер-ветке (условие проверено build.py).

ПРОБЛЕМА

На втором этапе не используетсяДля изображений, созданных на первом этапе, загружается последняя версия, доступная на Hub Docker.

ВОПРОС

Как можно использовать изображения, созданные на первом этапе, вместо загрузки?

1 Ответ

1 голос
/ 13 мая 2019

вы не можете (ну, если все этапы не выполняются на вашем собственном агенте сборки).

вы можете либо сохранить его в некотором реестре и перенести его на второй этап перед выполнением сборок, либо сделать все за один этап(или используйте частных агентов).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...