Секреты и переменные
Info
Правило простое: если раскрытие значения нежелательно — это секрет.
Секреты (secrets.*) — конфиденциальные значения (токены, пароли, ключи).
Переменные (vars.*) — неконфиденциальные значения.
Оба типа доступны в workflow.
Где создавать
- уровень репозитория: Настройки репозитория → «Секреты и переменные»;
- уровень организации: Настройки организации → «Секреты и переменные».
При конфликте имен приоритет у значений из репозитория.
Как использовать
Переменные:
- name: Print version
run: echo "Версия: ${{ vars.VERSION }}"Секреты:
- name: Login
run: docker login -u user -p ${{ secrets.DOCKER_PASSWORD }}Типичные сценарии
1. Параметризация окружений
on:
workflow_dispatch:
inputs:
env:
description: "Окружение"
required: true
default: "staging"
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Деплой
run: echo "Deploy to ${{ github.event.inputs.env }} with api=${{ vars.API_URL }}"2. Доступ к реестру образов
steps:
- name: Логинимся в registry
uses: docker/login-action@v3
with:
registry: ${{ vars.REGISTRY_URI }}
username: ${{ secrets.REGISTRY_USER }}
password: ${{ secrets.REGISTRY_PASSWORD }}3. Маскирование
Секреты в логах маскируются (****), переменные — нет. Не храните конфиденциальные данные в vars.
Требования к названиям
- могут содержать только латинские буквы, цифры и символ подчеркивания;
- должны начинаться с буквы или символа подчеркивания;
- должны быть уникальным в пределах области видимости;
- запрещено использовать префиксы
GITHUB_,GITLAB_,GITEA_иGITVERSE_; - не чувствительны к регистру символов.
Рекомендации
- меняйте секреты регулярно;
- для переменных — задавайте значения по умолчанию и описательные имена;
- никогда не зашивайте секреты в репозиторий и код. Если «утекли» — сразу отзывайте.