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.

| Campo | Mostrato per | Descrizione |
|---|---|---|
| Message | tutti i Task Template | Nota facoltativa memorizzata con il Task e mostrata nella cronologia e nelle notifiche. |
| Build Version | Task Template di deploy | Quale build distribuire. Per impostazione predefinita è selezionata l'ultima build riuscita. Vedere Task Template di build e deploy. |
| Variabili di survey | Task Template con variabili di survey | Un input per ogni variabile; le variabili obbligatorie devono essere compilate. |
Dry Run --check, Diff --diff | Ansible | Esegue 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, Reconfigure | Terraform, OpenTofu, Terragrunt | Esegue solo plan, aggiunge -destroy, -auto-approve, -upgrade oppure -reconfigure. Vedere Terraform/OpenTofu. |
| Branch, Inventory, CLI args | qualsiasi applicazione | Sovrascrive i valori del Task Template per questa esecuzione. Ogni override deve essere consentito nelle impostazioni del Task Template. |

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.

| Scheda | Contenuto |
|---|---|
| Log | Output 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. |
| Details | Informazioni 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. |


Stati dei Task
| Stato | Significato |
|---|---|
waiting | Il Task è in coda: è in esecuzione un altro Task dello stesso Task Template, è stato raggiunto il limite del Project oppure non è ancora disponibile alcun Runner. |
starting | Un Runner ha preso in carico il Task e sta preparando il Repository e l'ambiente. |
waiting_confirmation | Lo 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. |
confirmed | Un utente ha confermato la domanda; il Task continua. |
rejected | Un utente ha rifiutato la domanda; il Task termina. |
running | Il playbook o lo script è in esecuzione. |
stopping | È stata richiesta l'interruzione e il processo è in fase di terminazione. |
stopped | Il Task è stato interrotto da un utente. |
success | Terminato con codice di uscita 0. |
error | Terminato 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.
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.

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:
| Variabile | Valore |
|---|---|
SEMAPHORE_TASK_ID | ID del Task |
SEMAPHORE_PROJECT_ID | ID del Project a cui appartiene il Task |
SEMAPHORE_WORKFLOW_ID | ID del workflow, quando il Task è un nodo di un'esecuzione del workflow |
SEMAPHORE_WORKFLOW_RUN_ID | ID dell'esecuzione del workflow a cui appartiene il Task |
SEMAPHORE_WORKFLOW_VERSION | Versione dell'esecuzione del workflow a cui appartiene il Task, se presente |
SEMAPHORE_WORKFLOW_URL | Link alla pagina dell'esecuzione del workflow (richiede web_host nella configurazione del server) |
SEMAPHORE_OUTPUTS_FILE | Percorso 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:
SEMAPHORE_TASK_TYPE,SEMAPHORE_TASK_INCOMING_VERSION,SEMAPHORE_TASK_TARGET_VERSIONe la famigliaSEMAPHORE_TASK_DETAILS_*per i Task Template di build e deploy.SEMAPHORE_JWTquando il Task Template emette un JWT.
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.