Создайте новое правило сборки для репозитория DockerHub с помощью вызовов API - PullRequest
5 голосов
/ 03 августа 2020

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

Я ищу для создания нескольких образов Docker (например, v1, v2 и c) для моего продукта.

Теперь я вижу, что DockerHub дает вам возможность напрямую настроить «правила сборки» с портала:

enter image description here

so right now, when I make changes to the /releases/v1/Dockerfile, the build will be triggered automatically.

Cool.

Going forward however, I expect to release /releases/v2/Dockerfile to my GitHub repo, and I would like for v2 to be built automatically as well, without me having to create the "build rule" manually. Is there a way to create a "build rule" programmatically?

I'm looking to call the DockerHub API to create the build rule. I've been through the documentation of the API here https://docs.docker.com/registry/spec/api/, но я не смог найти то, что искал.

Я хотел бы получить:

введите описание изображения здесь

где v2 был создан программно, а не с консоли.

1 Ответ

1 голос
/ 07 августа 2020

Docker Hub следует соглашениям git, согласно которым вы обычно не помещаете разные версии приложения в одну и ту же git фиксацию. Вместо этого вы должны использовать отдельные ветки и теги для разных версий вашего кода. Если вы следуете этому соглашению git, вы можете пометить полученное изображение на основе регулярного выражения в ветке или теге. Например,

  • Тип источника: Branch
  • Источник: /^v([0-9.]+)$/
  • Docker Тег: v{\1}

Затем вы можете выполнить сборку в ветке под названием v1.1 (или с любым другим номером версии), и изображение docker будет помечено как v1.1. Чтобы вытащить только первый номер тега, он будет выглядеть так:

  • Тип источника: Tag
  • Источник: /^v([0-9]+)[0-9.]*$/
  • Docker Тег: v{\1}

Которая преобразует тег с номером версии, например, v10.1.2, в тег docker из v10 (только числа перед . сопоставляются в первая часть регулярного выражения).

Подробнее об их правилах сборки см .: https://docs.docker.com/docker-hub/builds/#set -up-build-rules

Что касается API, а Сам реестр имеет задокументированный API , я не знаю аналогичного API для административного интерфейса Docker Hub. Вы можете попытаться перехватить вызовы, обнюхивая трафик браузера c и реплицируя его в своем приложении, но Docker может изменить эти вызовы в любое время, поскольку они не поддерживают API для этого.

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