GitLab
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ération | Type | Description |
|---|---|---|
| Lister les projets | action | Projets 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 manuelle | action | Crée un ticket dans un projet. |
| Obtenir un ticket | action | Lit un ticket par son numéro dans le projet (iid). |
| Mettre à jour un ticketeffet externe : demande une confirmation avant une exécution manuelle | action | Modifie 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 manuelle | action | Ajoute une note à un ticket ou à une merge request. |
| Créer une merge requesteffet externe : demande une confirmation avant une exécution manuelle | action | Ouvre une merge request entre deux branches. |
| Obtenir une merge request | action | Lit 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 manuelle | action | Lance 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 pipeline | action | Statut, durée et, en option, les jobs (jobs en échec mis en évidence). |
| Push sur une branche | déclencheur | Démarre le workflow à chaque push sur le projet (filtrable par branche, côté GitLab). |
| Ticket créé ou modifié | déclencheur | Démarre le workflow quand un ticket est ouvert, modifié, fermé ou rouvert. |
| Événement de merge request | déclencheur | Démarre le workflow sur l'ouverture, la mise à jour, l'approbation, la fusion ou la fermeture d'une merge request. |
| Changement de statut de pipeline | déclencheur | Dé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
| Champ | Description |
|---|---|
| URL de l'instance | https://gitlab.com ou l'adresse de votre instance, sans /api/v4. |
| Type de jeton | Personnel, de projet ou de groupe (information pour vos équipes : l'en-tête envoyé est le même). |
| Jeton d'accès | Chiffré, masqué dans l'interface, les journaux, les erreurs et les exports. |
| Autorité de certification | Facultatif : 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
| Action | Appel GitLab | Remarques | |
|---|---|---|---|
| Lister les projets | GET /projects | 100 par page, 500 au plus (truncated indique une liste incomplète). | |
| Créer un ticket | POST /projects/:id/issues | Libellés séparés par des virgules. | |
| Obtenir un ticket | GET /projects/:id/issues/:iid | ||
| Mettre à jour un ticket | PUT /projects/:id/issues/:iid | Seuls les champs renseignés sont envoyés ; fermer / rouvrir. | |
| Ajouter un commentaire | `POST /projects/:id/(issues | merge_requests)/:iid/notes` | Note interne possible. |
| Créer une merge request | POST /projects/:id/merge_requests | Brouillon : préfixe Draft:. | |
| Obtenir une merge request | GET /projects/:id/merge_requests/:iid | detailed_merge_status indique si elle est fusionnable. | |
| Déclencher un pipeline | POST /projects/:id/pipeline | Variables : objet JSON clé → valeur. | |
| Obtenir le statut d'un pipeline | GET /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 GitLab | Filtre |
|---|---|---|
| Push sur une branche | Push events | Branche (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 request | Merge request events | Actions : ouverte, mise à jour, approuvée, fusionnée, fermée, rouverte. |
| Changement de statut de pipeline | Pipeline events | Statuts et branche. |
Fonctionnement :
- À 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. - Chaque appel est authentifié : l'en-tête
X-Gitlab-Tokenest comparé au secret (comparaison à temps constant). Ce secret n'est jamais enregistré dans l'historique des exécutions. - 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).
- Les événements filtrés sont ignorés sans exécution ni décompte.
- À 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
| Statut | Message affiché |
|---|---|
| 401 | Identifiants refusés ou expirés : renouvelez le jeton. |
| 403 | Permissions insuffisantes : vérifiez la portée et le rôle (Maintainer pour les webhooks). |
| 404 | Projet, ticket ou pipeline introuvable (ou invisible pour le jeton). |
| 409 | Conflit (ex. merge request déjà ouverte pour ces branches). |
| 429 / 5xx | Erreur 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.mdpour la procédure de test réel sur une instance dédiée.