{"meta":{"title":"Como executar scripts antes ou depois de um trabalho","intro":"Os scripts podem ser executado automaticamente em um executor autohospedado, diretamente antes ou depois de um trabalho.","product":"GitHub Actions","breadcrumbs":[{"href":"/pt/enterprise-cloud@latest/actions","title":"GitHub Actions"},{"href":"/pt/enterprise-cloud@latest/actions/how-tos","title":"Instruções"},{"href":"/pt/enterprise-cloud@latest/actions/how-tos/manage-runners","title":"Gerenciar corredores"},{"href":"/pt/enterprise-cloud@latest/actions/how-tos/manage-runners/self-hosted-runners","title":"Executores auto-hospedados"},{"href":"/pt/enterprise-cloud@latest/actions/how-tos/manage-runners/self-hosted-runners/run-scripts","title":"Executar scripts"}],"documentType":"article"},"body":"# Como executar scripts antes ou depois de um trabalho\n\nOs scripts podem ser executado automaticamente em um executor autohospedado, diretamente antes ou depois de um trabalho.\n\n## Sobre os scripts pré e pós-trabalho\n\nVocê 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.\n\nOs 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](#triggering-the-scripts) abaixo.\n\nHá suporte para as seguintes linguagens de script:\n\n* **Bash**: usa `bash` e pode usar `sh` como alternativa. É executado por meio de `-e {pathtofile}`.\n* **PowerShell**: usa `pwsh` e pode usar `powershell` como alternativa. É executado por meio de `-command \\\". '{pathtofile}'\\\"`.\n\n## Como escrever os scripts\n\nSeus scripts personalizados podem usar os seguintes recursos:\n\n* **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 [Referência de variáveis](/pt/enterprise-cloud@latest/actions/reference/workflows-and-actions/variables#default-environment-variables).\n* **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](/pt/enterprise-cloud@latest/actions/reference/workflows-and-actions/workflow-commands). Os scripts também podem usar arquivos de ambiente. Para obter mais informações, confira [Arquivos de ambiente](/pt/enterprise-cloud@latest/actions/reference/workflows-and-actions/workflow-commands#environment-files).\n\nSeus arquivos de script precisam usar uma extensão de arquivo para a linguagem relevante, como `.sh` ou `.ps1`, para serem executados com êxito.\n\n> \\[!NOTE]\n> Evite usar seus scripts para exibir informações confidenciais no console, pois qualquer pessoa com acesso de leitura ao repositório poderá ver a saída nos logs da interface do usuário.\n\n### Como tratar os códigos de saída\n\nPara 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 registros de execução de fluxo de trabalho](/pt/enterprise-cloud@latest/actions/how-tos/monitor-workflows/use-workflow-run-logs#viewing-logs-to-diagnose-failures).\n\nNão há suporte para a configuração [`continue-on-error`](/pt/enterprise-cloud@latest/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idcontinue-on-error) para uso por esses scripts.\n\n## Acionando os scripts\n\nOs 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.\n\n> \\[!NOTE]\n> Os scripts disparados são processados de maneira síncrona, ou seja, bloquearão a execução do trabalho enquanto estiverem em execução.\n\nOs scripts são executados automaticamente quando o executor tem as seguintes variáveis de ambiente que contêm um caminho absoluto para o script:\n\n* `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.\n* `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.\n\nPara 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). Observe que qualquer alteração no arquivo `.env` exigirá a reinicialização do executor.\nPor 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:\n\n```bash\nACTIONS_RUNNER_HOOK_JOB_STARTED=/opt/runner/cleanup_script.sh\n```\n\n> \\[!NOTE]\n> 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.\n\n## Solução de problemas\n\n### Permissão negada\n\nSe 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.\n\n```bash\nchmod +x PATH/TO/FILE\n```\n\nPara obter informações sobre como usar fluxos de trabalho para executar scripts, confira [Adicionar scripts ao seu fluxo de trabalho](/pt/enterprise-cloud@latest/actions/how-tos/write-workflows/choose-what-workflows-do/add-scripts).\n\n### Sem configuração de tempo limite\n\nAtualmente, 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.\n\n### Examinar o log de execução do fluxo de trabalho\n\nPara 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 registros de execução de fluxo de trabalho](/pt/enterprise-cloud@latest/actions/how-tos/monitor-workflows/use-workflow-run-logs#viewing-logs-to-diagnose-failures)."}