Factory
Фрейворк для автоматизации любых задач с открытым исходным кодом.
- Создавайте пайплайны
- Выполняте задачи
- Собирайте артефакты
Установка
Для установки нужно выполнить следующие команды
git clone https://gitflic.ru/project/amigo2208/factory.git
cd factory
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
Перед запуском приложения нужно создать файл .env
в директории factory
. Поместите в файл данные для входа и ключ шифрования.
SECRET_KEY=test
FACTORY_USERNAME=test
FACTORY_PASSWORD=test
После этого можно запустить приложение следующей командой
uvicorn app:app --host 0.0.0.0 --port 8000
Начало использования
Термины
- Пайплайн (Pipeline) - набор здач различных типов выполняющихся в определенном порядке.
- Задача (Job) - еденица действия возвращающая информацию в текстовом виде и создающая артефакты
- Артифакт (Artifact) - полезные данные возникшие в результате выполнения задачи.
Фреймворк позволяет описывать пайплайны в файлах формата yaml
. Для начала создадим наш первый пайплайн.
name: My first pipeline # Зададим название пайплайна
description: My first pipeline # Также можно задать описание для пайплайна
jobs: # Объявим набор задач в то порядке, в котором требуется их выполнить
- get_date
- make_format
get_date: # Опишем первую задачу
name: Get date # Задаче также можно задать название
description: Run date command # И описание
type: script # Задаим тип задачи
script: # Укажем текст скрипта для выполнения
- date
artifacts: # Зададим набор артефактов, которые будет создавать эта задача
- current_date
current_date: # Опишем заданные артефакты
name: Current date # Артифакты также имеют имя, но не имают описания
collect: plain # Зададим тип сбора артефакта
make_format: # По аналогии опишем вторую задачу
name: Format date
description: Print formatted date
type: script
script: # В данном скрипте используем артефакт из предыдущей задачи
- "echo 'Current date and time is: {{ get_date.current_date }}'"
artifacts:
- result
result:
name: Result formatted string
collect: plain
Далее добавим получившийся пайплайн на странице Pipelines.
После этого мы можем запустить наш пайплайн, задачи автоматически начнут выполнятся в заданном порядке.
Список задач можно посмотреть в разделе Jobs.
Обе задачи успешно завершились.
Собранные артефакты можно увидеть в разделе Artifacts. По кнопке Download артефакты можно скачать в виде txt файлов.
На странице Dashboard можно посмотреть историю запуска пайплайнов. При клики на идентификатор пайплайна станет доступна подробная информация по задачам и артефактам.
В результате выполнения пайплайна был получен артефакт со следующим содержимым:
Current date and time is: Сб 11 мая 2024 01:43:28 +07
Подробности использования
Шаблонизация
В качестве шаблонизатора используется движок jinja2, поэтому вы можете использовать все возможности jinja2 без ограничений изучив документацию по ссылке.
Описание пайплайнов
Так как для описания пайплайнов используется yaml, вы можете использовать все фичи yaml и при описании пайплайнов. Подробнее про синтаксис можно прочитать по ссылке.
Типы задач
На данный момент поддерживатся только тип script
. В ближайших обновлениях планируется добавить тип manual
.
script
Позволяет выполнять любое кол-во скрпиптов в консоле.
Требуется передать список строк.
manual
Позволяет выполнить задачу в ручном режиме и добавить пользовавтиельскую строку в качестве результата выполненя задачи в разделе Jobs.
Не требует дополнительны параметров.
Типы сбора артефактов
plain
Артефакт будет содержать полные вывод задачи.
Не требует дополнительных параметров.
regex
Артефакт будет содержать значение полученной из регулярного выражения.
Требуется передать регулярное выражение строкой.