Skip to main content
Select language: current language is Russian
Поискайте или спросите Copilot
Открыть меню
Свернуть боковую панельРазвернуть боковую панель

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

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

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

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

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

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

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

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

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

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

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

Примечание.

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

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

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

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

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

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

Примечание.

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

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

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

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

ACTIONS_RUNNER_HOOK_JOB_STARTED=/opt/runner/cleanup_script.sh

Примечание.

Скрипт, определенный в ACTIONS_RUNNER_HOOK_JOB_COMPLETED , выполняется в конце задания до завершения задания. Это делает его непригодным для вариантов использования, которые могут прерывать выполнение, например удаление компьютера runner в рамках реализации автомасштабирования.

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

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

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

chmod +x PATH/TO/FILE

Сведения об использовании рабочих процессов для выполнения скриптов см. в разделе Добавление сценариев в рабочий процесс.

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

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

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

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

Morty Proxy This is a proxified and sanitized view of the page, visit original site.