Passa al contenuto principale

Task

Un Task è una singola esecuzione di un Task Template: un'esecuzione di un playbook Ansible, di una configurazione Terraform/OpenTofu/Terragrunt oppure di uno script Bash, PowerShell o Python. Ogni Task conserva il proprio log, stato e dettagli, così è sempre possibile vedere cosa è stato eseguito, quando, da chi e con quale revisione del Repository.

Avvio di un Task​

È necessario disporre del ruolo Task Runner o superiore nel Project (vedere Team). Un Task può essere avviato da due punti:

  • In Task Templates, fare clic sul pulsante play nella riga del Task Template.
  • Nella pagina del Task Template, fare clic sul pulsante nell'angolo in alto a destra. La sua etichetta dipende dal tipo di Task Template: Run, Build oppure Deploy.

Entrambi aprono la finestra di dialogo New Task. Il suo contenuto dipende dall'applicazione e dalle opzioni abilitate nel Task Template.

Finestra di dialogo New Task per un Task Template Ansible

CampoMostrato perDescrizione
Messagetutti i Task TemplateNota facoltativa memorizzata con il Task e mostrata nella cronologia e nelle notifiche.
Build VersionTask Template di deployQuale build distribuire. Per impostazione predefinita è selezionata l'ultima build riuscita. Vedere Task Template di build e deploy.
Variabili di surveyTask Template con variabili di surveyUn input per ogni variabile; le variabili obbligatorie devono essere compilate.
Dry Run --check, Diff --diffAnsibleEsegue il playbook in modalità check oppure mostra le modifiche ai file. Gli altri prompt di Ansible (Limit, Tags, Skip tags, Debug) compaiono quando sono abilitati nel Task Template, vedere Prompt.
Plan, Destroy, Auto Approve, Upgrade, ReconfigureTerraform, OpenTofu, TerragruntEsegue solo plan, aggiunge -destroy, -auto-approve, -upgrade oppure -reconfigure. Vedere Terraform/OpenTofu.
Branch, Inventory, CLI argsqualsiasi applicazioneSovrascrive i valori del Task Template per questa esecuzione. Ogni override deve essere consentito nelle impostazioni del Task Template.

Finestra di dialogo New Task per un Task Template Terraform

Fare clic su Run (oppure Build / Deploy) per mettere il Task in coda.

Coda ed esecuzione parallela​

I Task dello stesso Task Template vengono eseguiti uno dopo l'altro, a meno che nel Task Template non sia abilitata l'opzione Allow parallel tasks. Il Project può inoltre limitare il numero totale di Task in esecuzione con Max number of parallel tasks nelle impostazioni del Project. Un Task che deve attendere rimane nello stato waiting e si avvia automaticamente quando si libera uno slot.

Finestra del Task​

Facendo clic su un Task in qualsiasi punto dell'interfaccia si apre la finestra del Task. L'intestazione mostra il Task Template, il numero del Task, il messaggio di commit della revisione del Repository, il badge dello stato, chi ha avviato il Task e quando, oltre alla durata. L'icona con le frecce espande la finestra a schermo intero.

Log del Task

SchedaContenuto
LogOutput in tempo reale del Task con i timestamp. Il log viene trasmesso in streaming durante l'esecuzione del Task. Raw log apre l'output non elaborato in una nuova scheda del browser.
DetailsInformazioni sul Task Template (applicazione, Task Template), informazioni sul commit (messaggio e hash) e informazioni sull'esecuzione: messaggio, data di creazione, di avvio e di fine, durata e, quando impostati, il Runner, il branch, il limit e le variabili utilizzate per l'esecuzione.
Summary (Pro)Per i Task Ansible: quanti host sono terminati con esito OK e quanti sono falliti, con una tabella dei task falliti per server.

Dettagli del Task

Riepilogo del Task

Stati dei Task​

StatoSignificato
waitingIl Task è in coda: è in esecuzione un altro Task dello stesso Task Template, è stato raggiunto il limite del Project oppure non è ancora disponibile alcun Runner.
startingUn Runner ha preso in carico il Task e sta preparando il Repository e l'ambiente.
waiting_confirmationLo strumento ha posto una domanda e attende un utente, ad esempio terraform apply senza Auto Approve oppure uno script che legge un input. Utilizzare Confirm o Reject nella finestra del Task.
confirmedUn utente ha confermato la domanda; il Task continua.
rejectedUn utente ha rifiutato la domanda; il Task termina.
runningIl playbook o lo script è in esecuzione.
stoppingÈ stata richiesta l'interruzione e il processo è in fase di terminazione.
stoppedIl Task è stato interrotto da un utente.
successTerminato con codice di uscita 0.
errorTerminato con un codice di uscita diverso da zero oppure non è riuscito ad avviarsi. Nell'interfaccia viene mostrato come Failed.

Interruzione dei Task​

Aprire la finestra del Task di un Task in esecuzione e fare clic su Stop. Semaphore invia un segnale di terminazione e il Task passa allo stato stopping mentre il processo si chiude. Se il processo non reagisce, il pulsante diventa Force Stop; facendo clic su di esso il processo viene terminato immediatamente.

Per interrompere tutti i Task in esecuzione e in coda di un Task Template, aprire la pagina del Task Template e utilizzare Stop all. Il menu a discesa offre sia Stop sia Force stop.

Menu Stop all

Riesecuzione di un Task​

Nella scheda Tasks di un Task Template ogni riga dispone di un pulsante di riesecuzione. Apre la finestra di dialogo New Task con il messaggio e i parametri di quel Task già compilati.

Task del Task Template con i pulsanti di riesecuzione

Dove sono elencati i Task​

  • Dashboard → History: tutti i Task del Project, vedere Cronologia.
  • Pagina del Task Template → Tasks: i Task di un singolo Task Template.
  • Task Templates: espandere una riga con la freccia a sinistra per vedere gli ultimi Task del Task Template senza uscire dall'elenco.

Variabili d'ambiente​

Ogni Task, indipendentemente dall'applicazione (Ansible, Terraform, Bash, PowerShell o Python), riceve variabili che lo identificano in Semaphore:

VariabileValore
SEMAPHORE_TASK_IDID del Task
SEMAPHORE_PROJECT_IDID del Project a cui appartiene il Task
SEMAPHORE_WORKFLOW_IDID del workflow, quando il Task è un nodo di un'esecuzione del workflow
SEMAPHORE_WORKFLOW_RUN_IDID dell'esecuzione del workflow a cui appartiene il Task
SEMAPHORE_WORKFLOW_VERSIONVersione dell'esecuzione del workflow a cui appartiene il Task, se presente
SEMAPHORE_WORKFLOW_URLLink alla pagina dell'esecuzione del workflow (richiede web_host nella configurazione del server)
SEMAPHORE_OUTPUTS_FILEPercorso del file in cui un Task del workflow scrive i propri output

Le variabili del workflow non sono presenti se il Task non è stato avviato da un workflow.

L'elenco completo, incluse le variabili impostate per una sola app e le variabili ausiliarie per git e SSH, è nel riferimento: Variabili d'ambiente delle attività.

Altre variabili vengono impostate in casi specifici:

Esempio per 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

Conservazione dei log​

Per impostazione predefinita i Task e i log vengono conservati per sempre. Utilizzare max_tasks_per_template per conservare solo gli ultimi Task di ciascun Task Template, vedere Cronologia.