Zum Hauptinhalt springen

Tasks

Ein Task ist eine einzelne Ausführung eines Task Template: ein Durchlauf eines Ansible-Playbooks, einer Terraform-/OpenTofu-/Terragrunt-Konfiguration oder eines Bash-, PowerShell- oder Python-Skripts. Jeder Task hat sein eigenes Log, seinen Status und seine Details, sodass Sie jederzeit sehen können, was ausgeführt wurde, wann, von wem und mit welchem Stand des Repositorys.

Einen Task starten​

Sie benötigen im Projekt die Rolle Task Runner oder höher (siehe Teams). Starten Sie einen Task an einer von zwei Stellen:

  • Klicken Sie unter Task Templates auf die Play-Schaltfläche in der Zeile des Task Template.
  • Klicken Sie auf der Seite des Task Template auf die Schaltfläche in der oberen rechten Ecke. Ihre Bezeichnung hängt vom Typ des Task Template ab: Run, Build oder Deploy.

Beide öffnen den Dialog New Task. Sein Inhalt hängt von der Anwendung und von den im Task Template aktivierten Optionen ab.

Dialog New Task für ein Ansible-Task-Template

FeldAngezeigt fürBeschreibung
Messagealle Task TemplatesOptionale Notiz, die beim Task gespeichert und in der History und in Benachrichtigungen angezeigt wird.
Build VersionDeploy-Task-TemplatesWelcher Build bereitgestellt wird. Standardmäßig ist der letzte erfolgreiche Build ausgewählt. Siehe Build- und Deploy-Task-Templates.
Survey-VariablenTask Templates mit Survey-VariablenEin Eingabefeld pro Variable; erforderliche Variablen müssen ausgefüllt werden.
Dry Run --check, Diff --diffAnsibleDas Playbook im Check-Modus ausführen oder Dateiänderungen anzeigen. Weitere Ansible-Prompts (Limit, Tags, Skip tags, Debug) erscheinen, wenn sie im Task Template aktiviert sind, siehe Prompts.
Plan, Destroy, Auto Approve, Upgrade, ReconfigureTerraform, OpenTofu, TerragruntNur plan ausführen, -destroy, -auto-approve, -upgrade oder -reconfigure hinzufügen. Siehe Terraform/OpenTofu.
Branch, Inventory, CLI argsjede AnwendungDie Werte des Task Template für diesen Durchlauf überschreiben. Jede Überschreibung muss in den Einstellungen des Task Template erlaubt sein.

Dialog New Task für ein Terraform-Task-Template

Klicken Sie auf Run (oder Build / Deploy), um den Task in die Warteschlange zu stellen.

Warteschlange und parallele Ausführung​

Tasks desselben Task Template laufen nacheinander, sofern im Task Template nicht Allow parallel tasks aktiviert ist. Das Projekt kann die Gesamtzahl der laufenden Tasks außerdem mit Max number of parallel tasks in den Projekteinstellungen begrenzen. Ein Task, der warten muss, bleibt im Status waiting und startet automatisch, sobald ein Platz frei ist.

Task-Fenster​

Ein Klick auf einen Task an beliebiger Stelle in der Oberfläche öffnet das Task-Fenster. Die Kopfzeile zeigt das Task Template, die Task-Nummer, die Commit-Nachricht des Repository-Stands, das Status-Badge, wer den Task gestartet hat und wann, sowie die Dauer. Das Pfeilsymbol vergrößert das Fenster auf den Vollbildmodus.

Task-Log

TabInhalt
LogLive-Ausgabe des Tasks mit Zeitstempeln. Das Log wird gestreamt, während der Task läuft. Raw log öffnet die unverarbeitete Ausgabe in einem neuen Browser-Tab.
DetailsInformationen zum Task Template (Anwendung, Task Template), Commit-Informationen (Nachricht und Hash) und Ausführungsinformationen: Nachricht, Erstellungs-, Start- und Endzeit, Dauer und, falls gesetzt, der Runner, der Branch, das Limit und die für den Durchlauf verwendeten Variablen.
Summary (Pro)Bei Ansible-Tasks: wie viele Hosts erfolgreich abgeschlossen haben und wie viele fehlgeschlagen sind, mit einer Tabelle der fehlgeschlagenen Tasks pro Server.

Task-Details

Task-Zusammenfassung

Task-Status​

StatusBedeutung
waitingDer Task ist in der Warteschlange: ein anderer Task desselben Task Template läuft, das Projektlimit ist erreicht oder es ist noch kein Runner verfügbar.
startingEin Runner hat den Task übernommen und bereitet das Repository und die Umgebung vor.
waiting_confirmationDas Werkzeug hat eine Frage gestellt und wartet auf einen Benutzer, zum Beispiel terraform apply ohne Auto Approve oder ein Skript, das Eingaben liest. Verwenden Sie Confirm oder Reject im Task-Fenster.
confirmedEin Benutzer hat die Frage bestätigt; der Task wird fortgesetzt.
rejectedEin Benutzer hat die Frage abgelehnt; der Task endet.
runningDas Playbook oder Skript wird ausgeführt.
stoppingEin Stopp wurde angefordert und der Prozess wird beendet.
stoppedDer Task wurde von einem Benutzer gestoppt.
successMit Exit-Code 0 beendet.
errorMit einem Exit-Code ungleich null beendet oder nicht gestartet. Wird in der Oberfläche als Failed angezeigt.

Tasks stoppen​

Öffnen Sie das Task-Fenster eines laufenden Tasks und klicken Sie auf Stop. Semaphore sendet ein Beendigungssignal und der Task geht in den Status stopping, während der Prozess beendet wird. Reagiert der Prozess nicht, ändert sich die Schaltfläche zu Force Stop; klicken Sie darauf, um den Prozess sofort abzubrechen.

Um alle laufenden und wartenden Tasks eines Task Template zu stoppen, öffnen Sie die Seite des Task Template und verwenden Sie Stop all. Das Dropdown bietet sowohl Stop als auch Force stop.

Menü Stop all

Einen Task erneut ausführen​

Im Tab Tasks eines Task Template hat jede Zeile eine Rerun-Schaltfläche. Sie öffnet den Dialog New Task mit der Nachricht und den Parametern dieses Tasks.

Tasks eines Task Template mit Rerun-Schaltflächen

Wo Tasks aufgelistet werden​

  • Dashboard → History: alle Tasks des Projekts, siehe History.
  • Seite des Task Template → Tasks: Tasks eines einzelnen Task Template.
  • Task Templates: Klappen Sie eine Zeile mit dem Pfeil links auf, um die neuesten Tasks des Task Template zu sehen, ohne die Liste zu verlassen.

Umgebungsvariablen​

Jeder Task erhält unabhängig von der verwendeten Anwendung (Ansible, Terraform, Bash, PowerShell oder Python) Variablen, die ihn in Semaphore identifizieren:

VariableWert
SEMAPHORE_TASK_IDID des Tasks
SEMAPHORE_PROJECT_IDID des Projekts, zu dem der Task gehört
SEMAPHORE_WORKFLOW_IDID des Workflows, wenn der Task ein Knoten eines Workflow-Laufs ist
SEMAPHORE_WORKFLOW_RUN_IDID des Workflow-Laufs, zu dem der Task gehört
SEMAPHORE_WORKFLOW_VERSIONVersion des Workflow-Laufs, zu dem der Task gehört, falls der Lauf eine hat
SEMAPHORE_WORKFLOW_URLLink zur Seite des Workflow-Laufs (erfordert web_host in der Serverkonfiguration)
SEMAPHORE_OUTPUTS_FILEPfad der Datei, in die ein Workflow-Task seine Outputs schreibt

Die Workflow-Variablen sind nicht gesetzt, wenn der Task nicht durch einen Workflow gestartet wurde.

Die vollständige Liste, einschließlich der nur für eine App gesetzten Variablen und der Hilfsvariablen für git und SSH, steht in der Referenz: Umgebungsvariablen von Tasks.

Weitere Variablen werden in bestimmten Fällen gesetzt:

  • SEMAPHORE_TASK_TYPE, SEMAPHORE_TASK_INCOMING_VERSION, SEMAPHORE_TASK_TARGET_VERSION und die Variablen der Gruppe SEMAPHORE_TASK_DETAILS_* für Build- und Deploy-Task-Templates.
  • SEMAPHORE_JWT, wenn das Template ein JWT ausstellt.

Beispiel für 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

Aufbewahrung von Logs​

Tasks und Logs werden standardmäßig dauerhaft aufbewahrt. Verwenden Sie max_tasks_per_template, um nur die neuesten Tasks jedes Task Template zu behalten, siehe History.