Рабочие процессыUpdate
Файл рабочего процесса (workflow) - это .yaml-файл, определяющий конфигурацию, последовательность заданий (jobs) и шагов (steps), которые должны быть выполнены в рамках GitVerse CI/CD.
Конфигурационные файлы рабочих процессов GitVerse должны:
- быть написаны в синтаксисе YAML;
- располагаться в .gitverse/workflows/ вашего репозитория, но раннер также обработает и .yaml-файлы в директории .github/workflows/.
- Директория с приоритетной конфигурацией определяется в настройках репозитория.
- Если у вас только одна директория с конфигурационными файлами, то раннеры будут их выполнять независимо от выборной опции.
Типы раннеров
Кроме уровней в GitVerse раннеры различаются по типам:
- организация;
- облачный;
- локальный.
Пример:
Запускающие события (триггеры)
create
— создание нового репозитория, ветки, тега.delete
— удаление репозитория, ветки, тега.fork
— создание форка репозитория.gollum
— создании или обновлении вики-страницы в репозитории.push
— отправке изменений в репозиторий.issues
— закрытие задачи в репозитории.issue_comment
— добавление комментария к задаче в репозитории.pull_request
— создание, обновление или закрытие запроса на слияние в репозитории.pull_request_review
— добавление отзыва к запросу на слияние в репозитории.pull_request_review_comment
— добавление комментария к отзыву запроса на слияние в репозитории.release: событие
— создание нового релиза в репозитории.registry_package
— создание, обновлении или удалении пакета в реестре пакетов в репозитории.schedule
— запуск по расписанию.
Триггеры на вкладке CI/CDNew
У каждого рабочего процесса на вкладке CI/CD отображено событие, которое запустило процесс.
push
Пример:
Ссылка ведет на коммит, послуживший событием запуска рабочего процесса.
create
Пример:
Ссылка ведет на созданный объект (ветку или тег), послуживший событием запуска рабочего процесса.
delete
Пример:
Отображается название удаленного объекта (ветки или тега), послуживший событием запуска рабочего процесса.
fork
Пример:
Ссылка ведет на форк репозитория, послуживший событием запуска рабочего процесса.
schedule
Пример:
Ссылка ведет на конфигурационный файл, содержащий расписание запуска рабочего процесса.
pull_request
,pull_request_review
,pull_request_review_comment
,pull_request_target
Примеры:
Ссылка ведет на запрос на слияние.
Составной рабочий процесс
Составной рабочий процесс в GitVerse CI/CD — это механизм, позволяющий подключать в целевой рабочий процесс .yaml-файлы, хранящиеся в других репозиториях.
Основные характеристики составного рабочего процесса:
- Переиспользование. Позволяет переиспользовать код, тем самым избавляясь от лишнего дублирования.
- Модульность. Разбивает сложные рабочие процессы на более мелкие, управляемые части.
- Централизованное управление. Изменения автоматически применяются ко всем рабочим процессам, которые его используют.
Требования к подключаемому .yaml-файлу:
- Должен находиться в корне репозитория и называться action.yaml.
- Для коммита ним требуется создать тег.
- Должен в своем составе конструкцию
using: "composite"
.
Требования к проекту с целевым yaml-файлом, он должен:
- Находиться в директории .gitverse/workflows/ вашего проекта;
- Содержать конструкции
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
-
jobs.<job_id>.steps[*].timeout-minutes
— максимальная продолжительность выполнения шага (в минутах), по истечении которой процесс будет остановлен.Значение параметра
timeout-minutes
должно быть целым положительным числом, дробные значения недопустимы. -
jobs.<job_id>.timeout-minutes
— максимальное время выполнения задачи (в минутах), после которого GitVerse автоматически его отменит.
Значение таймаут по умолчанию:
- 15 минут для облачного раннера;
- 3 часа для локального раннера.
Если время выполнения задания превышает установленный для раннера лимит, задание будет отменено.
Запуск локального раннера с ограничениями на ресурсы
Для того чтобы ограничить потребление ресурсов для контейнера с выполняемой задачей, необходимо добавить блок 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
Для просмотра или скачивания логов выполнения рабочего процесса, для проверки статуса заданий перейдите в профиле репозитория и далее:
- Выберите вкладку CI/CD.
- Перейдите на страницу отчета.
Пример:
Просмотр логов выполненияNew
Для просмотра логов в исходном формате нажмите на пиктограмму в правой части страницы:
Отобразится страница с отчетом в исходном формате:
Скачивание логов выполненияNew
После завершения работы раннера становятся доступны для скачивания логи выполнения задач рабочего процесса. Для скачивания логов нажмите на пиктограмму скачивания в правой части страницы:
В результате будет скачан файл отчета в формате .log.
Включение и выключение временных меток логов выполненияNew
Настройка через переключатель влияет только на текущий просмотр лога и не сохраняется между сессиями.
Чтобы отобразить/убрать временные метки логов выполнения задач CI/CD нажмите на переключатель Показывать время:
Статусы выполнения задания CI/CD
Существуют следующие статусы выполнения задания CI/CD:
Успех:
Неудача:
Заблокирован:
Отменен:
Пропущен:
Попробуйте перезапустить:
В ожидании:
Статусы выполнения CI/CD в профиле репозитория
В профиле репозитория > Код статус выполнения задач CI/CD отображается рядом со ссылкой на последний коммит:
Пример успешного завершения задач рабочего процесса:
Пример неудачного завершения задач рабочего процесса:
Статусы выполнения CI/CD в запросе на слияниеNew
В запросе на слияние на вкладке Проверки отображаются результаты выполнения задач CI/CD вливаемой ветки:
Вы можете перемещаться между списками проверок для различных коммитов в запросе на слияние, используя раскрывающийся список коммитов:
Связанные разделы
- Включение/выключение CI/CD.
- Настройка CI/CD подробно рассмотрены примеры с: