Автоматизация процессов разработки (CI/CD) через GitHub Actions строится на умении управлять данными внутри рабочих процессов. Чтобы создавать гибкие и интеллектуальные пайплайны, недостаточно просто запускать консольные команды. Необходимо понимать, как работают выражения, как обращаться к контекстам и как использовать логические операторы.
В этой статье мы разберем основные механики GitHub Actions, которые позволят вам динамически управлять выполнением задач в зависимости от условий окружения.
Что такое выражения в GitHub Actions?
Выражения — это способ программного вычисления значений в файлах определений workflow. Они позволяют сравнивать строки, выполнять математические операции и вызывать встроенные функции.
Синтаксис выражения всегда обрамляется специальными символами: ${{ <выражение> }}.
Примеры использования выражений:
- Проверка условий в операторе
if. - Динамическое формирование имен шагов.
- Передача данных между шагами через контексты.
Контексты: Доступ к данным репозитория и окружения
Контексты — это наборы объектов, которые содержат информацию о запуске workflow, переменных окружения, секретах и результатах выполнения предыдущих шагов.
Основные типы контекстов:
- github: Содержит информацию о событии, запустившем workflow (автор комита, название ветки, токен доступа и т.д.).
- env: Позволяет обращаться к переменным окружения, заданным в workflow.
- vars: Используется для доступа к кастомным переменным репозитория.
- job: Данные о текущем задании (например, его статус).
- steps: Содержит результаты выполнения каждого шага (особенно полезно для получения выходных данных
outputs). - runner: Информация о виртуальной машине, на которой выполняется код (ОС, пути к каталогам).
Чтобы визуализировать данные внутри контекста, программисты часто используют функцию преобразования в JSON. Например, команда echo "${{ toJSON(github) }}" выведет в лог полную структуру объекта github.
Оператор if и логика выполнения
Одной из самых мощных функций GitHub Actions является условное выполнение. Оператор if позволяет пропустить шаг или целое задание, если условие не соблюдено.
Внутри if можно использовать стандартные операторы сравнения:
==(равно) и!=(не равно).>,<,>=,<=(для чисел).&&(И),||(ИЛИ),!(ОТРИЦАНИЕ).
Важный нюанс: При использовании выражений внутри строки if, фигурные скобки ${{ }} можно опускать, так как GitHub Actions автоматически интерпретирует содержимое этой строки как выражение.
Встроенные функции
GitHub предоставляет богатый набор функций для обработки данных прямо в YAML-файле:
- Функции состояния:
success(),failure(),cancelled(),always(). Помогают запускать шаги только при определенном исходе предыдущих действий. - Работа со строками:
contains(search, item)(проверка на подстроку),startsWith(),endsWith(). - Функции трансформации:
toJSON(),fromJSON(). - Работа с файлами:
hashFiles(), что крайне полезно для создания ключей кэширования (например, на основеpackage-lock.json).
Практические советы по оптимизации Workflow
- Кастомные заголовки (run-name): Используйте параметр
run-nameна уровне workflow, чтобы в списке запусков отображалась осмысленная информация (например, имя автора и ветка), а не просто текст комита. - Идентификация шагов: Всегда задавайте уникальный
idдля шагов, данные из которых вы планируете использовать в дальнейшем через контекстsteps. - Типы данных: Помните, что выражения поддерживают не только строки, но и числа, булевы значения (
true/false), а также значенияnull.
Заключение
Мастерство работы с GitHub Actions начинается там, где заканчиваются простые скрипты и начинается работа с логикой. Понимание контекстов и выражений превращает ваш CI/CD из статичного набора команд в мощный инструмент автоматизации, который экономит часы разработки.

