env: переменные

Тема дорожной карты · GitHub Actions

Переменные окружения в GitHub Actions — это пары «ключ — значение», передаваемые в процессное окружение runner, чтобы шаги run: и вызываемые actions могли читать конфигурацию, не прописывая значения жёстко в файл workflow. Переменные окружения можно определять на трёх уровнях — workflow, job и step — через карту env:, при этом более узкие области видимости переопределяют более широкие, если один и тот же ключ объявлен несколько раз в одном пайплайне. GitHub Actions также предоставляет набор стандартных переменных окружения, таких как GITHUB_REPOSITORY, GITHUB_REF и GITHUB_SHA, которые автоматически заполняются на каждом runner и открывают контекстную информацию о текущем CI/CD-выполнении без использования синтаксиса выражений. Чтобы передать значения, вычисленные в ходе шага, последующим шагам того же job, нужно дописать NAME=value в специальный файл $GITHUB_ENV, который runner GitHub Actions читает после каждого шага для обновления общего окружения на оставшееся время job. Для чувствительных значений всегда храните учётные данные в секретах репозитория или организации и ссылайтесь на них как ${{ secrets.MY_SECRET }}, а не как обычные переменные env:, сохраняя автоматизацию workflow безопасной и удобной для аудита.

Как это работает

env: переменные: repository secrets (${{ secrets.X }} — маскируются в логах, доступны workflow), environment secrets (per-environment scope с required reviewers), organization secrets (общие между репо с выбором), variables (${{ vars.X }} — не маскируются, plain-конфиг). Автопровиженный GITHUB_TOKEN — short-lived токен с scoped-правами для workflow. OIDC-токены позволяют cloud-auth без long-lived ключей.

Когда применять

Environment secrets + required reviewers — для production-деплоев: ручной approval-гейт. OIDC — для cloud-auth (AWS, GCP, Yandex Cloud) вместо long-lived ключей, где поддерживается. Никогда не эхо секретов в логи (echo $secret выводит ***, но секрет утёк, если что-то нормализует whitespace иначе).

Типичные ошибки

Ловушки env: переменные: секреты в title PR или commit messages (там нет авто-маскировки); используют personal access token (PAT), где хватит GITHUB_TOKEN (PAT имеет полные права юзера — blast radius при утечке хуже); environment без required reviewers, но называется "production" (ложная безопасность).

Связанные понятия

Полезные ресурсы