Триггеры рабочих процессов
Триггер рабочего процесса — это событие, которые вызывает выполнение рабочего процесса раннером.
Вы можете настроить рабочие процессы так, чтобы они запускались при выполнении определенных действий на GitVerse и в запланированное время.
Некоторые события имеют несколько типов активности. Для таких событий можно указать, какие типы активности будут вызывать запуск рабочего процесса.
Триггер рабочего процесса | Тип активности | Примечание |
---|---|---|
create | Создание новой ветки, тега | |
— | ||
delete | Удаление ветки, тега | |
— | ||
fork | Создание форка репозитория | |
— | ||
pull_request | Запрос на слияние | |
closed | Закрыт | |
edited | Отредактирован | |
opened | Открыт | |
reopened | Вновь открыт | |
synchronize | Синхронизирован | |
pull_request_review | Ревью запроса на слияние | |
submitted | Представлено | |
edited | Отредактировано | |
pull_request_review_comment | Комментарий к ревью запроса на слияние | |
created | Создан | |
edited | Отредактирован | |
— | ||
pull_request_target | Запрос на слияние по конфигурации в целевой ветке | |
closed | Закрыт | |
edited | Отредактирован | |
opened | Открыт | |
reopened | Вновь открыт | |
synchronize | Синхронизирован | |
push | Отправка изменений | |
— | ||
schedule | Планирование запусков рабочих процессов | |
— | ||
workflow_dispatch | Запуск рабочего процесса вручную | |
— |
create
Пример записи триггера события create
:
name: Создание тегов
on:
create: # создание нового репозитория, ветки, тега
jobs:
build-tag:
name: Create Tag Job
runs-on: ubuntu-cloud-runner
steps:
- name: Log creation event
run: |
echo "Trigger: ${{ gitverse.event_name }}"
echo "Ref ${{ gitverse.ref }}"
echo "Ref Type: ${{ gitverse.event.ref_type }}"
echo "Actor: ${{ gitverse.actor }}"
delete
Пример записи триггера события delete
в yaml-файл для облачного раннера:
name: Удаление тегов
on:
delete: # удаление репозитория, ветки, тега
jobs:
cleanup-tags:
name: Delete Tags Cleanup
runs-on: ubuntu-cloud-runner
steps:
- name: Log deletion event
run: |
echo "Trigger: ${{ gitverse.event_name }}"
echo "Ref ${{ gitverse.ref }}"
echo "Ref Type: ${{ gitverse.event.ref_type }}"
echo "Actor: ${{ gitverse.actor }}"
fork
Пример записи триггера события fork
в yaml-файл для облачного раннера:
name: Fork Repository Detection
on:
fork: # создание форка репозитория
jobs:
notify-fork:
name: Notify about New Forks
runs-on: ubuntu-cloud-runner
steps:
- name: Log fork event
run: |
echo "Trigger: ${{ gitverse.event_name }}"
echo "Actor (who forked): ${{ gitverse.actor }}"
echo "Fork details: ${{ gitverse.event.forkee.full_name }}"
echo "Created at: ${{ gitverse.event.forkee.created_at }}"
pull_request
Пример запуска для события pull_request
в .yaml-файл:
name: Демонстрация защиты ветки
on:
pull_request: # запрос на слияние
jobs:
build-test:
name: CICD branch protection
runs-on: ubuntu-cloud-runner
steps:
- name: Log PR event
run: |
echo "Trigger: ${{ gitverse.event_name }}"
echo "Action: ${{ gitverse.event.action || 'N/A' }}"
echo "PR #${{ gitverse.event.pull_request.number || gitverse.event.issue.number }}"
echo "Actor: ${{ gitverse.actor }}"
Пример записи триггера события pull_request
с двумя типами активности:
name: Простой пример использования триггера pull_reuest
on:
pull_request:
# если types не указан, workflow будет срабатывать на все типы событий триггера
types: [opened, edited]
jobs:
build-test:
name: pull_request
runs-on: 'ubuntu-cloud-runner'
steps:
- name: Log PR event
run: |
echo "Trigger: ${{ gitverse.event_name }}"
echo "Action: ${{ gitverse.event.action || 'N/A' }}"
echo "PR #${{ gitverse.event.pull_request.number || gitverse.event.issue.number }}"
echo "Actor: ${{ gitverse.actor }}"
pull_request_review
Пример записи триггера события pull_request_review
с двумя типами активности:
name: Pull Request Review Logging
on:
pull_request_review: # ревью запроса на слияние
# если types не указан, workflow будет срабатывать на все типы событий триггера
types: [submitted, edited]
jobs:
review-log:
name: Log PR Reviews
runs-on: ubuntu-cloud-runner
steps:
- name: Log Review Activity
run: |
echo "Trigger: ${{ gitverse.event_name }}"
echo "Action: ${{ gitverse.event.action }}"
echo "PR #${{ gitverse.event.pull_request.number }}"
echo "Review state: ${{ gitverse.event.review.state }}" # approved, changes_requested, comment
echo "Review body: ${{ gitverse.event.review.body || 'No comments' }}"
echo "Reviewed by: ${{ gitverse.event.sender.login }}"
echo "Created at: ${{ gitverse.event.review.submitted_at }}"
pull_request_review_comment
Пример записи триггера события pull_request_review_comment
со всеми типами активности:
name: Pull Request Review Comment Monitoring
on:
pull_request_review_comment: # комментарий к ревью запроса на слияние
# если types не указан, workflow будет срабатывать на все типы событий триггера
types: [created, edited]
jobs:
comment-monitor:
name: Track Review Comments
runs-on: ubuntu-cloud-runner
steps:
- name: Log Review Comment Activity
run: |
echo "Trigger: ${{ gitverse.event_name }}"
echo "Action: ${{ gitverse.event.action }}"
echo "PR #${{ gitverse.event.pull_request.number }}"
pull_request_target
Пример записи триггера события pull_request_target
с двумя типами активности:
name: Pull Request Target Logger
on:
pull_request_target: # запрос на слияние по конфигурации в целевой ветке
types: [opened, edited]
jobs:
pr-target:
name: Log PR Target
runs-on: ubuntu-cloud-runner
steps:
- name: Log PR target event
run: |
echo "Trigger: ${{ gitverse.event_name }}"
echo "Action: ${{ gitverse.event.action || 'N/A' }}"
echo "PR #${{ gitverse.event.pull_request.number || gitverse.event.issue.number }}"
echo "Actor: ${{ gitverse.actor }}"
push
Пример записи триггера события push
в yaml-файл для облачного раннера:
name: Push Monitoring
on:
push: # отправка изменений
jobs:
monitor-push:
name: Push Notification
runs-on: ubuntu-cloud-runner
steps:
- name: Log Push Details
run: |
echo "Trigger: ${{ gitverse.event_name }}"
echo "Branch Name: ${{ gitverse.head_ref || gitverse.ref }}"
echo "Commit SHA: ${{ gitverse.sha }}"
echo "Pusher: ${{ gitverse.actor }}"
schedule
Условия выполнения:
- Событие срабатывает, только если файл рабочего процесса находится в ветке по умолчанию.
- Запланированные процессы выполняются только в ветке по умолчанию.
- В публичных репозиториях такие процессы отключаются автоматически, если не было активности в течение 60 дней.
- Некоторые действия в репозитории могут сменить пользователя-инициатора (
actor
) процесса. - Если у отключенного процесса пользователь с правами
write
изменит расписание (cron
), то процесс будет повторно активирован, а этот пользователь станет новымactor
.
Пример запуска по расписанию (используется cron-синтаксис стандарта POSIX):
on:
schedule:
- cron: "15 4,5 * * *" # <=== Измените это значение
Cron-синтаксис использует пять полей, разделенных пробелами. Каждое поле — единица времени:
┌───────────── минута (0 - 59)
│ ┌───────────── час (0 - 23)
│ │ ┌───────────── день месяца (1 - 31)
│ │ │ ┌───────────── месяц (1 - 12 или JAN-DEC)
│ │ │ │ ┌───────────── день недели (0 - 6 или SUN-SAT)
│ │ │ │ │
* * * * *
Допустимые операторы
Оператор | Описание | Пример |
---|---|---|
* | любое значение | 15 * * * * — 15-я минута каждого часа |
, | список значений | 2,10 4,5 * * * — 2 и 10 мин. 4 и 5 часов |
- | диапазон значений | 30 4-6 * * * — 30 мин. 4–6 часов |
/ | шаг значений | 20/15 * * * * — каждые 15 мин. начиная с 20-й |
Поддерживается специфичный синтаксис вида: @yearly
, @monthly
, @weekly
, @daily
, @hourly
.
Для генерации cron можно использовать crontab guru (opens in a new tab) или примеры cron (opens in a new tab).
workflow_dispatch
Событие workflow_dispatch
позволяет вручную запускать рабочий процесс (workflow),что может быть очень полезно, когда требуется полный контроль над временем выполнения, а не только автоматический запуск по изменениям в коде или другим событиям.
Конфигурация workflow_dispatch
Для включения ручного запуска необходимо добавить триггер workflow_dispatch:
в yaml-файл рабочего процесса в директории .gitverse/workflows/
вашего репозитория.
Пример:
name: Workflow Dispatch
on:
workflow_dispatch: # Это включает ручной запуск
jobs:
manual-trigger:
runs-on: ubuntu-cloud-runner
steps:
- name: Workflow Dispatch Log
run: |
echo "Trigger: ${{ gitverse.event_name }}"
echo "Triggered by: ${{ gitverse.actor }}"
Определение входных параметров (Inputs)
Вы можете определить пользовательские входные параметры (inputs) для события workflow_dispatch
. Это позволяет передавать значения в ваш рабочий процесс при его ручном запуске, и они отображаются как поля ввода. Вы можете определить неограниченное число таких параметров.
Пример с входными параметрами:
name: Workflow Dispatch Inputs
on:
workflow_dispatch: # Это включает ручной запуск
inputs:
environment:
type: choice
options:
- dev
- staging
- production
default: staging
description: 'Target deployment environment'
timeout:
type: number
default: 60
description: 'Max time for deployment in seconds'
deploy:
type: boolean
default: true
description: 'To deploy'
deploy_version:
description: 'Application version to deploy'
required: true
default: '1.0.0'
jobs:
manual-trigger:
runs-on: ubuntu-cloud-runner
steps:
- name: Show Dispatch Inputs
run: |
echo "Trigger: ${{ gitverse.event_name }}"
echo "Triggered by: ${{ gitverse.actor }}"
echo "Environment: ${{ inputs.environment }}"
echo "Timeout: ${{ inputs.timeout }} seconds"
echo "Deploy: ${{ inputs.deploy }}"
echo "Deploy version: ${{ inputs.deploy_version }}"
Пользовательские входные параметры отразятся в меню запуска рабочего процесса:
Внутри рабочего процесса вы можете получить доступ к этим значениям через контекст gitverse.event.inputs
, например:
${{ gitverse.event.inputs.deploy_version }}
Результат:
Запуск workflow_dispatch
- Перейдите на вкладку СI/CD вашего репозитория.
- Выберите поток.
- Нажмите Запустить.
- В открывшейся панели выберите ветку или тег.
- Нажмите в панели Запустить.
Пример:
Через некоторое время отобразится результат выполнения рабочего процесса. Нажмите на ссылку, чтобы перейти на страницу отчета:
Проверьте результаты выполнения задач, описанных в yaml-файл:
Требование к главной ветке
yaml-файлы рабочих процессов с возможностью ручного запуска доступны только для главной ветки.
Если в главной ветке нет файла рабочего процесса:
То кнопка запуска в UI GitVerse не появится:
Если главная и дополнительная ветки содержат одноименные yaml‑файлы потоков с ручной активацией, то возможность ручного запуска доступна и для дополнительной ветки с параметрами, заданными в ее файле потока в секции
workflow_dispatch
.Пример:
Перечень терминов и определений
- Термин хеш коммита.
- Термин SHA, Secure Hash Algorithm.