Aller au contenu

GitLab

Maintenu par OrkyvoVersion 1.0.0Inclus dans l'offre DevOps9 actions · 4 déclencheurs

Projets, tickets, merge requests et pipelines GitLab.com ou autohébergé, avec webhooks vérifiés.

Intégration maintenue par Orkyvo pour GitLab.com et les instances GitLab autohébergées (Community et Enterprise Edition, API REST v4). Gérez tickets, commentaires, merge requests et pipelines, et déclenchez vos workflows sur un push, un ticket, une merge request ou un changement de statut de pipeline. Les webhooks sont créés et retirés automatiquement, vérifiés par jeton secret et dédoublonnés.

Opérations

OpérationTypeDescription
Lister les projetsactionProjets accessibles au jeton, du plus récemment actif au plus ancien (pagination bornée).
Créer un ticketeffet externe : demande une confirmation avant une exécution manuelleactionCrée un ticket dans un projet.
Obtenir un ticketactionLit un ticket par son numéro dans le projet (iid).
Mettre à jour un ticketeffet externe : demande une confirmation avant une exécution manuelleactionModifie titre, description, libellés, assignés ou état (fermer / rouvrir). Seuls les champs renseignés sont modifiés.
Ajouter un commentaireeffet externe : demande une confirmation avant une exécution manuelleactionAjoute une note à un ticket ou à une merge request.
Créer une merge requesteffet externe : demande une confirmation avant une exécution manuelleactionOuvre une merge request entre deux branches.
Obtenir une merge requestactionLit une merge request par son numéro (iid), avec son état de fusion.
Déclencher un pipelineeffet externe : demande une confirmation avant une exécution manuelleactionLance un pipeline sur une branche ou un tag, avec des variables. Jamais relancé automatiquement après une réponse perdue.
Obtenir le statut d'un pipelineactionStatut, durée et, en option, les jobs (jobs en échec mis en évidence).
Push sur une branchedéclencheurDémarre le workflow à chaque push sur le projet (filtrable par branche, côté GitLab).
Ticket créé ou modifiédéclencheurDémarre le workflow quand un ticket est ouvert, modifié, fermé ou rouvert.
Événement de merge requestdéclencheurDémarre le workflow sur l'ouverture, la mise à jour, l'approbation, la fusion ou la fermeture d'une merge request.
Changement de statut de pipelinedéclencheurDémarre le workflow quand un pipeline change de statut (ex. en échec), avec les jobs en échec.

Connexion

Jeton d'accès personnel, de projet ou de groupe. Portée « api » pour les actions d'écriture et les webhooks, « read_api » suffit pour la lecture. Le jeton est chiffré et n'apparaît jamais dans les journaux.

Documentation

GitLab

Intégration maintenue par Orkyvo (non certifiée par GitLab Inc.) pour GitLab.com et les instances autohébergées (CE / EE, API REST v4, GitLab 15 ou ultérieur recommandé).

Connexion

ChampDescription
URL de l'instancehttps://gitlab.com ou l'adresse de votre instance, sans /api/v4.
Type de jetonPersonnel, de projet ou de groupe (information pour vos équipes : l'en-tête envoyé est le même).
Jeton d'accèsChiffré, masqué dans l'interface, les journaux, les erreurs et les exports.
Autorité de certificationFacultatif : certificat PEM de l'autorité interne qui signe le certificat de l'instance. La vérification TLS n'est jamais désactivée.

Permissions nécessaires (principe du moindre privilège)

  • Lecture seule (lister, obtenir) : portée read_api, rôle *Reporter*.
  • Tickets, commentaires, merge requests, déclenchement de pipeline : portée api, rôle *Developer*.
  • Déclencheurs (création automatique du webhook de projet) : portée api, rôle *Maintainer* sur le projet.
  • Préférez un jeton de projet ou un compte de service dédié à Orkyvo, avec une date d'expiration.

« Tester la connexion » lit uniquement GET /user, GET /version et GET /personal_access_tokens/self (portées et expiration du jeton) : aucune écriture.

Instance privée

Une instance sur un réseau privé (ex. 10.20.0.15) est refusée par défaut. Un administrateur de la plateforme peut autoriser la plage d'adresses et le port pour cette organisation et cette connexion uniquement (Administration → Réseaux privés). La boucle locale, les adresses de lien local et les points de métadonnées cloud restent toujours refusés ; chaque redirection est revérifiée.

Actions

ActionAppel GitLabRemarques
Lister les projetsGET /projects100 par page, 500 au plus (truncated indique une liste incomplète).
Créer un ticketPOST /projects/:id/issuesLibellés séparés par des virgules.
Obtenir un ticketGET /projects/:id/issues/:iid
Mettre à jour un ticketPUT /projects/:id/issues/:iidSeuls les champs renseignés sont envoyés ; fermer / rouvrir.
Ajouter un commentaire`POST /projects/:id/(issuesmerge_requests)/:iid/notes`Note interne possible.
Créer une merge requestPOST /projects/:id/merge_requestsBrouillon : préfixe Draft:.
Obtenir une merge requestGET /projects/:id/merge_requests/:iiddetailed_merge_status indique si elle est fusionnable.
Déclencher un pipelinePOST /projects/:id/pipelineVariables : objet JSON clé → valeur.
Obtenir le statut d'un pipelineGET /projects/:id/pipelines/:id (+ /jobs)failedJobs liste les jobs en échec bloquants.

Le projet accepte l'identifiant numérique ou le chemin complet groupe/sous-groupe/projet : il est encodé (groupe%2Fprojet), jamais interprété comme des segments d'URL. Le sélecteur propose vos projets (recherche) ; la saisie manuelle et les données des étapes précédentes ({{ $json.project }}) restent possibles.

Pas de relance aveugle : une création (ticket, merge request, pipeline) n'est jamais relancée automatiquement après une réponse réseau perdue ; l'étape échoue avec « Résultat incertain » pour que vous vérifiiez dans GitLab. Les lectures sont relancées sur 429 / 502 / 503 / 504 en respectant Retry-After.

Déclencheurs

DéclencheurÉvénement GitLabFiltre
Push sur une branchePush eventsBranche (filtre appliqué par GitLab, jokers acceptés).
Ticket créé ou modifiéIssues events (y compris confidentiels)Actions : ouvert, modifié, fermé, rouvert.
Événement de merge requestMerge request eventsActions : ouverte, mise à jour, approuvée, fusionnée, fermée, rouverte.
Changement de statut de pipelinePipeline eventsStatuts et branche.

Fonctionnement :

  1. À la publication du workflow, Orkyvo crée un webhook sur le projet (POST /projects/:id/hooks) avec l'URL du workflow et un jeton secret aléatoire, vérification TLS activée.
  2. Chaque appel est authentifié : l'en-tête X-Gitlab-Token est comparé au secret (comparaison à temps constant). Ce secret n'est jamais enregistré dans l'historique des exécutions.
  3. Les livraisons répétées (nouvelles tentatives de GitLab, renvois manuels) sont dédoublonnées par une clé stable dérivée de l'événement (ex. identifiant du pipeline + statut).
  4. Les événements filtrés sont ignorés sans exécution ni décompte.
  5. À la désactivation, le webhook est supprimé de GitLab ; une republication identique réutilise le webhook existant.

Prérequis : le serveur GitLab doit pouvoir joindre l'URL publique d'Orkyvo en HTTPS (pare-feu sortant de l'instance autohébergée).

Exemple de sortie (statut de pipeline)

{
"project": { "id": 1234, "path_with_namespace": "acme/api" },
"pipeline": { "id": 88001, "status": "failed", "ref": "main", "url": "https://gitlab.example.com/acme/api/-/pipelines/88001" },
"failedJobs": [{ "id": 9001, "name": "test:unit", "stage": "test", "failureReason": "script_failure" }]
}

Erreurs

StatutMessage affiché
401Identifiants refusés ou expirés : renouvelez le jeton.
403Permissions insuffisantes : vérifiez la portée et le rôle (Maintainer pour les webhooks).
404Projet, ticket ou pipeline introuvable (ou invisible pour le jeton).
409Conflit (ex. merge request déjà ouverte pour ces branches).
429 / 5xxErreur temporaire : les lectures sont relancées, les écritures ne le sont pas.

Limites

  • 500 projets au plus par liste, 200 jobs au plus par pipeline.
  • Les tests automatisés du nœud utilisent des réponses simulées ; voir docs/INTEGRATIONS.md pour la procédure de test réel sur une instance dédiée.