Skip to main content
Мы публикуем частые обновления нашей документации, и перевод этой страницы может все еще выполняться. Актуальные сведения см. в документации на английском языке.
В настоящее время GitHub AE находится в ограниченном выпуске.

Выполнение скриптов до или после задания

Скрипты можно автоматически выполнять на локально размещенном средстве выполнении тестов сразу до или после задания.

Примечание. Эта функция в настоящее время доступна в виде бета-версии и может быть изменена.

Сведения о выполнении скриптов до и после задания

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

Пользовательские скрипты активируются автоматически при задании определенной переменной среды в средстве выполнения. Переменная среды должна содержать абсолютный путь к скрипту. Дополнительные сведения см. в разделе Активация скриптов ниже.

Поддерживаются следующие языки написания скриптов:

  • Bash: использует bash и может переключаться на sh. Запускается путем выполнения команды -e {pathtofile}.
  • PowerShell: использует pwsh и может переключаться на powershell. Запускается путем выполнения команды -command \". '{pathtofile}'\".

Написание скриптов

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

  • Переменные. Скрипты имеют доступ к переменным по умолчанию. Полные полезные данные события веб-перехватчика можно найти в GITHUB_EVENT_PATH. Дополнительные сведения см. в разделе Переменные.
  • Команды рабочего процесса: скрипты могут использовать команды рабочего процесса. Дополнительные сведения см. в разделе Команды рабочего процесса для GitHub Actions, за исключением save-state и set-output, которые не поддерживаются этими скриптами. Скрипты также могут использовать файлы среды. Дополнительные сведения см. в разделе Файлы среды.

Файлы скриптов должны использовать расширение для соответствующего языка, например .sh или .ps1, для успешного выполнения.

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

Обработка кодов выхода

Для скриптов, выполняемых перед заданием, код выхода 0 указывает, что скрипт успешно завершен и далее будет запущено задание. При любом другом коде выхода задание не будет запущено и будет помечено как завершившееся сбоем. Чтобы просмотреть результаты скриптов, выполняемых перед заданием, проверьте наличие записей Set up runner в журналах. Дополнительные сведения о проверке журналов см. в разделе Использование журналов выполнения рабочих процессов.

Использование параметра continue-on-error этими скриптами не поддерживается.

Активация скриптов

Пользовательские скрипты должны находиться в средстве выполнения, но не должны храниться в каталоге приложения actions-runner. Скрипты выполняются в контексте безопасности учетной записи службы, в котором запущена служба средства выполнения.

Примечание. Активированные скрипты обрабатываются синхронно, поэтому на это время выполнение задания блокируется.

Скрипты выполняются автоматически, если в средстве выполнения имеются следующие переменные среды, содержащие абсолютный путь к скрипту:

  • ACTIONS_RUNNER_HOOK_JOB_STARTED. Скрипт, определенный в этой переменной среды, активируется при назначении задания средству выполнения, но перед запуском задания.
  • ACTIONS_RUNNER_HOOK_JOB_COMPLETED. Скрипт, определенный в этой переменной среды, активируется после завершения обработки задания.

Чтобы задать эти переменные среды, можно добавить их либо в операционную систему, либо в файл с именем .env в каталоге приложения локального средства выполнения. Например, следующая запись .env будет автоматически запускать скрипт cleanup_script.sh перед каждым выполнением задания:

ACTIONS_RUNNER_HOOK_JOB_STARTED=/cleanup_script.sh

Устранение неполадок

Отсутствие параметра времени ожидания

В настоящее время для скриптов, выполняемых посредством ACTIONS_RUNNER_HOOK_JOB_STARTED или ACTIONS_RUNNER_HOOK_JOB_COMPLETED, отсутствует параметр времени ожидания. Поэтому в скрипт может потребоваться добавить логику для обработки времени ожидания.

Просмотр журнала выполнения рабочего процесса

Чтобы проверить, выполняются ли скрипты, можно просмотреть журналы задания. Скрипты будут указаны в отдельных шагах для Set up runner или Complete runner в зависимости от того, какая переменная среды активирует скрипт. Дополнительные сведения о проверке журналов см. в разделе Использование журналов выполнения рабочих процессов.