CI/CDСправочная документацияТриггеры запуска workflow

Триггеры запуска 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
⚠️ Частично поддерживается
pushPush в ветку
✅ Полностью поддерживается
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 }}"
  1. Кнопка запуска отображается только при выборе workflow с ручным запуском.
  2. Событие workflow_dispatch будет запускать workflow только в том случае, если файл workflow находится в Главной ветке вашего репозитория. Если в главной ветке нет файла workflow, то кнопка запуска не появится.

Вы нашли что искали?