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
Metadata
Release files for pyjej 0.1.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pyjej-0.1.8.tar.gz | 5.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pyjej-0.1.8-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 12.4 kB
Release files / pyjej-0.1.8.tar.gz
| Download URL | pyjej-0.1.8.tar.gz |
|---|---|
| Size | 5.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
765bbd060415a6efd936b6ba0be81f77c8a80c9225c8ada2ccb783b6d0a478b3
|
|
BLAKE2b-256 checksum How to use checksums |
1c236427eae4e3da5a996c834d7e26e7a84d9de19f8ad6c452cd42059cdb098e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.5.1 CPython/3.11.0rc1 Linux/5.15.0-76-generic
|
Release files / pyjej-0.1.8-py3-none-any.whl
| Download URL | pyjej-0.1.8-py3-none-any.whl |
|---|---|
| Size | 6.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
dced424b9dbaf44cfc063437ded7cfa8039e7530848762e569531b13e2e7d244
|
|
BLAKE2b-256 checksum How to use checksums |
427948c631882d309b711db9207f5e2e0a7bca23aa6ee033ab41f666a127a9c8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.5.1 CPython/3.11.0rc1 Linux/5.15.0-76-generic
|