Рубрики
Uncategorized

Работа с переменными окружающей среды — Действия GitHub (часть 2)

👉 Предварительные условия, если вы новичок в действиях GitHub, я предлагаю вам прочитать мое представление о GitHub a … Tagged with Github, DevOps, Cloud, новички.

👉 Предварительные условия

Если вы новичок в действиях GitHub, я предлагаю вам прочитать мое представление о действиях GitHub — GitHub Actions (Часть 1) Статья.

В действиях в основном есть три типа переменных среды.

  1. Пользовательские переменные среды.
  2. По умолчанию переменные среды.
  3. Зашифрованные переменные среды.

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 и пароли.

  1. Нажмите на настройки в репозитории
  2. Нажмите на секреты
  3. Нажмите на «Секрет нового хранилища»
  4. Дайте 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»