👉 Предварительные условия
Если вы новичок в действиях GitHub, я предлагаю вам прочитать мое представление о действиях GitHub — GitHub Actions (Часть 1) Статья.
В действиях в основном есть три типа переменных среды.
- Пользовательские переменные среды.
- По умолчанию переменные среды.
- Зашифрованные переменные среды.
1. Пользовательские переменные среды
Пользовательские переменные среды могут быть объявлены самими собой в любом файле рабочего процесса.
Мы можем объявить пользовательские переменные среды в рамках различной области доступа в файле рабочего процесса.
- Уровень рабочего процесса
- Уровень работы
- Шаги Уровень
Таким образом, тогда заявленная переменная может быть доступна только с помощью конкретной области.
Пример:
- Уровень рабочего процесса пользовательские переменные среды
Здесь я объявил переменную, называемую Pulferenv на уровне рабочего процесса и пытался повторить ее на разных уровнях.
name: workflow-level-custom-environment-variables
on: [push]
# Here the environment variable is declared in workflow level
env:
PUBLICENV: Available for all jobs in this workflow
jobs:
sample-job-1:
runs-on: ubuntu-latest
steps:
- name: step-1
run: echo "${PUBLICENV}"
# This will echo the value/string of PUBLICENV
- name: step-2
run: echo "${PUBLICENV}"
# This will echo the value/string of PUBLICENV
sample-job-2:
runs-on: ubuntu-latest
steps:
- run: echo "${PUBLICENV}"
# This will echo the value/string of PUBLICENV
- Уровень рабочих мест пользовательские переменные среды
Здесь я объявил переменную, называемую Jobenv, на уровне «выборки Job-1» и попытка повторить ее на разных уровнях.
name: job-level-custom-environment-variables
on: [push]
jobs:
sample-job-1:
env:
JOBENV: Available for this specific job only
# Here the environment variable is declared in job level
runs-on: ubuntu-latest
steps:
- name: step-1
run: echo "${JOBENV}"
# This will echo the value/string of JOBENV
- name: step-2
run: echo "${JOBENV}"
# This will echo the value/string of JOBENV
sample-job-2:
runs-on: ubuntu-latest
steps:
- run: echo "${JOBENV}"
# This will NOT echo the value/string of JOBENV
- Шаг уровня пользовательских переменных среды
Здесь я объявил переменную, называемую Stepenv на уровне «шага-1» внутри «Образец-Job-1» и пытался повторить ее на разных уровнях.
name: step-level-custom-environment-variables
on: [push]
jobs:
sample-job-1:
runs-on: ubuntu-latest
steps:
- name: step-1
env:
STEPENV: Available for this specific job only
# Here the environment variable is declared in step level
run: echo "${STEPENV}"
# This will echo the value/string of STEPENV
- name: step-2
run: echo "${STEPENV}"
# This will NOT echo the value/string of STEPENV
sample-job-2:
runs-on: ubuntu-latest
steps:
- run: echo "${STEPENV}"
# This will NOT echo the value/string of STEPENV
2. По умолчанию переменные среды
GitHub предоставляет некоторые переменные среды по умолчанию для многих полезных параметров вашего репозитория. Мы можем использовать их в любом месте в рабочем процессе.
Вот список переменных ENV по умолчанию в действиях GitHub
- Github_workflow Имя рабочего процесса.
Github_run_id Уникальный номер для каждого запуска в репозитории. Этот номер не меняется, если вы заново запустите запуск рабочего процесса.
Github_run_number Уникальное число для каждого прогона определенного рабочего процесса в репозитории. Это число начинается с 1 для первого запуска рабочего процесса и увеличивает каждый новый запуск. Этот номер не меняется, если вы заново запустите запуск рабочего процесса.
Github_action Уникальный идентификатор (ID) действия.
Github_actions Всегда устанавливайте True, когда GitHub Daises выполняет рабочий процесс. Вы можете использовать эту переменную для дифференциации, когда тесты выполняются локально или действиями GitHub.
Github_actor Имя человека или приложения, которое инициировало рабочий процесс.
Github_repository Владелец и имя репозитория.
Github_event_name Имя события WebHook, которое вызвало рабочий процесс.
Github_event_path Путь файла с полной полезной нагрузкой события WebHook.
Github_workspace Путь каталога рабочей области GitHub.
Github_sha Коммит SHA, который вызвал рабочий процесс.
Github_ref Ветвь или метка, что вызвало рабочий процесс.
Github_head_ref Задается только для разветвленных репозитории. Ветвь репозитория головы.
Github_base_ref Задается только для разветвленных репозитории. Ветвь базового репозитория.
Github_server_url Возвращает URL -адрес сервера GitHub.
Github_api_url Возвращает URL API.
Github_graphql_url Возвращает URL GraphQL API.
Пример:
name: default-environment-variables
on: [push]
jobs:
sample-job:
runs-on: ubuntu-latest
steps:
- name: echo-default-env-variables
run: |
echo "Home: ${HOME}"
echo "GITHUB_WORKFLOW: ${GITHUB_WORKFLOW}"
echo "GITHUB_ACTIONS: ${GITHUB_ACTIONS}"
echo "GITHUB_ACTOR: ${GITHUB_ACTOR}"
echo "GITHUB_REPOSITORY: ${GITHUB_REPOSITORY}"
echo "GITHUB_EVENT_NAME: ${GITHUB_EVENT_NAME}"
echo "GITHUB_WORKSPACE: ${GITHUB_WORKSPACE}"
echo "GITHUB_SHA: ${GITHUB_SHA}"
echo "GITHUB_REF: ${GITHUB_REF}"
Выходы:
3. Зашифрованные переменные среды
В действиях GitHub мы можем также создать зашифрованную переменную среды. Мы можем использовать Секреты GitHub хранить ключи API и пароли.
- Нажмите на настройки в репозитории
- Нажмите на секреты
- Нажмите на «Секрет нового хранилища»
- Дайте your_secret_name и значение и нажмите «Добавить секрет»
Пример:
Вот пример кода, как мы можем использовать зашифрованные переменные, не разоблачая значение.
name: working-with-encrypted-environment-variables
on:
push:
branches: [main, develop]
jobs:
sample-job:
runs-on: ubuntu-latest
steps:
- name: Deploy-to-staging
if: github.event_name == 'push' && github.ref == 'refs/heads/develop'
# Here this will be triggered only when the "push" event is performed only to the specific "develop" branch
run: npx surge --project ./build --domain eight-circle.surge.sh
env:
SURGE_LOGIN: ${{secrets.SURGE_LOGIN}}
SURGE_TOKEN: ${{secrets.SURGE_TOKEN}}
# SURGE_LOGIN & SURGE_TOKEN is stored as github secrets
👏 Бонусный совет:
На экране журнала «Действия», когда любой шаг проходит, он указывает на зеленую галочку, и когда шаг не сбой, это указывает на красную галочку, но мы не можем увидеть точную ошибку там, если не включить отладку.
Чтобы обеспечить отладку в действиях GitHub, сохраните эти две зашифрованные переменные среды в секретах GitHub в репозитории в пертиме. Затем, когда шаг не удастся, вы увидите сообщения отладки на одном экране журнала, и это облегчает отладку ваших ошибок.
Secret : ACTIONS_STEP_DEBUG Value : TRUE Secret : ACTIONS_RUNNER_DEBUG Value : TRUE
👉 Что дальше?
Работа с внешними действиями — Действия GitHub (часть 3)
Благодарю вас
Надеюсь, вам все понравились и что -то узнали из этого. Дайте мне знать ваши комментарии и предложения в разделе обсуждения.
👉 Посетите меня — https://mihinduranasinghe.com/
Оригинал: «https://dev.to/mihinduranasinghe/working-with-environment-variables-github-actions-part-2-46po»