Как вытащить образы из личного реестра Docker в трутень дрон CI - PullRequest
0 голосов
/ 30 марта 2019

Ответ

Проблема

  • Мне нужно использовать образ из реестра образов частного докера в моем тестовом конвейере
  • Я не смог найти (редактировать: упущено из виду) актуальную документацию о том, как использовать личный реестр докеров с дроном вообще или со специально настроенными репозиториями.

Положение

версия для ОС: Ubuntu 18.04 LTS
версия дрона: 1.0.0
версия докера: 18.09.4
версия docker-compose: 1.23.2

Я сам управляю дроном с помощью docker и docker-compose (один мастер, два агента).

Пример конфигурации конвейера:

---

kind: pipeline
name: integration

steps:
  - name: tests
    image: private-registry.example.com/nodejs/special
    commands:
      - npm i
      - npm run test
    when:
      event:
        - push
        - pull_request
...

Drone Docs

Документация по drone относится к настройке частного реестра без предоставления ссылки или дополнительной информации о том, как это сделать, на странице документации о шагах конвейера в разделе изображения с указанием:

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


Я нашел этот вопрос, где указатель ссылается на эту страницу в документах, которые больше не существуют.

И автор вопроса, и автор принятого ответа используют drone cli для добавления реестра в drone с помощью команды registry. Но, к сожалению, эта команда больше не доступна.

Текущее сообщение об использовании drone cli выглядит следующим образом:

NAME:
   drone - command line utility

USAGE:
   drone [global options] command [command options] [arguments...]

VERSION:
   1.0.7

COMMANDS:
     build      manage builds
     cron       manage cron jobs
     log        manage logs
     encrypt    encrypt a secret
     exec       execute a local build
     info       show information about the current user
     repo       manage repositories
     user       manage users
     secret     manage secrets
     server     manage servers
     queue      queue operations
     autoscale  manage autoscaling
     fmt        format the yaml file
     convert    convert legacy format
     lint       lint the yaml file
     sign       sign the yaml file
     jsonnet    generate .drone.yml from jsonnet
     script     generate .drone.yml from script
     plugins    plugin helper functions
     help, h    Shows a list of commands or help for one command

GLOBAL OPTIONS:
   -t value, --token value   server auth token [$DRONE_TOKEN]
   -s value, --server value  server address [$DRONE_SERVER]
   --autoscaler value        autoscaler address [$DRONE_AUTOSCALER]
   --help, -h                show help
   --version, -v             print the version

Я обнаружил проблему с github , ссылающуюся на запрос на извлечение с добавлением раздела докера с 2014 года. Кажется, что все это было перемещено в докер и docker: dind plugins соответственно.

Вопросы

  1. Итак, наконец, есть ли способ добавить личный реестр докеров в дрон и как это сделать?
  2. Есть ли в документации подробности о том, как это сделать?

1 Ответ

0 голосов
/ 30 марта 2019

Решение

Действительно, раздел документации специально для частных реестров образов докеров.

Секреты извлечения изображений

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

Пример .docker / config.json file:

{
  "auths": {
    "https://index.docker.io/v1/": {
      "auth": "b2N0b2NhdDpjb3JyZWN0LWhvcnNlLWJhdHRlcnktc3RhcGxl"
    }
  }
}

Содержимоефайла следует хранить как секрет, где на указанный секрет ссылается в разделе image_pull_secrets yaml.

kind: pipeline
name: default

steps:
- name: build   image: testing/test-image   commands:
  - go build
  - go test

image_pull_secrets:
- dockerconfigjson

Итак, нужно выполнить docker login <registry host> ипоместите сгенерированные учетные данные из ~/.docker/config.json в секрет, в примере с именем dockerconfigjson.

...