Aller au contenu principal

Voir ce qui s'est passé sur un composant

L'onglet Événements d'un composant est son journal : chaque push, tag, release, pipeline, synchro Argo CD et quality gate que ses outils ont signalés, jour par jour, le plus récent en haut. Quand un push vient de la release d'un autre composant, la ligne le dit et t'y mène.

Ce que ça affiche, et pour qui​

  • Les événements de ce composant seulement, venus des outils auxquels son catalog-info.yaml le relie.
  • Tous ceux qui voient le composant dans le catalogue voient son onglet. Un lien vers un autre composant n'apparaît que si tu vois aussi cet autre composant.
  • Un outil à webhook y apparaît dès son premier webhook reçu. Un outil relevé toutes les 5 minutes y apporte aussi ses 7 derniers jours (voir Sans webhook).

Avant de commencer​

  • Tu es administrateur pour allumer l'onglet et poser les webhooks.

  • Le composant porte l'annotation d'au moins un outil dans son catalog-info.yaml :

    apiVersion: backstage.io/v1alpha1
    kind: Component
    metadata:
    name: shop-app
    annotations:
    gitlab.com/project-slug: acme/shop-app # GitLab
    github.com/project-slug: acme/shop-app # GitHub
    argocd/app-name: shop-app # Argo CD
    sonarqube.org/project-key: acme-shop-app # SonarQube
    spec:
    type: service
    lifecycle: production
    owner: group:default/platform

    Ne garde que les lignes des outils que tu utilises.

1. 🔌 Allumer le plugin​

  1. Dans la barre latérale, en bas, clique sur Administration.

  2. Sous Plateforme, clique sur Plugins.

  3. Sur la carte Événements (Ce qui s'est passé sur un composant, jour par jour : pushs, pipelines, synchros.), clique sur l'interrupteur Activer Événements. Il s'allume.

La page de ton composant a maintenant un onglet Événements, à côté de ses autres onglets.

2. 🔗 Faire envoyer ses événements à GitLab​

  1. Dans Administration, sous Plateforme, clique sur Connexions de l'entreprise, puis sur l'onglet Webhooks.

  2. Sur la carte GitLab, clique sur Configurer.

  3. Dans la fenêtre Configurer le secret GitLab, à côté d'Adresse du webhook, clique sur Copier l'adresse. L'adresse finit par /api/orion-events/gitlab, par exemple https://astrolabe.exemple.com/api/orion-events/gitlab.

  4. Dans Secret du webhook, tape un long texte aléatoire, par exemple un-long-texte-aleatoire, puis clique sur Enregistrer.

  5. Dans ton projet GitLab, ouvre Settings › Webhooks et ajoute un webhook :

    • URL : l'adresse copiée ;
    • Secret token : le même secret ;
    • Trigger : coche Push events, Tag push events, Releases events, Pipeline events et Job events.

    Cette étape dans GitLab n'a pas été vérifiée sur une instance.

La carte GitLab de l'onglet Webhooks propose maintenant Gérer. Pour en savoir plus sur cette carte, voir Régler le secret du webhook GitLab.

3. 🔗 Faire envoyer ses événements à GitHub​

  1. Dans Administration › Connexions de l'entreprise, clique sur l'onglet Webhooks.

  2. Sur la carte GitHub, clique sur Configurer.

  3. Dans la fenêtre Configurer le secret GitHub, à côté d'Adresse du webhook, clique sur Copier l'adresse. L'adresse finit par /api/orion-events/github.

  4. Dans Secret du webhook, tape un long texte aléatoire, puis clique sur Enregistrer.

  5. Dans ton dépôt GitHub, ouvre Settings › Webhooks › Add webhook :

    • Payload URL : l'adresse copiée, Content type application/json ;
    • Secret : le même secret ;
    • Let me select individual events : coche Pushes, Branch or tag creation, Releases, Workflow runs et Workflow jobs.

    Cette étape dans GitHub n'a pas été vérifiée sur une instance.

4. 🔗 Argo CD et SonarQube​

Les synchros Argo CD et les quality gates SonarQube viennent de leur connexion dans Administration › Connexions de l'entreprise : Ajouter l'intégration Argo CD, Ajouter l'intégration SonarQube. Astrolabe les relève toutes les 5 minutes (voir plus bas). Ce relevé et leur webhook n'ont pas été vérifiés sur une instance.

⏳ Sans webhook​

Un outil qui a sa connexion dans Administration › Connexions de l'entreprise et pas de webhook est relevé toutes les 5 minutes. La première lecture ramène les 7 derniers jours. L'onglet dit alors, par exemple, GitLab n'a pas de webhook : son API est relevée toutes les 5 min.

Pour GitLab et GitHub, le composant doit être enregistré depuis son propre dépôt : dans Catalogue › Enregistrer un composant existant, donne l'adresse du catalog-info.yaml du dépôt que nomme son annotation, par exemple https://gitlab.exemple.com/acme/shop-app/-/blob/main/catalog-info.yaml pour gitlab.com/project-slug: acme/shop-app.

5. 📖 Lire l'onglet​

  1. Dans la barre latérale, clique sur Catalogue, puis sur le nom de ton composant, par exemple shop-app.

  2. Clique sur l'onglet Événements.

  3. Chaque jour a son titre, par exemple Aujourd'hui — vendredi 30 octobre. Chaque ligne donne l'outil, ce qui s'est passé et l'heure :

    LigneCe qu'elle dit
    PushRenovate Bot a poussé le commit 9f8e7d6 sur main — « chore: bump shop-lib to 1.4.2 », avec le pipeline de ce commit, par exemple #7101 · échec
    TagLib Maintainer a créé le tag v1.4.2 sur le commit a1b2c3d
    PipelineLe workflow #7101 a échoué pour le commit 9f8e7d6, avec sa durée, par exemple 1 min 15 s
  4. Pour restreindre la liste, clique sur une source au-dessus (Toutes les sources, GitLab…), ou choisis une branche dans Branche. En bas, Voir les événements plus anciens charge les jours précédents.

🔁 Voir quelle release a déclenché un push​

Sous un push, une ligne qui commence par ↳ dit ce qui l'a causé :

LigneQuand elle apparaît
↳ déclenché par la release 1.4.2 de shop-lib (05:23:45)Le message du commit nomme un paquet et sa version, par exemple chore: bump shop-lib to 1.4.2 (Renovate, Dependabot, « bump … to … »).
↳ poussé par shop-libLe commit a été poussé par le bot du projet GitLab d'un autre composant. Non vérifié sur une instance.
↳ déclenché par le pipeline #4512 de shop-libLe pipeline a été lancé par un pipeline d'un autre composant. Non vérifié sur une instance.

Sur le composant de la release, le tag le dit dans l'autre sens : ↳ a poussé le commit 9f8e7d6 sur shop-app.

Le nom de l'autre composant est un lien vers son onglet Événements quand Astrolabe connaît ce composant : l'enfant le déclare dans spec.dependsOn, sous le nom du paquet, et Stack technique est allumé dans Administration › Plugins. Ces conditions n'ont pas été vérifiées sur une instance.

spec:
dependsOn:
- component:default/shop-lib

Le message de ton commit ne nomme pas le paquet ? Ajoute cette ligne à la fin du message, après une ligne vide :

Triggered-By: shop-lib@1.4.2

Le push affiche alors ↳ déclenché par la release 1.4.2 de shop-lib.

✅ C'est tout !

Suite : Problèmes courants avec les Événements.