Переменные среды и секреты
Научитесь безопасно управлять конфиденциальной информацией и конфигурациями, зависящими от среды, в GitHub Actions.
«Переменные среды и секреты» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.
Основы переменных среды и секретов
Добро пожаловать на урок 3! В процессах непрерывной интеграции и развертывания часто требуется настраивать конвейеры с помощью динамических значений или конфиденциальной информации.
Здесь незаменимыми становятся переменные среды и секреты. Они позволяют рабочим процессам адаптироваться к разным сценариям и безопасно обрабатывать конфиденциальные данные.
Зачем использовать их в непрерывной интеграции и развертывании
Представьте, что вы развертываете приложение в разных средах (разработки, промежуточной и рабочей) или подключаетесь к внешним службам с помощью ключей API.
- Гибкость: Переменные среды позволяют изменять поведение без изменения файла рабочего процесса.
- Безопасность: Секреты защищают конфиденциальные данные, такие как пароли и токены API, от раскрытия.
- Повторное использование: Определите конфигурацию один раз и используйте ее в нескольких задачах или шагах.
Переменные среды в рабочих процессах
Переменная среды — это значение с динамическим именем, которое может влиять на поведение выполняющихся процессов. В рабочих процессах GitHub они имеют ключевое значение для настройки.
Вы можете определять собственные переменные среды или использовать множество встроенных переменных, предоставляемых GitHub.
Встроенные переменные среды GitHub
GitHub автоматически предоставляет множество полезных предварительно определенных переменных среды. Они содержат сведения о репозитории, запуске рабочего процесса и других объектах.
Например, GITHUB_SHA — это хеш фиксации, а GITHUB_REF — имя ветки или тега, запустившего рабочий процесс.
Вы обращаетесь к ним через объект контекста github в выражениях или напрямую как к переменным оболочки, если они сопоставлены с env.
name: Print Context Variables
on: [push]
jobs:
display_info:
runs-on: ubuntu-latest
steps:
- name: Show commit SHA
run: echo "Commit SHA: ${{ github.sha }}"
- name: Show branch/tag ref
run: echo "Ref: ${{ github.ref }}"Пользовательские переменные среды: область действия рабочего процесса
Вы можете определять собственные переменные среды на уровне рабочего процесса или задачи. Переменные, определенные на уровне рабочего процесса, доступны всем задачам и шагам в рамках этого рабочего процесса.
Используйте ключевое слово env на верхнем уровне файла рабочего процесса, чтобы задать их.
name: Workflow-level Env Var
on: [push]
env:
GREETING_MESSAGE: "Hello from Workflow!"
jobs:
my_job:
runs-on: ubuntu-latest
steps:
- name: Access workflow variable
run: echo "${{ env.GREETING_MESSAGE }}" # Access via env context
- name: Access workflow variable (shell)
env:
MY_VAR_IN_SHELL: ${{ env.GREETING_MESSAGE }}
run: echo "$MY_VAR_IN_SHELL" # Access as shell variableПользовательские переменные среды: область действия задачи и шага
Для более конкретных задач определяйте переменные среды на уровне задачи или шага. Переменная, определенная для задачи, доступна всем ее шагам, а переменная уровня шага доступна только этому шагу.
Это позволяет детально управлять конфигурацией.
name: Job & Step-level Env Vars
on: [push]
jobs:
my_job:
runs-on: ubuntu-latest
env:
JOB_VAR: "Value for this job"
steps:
- name: Access Job-level variable
run: echo "Job Var: ${{ env.JOB_VAR }}"
- name: Step-specific variable
env:
STEP_VAR: "Value for this step"
run: echo "Step Var: ${{ env.STEP_VAR }}"
- name: Try to access step var in another step
run: echo "Trying to access: ${{ env.STEP_VAR }}" || true # Will be emptyЗнакомство с секретами GitHub
Переменные среды отлично подходят для неконфиденциальных данных, но как быть с такой секретной информацией, как ключи API, пароли баз данных или закрытые токены?
Здесь на помощь приходят секреты GitHub. Они позволяют безопасно хранить конфиденциальную информацию и обращаться к ней в рабочих процессах, не раскрывая ее в коде репозитория или журналах.
- Зашифрованные: Безопасно хранятся в GitHub.
- Скрытые: Автоматически скрываются в журналах рабочего процесса.
- Контролируемый доступ: Доступны только определенным рабочим процессам.
Создание секретов GitHub
Секреты создаются и управляются через настройки репозитория или организации в GitHub, а не непосредственно в файлах рабочих процессов.
- Перейдите в Настройки репозитория.
- Откройте раздел Секреты и переменные > Действия.
- Нажмите Новый секрет репозитория (или секрет организации, если требуется более широкая область действия).
- Укажите Имя (например,
MY_API_KEY) и вставьте Значение.
После сохранения просмотреть значение секрета снова нельзя — его можно только изменить или удалить.
Использование секретов в рабочих процессах
Чтобы использовать секрет, обратитесь к нему через объект контекста secrets в рабочем процессе, так же как вы используете env для переменных среды.
GitHub автоматически скрывает секреты в журналах, заменяя их значения на ***, чтобы предотвратить случайное раскрытие.
name: Use a Secret Demo
on: [push]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Display a secret (redacted)
run: echo "My secret key is: ${{ secrets.MY_API_KEY }}"
# GitHub Actions automatically redacts the value in logs.
- name: Pass secret to an environment variable
env:
API_KEY_ENV: ${{ secrets.MY_API_KEY }}
run: echo "API Key in env: $API_KEY_ENV"Лучшие практики безопасности секретов
Безопасное управление секретами имеет первостепенное значение для целостности конвейера непрерывной интеграции и развертывания. Всегда следуйте этим рекомендациям:
- Минимально необходимые привилегии: Предоставляйте доступ к секретам только там, где это действительно необходимо.
- Никогда не встраивайте значения: Не помещайте секреты непосредственно в файлы рабочих процессов или любой код репозитория.
- Не записывайте секреты в журналы: Хотя GitHub скрывает их, избегайте пользовательских команд вывода, которые могут случайно раскрыть части секретов.
- Регулярно обновляйте: Периодически меняйте секреты, чтобы снизить риск их компрометации.
- Отдельные секреты для каждой среды: Используйте разные секреты для сред разработки, промежуточной и рабочей.
Быстрая проверка: переменные среды и секреты
Какое утверждение точно описывает ключевое различие или особенность переменных окружения и секретов в GitHub Actions?
Повторение: безопасные конфигурации
Великолепно! Вы успешно изучили управление конфигурациями в рабочих процессах GitHub Actions.
- Переменные окружения помогают добавлять в запуски рабочих процессов динамические данные, не содержащие конфиденциальной информации; их можно настраивать на уровне рабочего процесса, задания или шага.
- Секреты необходимы для безопасной работы с конфиденциальной информацией, такой как ключи API, и позволяют хранить её зашифрованной, не раскрывая в общедоступном коде.
- При работе с секретами всегда следуйте лучшим практикам безопасности, чтобы защитить развертывания от уязвимостей.
Знание этих концепций гарантирует, что Ваши конвейеры CI/CD будут одновременно гибкими и безопасными!
Часто задаваемые вопросы
Урок «Переменные среды и секреты» бесплатный?
Да — полный текст урока «Переменные среды и секреты» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.
Чему я научусь в уроке «Переменные среды и секреты»?
Научитесь безопасно управлять конфиденциальной информацией и конфигурациями, зависящими от среды, в GitHub Actions. Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать DevOps Bootcamp?
Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Переменные среды и секреты»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке DevOps Bootcamp?
Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Введение в непрерывное развёртывание
- Развёртывание в тестовой среде
- Переменные среды и секреты
- Развёртывание в рабочей среде с этапами утверждения