Pular para o conteúdo principal

Tarefas

Uma tarefa é uma única execução de um modelo de tarefa: uma execução de um playbook do Ansible, de uma configuração Terraform/OpenTofu/Terragrunt ou de um script Bash, PowerShell ou Python. Cada tarefa mantém o seu próprio log, status e detalhes, de modo que você sempre pode ver o que foi executado, quando, por quem e com qual revisão do repositório.

Iniciando uma tarefa​

Você precisa do papel Task Runner ou superior no projeto (consulte Equipes). Inicie uma tarefa em um de dois lugares:

  • Em Modelos de Tarefa, clique no botão play na linha do modelo.
  • Na página do modelo, clique no botão no canto superior direito. O seu rótulo depende do tipo de modelo: Run, Build ou Deploy.

Ambos abrem a janela New Task. O seu conteúdo depende da aplicação e das opções ativadas no modelo.

Janela New Task de um modelo Ansible

CampoExibido paraDescrição
Messagetodos os modelosObservação opcional armazenada com a tarefa e exibida no histórico e nos alertas.
Build Versionmodelos de deployQual build implantar. O build bem-sucedido mais recente é selecionado por padrão. Consulte Modelos de build e deploy.
Variáveis de formuláriomodelos com variáveis de formulárioUma entrada por variável; as variáveis obrigatórias devem ser preenchidas.
Dry Run --check, Diff --diffAnsibleExecuta o playbook em modo de verificação ou mostra as alterações nos arquivos. Outros prompts do Ansible (Limit, Tags, Skip tags, Debug) aparecem quando ativados no modelo, consulte Prompts.
Plan, Destroy, Auto Approve, Upgrade, ReconfigureTerraform, OpenTofu, TerragruntExecuta apenas o plan, adiciona -destroy, -auto-approve, -upgrade ou -reconfigure. Consulte Terraform/OpenTofu.
Branch, Inventory, CLI argsqualquer aplicaçãoSubstitui os valores do modelo nesta execução. Cada substituição deve ser permitida nas configurações do modelo.

Janela New Task de um modelo Terraform

Clique em Run (ou Build / Deploy) para colocar a tarefa na fila.

Fila e execução paralela​

As tarefas do mesmo modelo são executadas uma após a outra, a menos que Allow parallel tasks esteja ativado no modelo. O projeto também pode limitar o número total de tarefas em execução com Max number of parallel tasks nas configurações do projeto. Uma tarefa que precisa esperar permanece no status waiting e inicia automaticamente quando há uma vaga livre.

Janela da tarefa​

Clicar em uma tarefa em qualquer lugar da interface abre a janela da tarefa. O cabeçalho mostra o modelo, o número da tarefa, a mensagem de commit da revisão do repositório, o selo de status, quem iniciou a tarefa e quando, e a duração. O ícone de setas expande a janela para tela cheia.

Log da tarefa

AbaConteúdo
LogSaída ao vivo da tarefa com marcações de tempo. O log é transmitido enquanto a tarefa é executada. Raw log abre a saída não processada em uma nova aba do navegador.
DetailsInformações do modelo (aplicação, modelo), informações do commit (mensagem e hash) e informações da execução: mensagem, horários de criação, início e fim, duração e, quando definidos, o runner, o branch, o limit e as variáveis usadas na execução.
Summary (Pro)Para tarefas do Ansible: quantos hosts terminaram com OK e quantos falharam, com uma tabela das tarefas que falharam por servidor.

Detalhes da tarefa

Resumo da tarefa

Status das tarefas​

StatusSignificado
waitingA tarefa está na fila: outra tarefa do mesmo modelo está em execução, o limite do projeto foi atingido ou nenhum runner está disponível ainda.
startingUm runner assumiu a tarefa e está preparando o repositório e o ambiente.
waiting_confirmationA ferramenta fez uma pergunta e aguarda um usuário, por exemplo terraform apply sem Auto Approve ou um script que lê uma entrada. Use Confirm ou Reject na janela da tarefa.
confirmedUm usuário confirmou a pergunta; a tarefa continua.
rejectedUm usuário rejeitou a pergunta; a tarefa termina.
runningO playbook ou o script está sendo executado.
stoppingUma parada foi solicitada e o processo está sendo encerrado.
stoppedA tarefa foi interrompida por um usuário.
successTerminou com código de saída 0.
errorTerminou com um código de saída diferente de zero ou não conseguiu iniciar. Exibido como Failed na interface.

Interrompendo tarefas​

Abra a janela de uma tarefa em execução e clique em Stop. O Semaphore envia um sinal de encerramento e a tarefa passa para o status stopping enquanto o processo termina. Se o processo não reagir, o botão muda para Force Stop; clique nele para encerrar o processo imediatamente.

Para interromper todas as tarefas em execução e na fila de um modelo, abra a página do modelo e use Stop all. O menu suspenso oferece tanto Stop como Force stop.

Menu Stop all

Executando uma tarefa novamente​

Na aba Tasks de um modelo, cada linha tem um botão de reexecução. Ele abre a janela New Task com a mensagem e os parâmetros daquela tarefa já preenchidos.

Tarefas do modelo com os botões de reexecução

Onde as tarefas são listadas​

  • Dashboard → History: todas as tarefas do projeto, consulte Histórico.
  • Página do modelo → Tasks: tarefas de um único modelo.
  • Modelos de Tarefa: expanda uma linha com a seta à esquerda para ver as tarefas mais recentes do modelo sem sair da lista.

Variáveis de ambiente​

Todas as tarefas, independentemente da aplicação (Ansible, Terraform, Bash, PowerShell ou Python), recebem variáveis que as identificam no Semaphore:

VariávelValor
SEMAPHORE_TASK_IDID da tarefa
SEMAPHORE_PROJECT_IDID do projeto ao qual a tarefa pertence
SEMAPHORE_WORKFLOW_IDID do workflow, quando a tarefa é um nó de uma execução de workflow
SEMAPHORE_WORKFLOW_RUN_IDID da execução do workflow à qual a tarefa pertence
SEMAPHORE_WORKFLOW_VERSIONVersão da execução do workflow à qual a tarefa pertence, quando houver
SEMAPHORE_WORKFLOW_URLLink para a página da execução do workflow (requer web_host na configuração do servidor)
SEMAPHORE_OUTPUTS_FILECaminho do arquivo no qual uma tarefa de workflow grava as suas saídas

As variáveis de workflow não estão presentes quando a tarefa não foi iniciada por um workflow.

A lista completa, incluindo as variáveis definidas apenas para um app e as variáveis auxiliares para git e SSH, está na referência: Variáveis de ambiente da tarefa.

Outras variáveis são definidas em casos específicos:

  • SEMAPHORE_TASK_TYPE, SEMAPHORE_TASK_INCOMING_VERSION, SEMAPHORE_TASK_TARGET_VERSION e a família SEMAPHORE_TASK_DETAILS_* para modelos de build e deploy.
  • SEMAPHORE_JWT quando o modelo emite um JWT.

Exemplo para Bash:

echo "Task $SEMAPHORE_TASK_ID of project $SEMAPHORE_PROJECT_ID"
if [ -n "$SEMAPHORE_WORKFLOW_RUN_ID" ]; then
echo "Started by workflow run: $SEMAPHORE_WORKFLOW_URL"
fi

Retenção de logs​

Por padrão, as tarefas e os logs são mantidos para sempre. Use max_tasks_per_template para manter apenas as tarefas mais recentes de cada modelo, consulte Histórico.