Настройка секретов в GitHub Actions

GitBeginner
Практиковаться сейчас

Введение

В этой лабораторной работе вы узнаете, как использовать Секреты GitHub Actions (GitHub Actions Secrets). Секреты — это зашифрованные переменные окружения, которые вы создаете на уровне организации, репозитория или окружения репозитория. Созданные вами секреты доступны для использования в ваших рабочих процессах (workflows) GitHub Actions.

Это крайне важно для обеспечения безопасности конфиденциальной информации, такой как ключи API, токены доступа и пароли. GitHub Actions автоматически скрывает (redacts) секреты в логах, гарантируя, что они не будут раскрыты.

Эта лабораторная работа основана на репозитории, который вы создали в предыдущих лабораторных работах. Вы добавите секрет в свой репозиторий github-actions-demo и создадите рабочий процесс, который его использует.

Вы выполните следующие шаги:

  1. Добавьте секрет репозитория в ваш существующий репозиторий GitHub.
  2. Клонируйте репозиторий и создайте файл рабочего процесса, который ссылается на секрет.
  3. Добавьте шаги для использования секрета.
  4. Отправьте (push) рабочий процесс в GitHub.
  5. Проверьте, что секрет маскируется (masked) в логах выполнения.

Создайте секрет репозитория с именем MY_SECRET в настройках GitHub

На этом шаге вы добавите секретный ключ (secret) в ваш существующий репозиторий github-actions-demo на GitHub и клонируете репозиторий в вашу среду LabEx.

Добавление секретного ключа репозитория

  1. Откройте веб-браузер и перейдите к вашему репозиторию github-actions-demo на GitHub: https://github.com/your-username/github-actions-demo
  2. Нажмите на вкладку Settings (Настройки).
  3. На боковой панели слева прокрутите вниз до раздела Security (Безопасность), нажмите Secrets and variables (Секреты и переменные), а затем выберите Actions.
  4. Нажмите зеленую кнопку New repository secret (Новый секретный ключ репозитория).
  5. Введите следующие данные:
    • Name (Имя): MY_SECRET
    • Secret (Секретное значение): SuperSecretValue123
  6. Нажмите Add secret (Добавить секретный ключ).
GitHub Actions secrets

Теперь вы должны увидеть MY_SECRET в списке под "Repository secrets" (Секретные ключи репозитория).

Клонирование репозитория

Теперь вернитесь в среду LabEx, чтобы клонировать репозиторий.

  1. На странице вашего репозитория GitHub для github-actions-demo нажмите зеленую кнопку Code (Код).
  2. Убедитесь, что выбрана вкладка HTTPS, и скопируйте URL. Он должен выглядеть как https://github.com/your-username/github-actions-demo.git.
  3. Откройте терминал в среде LabEx. Путь по умолчанию — ~/project.
  4. Используйте команду git clone для загрузки репозитория. Замените your-username на ваш фактический логин на GitHub.
cd ~/project
git clone https://github.com/your-username/github-actions-demo.git

Пример вывода:

Cloning into 'github-actions-demo'...
remote: Enumerating objects: X, done.
remote: Counting objects: 100% (X/X), done.
remote: Total X (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (X/X), done.
  1. Перейдите в клонированный репозиторий:
cd ~/project/github-actions-demo

Используйте секрет в рабочем процессе с помощью ${{ secrets.MY_SECRET }}

На этом шаге вы создадите файл рабочего процесса (workflow), который ссылается на секрет, который вы только что создали.

  1. Убедитесь, что вы находитесь в каталоге репозитория:
cd ~/project/github-actions-demo
  1. Создайте новый файл с именем secrets-demo.yml внутри каталога .github/workflows:
touch .github/workflows/secrets-demo.yml
  1. Откройте .github/workflows/secrets-demo.yml в WebIDE и добавьте следующее содержимое. Это определяет базовый рабочий процесс, который запускается при событиях push.
name: Secrets Demo
on: [push]

jobs:
  use-secret:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

Это настраивает задание (job). На следующем шаге мы добавим логику для использования секрета.

Добавьте шаг для безопасного вывода значения секрета

На этом шаге вы измените рабочий процесс (workflow), чтобы получить доступ к секрету. GitHub Actions позволяет получать доступ к секретам, используя синтаксис ${{ secrets.SECRET_NAME }}.

Изменение рабочего процесса

Откройте файл .github/workflows/secrets-demo.yml и добавьте следующий шаг в список steps. Убедитесь, что отступы указаны правильно.

- name: Print Secret
  env:
    MY_SECRET_VAL: ${{ secrets.MY_SECRET }}
  run: |
    echo "Printing secret directly (masked): ${{ secrets.MY_SECRET }}"
    echo "Printing secret from env (masked): $MY_SECRET_VAL"

Ваш полный файл .github/workflows/secrets-demo.yml должен выглядеть следующим образом:

name: Secrets Demo
on: [push]

jobs:
  use-secret:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Print Secret
        env:
          MY_SECRET_VAL: ${{ secrets.MY_SECRET }}
        run: |
          echo "Printing secret directly (masked): ${{ secrets.MY_SECRET }}"
          echo "Printing secret from env (masked): $MY_SECRET_VAL"

Ключевая концепция

Когда вы используете секрет в рабочем процессе, GitHub автоматически маскирует его в логах. Даже если вы попытаетесь вывести его через echo, в выводе вместо фактического значения будут отображаться звездочки (***).

Зафиксируйте и отправьте рабочий процесс со ссылкой на секрет

На этом шаге вы закоммитите свои изменения и отправите их в GitHub. Это запустит GitHub Action.

  1. Убедитесь, что вы находитесь в директории репозитория:
cd ~/project/github-actions-demo
  1. Добавьте файл рабочего процесса в индекс (stage):
git add .github/workflows/secrets-demo.yml
  1. Закоммитьте изменения с описательным сообщением:
git commit -m "Add workflow to test secrets"
  1. Отправьте изменения в удаленный репозиторий на GitHub:
git push

Примечание об аутентификации:
Когда вы выполните команду git push, WebIDE автоматически предложит вам пройти аутентификацию. Следуйте этим подробным шагам:

  1. Появится всплывающее окно с сообщением: "The extension 'GitHub' wants to sign in using GitHub." Нажмите Allow (Разрешить).
  2. Появится новое уведомление. Нажмите "Copy&Continue to GitHub" (Скопировать и продолжить в GitHub), затем нажмите "Open" (Открыть) в следующем запросе.
  3. Войдите в свою учетную запись GitHub в открывшемся окне браузера и введите скопированный код авторизации. После подтверждения авторизации страница закроется автоматически.
  4. Подождите несколько секунд, и вы увидите, что терминал успешно завершил операцию пуша.

Примечание о конфиденциальности: WebIDE запросит полный доступ к вашей учетной записи GitHub для целей аутентификации. Вам не нужно беспокоиться о проблемах конфиденциальности — виртуальная машина LabEx будет немедленно уничтожена после завершения текущей лабораторной работы, и ваши учетные данные и информация об авторизации не будут сохранены.

Проверьте логи, чтобы убедиться, что секрет используется без раскрытия

После отправки вашего кода рабочий процесс (workflow) будет автоматически запущен на GitHub. Вы можете просмотреть журналы выполнения рабочего процесса, чтобы убедиться, что секрет используется безопасно.

  1. Перейдите в ваше репозиторий на GitHub через веб-браузер: https://github.com/your-username/github-actions-demo
  2. Нажмите на вкладку Actions в верхней части страницы репозитория.
  3. Вы должны увидеть запущенный рабочий процесс, вероятно, с названием "Add workflow to test secrets" или "Secrets Demo".

Примечание: При отправке кода может быть запущено несколько действий (Actions), если в вашем репозитории есть несколько файлов рабочих процессов. Пожалуйста, определите правильное выполнение рабочего процесса, проверив его название в левой боковой панели или используя список выполнений рабочего процесса справа.

  1. Нажмите на заголовок выполнения рабочего процесса, затем нажмите на задание (job) use-secret.
  2. Разверните шаг Print Secret, чтобы увидеть вывод.

Вы должны увидеть что-то похожее на это:

Printing secret directly (masked): ***
Printing secret from env (masked): ***

Обратите внимание, что даже несмотря на то, что рабочий процесс пытался вывести значение секрета, GitHub Actions автоматически маскирует его с помощью *** в журналах. Это критически важная функция безопасности — она предотвращает случайное раскрытие конфиденциальной информации в журналах, даже если вы пытаетесь ее вывести. Это подтверждает, что ваш секрет настроен безопасно и используется в рабочем процессе без раскрытия его фактического значения.

GitHub Actions logs

Резюме

В этой лабораторной работе вы успешно научились:

  1. Создавать Секрет Репозитория (Repository Secret) в настройках GitHub для хранения конфиденциальных данных.
  2. Создавать файл рабочего процесса (workflow) GitHub Actions.
  3. Ссылаться на секрет, используя синтаксис ${{ secrets.MY_SECRET }}.
  4. Передавать секрет в переменные окружения внутри шага задания (job step).
  5. Проверять, что GitHub автоматически маскирует значение секрета в логах сборки.

Эта практика гарантирует, что ваши конфиденциальные данные, такие как ключи развертывания и токены API, остаются в безопасности на протяжении всего процесса CI/CD.