Skip to main content

Справочник по контекстам

Найдите информацию о контекстах, доступных в GitHub Actions рабочих процессах, включая доступные свойства, методы доступа и примеры использования.

Доступные контексты

Имя контекстаТипОписание
githubobjectСведения об экземпляре рабочего процесса. Дополнительные сведения см. в разделе о контексте github.
envobjectСодержит переменные, заданные в рабочем процессе, задании или шаге. Дополнительные сведения см. в разделе о контексте env.
varsobjectСодержит переменные, заданные на уровне репозитория, организации или среды. Дополнительные сведения см. в разделе о контексте vars.
jobobjectСведения о выполняемом в данный момент задании. Дополнительные сведения см. в разделе о контексте job.
jobsobjectТолько для повторно используемых рабочих процессов содержит выходные данные заданий из повторно используемых рабочих процессов. Дополнительные сведения см. в разделе о контексте jobs.
stepsobjectСведения о шагах, которые были выполнены в текущем задании. Дополнительные сведения см. в разделе о контексте steps.
runnerobjectСведения о средстве выполнения, в котором выполняется текущее задание. Дополнительные сведения см. в разделе о контексте runner.
secretsobjectСодержит имена и значения секретов, доступных для экземпляра рабочего процесса. Дополнительные сведения см. в разделе о контексте secrets.
strategyobjectСведения о стратегии выполнения матрицы для текущего задания. Дополнительные сведения см. в разделе о контексте strategy.
matrixobjectСодержит свойства матрицы, определенные в рабочем процессе, который применяется к текущему заданию. Дополнительные сведения см. в разделе о контексте matrix.
needsobjectСодержит выходные данные всех заданий, которые определены как зависимые для текущего задания. Дополнительные сведения см. в разделе о контексте needs.
inputsobjectСодержит входные данные повторно используемых или вручную активируемых рабочих процессов. Дополнительные сведения см. в разделе о контексте inputs.

В выражении доступ к данным контекста можно получить с помощью одного из двух видов синтаксиса.

  • Синтаксис индексов: github['sha']
  • Синтаксис разыменования свойств: github.sha

Чтобы использовать синтаксис разыменования свойств, имя свойства должно начинаться с буквы или _ и содержать только буквенно-цифровые символы, - или _.

Если вы пытаетесь разыменовать несуществующее свойство, оно будет оцениваться как пустая строка.

Когда используются контексты

          GitHub Actions включает набор переменных, _называемых контекстами_ , и аналогичный набор переменных, _называемых переменными по умолчанию_. Эти переменные предназначены для использования в разных точках рабочего процесса:

* Переменные среды по умолчанию: эти переменные среды существуют только в средстве выполнения, выполняющего задание. Дополнительные сведения см. в разделе Справочник по переменным. * Контексты. Вы можете использовать большинство контекстов в любой точке рабочего процесса, включая, когда переменные по умолчанию будут недоступны. Например, можно использовать контексты с выражениями для выполнения начальной обработки перед маршрутизацией задания в средство выполнения тестов. Это позволяет использовать контекст с условным ключевым словом if, чтобы определить, следует ли выполнять шаг. После выполнения задания можно также извлечь переменные контекста из средства выполнения тестов, которое выполняет задание, например runner.os. Дополнительные сведения о том, где можно использовать различные контексты в рабочем процессе, см. в разделе "Доступность контекста".

В следующем примере показано, как эти различные типы переменных можно использовать вместе в задании:

YAML
name: CI
on: push
jobs:
  prod-check:
    if: ${{ github.ref == 'refs/heads/main' }}
    runs-on: ubuntu-latest
    steps:
      - run: echo "Deploying to production server on branch $GITHUB_REF"

В этом примере инструкция if проверяет контекст github.ref, чтобы определить имя текущей ветви; если используется имя refs/heads/main, то выполняются последующие шаги. if Проверка обрабатывается с GitHub Actionsпомощью , и задание отправляется бегущему только если результат равен true. После отправки задания в средство выполнения выполняется шаг и ссылается на $GITHUB_REF переменную из средства выполнения.

Доступность контекста

В экземпляре рабочего процесса доступны различные контексты. Например, контекст secrets может использоваться только в определенных местах задания.

Кроме того, некоторые функции также могут использоваться только в определенных местах. Например, функция hashFiles доступна не везде.

В следующей таблице перечислены ограничения, в которых можно использовать каждый контекст и специальную функцию в рабочем процессе. Перечисленные контексты доступны только для заданного ключа рабочего процесса и не могут использоваться в другом месте. Если эти сведения не приводятся, значит функцию можно использовать где угодно.

Ключ рабочего процессаКонтекстСпециальные функции
run-namegithub, inputs, varsнет
concurrencygithub, inputs, varsнет
envgithub, secrets, inputs, varsнет
jobs.<job_id>.concurrencygithub, needs, strategy, matrix, inputs, varsнет
jobs.<job_id>.containergithub, needs, strategy, matrix, vars, inputsнет
jobs.<job_id>.container.credentialsgithub, needs, strategy, matrix, env, vars, secrets, inputsнет
jobs.<job_id>.container.env.<env_id>github, needs, strategy, matrix, job, runner, env, vars, secrets, inputsнет
jobs.<job_id>.container.imagegithub, needs, strategy, matrix, vars, inputsнет
jobs.<job_id>.continue-on-errorgithub, needs, strategy, vars, matrix, inputsнет
jobs.<job_id>.defaults.rungithub, needs, strategy, matrix, env, vars, inputsнет
jobs.<job_id>.envgithub, needs, strategy, matrix, vars, secrets, inputsнет
jobs.<job_id>.environmentgithub, needs, strategy, matrix, vars, inputsнет
jobs.<job_id>.environment.urlgithub, needs, strategy, matrix, job, runner, env, vars, steps, inputsнет
jobs.<job_id>.ifgithub, needs, vars, inputsalways, cancelled, success, failure
jobs.<job_id>.namegithub, needs, strategy, matrix, vars, inputsнет
jobs.<job_id>.outputs.<output_id>github, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputsнет
jobs.<job_id>.runs-ongithub, needs, strategy, matrix, vars, inputsнет
jobs.<job_id>.secrets.<secrets_id>github, needs, strategy, matrix, secrets, inputs, varsнет
jobs.<job_id>.servicesgithub, needs, strategy, matrix, vars, inputsнет
jobs.<job_id>.services.<service_id>.credentialsgithub, needs, strategy, matrix, env, vars, secrets, inputsнет
jobs.<job_id>.services.<service_id>.env.<env_id>github, needs, strategy, matrix, job, runner, env, vars, secrets, inputsнет
jobs.<job_id>.steps.continue-on-errorgithub, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputshashFiles
jobs.<job_id>.steps.envgithub, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputshashFiles
jobs.<job_id>.steps.ifgithub, needs, strategy, matrix, job, runner, env, vars, steps, inputsalways, cancelled, success, failure, hashFiles
jobs.<job_id>.steps.namegithub, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputshashFiles
jobs.<job_id>.steps.rungithub, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputshashFiles
jobs.<job_id>.steps.timeout-minutesgithub, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputshashFiles
jobs.<job_id>.steps.withgithub, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputshashFiles
jobs.<job_id>.steps.working-directorygithub, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputshashFiles
jobs.<job_id>.strategygithub, needs, vars, inputsнет
jobs.<job_id>.timeout-minutesgithub, needs, strategy, matrix, vars, inputsнет
jobs.<job_id>.with.<with_id>github, needs, strategy, matrix, inputs, varsнет
on.workflow_call.inputs.<inputs_id>.defaultgithub, inputs, varsнет
on.workflow_call.outputs.<output_id>.valuegithub, jobs, vars, inputsнет

Пример: вывод данных контекста в журнал

Содержимое контекстов можно выводить в журнал для отладки. Для вывода объектов JSON в журнал в правильном формате требуется функция toJSON.

Предупреждение

При использовании всего github контекста следует учитывать, что он включает конфиденциальную информацию, например github.token. GitHub маскирует секреты при печати в консоль, но при экспорте или печати контекста следует соблюдать осторожность.

YAML
name: Context testing
on: push

jobs:
  dump_contexts_to_log:
    runs-on: ubuntu-latest
    steps:
      - name: Dump GitHub context
        env:
          GITHUB_CONTEXT: ${{ toJson(github) }}
        run: echo "$GITHUB_CONTEXT"
      - name: Dump job context
        env:
          JOB_CONTEXT: ${{ toJson(job) }}
        run: echo "$JOB_CONTEXT"
      - name: Dump steps context
        env:
          STEPS_CONTEXT: ${{ toJson(steps) }}
        run: echo "$STEPS_CONTEXT"
      - name: Dump runner context
        env:
          RUNNER_CONTEXT: ${{ toJson(runner) }}
        run: echo "$RUNNER_CONTEXT"
      - name: Dump strategy context
        env:
          STRATEGY_CONTEXT: ${{ toJson(strategy) }}
        run: echo "$STRATEGY_CONTEXT"
      - name: Dump matrix context
        env:
          MATRIX_CONTEXT: ${{ toJson(matrix) }}
        run: echo "$MATRIX_CONTEXT"

Контекст github

Контекст github содержит сведения об экземпляре рабочего процесса и событии, которое запустило этот экземпляр. Большинство данных контекста github можно считывать в переменных среды. Дополнительные сведения о переменных среды см. в разделе Хранение сведений в переменных.

Предупреждение

При использовании всего github контекста следует учитывать, что он включает конфиденциальную информацию, например github.token. GitHub маскирует секреты при печати в консоль, но при экспорте или печати контекста следует соблюдать осторожность. При создании рабочих процессов и действий следует всегда учитывать, может ли код выполнять ненадежные входные данные от возможных злоумышленников. Некоторые контексты следует считать непроверенными, так как злоумышленники могут вставить собственное вредоносное содержимое. Дополнительные сведения см. в разделе Справочник по безопасному использованию.

Имя свойстваТипОписание
githubobjectКонтекст верхнего уровня, доступный во время любого задания или шага рабочего процесса. Этот объект содержит все свойства, перечисленные ниже.
github.actionstringИмя выполняемого в настоящий момент действия или параметр id шага.
          GitHubудаляет специальные символы и использует имя`__run`, когда текущий шаг запускает скрипт без .`id` Если одно действие используется в задании несколько раз, к имени добавляется суффикс в виде знака подчеркивания и порядкового номера после него. Например, первый сценарий, который вы запустите, будет иметь имя `__run`, а второй сценарий будет называться `__run_2`. Аналогично второй вызов `actions/checkout` будет называться `actionscheckout2`. |

| github.action_path | string | Путь к расположению действия. Это свойство поддерживается только в составных действиях. Этот путь можно использовать для доступа к файлам, находящимся в том же репозитории, что и действие, например, переключив каталоги на путь (используя соответствующую переменную окружающей среды): cd "$GITHUB_ACTION_PATH". Для получения дополнительной информации о переменных прохождения см. Справочник по безопасному использованию. | | github.action_ref | string | Для шага, в котором выполняется действие, это номер выполняемого действия. Например, v2.

Не используйте в ключевом слове run . Чтобы сделать этот контекст работой с составными действиями, обратитесь к нему в env контексте составного действия. | | github.action_repository | string | Для шага, в котором выполняется действие, это имя владельца и репозитория, где находится действие. Например, actions/checkout.

Не используйте в ключевом слове run . Чтобы сделать этот контекст работой с составными действиями, обратитесь к нему в env контексте составного действия. | | github.action_status | string | Текущий результат составного действия. | | github.actor | string | Имя пользователя, активировав начальное выполнение рабочего процесса. Если рабочий процесс выполняется повторно, это значение может отличаться от github.triggering_actor. В повторных запусках рабочих процессов будут использоваться привилегии github.actor, даже если субъект, инициировавший повторный запуск (github.triggering_actor), имеет другие привилегии. | | github.actor_id | string | Идентификатор учетной записи пользователя или приложения, активировавшего начальное выполнение рабочего процесса. Например, 1234567. Обратите внимание, что это отличается от имени пользователя субъекта. | | github.api_url | string | The URL of the GitHub REST API. | | github.base_ref | string | base_ref или целевая ветвь запроса на включение внесенных изменений в экземпляре рабочего процесса. Это свойство доступно, только если экземпляр рабочего процесса был запущен событием pull_request или pull_request_target. | | github.env | string | В средстве выполнения это путь к файлу, в котором задаются переменные среды для команд рабочего процесса. Этот файл уникален для каждого шага в задании. Дополнительные сведения см. в разделе Команды рабочего процесса для GitHub Actions. | | github.event | object | Все полезные данные веб-перехватчика события. Этот контекст дает доступ к отдельным свойствам события. Этот объект идентичен полезным данным веб-перехватчика события, которое запустило экземпляр рабочего процесса, и у каждого события он свой. Вебхуки для каждого GitHub Actions события связаны в AUTOTITLE. Например, для экземпляра рабочего процесса, запущенного push, в этом объекте содержатся полезные данные веб-перехватчика события push. | | github.event_name | string | Имя события, вызвавшего запуск рабочего процесса. | | github.event_path | string | В средстве выполнения это путь к файлу, в котором содержатся все полезные данные веб-перехватчика события. | | github.graphql_url | string | URL API GitHub GraphQL. | | github.head_ref | string | head_ref или исходная ветвь запроса на включение внесенных изменений в экземпляре рабочего процесса. Это свойство доступно, только если экземпляр рабочего процесса был запущен событием pull_request или pull_request_target. | | github.job | string | Свойство job_id текущего задания.
Примечание. Это свойство контекста задается средством выполнения Acrions и доступно только в рамках выполнения этапов (steps) задания. В противном случае значение этого свойства будет равно null. | | github.path | string | Путь к файлу, который задает системные PATH переменные из команд рабочего процесса. Этот файл уникален для каждого шага в задании. Дополнительные сведения см. в разделе Команды рабочего процесса для GitHub Actions. | | github.ref | string | Полностью сформированный ссылку на ветвь или тег, активировавший выполнение рабочего процесса. Если рабочий процесс запущен по триггеру push, здесь указывается ссылка на отправленную ветвь или тег выпуска. Для рабочих процессов, которые pull_request не были объединены, это ветка слияния pull request. Если pull request был объединён, это головная ветвь. Если рабочий процесс запущен по триггеру release, здесь указывается созданный тег выпуска. Для всех остальных триггеров указывается ссылка на ветвь или тег, которые активировали запуск рабочего процесса. Это значение задается только для тех типов событий, в которых доступны ветвь или тег. Указанная ссылка полностью сформирована, что означает, что для ветвей имеется refs/heads/<branch_name>формат. Для событий pull request, кроме pull_request_target тех, что не были объединены, это .refs/pull/<pr_number>/merge pull_request_targetсобытия имеют базовая ветвьref. Для тегов это refs/tags/<tag_name>. Например, refs/heads/feature-branch-1. | | github.ref_name | string | Короткое имя ссылки ветви или тега, активировав выполнение рабочего процесса. Это значение соответствует имени ветви или тега, отображаемого на GitHub. Например, feature-branch-1.

Для pull-запросов, которые не были объединены, формат — <pr_number>/merge. | | github.ref_protected | boolean | true Значение , если защита ветви или наборы правил настроены для ссылки, которая активировала выполнение рабочего процесса. | | github.ref_type | string | Тип ссылки, активировавшей выполнение рабочего процесса. Допустимые значения — branch или tag. | | github.repository | string | Имя владельца и репозитория. Например, octocat/Hello-World. | | github.repository_id | string | Идентификатор репозитория. Например, 123456789. Обратите внимание, что это отличается от имени репозитория. | | github.repository_owner | string | Имя пользователя владельца репозитория. Например, octocat. | | github.repository_owner_id | string | Идентификатор учетной записи владельца репозитория. Например, 1234567. Обратите внимание, что это отличается от имени владельца. | | github.repositoryUrl | string | URL-адрес Git в репозитории. Например, git://github.com/octocat/hello-world.git. | | github.retention_days | string | Количество дней, в течение которых рабочий процесс выполняет журналы и артефакты. | | github.run_id | string | Уникальный номер каждого запуска рабочего процесса в репозитории. Он не изменяется при повторном запуске рабочего процесса. | | github.run_number | string | Уникальный номер для каждого запуска определенного рабочего процесса в репозитории. Он начинается с цифры 1 для первого запуска рабочего процесса и увеличивается с каждым новым запуском. Он не изменяется при повторном запуске рабочего процесса. | | github.run_attempt | string | Уникальное число для каждой попытки конкретного рабочего процесса, выполняемого в репозитории. Первая попытка обозначается номером 1, для всех последующих номер увеличивается. | | github.secret_source | string | Источник секрета, используемого в рабочем процессе. Возможные значения — None, Actions, Codespaces, или Dependabot. | | github.server_url | string | URL-адрес сервера GitHub. Например: https://github.com. | | github.sha | string | SHA фиксации, инициировавшей рабочий процесс. Значение этой фиксации SHA зависит от события, активирующего рабочий процесс. Дополнительные сведения см. в разделе События, инициирующие рабочие процессы. Например, ffac537e6cbbf934b08745a378932722df287a53. | | github.token | string | Маркер для проверки подлинности от имени приложения GitHub, установленного в репозитории. Эта функциональность равнозначна секрету GITHUB_TOKEN. Дополнительные сведения см. в разделе Использование GITHUB_TOKEN для проверки подлинности в рабочих процессах.
Примечание. Это свойство контекста задается средством выполнения Acrions и доступно только в рамках выполнения этапов (steps) задания. В противном случае значение этого свойства будет равно null. | | github.triggering_actor | string | Имя пользователя, запустившего экземпляр рабочего процесса. Если рабочий процесс выполняется повторно, это значение может отличаться от github.actor. В повторных запусках рабочих процессов будут использоваться привилегии github.actor, даже если субъект, инициировавший повторный запуск (github.triggering_actor), имеет другие привилегии. | | github.workflow | string | Имя рабочего процесса. Если в файле рабочего процесса не указано свойство name, в качестве его значения используется полный путь к файлу рабочего процесса в репозитории. | | github.workflow_ref | string | Путь ссылки к рабочему процессу. Например, octocat/hello-world/.github/workflows/my-workflow.yml@refs/heads/my_branch. | | github.workflow_sha | string | Фиксация SHA для файла рабочего процесса. | | github.workspace | string | Рабочий каталог по умолчанию в средстве выполнения для шагов и расположение по умолчанию репозитория при использовании checkout действия. |

Пример содержимого контекста github

Следующий пример контекста взят из экземпляра рабочего процесса, запущенного событием push. В этом примере объект event усечен, так как он идентичен полезным данным веб-перехватчика push.

Примечание.

Это только пример. Содержимое контекста зависит от выполняемого рабочего процесса. Контексты, объекты и свойства во многом зависят от условий выполнения рабочего процесса.

{
  "token": "***",
  "job": "dump_contexts_to_log",
  "ref": "refs/heads/my_branch",
  "sha": "c27d339ee6075c1f744c5d4b200f7901aad2c369",
  "repository": "octocat/hello-world",
  "repository_owner": "octocat",
  "repositoryUrl": "git://github.com/octocat/hello-world.git",
  "run_id": "1536140711",
  "run_number": "314",
  "retention_days": "90",
  "run_attempt": "1",
  "actor": "octocat",
  "workflow": "Context testing",
  "head_ref": "",
  "base_ref": "",
  "event_name": "push",
  "event": {
    ...
  },
  "server_url": "https://github.com",
  "api_url": "https://api.github.com",
  "graphql_url": "https://api.github.com/graphql",
  "ref_name": "my_branch",
  "ref_protected": false,
  "ref_type": "branch",
  "secret_source": "Actions",
  "workspace": "/home/runner/work/hello-world/hello-world",
  "action": "github_step",
  "event_path": "/home/runner/work/_temp/_github_workflow/event.json",
  "action_repository": "",
  "action_ref": "",
  "path": "/home/runner/work/_temp/_runner_file_commands/add_path_b037e7b5-1c88-48e2-bf78-eaaab5e02602",
  "env": "/home/runner/work/_temp/_runner_file_commands/set_env_b037e7b5-1c88-48e2-bf78-eaaab5e02602"
}

Пример использования контекста github

В этом примере задание выполняется с помощью контекста github.event_name, только если экземпляр рабочего процесса был запущен событием pull_request.

YAML
name: Run CI
on: [push, pull_request]

jobs:
  normal_ci:
    runs-on: ubuntu-latest
    steps:
      - name: Run normal CI
        run: echo "Running normal CI"

  pull_request_ci:
    runs-on: ubuntu-latest
    if: ${{ github.event_name == 'pull_request' }}
    steps:
      - name: Run PR CI
        run: echo "Running PR only CI"

Контекст env

Контекст env содержит переменные, заданные в рабочем процессе, задании или шаге. Он не содержит переменные, унаследованные процессом выполнения. Дополнительные сведения о настройке переменных в рабочем процессе см. в разделе Синтаксис рабочего процесса для GitHub Actions.

Вы можете получить значения переменных, хранящихся в env контексте, и использовать эти значения в файле рабочего процесса. Контекст можно использовать env в любом ключе в шаге рабочего процесса, за исключением ключей и id ключейuses. Дополнительные сведения о синтаксисе шага см. в разделе Синтаксис рабочего процесса для GitHub Actions.

Если вы хотите использовать значение переменной внутри средства выполнения, используйте обычный метод операционной системы runner для чтения переменных среды.

Имя свойстваТипОписание
envobjectЭтот контекст меняется для каждого шага в задании. Доступ к этому контексту можно получить из любого шага задания. Этот объект содержит свойства, перечисленные ниже.
env.<env_name>stringЗначение конкретной переменной среды.

Пример содержимого контекста env

Содержимое контекста env — это сопоставление имен переменных с их значениями. Содержимое контекста зависит от места, где он используется в экземпляре рабочего процесса. В этом примере env контекст содержит две переменные.

{
  "first_name": "Mona",
  "super_duper_var": "totally_awesome"
}

Пример использования контекста env

В этом примере рабочего процесса показаны переменные, заданные в контексте env на уровне рабочего процесса, задания и шага. Затем ${{ env.VARIABLE-NAME }} синтаксис используется для получения значений переменных в отдельных шагах рабочего процесса.

При определении нескольких переменных среды с тем же именем GitHub использует самую конкретную переменную. Например, переменная среды, определенная на шаге, переопределяет переменные задания и среды рабочего процесса с тем же именем, а шаг выполняется. Переменная среды, определенная для задания, переопределяет переменную рабочего процесса с тем же именем, а задание выполняется.

YAML
name: Hi Mascot
on: push
env:
  mascot: Mona
  super_duper_var: totally_awesome

jobs:
  windows_job:
    runs-on: windows-latest
    steps:
      - run: echo 'Hi ${{ env.mascot }}'  # Hi Mona
      - run: echo 'Hi ${{ env.mascot }}'  # Hi Octocat
        env:
          mascot: Octocat
  linux_job:
    runs-on: ubuntu-latest
    env:
      mascot: Tux
    steps:
      - run: echo 'Hi ${{ env.mascot }}'  # Hi Tux

Контекст vars

Контекст vars содержит настраиваемые переменные конфигурации, заданные на уровнях организации, репозитория и среды. Дополнительные сведения об определении переменных конфигурации для использования в нескольких рабочих процессах см. в разделе Хранение сведений в переменных.

Пример содержимого контекста vars

Содержимое контекста vars — это сопоставление имен переменных конфигурации с их значениями.

{
  "mascot": "Mona"
}

Пример использования контекста vars

В этом примере рабочего процесса показано, как переменные конфигурации, заданные на уровне репозитория, среды или организации, автоматически доступны с помощью контекста vars .

Примечание.

Переменные конфигурации на уровне среды автоматически доступны после того, как среда объявляется средством выполнения.

Если переменная конфигурации не задана, возвращаемое значение контекста, ссылающееся на переменную, будет пустой строкой.

В следующем примере показано использование переменных конфигурации с контекстом vars в рабочем процессе. Каждая из следующих переменных конфигурации определена на уровне репозитория, организации или среды.

YAML
on:
  workflow_dispatch:
env:
  # Setting an environment variable with the value of a configuration variable
  env_var: ${{ vars.ENV_CONTEXT_VAR }}

jobs:
  display-variables:
    name: ${{ vars.JOB_NAME }}
    # You can use configuration variables with the `vars` context for dynamic jobs
    if: ${{ vars.USE_VARIABLES == 'true' }}
    runs-on: ${{ vars.RUNNER }}
    environment: ${{ vars.ENVIRONMENT_STAGE }}
    steps:
    - name: Use variables
      run: |
        echo "repository variable : $REPOSITORY_VAR"
        echo "organization variable : $ORGANIZATION_VAR"
        echo "overridden variable : $OVERRIDE_VAR"
        echo "variable from shell environment : $env_var"
      env:
        REPOSITORY_VAR: ${{ vars.REPOSITORY_VAR }}
        ORGANIZATION_VAR: ${{ vars.ORGANIZATION_VAR }}
        OVERRIDE_VAR: ${{ vars.OVERRIDE_VAR }}
        
    - name: ${{ vars.HELLO_WORLD_STEP }}
      if: ${{ vars.HELLO_WORLD_ENABLED == 'true' }}
      uses: actions/hello-world-javascript-action@main
      with:
        who-to-greet: ${{ vars.GREET_NAME }}

Контекст job

Контекст job содержит сведения о выполняемом в данный момент задании.

Имя свойстваТипОписание
jobobjectЭтот контекст меняется для каждого задания в экземпляре рабочего процесса. Доступ к этому контексту можно получить из любого шага задания. Этот объект содержит все свойства, перечисленные ниже.
job.check_run_idnumberИдентификатор выполнения текущего задания.
job.containerobjectСведения о контейнере задания. Дополнительные сведения о контейнерах см. в разделе Синтаксис рабочего процесса для GitHub Actions.
job.container.idstringИдентификатор контейнера.
job.container.networkstringИдентификатор сети контейнеров. Средство выполнения создает сеть, которая используется всеми контейнерами в задании.
job.servicesobjectКонтейнеры служб, созданные для задания. Дополнительные сведения о контейнерах служб см. в разделе Синтаксис рабочего процесса для GitHub Actions.
job.services.<service_id>.idstringИдентификатор контейнера службы.
job.services.<service_id>.networkstringИдентификатор сети контейнеров служб. Средство выполнения создает сеть, которая используется всеми контейнерами в задании.
job.services.<service_id>.portsobjectДоступные порты контейнера службы.
job.statusstringтекущее состояние задания; Возможные значения: success, failureили cancelled.

Пример содержимого контекста job

В этом примере контекста job используется контейнер службы PostgreSQL с сопоставленными портами. Если в задании не используются контейнеры или контейнеры служб, job контекст содержит status только свойства and check_run_id .

{
  "status": "success",
  "check_run_id": 51725241954,
  "container": {
    "network": "github_network_53269bd575974817b43f4733536b200c"
  },
  "services": {
    "postgres": {
      "id": "60972d9aa486605e66b0dad4abb638dc3d9116f566579e418166eedb8abb9105",
      "ports": {
        "5432": "49153"
      },
      "network": "github_network_53269bd575974817b43f4733536b200c"
    }
  }
}

Пример использования контекста job

В этом примере рабочего процесса настраивается контейнер службы PostgreSQL и порт 5432 в контейнере службы автоматически сопоставляется со случайным выбранным доступным портом на узле. Контекст job используется для получения номера порта, назначенного на узле.

YAML
name: PostgreSQL Service Example
on: push
jobs:
  postgres-job:
    runs-on: ubuntu-latest
    services:
      postgres:
        image: postgres
        env:
          POSTGRES_PASSWORD: postgres
        options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
        ports:
          # Maps TCP port 5432 in the service container to a randomly chosen available port on the host.
          - 5432

    steps:
      - run: pg_isready -h localhost -p ${{ job.services.postgres.ports[5432] }}
      - run: echo "Run tests against Postgres"

Контекст jobs

Контекст jobs доступен только в повторно используемых рабочих процессах и может использоваться только для задания выходных данных для повторно используемого рабочего процесса. Дополнительные сведения см. в разделе Повторное использование рабочих процессов.

Имя свойстваТипОписание
jobsobjectДоступен только в повторно используемых рабочих процессах и может использоваться только для задания выходных данных для повторно используемого рабочего процесса. Этот объект содержит все свойства, перечисленные ниже.
jobs.<job_id>.resultstringРезультат задания в повторно используемом рабочем процессе. Возможные значения: success, failure, cancelled или skipped.
jobs.<job_id>.outputsobjectНабор выходных данных задания в повторно используемом рабочем процессе.
jobs.<job_id>.outputs.<output_name>stringЗначение определенных выходных данных для задания в повторно используемых рабочих процессах.

Пример содержимого контекста jobs

Этот пример контекста jobs содержит результат и выходные данные задания из повторно используемых рабочих процессов.

{
  "example_job": {
    "result": "success",
    "outputs": {
      "output1": "hello",
      "output2": "world"
    }
  }
}

Пример использования контекста jobs

В этом примере повторно используемый рабочий процесс использует контекст jobs для задания выходных данных для повторно используемого рабочего процесса. Обратите внимание, как выходные данные передаются из шагов в задание, а затем в триггер workflow_call. Дополнительные сведения см. в разделе Повторное использование рабочих процессов.

YAML
name: Reusable workflow

on:
  workflow_call:
    # Map the workflow outputs to job outputs
    outputs:
      firstword:
        description: "The first output string"
        value: ${{ jobs.example_job.outputs.output1 }}
      secondword:
        description: "The second output string"
        value: ${{ jobs.example_job.outputs.output2 }}

jobs:
  example_job:
    name: Generate output
    runs-on: ubuntu-latest
    # Map the job outputs to step outputs
    outputs:
      output1: ${{ steps.step1.outputs.firstword }}
      output2: ${{ steps.step2.outputs.secondword }}
    steps:
      - id: step1
        run: echo "firstword=hello" >> $GITHUB_OUTPUT
      - id: step2
        run: echo "secondword=world" >> $GITHUB_OUTPUT

Контекст steps

В контексте steps содержатся сведения об уже запущенных шагах в текущем задании с указанным свойством id.

Имя свойстваТипОписание
stepsobjectЭтот контекст меняется для каждого шага в задании. Доступ к этому контексту можно получить из любого шага задания. Этот объект содержит все свойства, перечисленные ниже.
steps.<step_id>.outputsobjectНабор выходных данных, определенных для шага. Дополнительные сведения см. в разделе Справочник по синтаксису метаданных.
steps.<step_id>.conclusionstringРезультат завершенного шага после применения continue-on-error. Возможные значения: success, failure, cancelled или skipped. Если шаг continue-on-error завершается сбоем, то outcome имеет значение failure, однако последнее свойство conclusion имеет значение success.
steps.<step_id>.outcomestringРезультат завершенного шага до применения continue-on-error. Возможные значения: success, failure, cancelled или skipped. Если шаг continue-on-error завершается сбоем, то outcome имеет значение failure, однако последнее свойство conclusion имеет значение success.
steps.<step_id>.outputs.<output_name>stringЗначение определенного набора выходных данных.

Пример содержимого контекста steps

В этом примере контекста steps показаны два предыдущих шага с заданным свойством id. У первого шага свойство id называлось checkout, у второго — generate_number. Выходными данными шага generate_number был номер random_number.

{
  "checkout": {
    "outputs": {},
    "outcome": "success",
    "conclusion": "success"
  },
  "generate_number": {
    "outputs": {
      "random_number": "1"
    },
    "outcome": "success",
    "conclusion": "success"
  }
}

Пример использования контекста steps

В этом примере рабочего процесса в качестве выходных данных одного шага создается случайное число, а на последующем шаге эти выходные данные считываются с помощью контекста steps.

YAML
name: Generate random failure
on: push
jobs:
  randomly-failing-job:
    runs-on: ubuntu-latest
    steps:
      - name: Generate 0 or 1
        id: generate_number
        run: echo "random_number=$(($RANDOM % 2))" >> $GITHUB_OUTPUT
      - name: Pass or fail
        run: |
          if [[ ${{ steps.generate_number.outputs.random_number }} == 0 ]]; then exit 0; else exit 1; fi

Контекст runner

Контекст runner содержит сведения о средстве выполнения, которое запускает текущее задание.

Имя свойстваТипОписание
runnerobjectЭтот контекст меняется для каждого задания в экземпляре рабочего процесса. Этот объект содержит все свойства, перечисленные ниже.
runner.namestringИмя средства выполнения задания. Это имя может не быть уникальным в рабочем процессе, выполняемом в качестве средств выполнения на уровне репозитория и организации, может использовать то же имя.
runner.osstringОперационная система средства выполнения тестов, выполняющего задание. Возможные значения: Linux, Windowsили macOS.
runner.archstringАрхитектура средства выполнения задания. Возможные значения: X86, X64, ARM или ARM64.
runner.tempstringПуть к временному каталогу в средстве выполнения. Этот каталог очищается в начале и конце каждого задания. Обратите внимание, что файлы не удаляются, если у учетной записи пользователя средства выполнения нет разрешения на их удаление.
runner.tool_cachestringПуть к каталогу, содержащему предустановленные средства для размещенных в GitHub средств выполнения. Дополнительные сведения см. в разделе Средства выполнения тестов, размещенные в GitHub.
runner.debugstringЭто делается только в том случае, если ведение журнала отладки включено и всегда имеет значение 1. Это может быть полезно в качестве индикатора для включения дополнительной отладки или подробного ведения журнала в ваших шагах задания.
runner.environmentstringСреда выполнения задания. Возможные значения: github-hosted для управляемых GitHub средств выполнения, предоставляемых GitHub, а self-hosted также для локальных модулей выполнения, настроенных владельцем репозитория.

Пример содержимого контекста runner

Следующий пример контекста взят из раннера, размещённого на Linux GitHub.

{
  "os": "Linux",
  "arch": "X64",
  "name": "GitHub Actions 2",
  "tool_cache": "/opt/hostedtoolcache",
  "temp": "/home/runner/work/_temp"
}

Пример использования контекста runner

В этом примере рабочего процесса с помощью контекста runner задается путь к временному каталогу для записи журналов, а если рабочий процесс завершается сбоем, эти журналы отправляются в качестве артефакта.

YAML
name: Build
on: push

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5
      - name: Build with logs
        run: |
          mkdir ${{ runner.temp }}/build_logs
          echo "Logs from building" > ${{ runner.temp }}/build_logs/build.logs
          exit 1
      - name: Upload logs on fail
        if: ${{ failure() }}
        uses: actions/upload-artifact@v4
        with:
          name: Build failure logs
          path: ${{ runner.temp }}/build_logs

Контекст secrets

Контекст secrets содержит имена и значения секретов, доступных для экземпляра рабочего процесса. Контекст secrets недоступен для составных действий из-за причин безопасности. Если вы хотите передать секрет составным действиям, это необходимо сделать явным образом в качестве входных данных. Дополнительные сведения о секретах см. в разделе Использование секретов в GitHub Actions.

          `GITHUB_TOKEN` — это секрет, который автоматически создается для каждого экземпляра рабочего процесса и всегда включается в контекст `secrets`. Дополнительные сведения см. в разделе [AUTOTITLE](/actions/security-guides/automatic-token-authentication).

Предупреждение

Если секрет используется в задании рабочего процесса, GitHub автоматически редактирует секреты, напечатанные в журнале. Не следует намеренно печатать секреты в журнале.

Имя свойстваТипОписание
secretsobjectЭтот контекст одинаков для каждого задания в экземпляре рабочего процесса. Доступ к этому контексту можно получить из любого шага задания. Этот объект содержит все свойства, перечисленные ниже.
secrets.GITHUB_TOKENstringАвтоматически созданный токен для каждого экземпляра рабочего процесса. Дополнительные сведения см. в разделе Использование GITHUB_TOKEN для проверки подлинности в рабочих процессах.
secrets.<secret_name>stringЗначение определенного секрета.

Пример содержимого контекста secrets

В следующем примере содержимого контекста secrets показан токен GITHUB_TOKEN с автоматической проверкой, а также два других секрета, доступных экземпляру рабочего процесса.

{
  "github_token": "***",
  "NPM_TOKEN": "***",
  "SUPERSECRET": "***"
}

Пример использования контекста secrets

В этом примере рабочий процесс использует интерфейс командной строки GitHub, для которого требуется GITHUB_TOKEN значение входного GH_TOKEN параметра:

YAML
name: Open new issue
on: workflow_dispatch

jobs:
  open-issue:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      issues: write
    steps:
      - run: |
          gh issue --repo ${{ github.repository }} \
            create --title "Issue title" --body "Issue body"
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Контекст strategy

Для рабочих процессов с матрицей контекст strategy содержит сведения о стратегии выполнения матрицы для текущего задания.

Имя свойстваТипОписание
strategyobjectЭтот контекст меняется для каждого задания в экземпляре рабочего процесса. Доступ к этому контексту можно получить из любого задания или шага рабочего процесса. Этот объект содержит все свойства, перечисленные ниже.
strategy.fail-fastbooleanПри оценке trueэтого все выполняемые задания отменяются, если любое задание в матрице завершается сбоем. Дополнительные сведения см. в разделе Синтаксис рабочего процесса для GitHub Actions.
strategy.job-indexnumberИндекс текущего задания в матрице.
          **Примечание.** Это число с отсчетом от нуля. Индекс первого задания в матрице равен `0`. |

| strategy.job-total | number | Общее количество заданий в матрице. Примечание. Это не число с отсчетом от нуля. Например, для матрицы с четырьмя заданиями job-total имеет значение 4. | | strategy.max-parallel | number | Максимальное число заданий, которые могут выполняться одновременно при использовании стратегии заданий matrix. Дополнительные сведения см. в разделе Синтаксис рабочего процесса для GitHub Actions. |

Пример содержимого контекста strategy

В следующем примере содержимое контекста strategy взято из последнего задания в матрице с четырьмя заданиям. Обратите внимание на разницу между числом job-index с отсчетом от нуля и свойством job-total, которое не отсчитывается от нуля.

{
  "fail-fast": true,
  "job-index": 3,
  "job-total": 4,
  "max-parallel": 4
}

Пример использования контекста strategy

В этом примере рабочего процесса с помощью свойства strategy.job-index задается уникальное имя файла журнала для каждого задания в матрице.

YAML
name: Test strategy
on: push

jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        test-group: [1, 2]
        node: [14, 16]
    steps:
      - run: echo "Mock test logs" > test-job-${{ strategy.job-index }}.txt
      - name: Upload logs
        uses: actions/upload-artifact@v4
        with:
          name: Build log for job ${{ strategy.job-index }}
          path: test-job-${{ strategy.job-index }}.txt

Контекст matrix

Для рабочих процессов с матрицей контекст matrix содержит свойства матрицы, определенные в файле рабочего процесса, который применяется к текущему заданию. Например, если настроить матрицу с ключами os и node, объект контекста matrix включает свойства os и node со значениями, которые используются для текущего задания.

В контексте matrix нет стандартных свойств, а есть только те, что определены в файле рабочего процесса.

Имя свойстваТипОписание
matrixobjectЭтот контекст доступен только для заданий в матрице и меняется для каждого задания в экземпляре рабочего процесса. Доступ к этому контексту можно получить из любого задания или шага рабочего процесса. Этот объект содержит свойства, перечисленные ниже.
matrix.<property_name>stringЗначение свойства matrix.

Пример содержимого контекста matrix

В следующем примере содержимое контекста matrix взято из задания в матрице, у которой есть свойства os и node, определенные в рабочем процессе. Задание выполняется с сочетанием ОС ubuntu-latest и Node.js версии 16.

{
  "os": "ubuntu-latest",
  "node": 16
}

Пример использования контекста matrix

В этом примере рабочий процесс создает матрицу с ключами os и node. В нем для каждого задания с помощью свойства matrix.os задается тип средства выполнения, а с помощью свойства matrix.node — версия Node.js.

YAML
name: Test matrix
on: push

jobs:
  build:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest]
        node: [14, 16]
    steps:
      - uses: actions/setup-node@v4
        with:
          node-version: ${{ matrix.node }}
      - name: Output node version
        run: node --version

Контекст needs

Контекст needs содержит выходные данные всех заданий, которые определяются как прямая зависимость текущего задания. Обратите внимание, что это неявно зависимые задания (например, зависимые задания зависимых заданий). Дополнительные сведения об определении зависимостей заданий см. в разделе Синтаксис рабочего процесса для GitHub Actions.

Имя свойстваТипОписание
needsobjectЭтот контекст заполняется только для экземпляров рабочих процессов с зависимыми заданиями и меняется для каждого задания в рабочем процессе. Доступ к этому контексту можно получить из любого задания или шага рабочего процесса. Этот объект содержит все свойства, перечисленные ниже.
needs.<job_id>objectОдно задание, от которого зависит текущее задание.
needs.<job_id>.outputsobjectНабор выходных данных задания, от которого зависит текущее задание.
needs.<job_id>.outputs.<output name>stringЗначение определенного набора выходных данных для задания, от которого зависит текущее задание.
needs.<job_id>.resultstringРезультат задания, от которого зависит текущее задание. Возможные значения: success, failure, cancelled или skipped.

Пример содержимого контекста needs

В следующем примере содержимого контекста needs показаны сведения о двух заданиях, от которых зависит текущее задание.

{
  "build": {
    "result": "success",
    "outputs": {
      "build_id": "123456"
    }
  },
  "deploy": {
    "result": "failure",
    "outputs": {}
  }
}

Пример использования контекста needs

В этом примере рабочего процесса есть три задания: build, которое выполняет сборку, deploy, которому требуется задание build, а также debug, которому требуются и задание build, и deploy и которое выполняется, только если в рабочем процессе произошел сбой. Задание deploy также использует контекст needs для доступа к выходным данным задания build.

YAML
name: Build and deploy
on: push

jobs:
  build:
    runs-on: ubuntu-latest
    outputs:
      build_id: ${{ steps.build_step.outputs.build_id }}
    steps:
      - name: Build
        id: build_step
        run: echo "build_id=$RANDOM" >> $GITHUB_OUTPUT
  deploy:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - run: echo "Deploying build ${{ needs.build.outputs.build_id }}"
  debug:
    needs: [build, deploy]
    runs-on: ubuntu-latest
    if: ${{ failure() }}
    steps:
      - run: echo "Failed to build and deploy"

Контекст inputs

Контекст inputs содержит входные свойства, передаваемые в действие, в повторно используемый рабочий процесс или в рабочий процесс, активируемый вручную. Для повторно используемых рабочих процессов входные имена и типы определяются в workflow_call конфигурации события повторно используемых рабочих процессов, а входные значения передаются во jobs.<job_id>.with внешний рабочий процесс, который вызывает повторно используемый рабочий процесс. Для рабочих процессов, активированных вручную, входные данные определяются в workflow_dispatch конфигурации события рабочего процесса.

Свойства в контексте inputs определяются в файле рабочего процесса. Они доступны только в повторно используемых рабочих процессах или в рабочем процессе, активируемом событием.workflow_dispatch

Имя свойстваТипОписание
inputsobjectЭтот контекст доступен только в повторно используемых рабочих процессах или в рабочем процессе, активируемом событиемworkflow_dispatch. Доступ к этому контексту можно получить из любого задания или шага рабочего процесса. Этот объект содержит свойства, перечисленные ниже.
inputs.<name>
          `string` или `number` или `boolean` или `choice` | Каждое входное значение, которое передается из внешнего рабочего процесса. |

Пример содержимого контекста inputs

Следующий пример содержимого контекста inputs взят из рабочего процесса, в котором определены входные данные build_id, deploy_target и perform_deploy.

{
  "build_id": 123456768,
  "deploy_target": "deployment_sys_1a",
  "perform_deploy": true
}

Пример использования контекста inputs в многократно используемом рабочем процессе

В этом примере многократно используемого рабочего процесса с помощью контекста inputs получаются значения входных данных build_id, deploy_target и perform_deploy, которые были переданы в многократно используемый рабочий процесс из рабочего процесса вызывающего объекта.

YAML
name: Reusable deploy workflow
on:
  workflow_call:
    inputs:
      build_id:
        required: true
        type: number
      deploy_target:
        required: true
        type: string
      perform_deploy:
        required: true
        type: boolean

jobs:
  deploy:
    runs-on: ubuntu-latest
    if: ${{ inputs.perform_deploy }}
    steps:
      - name: Deploy build to target
        run: echo "Deploying build:${{ inputs.build_id }} to target:${{ inputs.deploy_target }}"

Пример использования контекста inputs в рабочем процессе, активированном вручную

В этом примере рабочего процесса, активируемого событием workflow_dispatch, используется контекста inputs для получения значения входных данных build_id, deploy_target и perform_deploy, которые были переданы в рабочий процесс.

YAML
on:
  workflow_dispatch:
    inputs:
      build_id:
        required: true
        type: string
      deploy_target:
        required: true
        type: string
      perform_deploy:
        required: true
        type: boolean

jobs:
  deploy:
    runs-on: ubuntu-latest
    if: ${{ inputs.perform_deploy }}
    steps:
      - name: Deploy build to target
        run: echo "Deploying build:${{ inputs.build_id }} to target:${{ inputs.deploy_target }}"

Дополнительные материалы

  •         [AUTOTITLE](/actions/concepts/workflows-and-actions/contexts)