- Создать 2 VM: для jenkins-master и jenkins-agent.
- Установить jenkins при помощи playbook'a.
- Запустить и проверить работоспособность.
- Сделать первоначальную настройку.
- Сделать 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.
Freestyle Job выполнена, скриншот выполнения. Список команд джобы ниже:
pip3 install --user "molecule==3.5.2" "molecule_docker"
molecule --versionDeclarative Pipeline Job сделана, скриншот выполнения. Скрипт джобы перенесен в репозиторий здесь и в основной репозиторий ansible-vector-role здесь.
Multibranch Pipeline Pipeline Job сделана, скриншот выполнения.
Scripted Pipeline создан, настроен параметр prod_run (тип boolen). Скрипт выложен в репозитории здесь и в основной репозиторий ansible-vector-role здесь. Скриншот выполнения pipeline здесь.
Итоговый скриншот выполненных pipeline. Репозиторий с использованной ролью ansible-vector-role https://github.com/AirDRoN-lab/ansible-vector-role
Во время отладки на ноде Jenkins были выполнены команды:
sudo usermod -a -G sudo jenkins
sudo visudo
# добавлена строка jenkins ALL=(ALL) NOPASSWD: ALLт.к. исполнение джобы на ноде отваливалось с ошибкой
TASK [java : Ensure installation dir exists] ***********************************
fatal: [localhost]: FAILED! => {"changed": false, "module_stderr": "sudo: a password is required\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}- Создать скрипт на groovy, который будет собирать все Job, которые завершились хотя бы раз неуспешно. Добавить скрипт в репозиторий с решением с названием
AllJobFailure.groovy. - Создать Scripted Pipeline таким образом, чтобы он мог сначала запустить через Ya.Cloud CLI необходимое количество инстансов, прописать их в инвентори плейбука и после этого запускать плейбук. Тем самым, мы должны по нажатию кнопки получить готовую к использованию систему.
Будет выполнена позже (после сдачи хвостов)