Pular para o conteúdo principal

Runners

O comando semaphore runner executa o Semaphore em modo runner e gerencia o registro de um runner no servidor. Um runner executa tarefas em uma máquina separada do servidor do Semaphore.

semaphore runner --help
dica

Para saber como os runners funcionam e como configurar o lado do servidor, consulte o guia Runners.

Executar semaphore runner sem subcomando apenas exibe a ajuda. Ele possui os seguintes subcomandos:

ComandoFinalidade
runner setupCria interativamente um arquivo de configuração do runner (e registra se um token for fornecido).
runner registerRegistra o runner no servidor usando um token de registro.
runner startExecuta em modo runner e começa a aceitar tarefas.
runner unregisterRemove o registro do runner do servidor.

Todos os subcomandos aceitam a flag global --config <path> para apontar para o arquivo de configuração do runner (e --no-config para executar apenas a partir de variáveis de ambiente).

Configuração interativa (runner setup)

Conduz uma configuração interativa, grava um arquivo de configuração do runner e, se um token de registro estiver disponível (informado durante as perguntas ou definido via SEMAPHORE_RUNNER_REGISTRATION_TOKEN), registra o runner no servidor imediatamente.

semaphore runner setup --config /path/to/config.runner.json

Passe --config <path> para escolher onde o arquivo de configuração será gravado. Sem essa flag, a configuração pergunta por um diretório de saída (padrão: o diretório atual) e grava config.runner.json nele.

Ao concluir, ele exibe os comandos para iniciar o runner, por exemplo:

# Run in the foreground:
./semaphore runner start --config /path/to/config.runner.json

# Run as a daemon:
nohup ./semaphore runner start --config /path/to/config.runner.json &

Depois, você pode editar manualmente o arquivo de configuração gerado em vez de executar a configuração novamente.

Opções de configuração do runner

Campos do bloco runner do arquivo de configuração:

CampoVariável de ambienteDescrição
token / token_fileSEMAPHORE_RUNNER_TOKEN / SEMAPHORE_RUNNER_TOKEN_FILEToken de autenticação do runner (emitido no registro).
SEMAPHORE_RUNNER_REGISTRATION_TOKENToken de registro. Apenas variável de ambiente; nunca é gravado no arquivo.
registration_token_fileSEMAPHORE_RUNNER_REGISTRATION_TOKEN_FILECaminho de um arquivo que contém o token de registro.
nameSEMAPHORE_RUNNER_NAMENome do runner exibido no servidor.
tagsSEMAPHORE_RUNNER_TAGSArray JSON de tags para o roteamento de runners do projeto.
webhookSEMAPHORE_RUNNER_WEBHOOKURL que o servidor chama quando uma tarefa é enfileirada para este runner.
enabledSEMAPHORE_RUNNER_ENABLEDSe o runner aceita tarefas.
project_idSEMAPHORE_RUNNER_PROJECT_IDID do projeto para um runner de nível de projeto. Omita para um runner global.
check_interval_secondsSEMAPHORE_RUNNER_CHECK_INTERVAL_SECONDSIntervalo de consulta em segundos. Padrão: 1.
max_parallel_tasksSEMAPHORE_RUNNER_MAX_PARALLEL_TASKSNúmero máximo de tarefas simultâneas. Padrão: 9999.
one_offSEMAPHORE_RUNNER_ONE_OFFEncerra após processar um job. Útil para runners iniciados sob demanda por um webhook.

Consulte Runners para detalhes de configuração e Configuração para a lista completa de opções.

Registrando um runner (runner register)

Registra o runner no servidor e armazena o token de runner emitido no arquivo de configuração (sobrescrevendo qualquer token existente). O servidor precisa ter um runner_registration_token configurado; você passa esse mesmo token aqui.

# Token read from a file:
semaphore runner register --registration-token-file /path/to/token --config /path/to/config.runner.json

# Token piped from stdin:
echo "$REGISTRATION_TOKEN" | semaphore runner register --stdin-registration-token --config /path/to/config.runner.json

# Token from the environment:
SEMAPHORE_RUNNER_REGISTRATION_TOKEN="$REGISTRATION_TOKEN" semaphore runner register --config /path/to/config.runner.json
FlagDescrição
--registration-token-file <path>Lê o token de registro de um arquivo.
--stdin-registration-tokenLê o token de registro da entrada padrão.
--name <name>Nome com o qual o runner será registrado.
--tags <tags>Tags do runner, separadas por vírgula ou repetindo a flag (por exemplo, --tags a,b ou --tags a --tags b).
--webhook <url>URL do webhook do runner.
--enabledHabilita ou desabilita o runner no servidor. O padrão é true; passe --enabled=false para registrar um runner desabilitado.
--project-id <id>Registra como um runner de nível de projeto para o projeto informado. Se omitido (ou 0), o runner é registrado como um runner global.

Apenas as flags que você realmente passa são aplicadas; --name, --webhook, --tags e --enabled sobrescrevem os valores correspondentes do arquivo de configuração e do ambiente somente quando definidas na linha de comando.

De onde vem o token de registro

Ao registrar, o Semaphore obtém o token de registro da primeira fonte disponível, nesta ordem:

  1. A flag --registration-token-file.
  2. A configuração registration_token_file no arquivo de configuração (ou SEMAPHORE_RUNNER_REGISTRATION_TOKEN_FILE).
  3. A entrada padrão, quando --stdin-registration-token é passada.
  4. A variável de ambiente SEMAPHORE_RUNNER_REGISTRATION_TOKEN.

Um arquivo de token que existe, mas está vazio, é um erro. Se nenhuma fonte fornecer um token, o registro é tentado sem token e o servidor o rejeita.

Iniciando um runner (runner start)

Inicia o runner, conecta-se ao servidor e começa a aceitar tarefas. Este é o comando que você executa para manter um runner registrado online.

semaphore runner start --config /path/to/config.runner.json
FlagDescrição
--auto-registerRegistra o runner antes de iniciar, caso ainda não esteja registrado (ou seja, a configuração não possui token de runner).
--registerAlias de --auto-register.

Com --auto-register, se a configuração não tiver token, o Semaphore lê o token de registro de registration_token_file (ou SEMAPHORE_RUNNER_REGISTRATION_TOKEN_FILE) ou de SEMAPHORE_RUNNER_REGISTRATION_TOKEN, depois tenta o registro novamente a cada 5 segundos até ter sucesso, recarrega a configuração e inicia. Isso é conveniente para runners que se registram sozinhos na primeira inicialização, por exemplo em contêineres.

runner start não aceita --registration-token-file nem --stdin-registration-token; essas flags pertencem apenas ao runner register.

Cancelando o registro de um runner (runner unregister)

Remove o registro do runner do servidor, usando o token de runner do arquivo de configuração.

semaphore runner unregister --config /path/to/config.runner.json