- Создать два VM: для jenkins-master и jenkins-agent.
- Установить Jenkins при помощи playbook.
- Запустить и проверить работоспособность.
- Сделать первоначальную настройку.
- Сделать Freestyle Job, который будет запускать
molecule test
из любого вашего репозитория с ролью. - Сделать Declarative Pipeline Job, который будет запускать
molecule test
из любого вашего репозитория с ролью. - Перенести Declarative Pipeline в репозиторий в файл
Jenkinsfile
. - Создать Multibranch Pipeline на запуск
Jenkinsfile
из репозитория. - Создать Scripted Pipeline, наполнить его скриптом из pipeline.
- Внести необходимые изменения, чтобы Pipeline запускал
ansible-playbook
без флагов--check --diff
, если не установлен параметр при запуске джобы (prod_run = True). По умолчанию параметр имеет значение False и запускает прогон с флагами--check --diff
. - Проверить работоспособность, исправить ошибки, исправленный Pipeline вложить в репозиторий в файл
ScriptedJenkinsfile
. - Отправить ссылку на репозиторий с ролью и Declarative Pipeline и Scripted Pipeline.
- Создать скрипт на groovy, который будет собирать все Job, завершившиеся хотя бы раз неуспешно. Добавить скрипт в репозиторий с решением и названием
AllJobFailure.groovy
. - Создать Scripted Pipeline так, чтобы он мог сначала запустить через Yandex Cloud CLI необходимое количество инстансов, прописать их в инвентори плейбука и после этого запускать плейбук. Мы должны при нажатии кнопки получить готовую к использованию систему.
Переписал часть playbook, т.к. чтобы отработала команда molecule test
необходимо установить
pip install molecule ansible-lint yamllint podman molecule-podman molecule-docker
Но моя роль работает с последними версиями python, ansible, ansible-lint...а не с теми, которые устанавливаются в playbook домашки, поэтому, если будете тестировать ручками, команды все запустятся, но завершатся неуспешно из-за непрохождения линтеров и т.п. Не стал доводить и это до ума, т.к. смысл задачи в другом, и так борьба со многими проблемами отняла много времени. Но проблем не составит установить нужные версии, если потребуется.
Ссылки:
- Репозиторий с ролью и Declarative Pipeline в файле Jenkinsfile https://github.com/SomovAA/vector-role
- Scripted Pipeline в файле ScriptedJenkinsfile. Я сделал установку параметра prod_run через env.