Skip to main content

Выпуск GitHub AE сейчас ограничен.

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

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

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

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

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

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

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

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

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

  • Переменные. Скрипты имеют доступ к переменным по умолчанию. Полные полезные данные события веб-перехватчика можно найти в GITHUB_EVENT_PATH. Дополнительные сведения см. в разделе «AUTOTITLE».
  • Команды рабочего процесса: скрипты могут использовать команды рабочего процесса. Дополнительные сведения см. в разделе "Команды рабочего процесса для 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 в каталоге приложений локального запуска (то есть каталог, в который вы скачали и распаковали программное обеспечение runner). Например, следующая .env запись будет автоматически запускать скрипт, сохраненный на /opt/runner/cleanup_script.sh компьютере runner перед выполнением каждого задания:

ACTIONS_RUNNER_HOOK_JOB_STARTED=/opt/runner/cleanup_script.sh

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

Отказ в разрешении

Если при попытке запустить скрипт возникает ошибка "отказано в разрешении", убедитесь, что скрипт является исполняемым. Например, в терминале в Linux или MacOS можно использовать следующую команду для создания исполняемого файла.

chmod +x PATH/TO/FILE

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

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

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

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

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