ci-executer
Version:
Job executer for CI
109 lines (88 loc) • 5.98 kB
Markdown
# CI Executer
## Информация
Утилита запускает последовательность задач исходя из среды запуска.
## Оглавление
- [Установка](#install)
- [Ключи запуска](#launch)
## <a name="install"></a> Установка и использование
пример установки: `npm install ci-executer -g`
вызов справки: `ci-executer -h`
пример запуска: `ci-executer --config ./config.toml`
## <a name="launch"></a> Таблица ключей запуска
Ключ | Описание
----------------- | -----------
--version, -v | вывести номер версии приложения
--help, -h | вызвать справку по ключам запуска
--config, -c | путь к файлу конфигурации в формате toml или json, (переменная среды: CI_EXECUTER_CONFIG_PATH)
--scope, -s | Имя пространства выполнения, (переменная среды: CI_EXECUTER_SCOPE)
## <a name="configuration"></a> Конфигурация
Программа настраивается через файл конфигурации двух форматов TOML или JSON. Так же можно настраивать через переменные среды, которые будут считаться первичными.
### Секции файла конфигурации
- **logger** - настройка логгера (переменная среды: CI_EXECUTER_LOGGER)
- **jobs[]** - массив задач (переменная среды: CI_EXECUTER_JOBS)
### Пример файла конфигурации config.toml
```toml
[logger] # настройка логгера
mode = "prod" # режим (prod или dev или debug)
enable = true # активация логгера
timestamp = "none" # выводить время лога (none, time или full)
type = true # выводить тип лога (true или false)
[[jobs]] # массив задач
name = "job1" # имя задачи, должно быть уникально
enable = true # активация задачи
exec = "echo hello" # строка выполнения
allow_failure = false # разрешение на неуспех задачи
logs = false # отображение логов задачи
description = "My job1" # описание задачи (Не обязательный)
scope = "default" # пространство запуска
[jobs.env] # дополнительные переменные среды
ENV_KEY1 = "key1-val"
ENV_KEY2 = "key2-val"
[jobs.when] # условия запуска
environment = "all" # среда выполнения. all, local и ci
os = "all" # ОС выполнения. all, win и linux
env = [ # Список переменных среды. Если должно совпадать значение, то
"ENV_KEY1", # нужно указать его через равно.
"ENV_KEY2=key2-val",
"^ENV_KEY3",
"^ENV_KEY4=key4-val"
]
[[jobs]]
include = "job.json" # путь к файлу с настройкой задачи (все другие ключи игнорируется)
[[jobs]]
name = "job2"
enable = true
exec = "echo hello"
allow_failure = false
logs = true
description = "My job2"
scope = "default"
[jobs.env]
ENV_KEY1 = "key1-val"
ENV_KEY2 = "key2-val"
[jobs.when]
environment = "ci"
os = "win"
env = []
```
### Таблица параметров конфигурации
| Параметр | Тип | Значение | Описание |
| ----- | ----- | ----- | ----- |
| logger.mode | строка | prod | режим отображения prod, dev или debug |
| logger.enable | логический | true | активация логгера |
| logger.timestamp | логический | false | выводить время лога (true или false) |
| logger.type | логический | true | выводить тип лога (true или false) |
| jobs | массив | [] | массив задач |
| jobs[].name | строка | | имя задачи, должно быть уникально |
| jobs[].enable | логический | true | активация задачи |
| jobs[].exec | строка | | строка выполнения |
| jobs[].allow_failure | логический | false | разрешение на неуспех задачи |
| jobs[].logs | логический | false | отображение логов задачи |
| jobs[].description | строка | | описание задачи |
| jobs[].scope | строка | default | пространство запуска |
| jobs[].env | объект | {} | дополнительные переменные среды |
| jobs[].when | объект | {} | условия запуска |
| jobs[].when.environment | объект | {} | среда выполнения. all, local и ci |
| jobs[].when.os | объект | {} | ОС выполнения. all, win и linux |
| jobs[].when.env | массив | строка[] | список переменных среды. Если должно совпадать значение, то нужно указать его через равно |
| jobs[].include | строка | | путь к файлу с настройкой задачи (все другие ключи игнорируется) |