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