Skip to main content

Проект для взаимодействия с Jenkins через CLI

Project description

README.md

Этот репозиторий содержит код для взаимодействия с Jenkins с использованием библиотеки invoke. Он предоставляет функциональность для экспорта всех заданий из Jenkins и создания/обновления конкретных заданий.

Предварительные требования

  • Python 3.8 или выше
  • Библиотека invoke
  • Библиотека pyyaml

Начало работы

  1. Клонируйте этот репозиторий на свой локальный компьютер.
  2. Установите необходимые зависимости, выполнив следующую команду:
    poetry install
    
  3. Настройте информацию о сервере Jenkins в файле inventory.yml. Добавьте необходимую информацию о серверах Jenkins, с которыми вы хотите взаимодействовать.

Пример

Вот пример использования задач:

  1. Экспорта указанной задачи с сервера Jenkins в XML файл:

    python -m pyjej job.export -s мой_сервер_jenkins -j моё_задание
    
  2. Экспорт всех заданий с сервера Jenkins в XML файлы:

    python -m pyjej job.export-all -s мой_сервер_jenkins
    
  3. Создание задания на сервере Jenkins из XML файла:

    python -m pyjej job.create -s мой_сервер_jenkins -j моё_задание -f входная_папка
    
  4. Обновление задания на сервере Jenkins из XML файла:

    python -m pyjej job.update -s мой_сервер_jenkins -j моё_задание -f входная_папка
    
  5. Экспорт всех плагинов в файл plugins.txt:

    python -m pyjej plugins.export-all -s мой_сервер_jenkins
    
  6. Установка указного плагина в Jenkins:

    python -m pyjej plugins.install -s мой_сервер_jenkins -p имя_плагина
    
  7. Установить все плагины Jenkins из указного файла plugins.txt на указанный сервер:

    python -m pyjej plugins.all-install -s my_server -f ./data/komtek/plugins.txt
    
  8. Скачать настройки из плагина 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

  1. Переместить файл jenkins.yaml в Jenkins по пути /var/jenkins_home/
  2. Перейти на URL: https://ci.pkzdrav.ru/configuration-as-code/
  3. Нажать 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

pyjej-0.1.8.tar.gz (5.7 kB view details)

Uploaded Source

Built Distribution

pyjej-0.1.8-py3-none-any.whl (6.7 kB view details)

Uploaded Python 3

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

Hashes for pyjej-0.1.8.tar.gz
Algorithm Hash digest
SHA256 765bbd060415a6efd936b6ba0be81f77c8a80c9225c8ada2ccb783b6d0a478b3
MD5 edc03108c5e5f1757cb2b31a8d40a4b6
BLAKE2b-256 1c236427eae4e3da5a996c834d7e26e7a84d9de19f8ad6c452cd42059cdb098e

See more details on using hashes here.

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

Hashes for pyjej-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 dced424b9dbaf44cfc063437ded7cfa8039e7530848762e569531b13e2e7d244
MD5 61e041c19248de00339f260cbd47e877
BLAKE2b-256 427948c631882d309b711db9207f5e2e0a7bca23aa6ee033ab41f666a127a9c8

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page