Aller au contenu principal

Tâches

Une tâche est une exécution unique d'un modèle de tâche : une exécution d'un playbook Ansible, d'une configuration Terraform/OpenTofu/Terragrunt, ou d'un script Bash, PowerShell ou Python. Chaque tâche conserve son propre journal, son statut et ses détails, de sorte que vous pouvez toujours voir ce qui a été exécuté, quand, par qui et avec quelle révision du dépôt.

Démarrer une tâche​

Vous devez disposer du rôle Task Runner ou supérieur dans le projet (voir Équipes). Démarrez une tâche depuis l'un des deux emplacements suivants :

  • Dans Modèles de tâches, cliquez sur le bouton lecture dans la ligne du modèle.
  • Sur la page du modèle, cliquez sur le bouton en haut à droite. Son libellé dépend du type de modèle : Run, Build ou Deploy.

Les deux ouvrent la boîte de dialogue Nouvelle tâche. Son contenu dépend de l'application et des options activées dans le modèle.

Boîte de dialogue Nouvelle tâche pour un modèle Ansible

ChampAffiché pourDescription
Messagetous les modèlesNote facultative enregistrée avec la tâche et affichée dans l'historique et les alertes.
Build Versionmodèles de déploiementQuel build déployer. Le dernier build réussi est sélectionné par défaut. Voir Modèles de build et de déploiement.
Variables de questionnairemodèles avec des variables de questionnaireUn champ de saisie par variable ; les variables obligatoires doivent être remplies.
Dry Run --check, Diff --diffAnsibleExécuter le playbook en mode vérification ou afficher les modifications de fichiers. Les autres invites Ansible (Limit, Tags, Skip tags, Debug) apparaissent lorsqu'elles sont activées dans le modèle, voir Invites.
Plan, Destroy, Auto Approve, Upgrade, ReconfigureTerraform, OpenTofu, TerragruntExécuter uniquement plan, ajouter -destroy, -auto-approve, -upgrade ou -reconfigure. Voir Terraform/OpenTofu.
Branche, Inventaire, Arguments CLItoute applicationRemplacer les valeurs du modèle pour cette exécution. Chaque remplacement doit être autorisé dans les paramètres du modèle.

Boîte de dialogue Nouvelle tâche pour un modèle Terraform

Cliquez sur Run (ou Build / Deploy) pour placer la tâche dans la file d'attente.

File d'attente et exécution parallèle​

Les tâches d'un même modèle s'exécutent l'une après l'autre, sauf si Autoriser les tâches parallèles est activé dans le modèle. Le projet peut également limiter le nombre total de tâches en cours d'exécution avec Nombre maximal de tâches parallèles dans les paramètres du projet. Une tâche qui doit attendre reste au statut waiting et démarre automatiquement dès qu'un emplacement est libre.

Fenêtre de tâche​

Cliquer sur une tâche n'importe où dans l'interface ouvre la fenêtre de tâche. L'en-tête affiche le modèle, le numéro de la tâche, le message de commit de la révision du dépôt, le badge de statut, qui a démarré la tâche et quand, ainsi que la durée. L'icône en forme de flèches agrandit la fenêtre en plein écran.

Journal de la tâche

OngletContenu
LogSortie en direct de la tâche avec horodatage. Le journal est diffusé pendant l'exécution de la tâche. Raw log ouvre la sortie brute dans un nouvel onglet du navigateur.
DétailsInformations sur le modèle (application, modèle), informations sur le commit (message et hachage) et informations d'exécution : message, dates de création, de démarrage et de fin, durée et, le cas échéant, le runner, la branche, la limite et les variables utilisées pour l'exécution.
Résumé (Pro)Pour les tâches Ansible : combien d'hôtes se sont terminés correctement et combien ont échoué, avec un tableau des tâches en échec par serveur.

Détails de la tâche

Résumé de la tâche

Statuts des tâches​

StatutSignification
waitingLa tâche est dans la file d'attente : une autre tâche du même modèle est en cours d'exécution, la limite du projet est atteinte, ou aucun runner n'est encore disponible.
startingUn runner a pris la tâche et prépare le dépôt et l'environnement.
waiting_confirmationL'outil a posé une question et attend un utilisateur, par exemple terraform apply sans Auto Approve ou un script qui lit une entrée. Utilisez Confirmer ou Rejeter dans la fenêtre de tâche.
confirmedUn utilisateur a confirmé la question ; la tâche continue.
rejectedUn utilisateur a rejeté la question ; la tâche se termine.
runningLe playbook ou le script est en cours d'exécution.
stoppingUn arrêt a été demandé et le processus est en cours de terminaison.
stoppedLa tâche a été arrêtée par un utilisateur.
successTerminée avec le code de sortie 0.
errorTerminée avec un code de sortie non nul ou n'a pas pu démarrer. Affiché comme Failed dans l'interface.

Arrêter des tâches​

Ouvrez la fenêtre de tâche d'une tâche en cours d'exécution et cliquez sur Stop. Semaphore envoie un signal de terminaison et la tâche passe au statut stopping pendant que le processus se termine. Si le processus ne réagit pas, le bouton devient Force Stop ; cliquez dessus pour tuer immédiatement le processus.

Pour arrêter toutes les tâches en cours d'exécution et en file d'attente d'un modèle, ouvrez la page du modèle et utilisez Tout arrêter. Le menu déroulant propose à la fois Stop et Force stop.

Menu Tout arrêter

Relancer une tâche​

Dans l'onglet Tâches d'un modèle, chaque ligne possède un bouton de relance. Il ouvre la boîte de dialogue Nouvelle tâche avec le message et les paramètres de cette tâche pré-remplis.

Tâches du modèle avec les boutons de relance

Où les tâches sont listées​

  • Tableau de bord → Historique : toutes les tâches du projet, voir Historique.
  • Page du modèle → Tâches : les tâches d'un seul modèle.
  • Modèles de tâches : dépliez une ligne avec la flèche à gauche pour voir les dernières tâches du modèle sans quitter la liste.

Variables d'environnement​

Chaque tâche, quelle que soit son application (Ansible, Terraform, Bash, PowerShell ou Python), reçoit des variables qui l'identifient dans Semaphore :

VariableValeur
SEMAPHORE_TASK_IDID de la tâche
SEMAPHORE_PROJECT_IDID du projet auquel appartient la tâche
SEMAPHORE_WORKFLOW_IDID du workflow, lorsque la tâche est un nœud d'une exécution de workflow
SEMAPHORE_WORKFLOW_RUN_IDID de l'exécution du workflow à laquelle appartient la tâche
SEMAPHORE_WORKFLOW_VERSIONVersion de l'exécution du workflow à laquelle appartient la tâche, si elle en a une
SEMAPHORE_WORKFLOW_URLLien vers la page de l'exécution du workflow (nécessite web_host dans la configuration du serveur)
SEMAPHORE_OUTPUTS_FILEChemin du fichier dans lequel une tâche de workflow écrit ses sorties

Les variables de workflow sont absentes si la tâche n'a pas été démarrée par un workflow.

La liste complète, y compris les variables définies pour une seule app et les variables auxiliaires pour git et SSH, se trouve dans la référence : Variables d'environnement des tâches.

D'autres variables sont définies dans certains cas :

Exemple pour 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

Conservation des journaux​

Les tâches et les journaux sont conservés indéfiniment par défaut. Utilisez max_tasks_per_template pour ne conserver que les dernières tâches de chaque modèle, voir Historique.