В мире непрерывной интеграции и доставки (CI/CD) автоматизация занимает центральное место. Однако бывают ситуации, когда требуется контролируемый, ручной запуск процесса с возможностью гибкой настройки. Для таких задач в GitHub Actions предусмотрен специальный триггер – workflow_dispatch.
Использование workflow_dispatch позволяет разработчикам не просто запускать пайплайн кнопкой, но и передавать в него необходимые данные, что превращает ваш рабочий процесс в мощный, настраиваемый инструмент для развертывания, тестирования или выполнения административных задач.
- Что такое workflow_dispatch и когда его использовать?
- Полное руководство по настройке Inputs (Входных параметров)
- Как использовать переданные параметры в Job'ах
- Заключение
Что такое workflow_dispatch и когда его использовать?
workflow_dispatch – это событие GitHub Actions, которое позволяет запускать рабочий процесс (workflow) вручную непосредственно через пользовательский интерфейс GitHub, API или с помощью GitHub CLI.
Основные сценарии применения:
- Контролируемое развертывание (Controlled Deployments): Запуск деплоя на Production среду должен быть ручным и осознанным, а не автоматическим после каждого коммита.
- Техническое обслуживание и очистка: Выполнение скриптов по обслуживанию инфраструктуры или баз данных, которые запускаются только при необходимости (например, очистка кэша, миграция).
- Тестирование с переменными: Запуск тестовых сборок с различными версиями зависимостей или конфигурационными параметрами, которые удобно выбирать перед стартом.
В отличие от автоматических триггеров (push, pull_request) или запланированных (schedule), workflow_dispatch дает полный контроль над моментом и условиями старта пайплайна.
Полное руководство по настройке Inputs (Входных параметров)
Ключевая особенность workflow_dispatch – возможность принимать входные параметры (inputs). Это позволяет пользователю, который запускает workflow, ввести или выбрать необходимые значения прямо перед стартом.
Чтобы настроить параметры, добавьте блок inputs под событием workflow_dispatch в вашем YAML-файле:
on:
workflow_dispatch:
inputs:
# Здесь определяются все входные параметры
Определение основных типов Inputs
Каждый параметр должен иметь уникальный ID, а также содержать описание и тип.
| Параметр | Описание |
description | Обязательное поле, которое отображается пользователю в UI. |
type | Тип поля (string, boolean, choice, environment). |
required | Указывает, является ли поле обязательным (true или false). |
default | Значение по умолчанию, которое будет подставлено, если пользователь ничего не введет. |
1. Текстовый ввод (string)
Это самый простой тип, идеально подходящий для передачи названий, ID или текстовых команд.
target_tag:
description: 'Тег для развертывания (например, v1.2.3)'
type: string
required: true
default: 'latest'
2. Выбор из списка (choice)
Тип choice создает выпадающее меню (select), которое ограничивает ввод пользователя предопределенными вариантами. Это критично для избежания ошибок.
environment:
description: 'Выберите целевую среду'
type: choice
required: true
default: 'staging'
options:
- 'staging'
- 'production'
- 'dev'
3. Флажок (boolean)
Тип boolean создает простой чекбокс, полезный для активации или деактивации определенной функции в пайплайне.
skip_tests:
description: 'Пропустить этап запуска тестов?'
type: boolean
required: false
default: false
Как использовать переданные параметры в Job’ах
После того как пользователь ввел и запустил workflow, переданные значения становятся доступны в контексте GitHub Actions через объект github.event.inputs.
Для доступа к значению в шаге (step) используйте синтаксис выражения:
jobs:
deployment:
runs-on: ubuntu-latest
steps:
- name: Вывод выбранного тега
run: echo "Начато развертывание тега: ${{ github.event.inputs.target_tag }}"
- name: Условное выполнение шага
if: ${{ github.event.inputs.skip_tests == 'false' }} # Проверяем, не просил ли пользователь пропустить тесты
run: |
echo "Запуск полного набора тестов..."
npm test
Обратите внимание, что даже логические значения (boolean) и числа из полей ввода часто передаются в виде строк, поэтому в выражениях рекомендуется использовать кавычки.
Заключение
workflow_dispatch с механизмом inputs превращает ваши CI/CD-пайплайны из черных ящиков в гибкие, настраиваемые инструменты. Это позволяет не только повысить безопасность и контролируемость критически важных операций (например, развертывания), но и значительно улучшить пользовательский опыт для всех, кто взаимодействует с рабочими процессами в репозитории.
Освоив этот инструмент, вы сделаете свои процессы разработки более прозрачными и устойчивыми к ошибкам.

