README.md

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.

Pipelines

После этого мы можем запустить наш пайплайн, задачи автоматически начнут выполнятся в заданном порядке.

Список задач можно посмотреть в разделе Jobs.

Jobs

Обе задачи успешно завершились.

Собранные артефакты можно увидеть в разделе Artifacts. По кнопке Download артефакты можно скачать в виде txt файлов.

Artifacts

На странице Dashboard можно посмотреть историю запуска пайплайнов. При клики на идентификатор пайплайна станет доступна подробная информация по задачам и артефактам.

Dashboard

В результате выполнения пайплайна был получен артефакт со следующим содержимым:

Current date and time is: Сб 11 мая 2024 01:43:28 +07

Подробности использования

Шаблонизация

В качестве шаблонизатора используется движок jinja2, поэтому вы можете использовать все возможности jinja2 без ограничений изучив документацию по ссылке.

Описание пайплайнов

Так как для описания пайплайнов используется yaml, вы можете использовать все фичи yaml и при описании пайплайнов. Подробнее про синтаксис можно прочитать по ссылке.

Типы задач

На данный момент поддерживатся только тип script. В ближайших обновлениях планируется добавить тип manual.

script

Позволяет выполнять любое кол-во скрпиптов в консоле.

Требуется передать список строк.

manual

Позволяет выполнить задачу в ручном режиме и добавить пользовавтиельскую строку в качестве результата выполненя задачи в разделе Jobs.

Не требует дополнительны параметров.

Типы сбора артефактов

plain

Артефакт будет содержать полные вывод задачи.

Не требует дополнительных параметров.

regex

Артефакт будет содержать значение полученной из регулярного выражения.

Требуется передать регулярное выражение строкой.

Описание

Фреймворк комплесной автоматизации всего

Конвейеры
0 успешных
0 с ошибкой