Я пытаюсь настроить контейнер в OpenShift, который запускает Jenkins, который сам может запускать docker, чтобы использовать декларативные конвейеры, где сборка выполняется в своем собственном docker-контейнере.Это, в основном, делает необходимым установить и запустить Docker внутри этого контейнера.
Я не думаю, что ваш вывод здесь является единственной возможностью, и то, что я опишу ниже, является более простым подходом, чтобы получить то, что(Думаю) хочешь!:) Если у вас есть другие варианты использования, кроме этих 3, которые я опишу, дайте мне знать, и я постараюсь обновить их, чтобы охватить их:
- Трубопроводы, работающие в своих собственных контейнерах
- Запуск дополнительных контейнеров из конвейеров
- Создание образов контейнеров из конвейеров
Конвейеры, работающие в своих собственных контейнерах
Для этого случая естьотличный плагин Kubernetes .
С помощью этого плагина вы добавляете облако Kubernetes / OpenShift в глобальную конфигурацию Jenkins.Это может быть либо тот, в котором работает Jenkins (если вы используете образ Jenkins, предоставленный OpenShift, по крайней мере, он добавляется по умолчанию), либо внешний кластер.
Внутри этой конфигурации вы можете определить PodTemplates(опять же, есть пара примеров, представленных в образе Jenkins, предоставленных OpenShift), или вы можете указать это в своем конвейере напрямую, я думаю.Когда ваш конвейер запрашивает узел / агент с меткой, совпадающей с одним из них (и не существует давно работающих агентов, которые совпадают), из этого шаблона будет создан модуль pod, и ваше выполнение конвейера будет происходить внутри контейнера в этом,Как только он больше не нужен, он снова будет депровизирован.
Вот шаги конвейера, представленные этим плагином: https://jenkins.io/doc/pipeline/steps/kubernetes/
Запуск дополнительных контейнеров из конвейеров
Как частьвашего конвейера, вы можете захотеть запустить некоторые тесты, и те могут ожидать, что смогут взаимодействовать, например, с базой данных.Вы можете создать ресурсы для этого в своем проекте OpenShift (например, Развертывание и предоставить его с помощью Сервиса), а затем разорвать их.Плагин openshift-client очень полезен здесь и содержит документы о том, как взаимодействовать с OpenShift.
Создание образов контейнеров из конвейеров
Если ваша цель - создать образы контейнеровиз конвейеров помните, что OpenShift также предоставляет эту возможность (в зависимости от конфигурации безопасности) через Builds .Как и в предыдущем разделе, вы можете использовать плагин openshift-client для создания и запуска сборок.
Для получения дополнительной информации об образе Jenkins, который поддерживается OpenShift (и обычнокак делать полезные вещи в Jenkins на OpenShift), есть эта выделенная страница в документации OpenShift .