Как автоматически создавать PR с помощью Paketo.io/Cloud Native Buildpacks Docker image rebase (CI-Pipeline, например, GitHub Actions или Renewatebot)?
Как описано в функциях Cloud Native Buildpack, они добавляют возможность перебазирования с
Мгновенное обновление базовых образов без повторной сборки.
В документации buildpacks описывается, как операция rebase CLI пакета Paketo выполняется следующим образом:
pack rebase my-app:my-tag
Поскольку это одна из ключевых функций Cloud Native Buildpacks - и это функция, в которой отчаянно нуждается большинство архитектур на основе микросервисов - было бы здорово узнать, как это можно автоматизировать внутри конвейера CI / CD, такого как GitHub Actions или инструмент управления зависимостями, например, обновить. Renovate уже поддерживает Docker, но поскольку для Paketo нет файла управления зависимостями, он не создает запросы на извлечение прямо сейчас.
Итак, вопрос в том, как можно автоматизировать операцию перебазирования Paketo / Buildpacks для создания PR без вмешательства человека?
1 ответ
Команда заменит образ запуска, используемый вашим контейнером. Образ запуска - это часть компоновщика, который вы выбрали при создании образа.
Например, есть Пакето.
paketobuildpacks/builder:base
строитель. Вы можете запустить
pack inspect-builder paketobuildpacks/builder:base
и pack предоставит вам кучу подробностей о строителе. В него входит раздел, в котором рассказывается об образе запуска для этого построителя и любых образах, созданных с помощью этого построителя.
Run Images:
index.docker.io/paketobuildpacks/run:base-cnb
gcr.io/paketo-buildpacks/run:base-cnb
Обратите внимание, что их два в списке, но это одно и то же изображение, размещенное в двух разных местах.
Учитывая это, вы захотите настроить свою систему CI для отслеживания новых версий образа запуска для вашего компоновщика. Когда есть новый образ запуска, вы захотите обновить свои образы, чтобы использовать последний образ запуска.
Я не использовал Renovate, но похоже, что поддержка Docker - это то, что вам нужно. Наведите его на свое базовое изображение и используйте его для запуска команды.
У нас есть некоторые действия Github, которые отслеживают изображения Пакето (не для этой конкретной цели, но идея та же). Нет отличного способа сделать это (по крайней мере, в то время, когда я это пишу), но мы используем расписание для периодической проверки обновлений образа. Затем запустите рабочие процессы, в этом случае рабочий процесс будет в основном запускать
pack rebase
.