Skip to main content

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

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

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

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

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

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

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

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

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

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

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

Note

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

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

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

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

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

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

Note

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

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

  • 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

Note

Скрипт, определенный в 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 в зависимости от того, какая переменная среды активирует скрипт. Дополнительные сведения о проверке журналов см. в разделе Использование журналов выполнения рабочих процессов.