Триггеры запуска workflow
Варианты запуска workflow и как их правильно использовать
Что такое триггер?
Вы можете настроить рабочие процессы так, чтобы они запускались при выполнении определенных действий на GitVerse или в запланированное время. Некоторые события имеют несколько типов активности. Для таких событий можно указать, какие типы активности будут вызывать запуск рабочего процесса.
Примеры
В нашем репозитории собраны примеры работы с триггерами workflow. Можно выбрать любой пример, скопировать и быстро начать использование.
Поддерживаемые триггеры
| Триггер | Описание | Уровень подержки |
|---|---|---|
| check_run | Изменение состояния отдельного check run | ❌ Не поддерживается |
| check_suite | События check suite (создание, завершение) | ❌ Не поддерживается |
| commit_comment | Комментарий к коммиту | ❌ Не поддерживается |
| content_reference | Упоминание внешнего контента | ❌ Не поддерживается |
| create | Создание ветки или тега | ✅ Полностью поддерживается |
| delete | Удаление ветки или тега | ✅ Полностью поддерживается |
| fork | Репозиторий форкнут пользователем | ✅ Полностью поддерживается |
| gollum | Изменение Wiki | ❌ Не поддерживается |
| issue_comment | Комментарий в issue | ❌ Не поддерживается |
| issues | Создание, изменение или закрытие issue | ❌ Не поддерживается |
| label | Создание или удаление label | ❌ Не поддерживается |
| milestone | Изменение milestone | ❌ Не поддерживается |
| org_block | Организация блокирует пользователя | ❌ Не поддерживается |
| organization | Изменения в организации | ❌ Не поддерживается |
| page_build | Сборка GitVerse Страниц | ❌ Не поддерживается |
| project | События старых проектов | ❌ Не поддерживается |
| project_card | Действия с карточками проекта | ❌ Не поддерживается |
| project_column | Действия с колонками проекта | ❌ Не поддерживается |
| public | Репозиторий стал публичным | ❌ Не поддерживается |
| pull_request | Запрос на слияние открыт, обновлен, закрыт, смержен | ⚠️ Частично поддерживается |
| pull_request_review | Создание или изменение ревью PR | ⚠️ Частично поддерживается |
| pull_request_review_comment | Комментарий к ревью PR | ⚠️ Частично поддерживается |
| pull_request_target | Запуск workflow в базовой ветке PR | ⚠️ Частично поддерживается |
| push | Push в ветку | ✅ Полностью поддерживается |
| registry_package | События GitVerse Packages | ❌ Не поддерживается |
| release | Создание или публикация релиза | ✅ Полностью поддерживается |
| repository_dispatch | Внешний запуск workflow через API | ❌ Не поддерживается |
| repository_import | Импорт репозитория | ❌ Не поддерживается |
| schedule | Запуск по расписанию (cron) | ✅ Полностью поддерживается |
| status | Изменение статуса коммита | ❌ Не поддерживается |
| watch | Пользователь ставит звезду | ❌ Не поддерживается |
| workflow_call | Повторное использование workflow | ✅ Полностью поддерживается |
| workflow_dispatch | Ручной запуск workflow | ✅ Полностью поддерживается |
| workflow_run | Запуск после завершения другого workflow | ❌ Не поддерживается |
create
Пример записи триггера события create:
name: Trigger create
on:
create: # создание ветки или тега
branches:
- main
tags:
- v[0-9]+.[0-9]+.[0-9]+
jobs:
build:
name: Create Job
runs-on: ubuntu-latest
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:
name: Trigger delete
on:
delete: # удаление ветки или тега
branches:
- main
tags:
- v[0-9]+.[0-9]+.[0-9]+
jobs:
build:
name: Delete Job
runs-on: ubuntu-latest
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:
name: Trigger fork
on:
fork: # создание форка репозитория
jobs:
notify-fork:
name: Notify about New Forks
runs-on: ubuntu-latest
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 в **-файл:
name: Trigger pull_request
on:
pull_request: # запрос на слияние
# если types не указан, workflow будет срабатывать на все типы событий триггера
types:
- opened # открыт
- edited # отредактирован
- closed # закрыт
- reopened # повторно открыт
- synchronize # синхронизирован
# в настоящее время не поддерживается:
# - assigned # назначен
# - unassigned # назначение отменено
# - review_requested # запрос на ревью
# - review_request_removed # запрос на ревью отменен
# - converted_to_draft # преобразован в черновик
# - ready_for_review # готов к ревью
# - locked # заблокирован
# - unlocked # разблокирован
# - labeled # помечен меткой
# - unlabeled # метка удалена
# - auto_merge_enabled # автоматическое слияние включено
# - auto_merge_disabled # автоматическое слияние отключено
jobs:
build-test:
name: pull_request
runs-on: ubuntu-latest
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: Trigger pull_request_review
on:
pull_request_review: # ревью запроса на слияние
# если types не указан, workflow будет срабатывать на все типы событий триггера
types:
- reviewed # сделано ревью
# в настоящее время не поддерживается:
# - submitted # представлено
# - edited # отредактировано
# - dismissed # отклонено
jobs:
review-log:
name: Log PR Reviews
runs-on: ubuntu-latest
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: Trigger pull_request_review_comment
on:
pull_request_review_comment: # комментарий к ревью запроса на слияние
# если types не указан, workflow будет срабатывать на все типы событий триггера
types:
- reviewed # сделано ревью
# в настоящее время не поддерживается:
# - created # создан
# - edited # отредактировано
# - deleted # удалено
jobs:
comment-monitor:
name: Track Review Comments
runs-on: ubuntu-latest
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: Trigger pull_request_target
on:
pull_request_target: # запрос на слияние по конфигурации в целевой ветке
types:
- opened # открыт
- edited # отредактирован
- closed # закрыт
- reopened # повторно открыт
- synchronize # синхронизирован
# в настоящее время не поддерживается:
# - assigned # назначен
# - unassigned # назначение отменено
# - review_requested # запрос на ревью
# - review_request_removed # запрос на ревью отменен
# - converted_to_draft # преобразован в черновик
# - ready_for_review # готов к ревью
# - locked # заблокирован
# - unlocked # разблокирован
# - labeled # помечен меткой
# - unlabeled # метка удалена
# - auto_merge_enabled # автоматическое слияние включено
# - auto_merge_disabled # автоматическое слияние отключено
jobs:
pr-target:
name: Log PR Target
runs-on: ubuntu-latest
steps:
- name: Log PR Target Details
run: |
echo "Trigger: ${{ gitverse.event_name }}"
echo "PR Number: ${{ gitverse.event.number }}"
echo "Action: ${{ gitverse.event.action }}"
echo "Actor: ${{ gitverse.actor }}"push
Пример записи триггера события push:
name: Trigger push
on:
push:
branches:
- master
tags:
- v[0-9]+.[0-9]+.[0-9]+
paths:
- src/**
branches-ignore:
- gh-pages
tags-ignore:
- beta*
paths-ignore:
- "!src/test/**"
jobs:
monitor-push:
name: Push Notification
runs-on: ubuntu-latest
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 }}"release
Пример записи триггера события release:
name: Trigger release
on:
release:
types:
- published
- edited
tags:
- v1.*
- v2.*
branches:
- main
- develop
jobs:
publish:
name: Publish Job
runs-on: ubuntu-latest
steps:
- name: Log Release Details
run: |
echo "Trigger: ${{ gitverse.event_name }}"
echo "Release Tag: ${{ gitverse.ref }}"
echo "Release Name: ${{ gitverse.event.release.name }}"
echo "Publisher: ${{ gitverse.actor }}"
echo "Release Action: ${{ gitverse.event.action }}"schedule
Пример записи события schedule:
name: Trigger schedule
on:
schedule:
# Запуск каждый день в 9:00 по UTC
- cron: "0 9 * * *" # используется cron-синтаксис стандарта POSIX
jobs:
cleanup:
name: Cron Job
runs-on: ubuntu-latest
steps:
- name: Log Schedule Details
run: |
echo "Trigger: ${{ gitverse.event_name }}"
echo "Schedule cron: ${{ gitverse.event.cron }}"workflow_call
Пример записи триггера события workflow_call:
name: Trigger workflow_call
on:
workflow_call:
inputs:
message:
description: "Сообщение для вывода"
required: false
default: "Hello from reusable workflow!"
jobs:
echo-message:
runs-on: ubuntu-latest
steps:
- name: Print input message in base job
run: echo "${{ inputs.message }}"
# Пример вызыващего workflow
# on:
# push:
# branches:
# - master
# jobs:
# call-reusable:
# uses: ./.gitverse/workflows/base/triggers/workflow_call.yaml
# with:
# message: "Привет, GitVerse!"workflow_dispatch
Пример записи ручного запуска workflow_dispatch:
name: Trigger workflow_dispatch
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-latest
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 }}"- Кнопка запуска отображается только при выборе workflow с ручным запуском.
- Событие
workflow_dispatchбудет запускать workflow только в том случае, если файл workflow находится в Главной ветке вашего репозитория. Если в главной ветке нет файла workflow, то кнопка запуска не появится.