Примечание. В GitHub Enterprise Server в настоящее время не поддерживаются средства выполнения тестов, размещенные в GitHub. Дополнительные сведения о планируемой поддержке в будущем см. в GitHub public roadmap.
Сведения о переменных
Переменные можно использовать для хранения сведений, на которые вы хотите ссылаться в рабочем процессе. Вы ссылаетесь на переменные в шаге рабочего процесса или действии, а переменные интерполируются на компьютере средства выполнения, на котором выполняется рабочий процесс. Команды, выполняемые в действиях или шагах рабочего процесса, могут создавать, считывать и изменять переменные.
Вы можете задать собственные настраиваемые переменные, использовать переменные по умолчанию, которые GitHub задает автоматически, а также любые другие переменные, заданные в рабочей среде в средстве выполнения тестов. Переменные чувствительны к регистру.
Определение переменных среды
Чтобы задать настраиваемую переменную среды, ее можно определить с помощью env
ключа в файле рабочего процесса. Область настраиваемой переменной, заданной этим методом, ограничена элементом, в котором она определена. Вы можете определить переменные, для которых задана область действия:
- Весь рабочий процесс с использованием
env
на верхнем уровне файла рабочего процесса. - Содержимое задания в рабочем процессе с использованием
jobs.<job_id>.env
. - Определенный шаг задания с использованием
jobs.<job_id>.steps[*].env
.
name: Greeting on variable day
on:
workflow_dispatch
env:
DAY_OF_WEEK: Monday
jobs:
greeting_job:
runs-on: ubuntu-latest
env:
Greeting: Hello
steps:
- name: "Say Hello Mona it's Monday"
run: echo "$Greeting $First_Name. Today is $DAY_OF_WEEK!"
env:
First_Name: Mona
Доступ к значениям переменных можно получить env
с помощью переменных среды средства выполнения или контекстов. В приведенном выше примере показаны три пользовательские переменные, используемые в качестве переменных среды в команде echo
: $DAY_OF_WEEK
, $Greeting
и $First_Name
. Значения для этих переменных задаются на уровне рабочего процесса, задания и шага соответственно. Дополнительные сведения о доступе к значениям переменных с помощью контекстов см. в разделе Использование контекстов для доступа к значениям переменных.
Так как интерполяция переменных среды средства выполнения выполняется после отправки задания рабочего процесса на компьютер средства выполнения, необходимо использовать соответствующий синтаксис для оболочки, используемой в средстве выполнения. В этом примере рабочим процессом указано ubuntu-latest
. По умолчанию средства выполнения Linux используют оболочку Bash, поэтому необходимо использовать синтаксис $NAME
. Если рабочим процессом указано средство выполнения Windows, используется синтаксис PowerShell, $env:NAME
. Дополнительные сведения о оболочках см. в разделе Синтаксис рабочего процесса для GitHub Actions.
Соглашения об именовании для переменных среды
При установке переменной среды нельзя использовать имена переменных среды по умолчанию. Полный список переменных среды по умолчанию см. в разделе Переменные среды по умолчанию ниже. При попытке переопределить значение одной из этих переменных по умолчанию назначение игнорируется.
Все новые переменные, которые указывают на расположение в файловой системе, должны иметь суффикс _PATH
. Переменные GITHUB_ENV
и GITHUB_WORKSPACE
по умолчанию являются исключениями из этого соглашения.
Примечание. Вы можете перечислить весь набор переменных среды, доступных для шага рабочего процесса, с помощью run: env
в шаге, а затем проверить вывод для шага.
Использование контекстов для доступа к значениям переменных
Контексты — это способ доступа к сведениям о выполнении рабочих процессов, переменных, средах средств выполнения, заданиях и шагах. Дополнительные сведения см. в разделе Контексты. Существует множество других контекстов, которые можно использовать для различных целей в рабочих процессах. Дополнительные сведения о том, где можно использовать определенные контексты в рабочем процессе, см. в разделе Контексты.
Получить доступ к значениям переменных среды можно с помощью контекста env
.
Использование контекста env
для доступа к значениям переменных среды
Помимо переменных среды средства выполнения, GitHub Actions позволяет задавать и считывать env
значения ключей с помощью контекстов. Переменные среды и контексты предназначены для использования в разных точках рабочего процесса.
Переменные среды средства выполнения всегда интерполируются на компьютере средства выполнения. Однако части рабочего процесса обрабатываются с помощью GitHub Actions и не отправляются средству выполнения. Переменные среды нельзя использовать в этих частях файла рабочего процесса. Вместо этого можно использовать контексты. Например, условный объект if
, определяющий, отправляется ли задание или шаг средству выполнения, всегда обрабатывается с помощью GitHub Actions. Контекст в условной if
инструкции можно использовать для доступа к значению переменной.
env:
DAY_OF_WEEK: Monday
jobs:
greeting_job:
runs-on: ubuntu-latest
env:
Greeting: Hello
steps:
- name: "Say Hello Mona it's Monday"
if: ${{ env.DAY_OF_WEEK == 'Monday' }}
run: echo "$Greeting $First_Name. Today is $DAY_OF_WEEK!"
env:
First_Name: Mona
В этом изменении предыдущего примера мы ввели условное if
. Теперь шаг рабочего процесса выполняется только в том случае, если для DAY_OF_WEEK
задано значение "Понедельник". Доступ к этому значению выполняется от условного оператора if
с помощью env
контекста.
Примечание. Контексты обычно обозначаются с помощью знака доллара и фигурных скобок, в виде ${{ context.property }}
. В условном объекте if
${{
и }}
необязательны, но если вы их используете, они должны охватывать целый оператор сравнения, как показано выше.
Обычно используется env
контекст или github
для доступа к значениям переменных в частях рабочего процесса, которые обрабатываются перед отправкой заданий в средства выполнения.
Контекст | Вариант использования | Пример |
---|---|---|
env | Ссылка на пользовательские переменные, определенные в рабочем процессе. | ${{ env.MY_VARIABLE }} |
github | Справочная информация о запуске рабочего процесса и событии, которое инициировало запуск. | ${{ github.repository }} |
Переменные среды по умолчанию
Переменные среды по умолчанию, которые устанавливает GitHub, доступны для каждого шага в рабочем процессе.
Мы настоятельно рекомендуем использовать переменные для доступа к файловой системе, а не использовать жестко заданные пути к файлам. GitHub задает переменные для действий, которые будут использоваться во всех средах средств выполнения.
Переменная | Описание |
---|---|
CI | Всегда имеет значение true . |
GITHUB_ACTION | Имя выполняемого в данный момент действия или id шага. Например, для действия — __repo-owner_name-of-action-repo .GitHub удаляет специальные символы и использует имя __run , когда в текущем шаге выполняется скрипт без параметра id . При использовании одного сценария или действия несколько раз в одном задании имя будет включать суффикс, состоящий из порядкового номера перед символом подчеркивания. Например, первый сценарий, который вы запустите, будет иметь имя __run , а второй сценарий будет называться __run_2 . Аналогично второй вызов actions/checkout будет называться actionscheckout2 . |
GITHUB_ACTION_PATH | Путь к расположению действия. Это свойство поддерживается только в составных действиях. С помощью этого пути можно обращаться к файлам, расположенным в том же репозитории, что и действие. Например, /home/runner/work/_actions/repo-owner/name-of-action-repo/v1 . |
GITHUB_ACTION_REPOSITORY | Для шага, в котором выполняется действие, это имя владельца и репозитория, где находится действие. Например, actions/checkout . |
GITHUB_ACTIONS | Всегда имеет значение true , когда GitHub Actions запускает рабочий процесс. Эту переменную можно использовать, чтобы различать, когда тесты выполняются локально или с помощью GitHub Actions. |
GITHUB_ACTOR | Имя пользователя или приложения, инициирующего рабочий процесс. Например, octocat . |
GITHUB_API_URL | Возвращает URL-адрес API. Например: http(s)://HOSTNAME/api/v3 . |
GITHUB_BASE_REF | Имя базовой ссылки или целевой ветви запроса на вытягивание в выполнении рабочего процесса. Это значение устанавливается только в том случае, если событием, запускающим рабочий процесс, является pull_request или pull_request_target . Например, main . |
GITHUB_ENV | Путь в средстве выполнения к файлу, который задает переменные из команд рабочего процесса. Этот файл уникален для текущего шага и изменяется для каждого шага задания. Например, /home/runner/work/_temp/_runner_file_commands/set_env_87406d6e-4979-4d42-98e1-3dab1f48b13a . Дополнительные сведения см. в разделе Команды рабочего процесса для GitHub Actions. |
GITHUB_EVENT_NAME | Имя события, которое активировало рабочий процесс. Например, workflow_dispatch . |
GITHUB_EVENT_PATH | Путь к файлу в средстве выполнения, который содержит полные полезные данные веб-перехватчика событий. Например, /github/workflow/event.json . |
GITHUB_GRAPHQL_URL | Возвращает URL-адрес API GraphQL. Например: http(s)://HOSTNAME/api/graphql . |
GITHUB_HEAD_REF | Ссылка на голову или исходная ветвь запроса на вытягивание в рабочем процессе. Это свойство задается только в том случае, если событием, запускающим рабочий процесс, является pull_request или pull_request_target . Например, feature-branch-1 . |
GITHUB_JOB | Job_id текущего задания. Например, greeting_job . |
GITHUB_PATH | Путь в средстве выполнения к файлу, который задает системные PATH переменные из команд рабочего процесса. Этот файл уникален для текущего шага и изменяется для каждого шага задания. Например, /home/runner/work/_temp/_runner_file_commands/add_path_899b9445-ad4a-400c-aa89-249f18632cf5 . Дополнительные сведения см. в разделе Команды рабочего процесса для GitHub Actions. |
GITHUB_REF | Полная ссылка на ветвь или тег, активировавшая выполнение рабочего процесса. Если рабочий процесс запущен по триггеру push , здесь указывается ссылка на отправленную ветвь или тег выпуска. Если рабочий процесс запущен по триггеру pull_request , здесь указывается ветвь слияния для запроса на вытягивание. Если рабочий процесс запущен по триггеру release , здесь указывается созданный тег выпуска. Для всех остальных триггеров указывается ссылка на ветвь или тег, которые активировали запуск рабочего процесса. Это значение задается только для тех типов событий, в которых доступны ветвь или тег. Ссылка сохраняется в полном формате, то есть refs/heads/<branch_name> для ветвей, refs/pull/<pr_number>/merge для запросов на вытягивание и refs/tags/<tag_name> для тегов. Например, refs/heads/feature-branch-1 . |
GITHUB_REF_NAME | Короткое имя ссылки на ветвь или тег, активировав запуск рабочего процесса. Это значение соответствует имени ветви или тега, отображаемой в GitHub. Например, feature-branch-1 . |
GITHUB_REF_PROTECTED | Значение true , если защита ветви настроена для ссылки, которая активировала выполнение рабочего процесса. |
GITHUB_REF_TYPE | Тип ссылки, активировавшей выполнение рабочего процесса. Допустимые значения: branch или tag . |
GITHUB_REPOSITORY_OWNER | Имя владельца репозитория. Например, octocat . |
GITHUB_RETENTION_DAYS | Количество дней, в течение которых хранятся журналы и артефакты выполнения рабочего процесса. Например, 90 . |
GITHUB_RUN_ATTEMPT | Уникальный номер для каждой попытки запуска определенного рабочего процесса в репозитории. Этот номер начинается с 1 для первой попытки запуска рабочего процесса и увеличивается при каждом повторном запуске. Например, 3 . |
GITHUB_RUN_ID | Уникальный номер каждого запуска рабочего процесса в репозитории. Он не изменяется при повторном запуске рабочего процесса. Например, 1658821493 . |
GITHUB_RUN_NUMBER | Уникальный номер для каждого запуска определенного рабочего процесса в репозитории. Он начинается с цифры 1 для первого запуска рабочего процесса и увеличивается с каждым новым запуском. Он не изменяется при повторном запуске рабочего процесса. Например, 3 . |
GITHUB_SERVER_URL | URL-адрес сервера GitHub Enterprise Server. Например: https://HOSTNAME . |
GITHUB_SHA | SHA фиксации, инициировавшей рабочий процесс. Значение этой фиксации SHA зависит от события, активирующего рабочий процесс. Дополнительные сведения см. в разделе События, инициирующие рабочие процессы. Например, ffac537e6cbbf934b08745a378932722df287a53 . |
GITHUB_STEP_SUMMARY | Путь средства выполнения тестов к файлу, который содержит сводки заданий из команд рабочего процесса. Этот файл уникален для текущего шага и изменяется для каждого шага задания. Например, /home/runner/_layout/_work/_temp/_runner_file_commands/step_summary_1cb22d7f-5663-41a8-9ffc-13472605c76c . Дополнительные сведения см. в разделе Команды рабочего процесса для GitHub Actions. |
GITHUB_WORKFLOW | Имя рабочего процесса. Например, My test workflow . Если в файле рабочего процесса не указано свойство name , значением этой переменной является полный путь к файлу рабочего процесса в репозитории. |
GITHUB_WORKSPACE | Рабочий каталог по умолчанию в средстве выполнения для шагов и расположение репозитория по умолчанию при использовании checkout действия . Например, /home/runner/work/my-repo-name/my-repo-name . |
RUNNER_ARCH | Архитектура средства выполнения задания. Возможные значения: X86 , X64 , ARM или ARM64 . |
RUNNER_DEBUG | Это делается только в том случае, если ведение журнала отладки включено и всегда имеет значение 1 . Это может быть полезно в качестве индикатора для включения дополнительной отладки или подробного ведения журнала в ваших шагах задания. |
RUNNER_NAME | Имя средства выполнения задания. Например, Hosted Agent |
RUNNER_OS | Операционная система средства выполнения тестов, выполняющего задание. Возможные значения — Linux , Windows или macOS . Например, Windows |
RUNNER_TEMP | Путь к временному каталогу в средстве выполнения. Этот каталог очищается в начале и конце каждого задания. Обратите внимание, что файлы не удаляются, если у учетной записи пользователя средства выполнения нет разрешения на их удаление. Например, D:\a\_temp |
RUNNER_TOOL_CACHE | Путь к каталогу, содержащему предустановленные средства для размещенных в GitHub средств выполнения. Дополнительные сведения см. в разделе О средствах выполнения, размещенных в GitHub. Например, C:\hostedtoolcache\windows |
Примечание.
- Если вам нужно использовать URL-адрес запуска рабочего процесса из задания, можно объединить следующие переменные:
$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID
- Большинство переменных по умолчанию имеют соответствующее свойство контекста с аналогичным именем. Например, значение переменной
GITHUB_REF
можно считать во время обработки рабочего процесса с помощью свойства контекста${{ github.ref }}
.
Обнаружение операционной системы
Вы можете написать один файл рабочего процесса, который можно использовать для разных операционных систем, используя переменную среды по умолчанию RUNNER_OS
и соответствующее свойство контекста ${{ runner.os }}
. Например, следующий рабочий процесс может быть успешно запущен, если вы изменили операционную систему с macos-latest
на windows-latest
без необходимости изменять синтаксис переменных среды, который различается в зависимости от оболочки, используемой средством выполнения.
jobs:
if-Windows-else:
runs-on: macos-latest
steps:
- name: condition 1
if: runner.os == 'Windows'
run: echo "The operating system on the runner is $env:RUNNER_OS."
- name: condition 2
if: runner.os != 'Windows'
run: echo "The operating system on the runner is not Windows, it's $RUNNER_OS."
В этом примере два оператора if
проверяют свойство os
контекста runner
, чтобы определить операционную систему средства выполнения. Условные объекты if
обрабатываются с помощью GitHub Actions, и средству выполнения отправляются только те шаги, для которых проверка разрешается в виде true
. Здесь одна из проверок всегда будет иметь значение true
, а другая — false
, поэтому только один из этих шагов отправляется в средство выполнения. После отправки задания средству выполнения шаг выполняется и переменная среды в команде echo
интерполируется с использованием соответствующего синтаксиса ($env:NAME
для PowerShell в Windows и $NAME
для bash и sh в Linux и MacOS). В этом примере оператор runs-on: macos-latest
означает, что будет выполняться второй шаг.
Передача значений между шагами и заданиями в рабочем процессе
Если вы создаете значение в одном шаге задания, его можно использовать в последующих шагах того же задания, назначив значение существующей или новой переменной среды, а затем записав это значение в файл среды GITHUB_ENV
. Файл среды может использоваться непосредственно действием или командой оболочкой в файле рабочего процесса с помощью ключевого слова run
. Дополнительные сведения см. в разделе Команды рабочего процесса для GitHub Actions.
Если вы хотите передать значение из шага одного задания в рабочем процессе в шаг другого задания в рабочем процессе, можно определить значение как вывод задания. Затем вы можете ссылаться на этот вывод задания из шага другого задания. Дополнительные сведения см. в разделе Синтаксис рабочего процесса для GitHub Actions.