Рабочие процессы

Рабочие процессы
Update

Файл рабочего процесса (workflow) - это .yaml-файл, определяющий конфигурацию, последовательность заданий (jobs) и шагов (steps), которые должны быть выполнены в рамках GitVerse CI/CD.

Конфигурационные файлы рабочих процессов GitVerse должны:

  • быть написаны в синтаксисе YAML;
  • располагаться в .gitverse/workflows/ вашего репозитория, но раннер также обработает и .yaml-файлы в директории .github/workflows/.
  1. Директория с приоритетной конфигурацией определяется в настройках репозитория.
  2. Если у вас только одна директория с конфигурационными файлами, то раннеры будут их выполнять независимо от выборной опции.

Типы раннеров

Кроме уровней в GitVerse раннеры различаются по типам:

Пример:

Запускающие события (триггеры)

  1. create — создание нового репозитория, ветки, тега.
  2. delete — удаление репозитория, ветки, тега.
  3. fork — создание форка репозитория.
  4. gollum — создании или обновлении вики-страницы в репозитории.
  5. push — отправке изменений в репозиторий.
  6. issues — закрытие задачи в репозитории.
  7. issue_comment — добавление комментария к задаче в репозитории.
  8. pull_request — создание, обновление или закрытие запроса на слияние в репозитории.
  9. pull_request_review — добавление отзыва к запросу на слияние в репозитории.
  10. pull_request_review_comment — добавление комментария к отзыву запроса на слияние в репозитории.
  11. release: событие — создание нового релиза в репозитории.
  12. registry_package — создание, обновлении или удалении пакета в реестре пакетов в репозитории.
  13. schedule — запуск по расписанию.

Триггеры на вкладке CI/CD
New

У каждого рабочего процесса на вкладке CI/CD отображено событие, которое запустило процесс.

  1. push

    Пример:

    Ссылка ведет на коммит, послуживший событием запуска рабочего процесса.

  2. create

    Пример:

    Ссылка ведет на созданный объект (ветку или тег), послуживший событием запуска рабочего процесса.

  3. delete

    Пример:

    Отображается название удаленного объекта (ветки или тега), послуживший событием запуска рабочего процесса.

  4. fork

    Пример:

    Ссылка ведет на форк репозитория, послуживший событием запуска рабочего процесса.

  5. schedule

    Пример:

    Ссылка ведет на конфигурационный файл, содержащий расписание запуска рабочего процесса.

  6. pull_request, pull_request_review, pull_request_review_comment, pull_request_target

    Примеры:

    Ссылка ведет на запрос на слияние.

Составной рабочий процесс

Составной рабочий процесс в GitVerse CI/CD — это механизм, позволяющий подключать в целевой рабочий процесс .yaml-файлы, хранящиеся в других репозиториях.

Основные характеристики составного рабочего процесса:

  1. Переиспользование. Позволяет переиспользовать код, тем самым избавляясь от лишнего дублирования.
  2. Модульность. Разбивает сложные рабочие процессы на более мелкие, управляемые части.
  3. Централизованное управление. Изменения автоматически применяются ко всем рабочим процессам, которые его используют.

Требования к подключаемому .yaml-файлу:

  1. Должен находиться в корне репозитория и называться action.yaml.
  2. Для коммита ним требуется создать тег.
  3. Должен в своем составе конструкцию using: "composite".

Требования к проекту с целевым yaml-файлом, он должен:

  1. Находиться в директории .gitverse/workflows/ вашего проекта;
  2. Содержать конструкции uses: <username пользователя GitVerse>/<название репозитория>@<тег коммита>.

Подробнее см. раздел Составной рабочий процесс, пример.

Матричная конфигурация и выполнение

Матрица — способ запуска нескольких задач параллельно с различными комбинациями параметров.

Для задания матрицы в GitVerse, вы должны использовать ключевое слово matrix внутри блока strategy и runs-on: ${{ matrix.os }}. Внутри matrix вы можете указать параметры, которые будут использоваться для создания различных комбинаций.

В данном случае, матрица используется для запуска задач с разными версиями Node.js и операционными системами. Каждая комбинация параметров создает отдельную задачу, что позволяет проверить работоспособность проекта в различных окружениях.

Пример:

jobs:
  build:
    strategy:
      matrix:
        node-version: [12, 14, 16] # Разные версии Node.js
        os: [ubuntu-latest, windows-latest] # Разные операционные системы
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v2
      - name: Set up Node.js
        uses: actions/setup-node@v2
        with:
          node-version: ${{ matrix.node-version }}
      - run: npm install
      - run: npm test

Пользовательский таймаут выполнения
New

  1. jobs.<job_id>.steps[*].timeout-minutes — максимальная продолжительность выполнения шага (в минутах), по истечении которой процесс будет остановлен.

    Значение параметра timeout-minutes должно быть целым положительным числом, дробные значения недопустимы.

  2. jobs.<job_id>.timeout-minutes — максимальное время выполнения задачи (в минутах), после которого GitVerse автоматически его отменит.

Значение таймаут по умолчанию:

Если время выполнения задания превышает установленный для раннера лимит, задание будет отменено.

Запуск локального раннера с ограничениями на ресурсы

Для того чтобы ограничить потребление ресурсов для контейнера с выполняемой задачей, необходимо добавить блок container.options с обязательным параметром --net=bridge. В блоке можно прописать любые опции, с которыми запускается обычный контейнер, например:

    container:
      options: --cpus=0.5 --memory=2G --net=bridge ## Ограничения по CPU (50%) и RAM, --net=bridge - обязательный параметр

В данном примере на контейнер с задачей наложены дополнительные ограничения: --cpus=0.5 ограничивает на 50 % использование CPU, --memory=2G накладывает ограничение на RAM, --net=bridge является обязательным параметром.

Страница отчета выполнения CI/CD

Для просмотра или скачивания логов выполнения рабочего процесса, для проверки статуса заданий перейдите в профиле репозитория и далее:

  1. Выберите вкладку CI/CD.
  2. Перейдите на страницу отчета.

Пример:

Просмотр логов выполнения
New

Для просмотра логов в исходном формате нажмите на пиктограмму в правой части страницы:

Отобразится страница с отчетом в исходном формате:

Скачивание логов выполнения
New

После завершения работы раннера становятся доступны для скачивания логи выполнения задач рабочего процесса. Для скачивания логов нажмите на пиктограмму скачивания в правой части страницы:

В результате будет скачан файл отчета в формате .log.

Включение и выключение временных меток логов выполнения
New

Настройка через переключатель влияет только на текущий просмотр лога и не сохраняется между сессиями.

Чтобы отобразить/убрать временные метки логов выполнения задач CI/CD нажмите на переключатель Показывать время:

Статусы выполнения задания CI/CD

Существуют следующие статусы выполнения задания CI/CD:

  1. Успех:

  2. Неудача:

  3. Заблокирован:

  4. Отменен:

  5. Пропущен:

  6. Попробуйте перезапустить:

  7. В ожидании:

Статусы выполнения CI/CD в профиле репозитория

В профиле репозитория > Код статус выполнения задач CI/CD отображается рядом со ссылкой на последний коммит:

Пример успешного завершения задач рабочего процесса:

Пример неудачного завершения задач рабочего процесса:

Статусы выполнения CI/CD в запросе на слияние
New

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

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

Связанные разделы

  1. Включение/выключение CI/CD.
  2. Настройка CI/CD подробно рассмотрены примеры с: