Metadata-Version: 2.1
Name: pyjej
Version: 0.1.0
Summary: 
Author: Your Name
Author-email: you@example.com
Requires-Python: >=3.8,<4.0
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Requires-Dist: invoke (>=2.1.2,<3.0.0)
Requires-Dist: pyyaml (>=6.0,<7.0)
Description-Content-Type: text/markdown

# README.md

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

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

-   Python 3.6 или выше
-   Библиотека `invoke`
-   Библиотека `pyyaml`

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

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

## Использование

### tasks.py

Этот файл содержит основные задачи для взаимодействия с Jenkins.

#### Задача `export_all_jobs`

Эта задача экспортирует все задания с указанного сервера Jenkins и сохраняет их в виде файлов XML.

**Использование:**

```
python -m pyjej job.export-all --server <имя_сервера>
```

-   `<имя_сервера>`: Имя сервера Jenkins, определенное в файле `inventory.yml`.

#### Задача `create_job`

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

**Использование:**

```
invoke job.create --server <имя_сервера> --jobname <имя_задания> --in_folder <входная_папка>
```

-   `<имя_сервера>`: Имя сервера Jenkins, определенное в файле `inventory.yml`.
-   `<имя_задания>`: Имя задания для создания.
-   `<входная_папка>`: Папка, содержащая файл XML для задания.

#### Задача `update_job`

Эта задача обновляет конкретное задание на сервере Jenkins с использованием файла XML.

**Использование:**

```
invoke job.update --server <имя_сервера> --jobname <имя_задания> --in_folder <входная_папка>
```

-   `<имя_сервера>`: Имя сервера Jenkins, определенное в файле `inventory.yml`.
-   `<имя_задания>`: Имя задания для обновления.
-   `<входная_папка>`: Папка, содержащая файл XML для задания.

### selflib.py

Этот файл содержит вспомогательные функции, используемые задачами в `tasks.py`.

## Пример

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

1. Экспорт всех заданий с сервера Jenkins:

    ```
    invoke job.export-all --server мой_сервер_jenkins
    ```

2. Создание задания на сервере Jenkins:

    ```
    invoke job.create --server мой_сервер_jenkins --jobname моё_задание --in_folder входная_папка
    ```

3. Обновление задания на сервере Jenkins:
    ```
    invoke job.update --server мой_сервер_jenkins --jobname моё_задание --in_folder входная_папка
    ```

Убедитесь, что заменяете `мой_сервер_jenkins` на фактическое имя сервера, определенное в файле `inventory.yml`, `моё_задание` на желаемое имя задания и `входная_папка` на папку, содержащую файл XML для задания.

# Пример создания файла inventory.yml

Файл `inventory.yml` используется для настройки подключения к серверам Jenkins в коде. В этой главе мы предоставим пример создания файла `inventory.yml` с фиктивными значениями.

Пример содержимого файла `inventory.yml`:

```yaml
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`.

