Поскольку вы используете Rancher, самый простой способ - зарегистрировать пользовательский каталог Rancher и создать элемент для каждого стека / службы, которую вы хотите развернуть.

Rancher Catalog - это Git-репозиторий со следующей структурой

Затем в Jenkins вы можете создать задание, которое будет вызывать Rancher REST API для развертывания / обновления стека / службы.

В свою очередь Rancher извлечет последнюю версию образа Docker для этой службы и развернет ее в соответствии с файлом Docker Compose из каталога.

Плюсы:
- универсальный подход, который может быть использован практически для каждого приложения
- Сам Дженкинс может быть развернут в среде Rancher, агенты могут быть созданы в кластере Kubernetes
Минусы:
- Команда разработчиков должна следовать четкой стратегии выпуска, чтобы иметь возможность использовать общие сборки
- Драйверы хранилища все еще находятся под вопросом в альфа-версии Rancher 2.0