Sobre os scripts pré e pós-trabalho
Você pode executar scripts automaticamente em um executor auto-hospedado, antes da execução de um trabalho ou após a conclusão da execução dele. Use esses scripts para dar suporte aos requisitos do trabalho, como a criação ou a destruição de um ambiente de executor ou a limpeza de diretórios. Use também esses scripts para acompanhar a telemetria de como os executores são usados.
Os scripts personalizados são disparados automaticamente quando uma variável de ambiente específica é definida no executor: a variável de ambiente precisa conter o caminho absoluto para o script. Para obter mais informações, confira Como disparar os scripts abaixo.
Há suporte para as seguintes linguagens de script:
- Bash: usa
bash
e pode usarsh
como alternativa. É executado com a execução de-e {pathtofile}
. - PowerShell: usa
pwsh
e pode usarpowershell
como alternativa. É executado com a execução de-command \". '{pathtofile}'\"
.
Como escrever os scripts
Seus scripts personalizados podem usar os seguintes recursos:
- Variáveis: os scripts têm acesso às variáveis padrão. O conteúdo completo do evento de webhook pode ser encontrado em
GITHUB_EVENT_PATH
. Para saber mais, confira Armazenar informações em variáveis. - Comandos de fluxo de trabalho: os scripts podem usar comandos de fluxo de trabalho. Para saber mais, confira Comandos de fluxo de trabalho para o GitHub Actions. Os scripts também podem usar arquivos de ambiente. Para obter mais informações, confira Arquivos de ambiente.
Seus arquivos de script precisam usar uma extensão de arquivo para a linguagem relevante, como .sh
ou .ps1
, para serem executados com êxito.
Note
Evite usar os scripts para gerar informações confidenciais para o console, pois qualquer pessoa com acesso de leitura no repositório poderá ver a saída nos logs da interface do usuário.
Como tratar os códigos de saída
Para scripts de pré-trabalho, o código de saída 0
indica que o script foi concluído com sucesso e o trabalho continuará sendo executado. Se houver outro código de saída, o trabalho não será executado e será marcado como com falha. Para ver os resultados dos scripts de pré-trabalho, verifique se há entradas Set up runner
nos logs. Para obter mais informações sobre como verificar os logs, confira Usando logs de execução de fluxo de trabalho.
Não há suporte para a configuração continue-on-error
para uso por esses scripts.
Como disparar os scripts
Os scripts personalizados precisam estar localizados no executor, mas não precisam ser armazenados no diretório do aplicativo actions-runner
. Os scripts são executados no contexto de segurança da conta de serviço que executa o serviço de executor.
Note
Os scripts disparados são processados de maneira síncrona, ou seja, bloquearão a execução do trabalho enquanto estiverem em execução.
Os scripts são executados automaticamente quando o executor tem as seguintes variáveis de ambiente que contêm um caminho absoluto para o script:
ACTIONS_RUNNER_HOOK_JOB_STARTED
: o script definido nessa variável de ambiente é disparado quando um trabalho é atribuído a um executor, mas antes do trabalho começar a ser executado.ACTIONS_RUNNER_HOOK_JOB_COMPLETED
: o script definido nessa variável de ambiente é disparado no final do trabalho, após a execução de todas as etapas definidas no fluxo de trabalho.
Para definir essas variáveis de ambiente, você pode adicioná-las ao sistema operacional ou adicioná-las a um arquivo chamado .env
no diretório do aplicativo do executor auto-hospedado (ou seja, o diretório no qual você baixou e descompactou o software executor). Por exemplo, a seguinte entrada .env
fará com que o executor execute automaticamente um script, salvo como /opt/runner/cleanup_script.sh
no computador executor, antes de cada tarefa ser executada:
ACTIONS_RUNNER_HOOK_JOB_STARTED=/opt/runner/cleanup_script.sh
Note
O script definido em ACTIONS_RUNNER_HOOK_JOB_COMPLETED
é executado no final do trabalho, antes da conclusão do trabalho. Isso o torna inadequado para casos de uso que podem interromper um executor, como excluir o computador executor como parte de uma implementação de dimensionamento automático.
Solução de problemas
Permissão negada
Se você receber um erro de "permissão negada" ao tentar executar um script, verifique se o script é executável. Por exemplo, em um terminal no Linux ou no macOS, você pode usar o seguinte comando para tornar um arquivo executável.
chmod +x PATH/TO/FILE
Para obter informações sobre como usar fluxos de trabalho para executar scripts, confira Adicionar scripts ao seu fluxo de trabalho.
Sem configuração de tempo limite
Atualmente, não há nenhuma configuração de tempo limite disponível para os scripts executados por ACTIONS_RUNNER_HOOK_JOB_STARTED
ou ACTIONS_RUNNER_HOOK_JOB_COMPLETED
. Como resultado, você pode considerar a adição de tratamento do tempo limite ao script.
Como examinar o log de execução do fluxo de trabalho
Para confirmar se os scripts estão em execução, você pode revisar os logs desse trabalho. Os scripts serão listados em etapas separadas para Set up runner
ou Complete runner
, dependendo do variável de ambiente que dispara o script. Para obter mais informações sobre como verificar os logs, confira Usando logs de execução de fluxo de trabalho.