GitHub Actions: Добавление переменных окружения

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

Введение

В GitHub Actions переменные окружения (environment variables) — это пары ключ-значение, доступные шагам рабочего процесса (workflow). Вы можете определить переменные окружения для всего рабочего процесса, для определенной задачи (job) или для определенного шага.

В этой лабораторной работе вы узнаете, как:

  1. Создать файл рабочего процесса GitHub Actions.
  2. Определить переменную окружения на уровне рабочего процесса.
  3. Получить доступ к переменной окружения и использовать ее в шаге.
  4. Обновить переменную и запустить рабочий процесс снова.

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

Добавьте секцию env с переменной GREETING, установленной в 'Hello'

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

  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
  1. Перейдите в клонированный репозиторий:
cd ~/project/github-actions-demo
  1. Создайте новый файл с именем env-demo.yml внутри директории .github/workflows:
touch .github/workflows/env-demo.yml
  1. Откройте .github/workflows/env-demo.yml в WebIDE и добавьте следующее содержимое. Это определяет имя рабочего процесса, триггерное событие (push) и секцию env с переменной с именем GREETING.
name: Environment Variable Demo

on: [push]

env:
  GREETING: "Hello"
  • name: Имя вашего рабочего процесса.
  • on: Указывает, что этот рабочий процесс запускается при возникновении события push.
  • env: Определяет карту переменных окружения, доступных для всех заданий (jobs) и шагов (steps) в рабочем процессе. Здесь мы устанавливаем GREETING в строку 'Hello'.

Добавьте шаг для вывода переменной с помощью команды run echo "${{ env.GREETING }}, World!"

На этом шаге вы определите задание (job) и шаг (step) для использования созданной вами переменной окружения. Вы получаете доступ к переменным окружения в файле рабочего процесса (workflow file) с помощью синтаксиса ${{ env.VARIABLE_NAME }}.

Откройте .github/workflows/env-demo.yml в WebIDE и добавьте следующее содержимое в конец файла:

jobs:
  print-greeting:
    runs-on: ubuntu-latest
    steps:
      - name: Print Greeting
        run: echo "${{ env.GREETING }}, World!"

Ваш полный файл должен выглядеть следующим образом:

name: Environment Variable Demo

on: [push]

env:
  GREETING: "Hello"

jobs:
  print-greeting:
    runs-on: ubuntu-latest
    steps:
      - name: Print Greeting
        run: echo "${{ env.GREETING }}, World!"
  • jobs: Определяет задания, которые выполняет рабочий процесс.
  • print-greeting: Идентификатор (ID) задания.
  • runs-on: Конфигурирует тип машины (раннера), на которой будет выполняться задание.
  • steps: Группирует все шаги, выполняемые в задании.
  • run: Выполняет команду в оболочке (shell) раннера. Мы используем echo для вывода значения GREETING, за которым следует , World!.

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

На этом шаге вы закоммитите новый файл рабочего процесса (workflow file) и отправите его (push) в GitHub. Отправка этого файла зарегистрирует рабочий процесс в GitHub Actions и запустит его первое выполнение.

  1. Убедитесь, что вы находитесь в каталоге репозитория:
cd ~/project/github-actions-demo
  1. Добавьте файл рабочего процесса в область проиндексированных изменений (stage):
git add .github/workflows/env-demo.yml
  1. Закоммитьте изменения:
git commit -m "Add workflow with environment variable"
  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. Подождите несколько секунд, и вы увидите, что терминал успешно завершил операцию отправки (push).

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

Запустите рабочий процесс, отправив изменения (push)

Рабочий процесс настроен на выполнение при событиях push. Хотя предыдущий push уже запустил рабочий процесс, давайте посмотрим, как легко обновить переменную окружения и запустить его снова.

  1. Откройте файл .github/workflows/env-demo.yml в WebIDE.
  2. Измените значение GREETING с "Hello" на "Hi".
env:
  GREETING: "Hi"
  1. Зафиксируйте (commit) и отправьте (push) это изменение:
git add .github/workflows/env-demo.yml
git commit -m "Update greeting variable"
git push

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

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

Этот push запустит новый прогон (run) рабочего процесса с обновленной переменной.

Проверьте вывод переменной окружения в логах выполнения на GitHub

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

  1. Перейдите в ваше репозиторий на GitHub через веб-браузер: https://github.com/your-username/github-actions-demo
  2. Нажмите на вкладку Actions в верхней части страницы репозитория.
  3. Вы должны увидеть новый запуск рабочего процесса, вероятно, с именем "Update greeting variable".

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

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

Вы должны увидеть выполнение команды:

Run echo "Hi, World!"
  echo "Hi, World!"
  shell: /usr/bin/bash -e {0}
Hi, World!

Обратите внимание, что ${{ env.GREETING }} был заменен своим новым значением Hi.

GitHub Actions logs

Резюме

В этой лабораторной работе вы успешно создали рабочий процесс GitHub Actions, который использует переменные окружения (environment variables). Вы узнали, как:

  1. Определять переменные окружения с помощью ключевого слова env на уровне рабочего процесса.
  2. Получать доступ к этим переменным в ваших шагах, используя синтаксис ${{ env.VARIABLE_NAME }}.
  3. Обновлять переменную и снова запускать рабочий процесс, отправляя изменения.

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