Проект для взаимодействия с 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.
Source Distribution
Built Distribution
File details
Details for the file pyjej-0.1.8.tar.gz
.
File metadata
- Download URL: pyjej-0.1.8.tar.gz
- Upload date:
- Size: 5.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.5.1 CPython/3.11.0rc1 Linux/5.15.0-76-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 765bbd060415a6efd936b6ba0be81f77c8a80c9225c8ada2ccb783b6d0a478b3 |
|
MD5 | edc03108c5e5f1757cb2b31a8d40a4b6 |
|
BLAKE2b-256 | 1c236427eae4e3da5a996c834d7e26e7a84d9de19f8ad6c452cd42059cdb098e |
File details
Details for the file pyjej-0.1.8-py3-none-any.whl
.
File metadata
- Download URL: pyjej-0.1.8-py3-none-any.whl
- Upload date:
- Size: 6.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.5.1 CPython/3.11.0rc1 Linux/5.15.0-76-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | dced424b9dbaf44cfc063437ded7cfa8039e7530848762e569531b13e2e7d244 |
|
MD5 | 61e041c19248de00339f260cbd47e877 |
|
BLAKE2b-256 | 427948c631882d309b711db9207f5e2e0a7bca23aa6ee033ab41f666a127a9c8 |