Проект для взаимодействия с Jenkins через CLI
Project description
README.md
Этот репозиторий содержит код для взаимодействия с Jenkins с использованием библиотеки invoke
. Он предоставляет функциональность для экспорта всех заданий из Jenkins и создания/обновления конкретных заданий.
Предварительные требования
- Python 3.8 или выше
- Библиотека
invoke
- Библиотека
pyyaml
Начало работы
- Клонируйте этот репозиторий на свой локальный компьютер.
- Установите необходимые зависимости, выполнив следующую команду:
poetry install
- Настройте информацию о сервере Jenkins в файле
inventory.yml
. Добавьте необходимую информацию о серверах Jenkins, с которыми вы хотите взаимодействовать.
Пример
Вот пример использования задач:
-
Экспорта указанной задачи с сервера Jenkins в XML файл:
python -m pyjej job.export -s мой_сервер_jenkins -j моё_задание
-
Экспорт всех заданий с сервера Jenkins в XML файлы:
python -m pyjej job.export-all -s мой_сервер_jenkins
-
Создание задания на сервере Jenkins из XML файла:
python -m pyjej job.create -s мой_сервер_jenkins -j моё_задание -f входная_папка
-
Обновление задания на сервере Jenkins из XML файла:
python -m pyjej job.update -s мой_сервер_jenkins -j моё_задание -f входная_папка
-
Экспорт всех плагинов в файл
plugins.txt
:python -m pyjej plugins.export-all -s мой_сервер_jenkins
-
Установка указного плагина в Jenkins:
python -m pyjej plugins.install -s мой_сервер_jenkins -p имя_плагина
-
Установить все плагины Jenkins из указного файла
plugins.txt
на указанный сервер:python -m pyjej plugins.all-install -s my_server -f ./data/komtek/plugins.txt
-
Скачать настройки из плагина Jenkins Configuration as Code:
python -m pyjej jcasc.export -s мой_сервер_jenkins
Убедитесь, что заменяете мой_сервер_jenkins
на фактическое имя сервера, определенное в файле inventory.yml
, моё_задание
на желаемое имя задания и входная_папка
на папку, содержащую файл XML для задания.
Использование
tasks.py
В этом файле содержатся основные задачи для взаимодействия с Jenkins.
Задача job.export
Эта задача экспортирует указанную задачу с указанного сервера Jenkins и сохраняет её в виде файла XML.
Использование:
python -m pyjej job.export --server <имя_сервера> --jobname <имя_задания>
<имя_сервера>
: Имя сервера Jenkins, определенное в файлеinventory.yml
.<имя_задания>
: Имя задания для экспорта.
Задача job.export-all
Эта задача экспортирует все задания с указанного сервера Jenkins и сохраняет их в виде файлов XML.
Использование:
python -m pyjej job.export-all --server <имя_сервера>
<имя_сервера>
: Имя сервера Jenkins, определенное в файлеinventory.yml
.
Задача job.create
Эта задача создает конкретное задание на сервере Jenkins с использованием файла XML.
Использование:
python -m pyjej job.create --server <имя_сервера> --jobname <имя_задания> --from_server <входная_папка>
<имя_сервера>
: Имя сервера Jenkins, определенное в файлеinventory.yml
.<имя_задания>
: Имя задания для создания.<входная_папка>
: Папка, содержащая файл XML для задания.
Задача job.update
Эта задача обновляет конкретное задание на сервере Jenkins с использованием файла XML.
Использование:
python -m pyjej job.update --server <имя_сервера> --jobname <имя_задания> --from_server <входная_папка>
<имя_сервера>
: Имя сервера Jenkins, определенное в файлеinventory.yml
.<имя_задания>
: Имя задания для обновления.<входная_папка>
: Папка, содержащая файл XML для задания.
Задача plugins.export-all
Эта задача позволяет получить список всех установленных плагинов на указанном сервере Jenkins.
Использование:
python -m pyjej plugins.export-all --server <имя_сервера>
<имя_сервера>
: Имя сервера Jenkins, определенное в файлеinventory.yml
.
Результат выполнения команды будет выведен на экран. Если у команды не было ошибок, список плагинов будет сохранен в файле data/<имя_сервера>/plains.txt
.
Задача plugins.install
Эта задача позволяет установить указанный плагин на сервере Jenkins.
Использование:
python -m pyjej plugins.install --server <имя_сервера> --plugin <имя_плагина>
<имя_сервера>
: Имя сервера Jenkins, определенное в файлеinventory.yml
.<имя_плагина>
: Имя плагина, который нужно установить.
Результат выполнения команды будет выведен на экран.
Задача plugins.all-install
Эта задача позволяет установить все плагин на сервере Jenkins из файла plugins.txt
.
Использование:
python -m pyjej plugins.all-install --server <имя_сервера> --from_file <путь_к_файлу>
<имя_сервера>
: Имя сервера Jenkins, определенное в файлеinventory.yml
на который установить плагины.<имя_плагина>
: Путь к файлуplugins.txt
Результат выполнения команды будет выведен на экран.
Задача jcasc.export
Эта задача позволяет скачать конфигурации Jenkins которые формируются через плагин Jenkins Configuration as Code (a.k.a. JCasC) Plugin
.
https://github.com/jenkinsci/configuration-as-code-plugin
Использование:
python -m pyjej jcasc.export --server <имя_сервера>
<имя_сервера>
: Имя сервера Jenkins, определенное в файлеinventory.yml
.
Результат выполнения команды будет выведен на экран и записан в файл data/<имя_сервера>/jenkins.yaml
.
Пример создания файла inventory.yml
Файл inventory.yml
используется для настройки подключения к серверам Jenkins в коде. В этой главе мы предоставим пример создания файла inventory.yml
с фиктивными значениями.
Пример содержимого файла inventory.yml
:
my_server:
JENKINS_USER_ID: "user"
JENKINS_API_TOKEN: "111111111111111111111111111"
PATH_JENKINS_CLI_JAR: "jenkins-cli.jar"
JENKINS_URL: "111.111.111.111:8080"
BASE_COMMAND_CLI: "java -jar {PATH_JENKINS_CLI_JAR} -s http://{JENKINS_USER_ID}:{JENKINS_API_TOKEN}@{JENKINS_URL}"
Для каждого сервера указаны следующие параметры:
JENKINS_USER_ID
: Идентификатор пользователя Jenkins для аутентификации.JENKINS_API_TOKEN
: API-токен пользователя Jenkins для аутентификации.PATH_JENKINS_CLI_JAR
: Путь к файлуjenkins-cli.jar
на вашей системе.JENKINS_URL
: URL-адрес сервера Jenkins.BASE_COMMAND_CLI
: Базовая команда для выполнения операций через командную строку Jenkins CLI.
Убедитесь, что заменяете фиктивные значения реальными данными серверов Jenkins, к которым вы хотите подключиться.
Создайте файл inventory.yml
в корневой папке проекта и добавьте соответствующую информацию для ваших серверов Jenkins. Этот файл будет использоваться кодом для установления связи с серверами Jenkins.
В следующей главе мы рассмотрим пример использования задач из tasks.py
для взаимодействия с серверами Jenkins, настроенными в файле inventory.yml
.
Восстановление конфигураций Jenkins через плагин Configuration as Code
- Переместить файл
jenkins.yaml
в Jenkins по пути/var/jenkins_home/
- Перейти на URL:
https://ci.pkzdrav.ru/configuration-as-code/
- Нажать
Apply new configuration
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.