# Modifier ou supprimer un rôle ## 🔍 Ouvrir un rôle 1. Dans la barre latérale, clique sur **Administration**, puis, sous **SÉCURITÉ**, sur **Contrôle d'accès**. 2. Dans la liste, clique sur la ligne du rôle. La page montre la description, l'identifiant, et deux onglets : **Membres** et **Droits**. ## 👥 Ajouter des personnes à un rôle 1. Clique sur l'onglet **Membres**, puis sur **Ajouter**. La fenêtre **Ajouter des membres** s'ouvre. 2. Clique sur le champ **Groupes et personnes**, écris un nom, clique sur le groupe ou la personne dans la liste. Répète pour chacun. 3. Clique sur **Ajouter**. Le message **Membres ajoutés au rôle Lecteurs Acme.** apparaît et ils sont dans le tableau. Le changement s'applique tout de suite. ## 🚪 Retirer une personne d'un rôle 1. Dans l'onglet **Membres**, sur la ligne de la personne, clique sur l'icône **Retirer** (colonne **Actions**). La fenêtre **Retirer ce membre ?** s'ouvre. 2. Clique sur **Retirer**. Le message dit que la personne est retirée du rôle. Un rôle garde au moins un membre : l'icône du dernier est grisée. ## ✏️ Changer les droits d'un rôle 1. Clique sur l'onglet **Droits**, puis sur **Modifier les droits**. 2. Coche ou décoche les cases. Une case vaut pour toutes les autorisations du plugin pour cette action. Une case à moitié cochée (un tiret) veut dire que le rôle n'en tient qu'une partie. 3. Clique sur **Enregistrer**, ou sur **Annuler** pour tout laisser comme avant. Rien n'est écrit avant que tu enregistres. Le message **Droits enregistrés.** apparaît. La colonne **Avancé** liste ce que les cases ne couvrent pas (autres actions, refus, règles sous conditions, marquées **Règle conditionnelle**). Elle est montrée telle quelle et ne change pas quand tu enregistres. ## 🗑️ Supprimer un rôle 1. En haut à droite de la page du rôle, clique sur l'icône **Autres actions**. 2. Clique sur **Supprimer le rôle**. La fenêtre **Supprimer ce rôle ?** dit que le rôle et les droits qu'il donne seront retirés, et que ses membres gardent leurs autres rôles. 3. Clique sur **Supprimer le rôle**. La liste s'ouvre et dit **Rôle Lecteurs Acme supprimé.** :::note Un rôle qui vient du fichier de configuration dit **Ce rôle vient du fichier de configuration, il ne se modifie pas ici.** Il n'a aucun bouton pour ajouter, modifier ou supprimer. ::: ✅ Et voilà ! Suite : [FAQ Contrôle d'accès](faq.md). --- # Vérifier ce que donne un rôle Tu as créé un rôle. Connecte-toi comme l'une des personnes qui en font partie et vois, écran par écran, ce qu'elle peut désormais faire. ## Avant de commencer Un rôle avec un groupe dedans, par exemple `acme-builders` pour le groupe `frontend-team`, avec ces droits ([Créer un rôle](create-a-role.md)) : | Plugin | Cases à cocher (onglet **Droits**, **Modifier les droits**) | | --- | --- | | **orion-dashboard** | **Créer**, **Modifier**, **Supprimer** | | **scaffolder** | **Lire**, **Créer** | ## 🔍 Vérifier 1. En haut à droite, clique sur ton avatar, puis sur **Déconnexion**. 2. Connecte-toi avec une personne du groupe, par exemple un membre de `frontend-team`. 3. Dans la barre latérale, clique sur **La Fabrique**. Chaque carte de modèle a maintenant un bouton **Choisir**. 4. Dans la barre latérale, clique sur **Tableau de bord**, puis sur l'onglet du tableau voulu. **Ajouter une carte** et **Réorganiser** sont actifs. Les nouveaux droits s'appliquent dès que la personne se connecte. ## Ce que change chaque autorisation | Autorisation | Ce que la personne peut faire | | --- | --- | | `scaffolder.task.create` | Cliquer sur **Choisir** sur un modèle, et sur **Créer** à la fin de son formulaire | | `scaffolder.task.read` | Ouvrir l'onglet **Tasks** de La Fabrique | | `dashboard.update` | Cliquer sur **Réorganiser**, ou renommer, ordonner et supprimer les tableaux sur **Mes tableaux de bord** | ## ➖ Retirer les droits 1. En tant qu'administrateur, supprime le rôle : voir [Modifier ou supprimer un rôle](change-or-delete-a-role.md). 2. Reconnecte-toi avec la même personne. Les boutons **Choisir** ont disparu, et **Réorganiser** affiche un cadenas. Survole-le : **Votre rôle ne permet pas de modifier les tableaux de bord. Demandez-le à un administrateur.** Les cartes déjà sur le tableau restent. ✅ C'est tout ! La suite : [FAQ Contrôle d'accès](faq.md). --- # Créer un rôle Un rôle dit ce qu'un groupe de personnes peut faire dans Astrolabe. Tu choisis qui le tient, puis quelles actions il donne sur chaque plugin. Tu le fais en tant qu'administrateur. ## 🔧 Créer le rôle 1. Dans la barre latérale, clique sur **Administration**. 2. Sous **SÉCURITÉ**, clique sur **Contrôle d'accès**. La page **Contrôle d'accès** liste les rôles. 3. En haut à droite, clique sur **Créer un rôle**. La fenêtre **Créer un rôle** s'ouvre. 4. Remplis la fenêtre : | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **Nom** | Le nom du rôle. La ligne dessous montre l'identifiant qui en est tiré, par exemple `Identifiant : role:default/lecteurs-acme`. | `Lecteurs Acme` | | **Description** | Facultatif : à quoi sert le rôle | `Peut lire le catalogue` | | **Membres** | Clique sur le champ, écris un nom, clique sur le groupe ou la personne dans la liste. Répète pour chacun. Il en faut au moins un. | `Astrolabe administrators` | 5. Clique sur **Créer**. La page du nouveau rôle s'ouvre, avec le message **Rôle Lecteurs Acme créé. Donnez-lui des droits dans l'onglet Droits.** ## 🔑 Lui donner des droits 1. Sur la page du rôle, clique sur l'onglet **Droits**. Il dit **Ce rôle ne donne aucun droit.** 2. Clique sur **Modifier les droits**. 3. Sur la ligne d'un plugin, coche les actions à donner : **Lire**, **Créer**, **Modifier**, **Supprimer**. Un tiret veut dire que le plugin n'a pas cette action. 4. Clique sur **Enregistrer**. Le message **Droits enregistrés.** apparaît. ✅ Et voilà ! Suite : [Modifier ou supprimer un rôle](change-or-delete-a-role.md). --- # FAQ Contrôle d'accès ## Quels rôles existent au départ ? Trois : `role:default/developer`, `role:default/astrolabe-administrator` et `role:default/astrolabe-member`. ## Pourquoi ne puis-je pas changer un rôle ? Un rôle marqué **Fichier** vient du fichier de configuration de l'instance : sa page n'a aucun bouton pour ajouter, modifier ou supprimer. Pour rendre une personne administrateur, voir [Donner les droits d'administration à quelqu'un](give-administrator-rights.md). ## Pourquoi un bouton est-il verrouillé, avec un cadenas ? Ton rôle ne le permet pas. Survole le bouton : l'infobulle dit quel droit manque. Demande à un administrateur de te le donner. ## Sur quels plugins un rôle peut-il agir ? L'onglet **Droits**, après **Modifier les droits**, montre une ligne par plugin : **catalog**, **scaffolder**, **compass**, **orion-dashboard**, **announcements**, **administration**, **licensing**, **cost-insights** et les autres qu'Astrolabe a. ## Quelles actions puis-je donner ? **Lire**, **Créer**, **Modifier**, **Supprimer**, pour chaque plugin. Une case donne l'action sur toutes les autorisations du plugin. Ce que les cases ne couvrent pas (autres actions, refus, règles sous conditions) apparaît dans la colonne **Avancé** et ne change pas quand tu enregistres. ## Comment voir ce qu'une personne peut faire ? Ouvre chaque rôle : l'onglet **Membres** liste ses utilisateurs et groupes, l'onglet **Droits** ce qu'il donne. Voir [Voir les rôles et ce qu'ils donnent](see-the-roles.md). ## Comment vérifier qu'un rôle marche ? Connecte-toi avec une personne du rôle et ouvre les écrans qu'il doit changer : voir [Vérifier ce que donne un rôle](check-what-a-role-gives.md). ## Les nouveaux droits s'appliquent-ils tout de suite ? Ils s'appliquent quand la personne se connecte. ## Que voit une personne sans droit d'administration ? La barre latérale montre **Recherche**, **Tableau de bord**, **Catalogue**, **Documentation**, **La Fabrique** et, quand il est activé, **Tech Atlas**. Il n'y a pas d'**Administration**. La personne lit le catalogue, les annonces, les scores Compass, le radar et ses notifications, enregistre un composant et surveille des composants. Le rôle `role:default/developer` ne donne rien de plus. ## Et si cette personne ouvre un lien vers Administration ? La page **Hors des cartes** dit **Votre Astrolabe n'a pas pu localiser ces coordonnées**. Les boutons **Retour au port d'attache** et **Coordonnées précédentes** en font sortir. --- # Donner les droits d'administration à quelqu'un Être administrateur, c'est être membre du groupe **Astrolabe administrators**. Tu le fais en tant qu'administrateur. ## ➕ Ajouter une personne 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **SÉCURITÉ**, clique sur **Groupes**. 3. Sur la ligne **astrolabe-administrators**, clique sur le crayon (**Modifier le groupe astrolabe-administrators**). La fenêtre **Modifier le groupe** s'ouvre. Elle dit **Les membres de ce groupe sont administrateurs d'Astrolabe : ils reçoivent le rôle d'administrateur.** 4. Clique sur le champ **Membres**, tape le nom de la personne, par exemple `Marie Dupont`, et clique sur la ligne `Marie Dupont (user:default/marie.dupont)`. 5. Clique sur **Enregistrer**. La page dit **Groupe modifié.** La personne recharge la page : **Administration** apparaît dans sa barre latérale. ## ➖ Retirer une personne 1. Sur la ligne **astrolabe-administrators**, clique sur le crayon. 2. Dans **Membres**, clique sur la croix de la pastille de la personne. 3. Clique sur **Enregistrer**. La page dit **Groupe modifié.** La personne perd **Administration** quand elle recharge la page. ## 🛟 Le compte `administrator` Le compte `administrator` tient le rôle d'administrateur par lui-même, quel que soit le contenu du groupe. ✅ C'est tout ! La suite : [Créer un rôle](create-a-role.md). --- # Voir les rôles et ce qu'ils donnent Tu es administrateur. La page **Contrôle d'accès** montre tous les rôles sur un seul écran : on n'y change rien. ## 🔍 Ouvrir la liste 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **SÉCURITÉ**, clique sur **Contrôle d'accès**. La page **Contrôle d'accès** liste les rôles. Chaque ligne montre : | Colonne | Ce qu'elle dit | | --- | --- | | **Rôle** | Le nom du rôle, et dessous son identifiant, par exemple `role:default/astrolabe-administrator` | | **Membres** | Qui le tient, par exemple **2 groupes + 1 personne** | | **Accès** | Les premiers plugins que le rôle atteint, puis **+8** pour les autres | | **Origine** | **Fichier** (avec un cadenas) pour un rôle du fichier de configuration, **Modifiable** pour un rôle fait dans Astrolabe | 3. Pour trouver un rôle, tape son nom dans **Chercher un rôle**. La liste **Origine** garde les rôles **Toutes**, **Modifiables** ou **Fichier**. ## 👥 Voir qui tient un rôle 1. Clique sur la ligne du rôle, par exemple **Administrateur**. 2. L'onglet **Membres** liste les groupes et les personnes du rôle. **Personnes dans le groupe** dit combien de personnes tient un groupe. ## 🔑 Voir ce que donne un rôle 1. Sur la page du rôle, clique sur l'onglet **Droits**. 2. Lis une ligne par plugin. Une coche verte sous **Lire**, **Créer**, **Modifier** ou **Supprimer** veut dire que le rôle le donne, un tiret que non. 3. Sur une ligne avec **Avancé (2)**, clique dessus : la liste montre les autres autorisations du plugin, chacune **autorisé**, **refusé** ou **sous conditions**. Un rôle qui ne donne rien dit **Ce rôle ne donne aucun droit.** ## 🔒 Un rôle du fichier Sur un rôle marqué **Fichier**, un bandeau dit **Ce rôle vient du fichier de configuration, il ne se modifie pas ici.** Pour **Administrateur**, il ajoute **Pour gérer les administrateurs, ajoutez ou retirez une personne du groupe Astrolabe administrators.** et un bouton **Ouvrir le groupe**. Clique dessus pour arriver dans **Groupes**. ✅ C'est tout ! La suite : [Donner les droits d'administration à quelqu'un](give-administrator-rights.md). --- # Problèmes courants avec le contrôle d'accès | Ce que tu vois | Que faire | | --- | --- | | **Créer** est grisé dans la fenêtre **Créer un rôle** | Écris un **Nom** avec une lettre ou un chiffre, et ajoute au moins un **Membre**. | | Sous **Nom** tu lis **Un rôle porte déjà l'identifiant role:default/…** | Choisis un autre nom. | | L'icône **Retirer** d'un membre est grisée | Un rôle garde au moins un membre. Ajoutes-en un autre d'abord. | | **Enregistrer** est grisé après **Modifier les droits** | Coche ou décoche d'abord une case. | | Un rôle n'a aucun bouton pour ajouter, modifier ou supprimer | Il est marqué **Fichier** : il vient du fichier de configuration et ne se change pas ici. Pour rendre une personne administrateur, voir [Donner les droits d'administration à quelqu'un](give-administrator-rights.md). | | Un bouton a un cadenas | Ton rôle ne le permet pas. Survole-le pour lire le droit qui manque, et demande à un administrateur. | | Un message dit **Vous n'avez pas le droit de modifier les règles d'accès (statut 403)** | Demande à un administrateur de te donner un rôle qui le permet. | | Un message dit **Quelqu'un a modifié ce rôle entre-temps, ou un rôle porte déjà cet identifiant.** | Recharge la page et recommence. | | Un message dit **Le service des permissions ne répond pas, rien n'a été modifié.** | Réessaie. Si cela dure, ouvre **Administration > Problèmes**. | | La page **Contrôle d'accès** dit **Les rôles n'ont pas pu être lus : le service des permissions répond 500. Rechargez la page ; si cela dure, regardez Administration > Problèmes.** | Clique sur **Réessayer**. Si cela dure, ouvre **Administration** > **Problèmes** pour voir ce qui est en panne. | | La page **Contrôle d'accès** dit **Les rôles n'ont pas pu être lus : le service des permissions ne répond pas. Rechargez la page ; si cela dure, regardez Administration > Problèmes.** | Clique sur **Réessayer**. Si cela dure, ouvre **Administration** > **Problèmes**. | | La fenêtre **Modifier le groupe** dit **Vous vous retirez vous-même les droits d'administration.** | Tu as retiré ton propre nom de **Membres**. Clique sur **Annuler** pour garder tes droits, ou sur **Enregistrer** pour y renoncer. | | **Enregistrer** est grisé dans la fenêtre **Modifier le groupe** de **astrolabe-administrators**, avec **Le groupe des administrateurs doit garder au moins un membre.** | Garde au moins une personne dans **Membres**. | | La corbeille de la ligne **astrolabe-administrators** est grisée | Ce groupe donne le rôle d'administrateur : il ne se supprime pas. Survole la corbeille : **Ce groupe donne le rôle d'administrateur : il ne se supprime pas.** | | Une personne ajoutée à **astrolabe-administrators** ne voit pas **Administration** | Demande-lui de recharger la page. Vérifie que son nom est dans **Membres** sur la ligne du groupe. | | Une personne dit que **Choose** manque sur les cartes de La Fabrique | Donne à son rôle **Scaffolder** `scaffolder.task.create` : voir [Vérifier ce que donne un rôle](check-what-a-role-gives.md). | | Une personne dit que **Ajouter une carte** affiche un cadenas, avec l'infobulle **Votre rôle ne permet pas d'ajouter des cartes aux tableaux de bord. Demandez-le à un administrateur.** | Donne à son rôle les autorisations **Orion-dashboard** de [Vérifier ce que donne un rôle](check-what-a-role-gives.md). | | Une personne dit que **Réorganiser** affiche un cadenas sur **Mes tableaux de bord**, avec l'infobulle **Votre rôle ne permet pas de modifier les tableaux de bord. Demandez-le à un administrateur.** | Donne à son rôle **Orion-dashboard** `dashboard.update`. | | L'onglet **Tasks** de La Fabrique dit `Error: Request failed with 403 Forbidden` | Donne au rôle **Scaffolder** `scaffolder.task.read`. | | Une personne ouvre un lien vers Administration et lit **Hors des cartes** | Cette personne n'a pas de rôle pour Administration. Donne à son rôle les autorisations **Administration**. | :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec le nom du rôle et ce que dit l'écran. ::: --- # Choisir ce que le catalogue importe Le catalogue se remplit depuis tes fournisseurs : GitLab, GitHub, Azure DevOps, Bitbucket, Microsoft Graph. Dans **Administration › Catalogue**, tu choisis quels fournisseurs tournent, et ce que chacun lit. Tu le fais en tant qu'administrateur. ## Avant de commencer Un fournisseur lit ton outil avec la connexion ajoutée dans **Connexions de l'entreprise**. Ajoute-la d'abord : sans elle, la carte du fournisseur dit **Configurez d'abord l'intégration github : sans elle, ce fournisseur ne peut rien lire.** (avec le nom de son outil) et son interrupteur reste éteint. ## 🔧 Allumer un fournisseur 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Catalogue**. L'onglet **Fournisseurs** s'ouvre, avec une carte par fournisseur. 3. Sur la carte de ton fournisseur, clique sur **Configurer**. 4. Remplis le formulaire. Chaque **?** à côté d'un champ l'explique. 5. Clique sur **Installer**. 6. La fenêtre **Reloading configuration** dit **Please wait while the instance is reloading...** Attends que la page revienne. Les champs dépendent du fournisseur : suis la page du tien. | Fournisseur | Page | | --- | --- | | GitLab | [Importer tes projets GitLab](../../getting-started/Configuration/Catalogue/gitlab/import-projects.md) | | GitHub | [Importer tes dépôts GitHub](../../getting-started/Configuration/Catalogue/github/import-repositories.md) | | Azure DevOps | [Azure DevOps](../../getting-started/Configuration/Catalogue/azure-devops/import-repositories.md) | | Bitbucket Server | [Importer tes dépôts Bitbucket Server](../../getting-started/Configuration/Catalogue/bitbucket-server/import-repositories.md) | | Bitbucket Cloud | [Importer tes dépôts Bitbucket Cloud](../../getting-started/Configuration/Catalogue/bitbucket-cloud/import-repositories.md) | | Microsoft Graph | [Entra ID](../../getting-started/Configuration/Catalogue/microsoft-entra-id/import-users-and-groups.md) | ## 🔍 Restreindre ce qu'un fournisseur importe Dans le formulaire **Configurer** de GitLab, ces champs évitent que le catalogue se remplisse de tout : | Champ | Ce qu'il fait | | --- | --- | | **Groupe** | Seulement ce groupe et ses sous-groupes. | | **Uniquement les projets dont je suis membre** | Seulement les projets de l'utilisateur du jeton. | | **Expression régulière des projets** | Seulement les projets dont le nom correspond, par exemple `^api-.*`. | | **Ignorer les dépôts issus d'un fork** | Écarte les projets forkés. | | **Branches** | Les branches à lire. | | **Fichier de catalogue** | Le fichier à lire à la racine de chaque projet. Par défaut : `catalog-info.yaml`. | Pour les changer plus tard, clique de nouveau sur **Configurer** sur la carte, modifie, puis clique sur **Mettre à jour**. Astrolabe se recharge de la même façon. ## 📋 Voir comment les collectes se sont passées Dès qu'un fournisseur est installé, l'onglet **Fournisseurs** montre le tableau **Collecte du catalogue** au-dessus des cartes : | Colonne | Ce qu'elle dit | | --- | --- | | **Fournisseur** | Le fournisseur. | | **État** | **Terminé**, **En cours**, **En échec** ou **Inconnu**. | | **Dernier passage** / **Prochain passage** | Quand elle a tourné, quand elle tourne ensuite. | | **Détail** | Ce qui s'est passé, en une phrase. | | **Actions** | Le bouton play de la ligne, par exemple **Lancer la collecte des projets GitLab maintenant**. | Pour collecter tout de suite, clique sur le bouton play, sur la ligne du fournisseur : voir [Lancer une collecte du catalogue maintenant](run-a-collection.md). ## ⛔ Éteindre un fournisseur 1. Sur la carte du fournisseur, clique sur **Configurer**. 2. Clique sur **Désinstaller**. ✅ C'est tout ! La suite : [Lancer une collecte du catalogue maintenant](run-a-collection.md). Ensuite : [Enregistrer un composant existant](../../core-features/catalog/register-a-component.md). --- # FAQ Catalogue ## Comment n'importer qu'une partie de mes projets ? Restreins le fournisseur : voir [Restreindre ce qu'un fournisseur importe](choose-what-the-catalog-imports.md). ## À quelle fréquence un fournisseur lit-il mon outil ? Le tableau **Collecte du catalogue** montre l'heure du **Prochain passage** de chaque fournisseur. Pour lire tout de suite, clique sur le bouton de lancement sur sa ligne. ## Pourquoi l'interrupteur d'un fournisseur est éteint et grisé ? La connexion de cet outil n'est pas encore ajoutée. La carte dit **Configurez d'abord l'intégration github : sans elle, ce fournisseur ne peut rien lire.** Ajoute-la dans **Administration › Connexions de l'entreprise**. ## La collecte dit « Terminé » mais le catalogue reste vide Lis **Détail**. **Rien trouvé : aucun catalog-info.yaml sur la branche lue, ou le jeton n'est pas membre des projets.** veut dire qu'Astrolabe n'a trouvé aucun fichier `catalog-info.yaml` à lire. Vérifie **Groupe**, **Expression régulière des projets** et **Branches**, puis relance la collecte. ## Puis-je ajouter un composant sans fournisseur ? Oui : [Enregistrer un composant existant](../../core-features/catalog/register-a-component.md). --- # Lancer une collecte du catalogue maintenant Un fournisseur collecte ton catalogue tout seul, à intervalle régulier (toutes les 30 minutes pour GitLab). Tu ne veux pas attendre ? Lance sa collecte toi-même, et suis-la sur le même écran. Tu le fais en administrateur. ## ▶️ Lancer une collecte 1. Dans la barre latérale, tout en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Catalogue**. L'onglet **Fournisseurs** s'ouvre. Au-dessus des cartes, le tableau **Collecte du catalogue** a une ligne par collecte : | Colonne | Ce qu'elle dit | | --- | --- | | **Fournisseur** | Le fournisseur. GitLab a deux lignes dès que tu importes les groupes : **GitLab** (les projets) et **GitLab (groupes et utilisateurs)**. | | **État** | **Terminé**, **En cours**, **En échec** ou **Inconnu**. | | **Dernier passage** / **Prochain passage** | Quand elle a tourné pour la dernière fois, quand elle tourne ensuite. | | **Détail** | Ce qui s'est passé, en une phrase. | | **Actions** | Le bouton play de la ligne. | 3. Sur la ligne voulue, dans la colonne **Actions**, clique sur le bouton play. Pour les projets de GitLab, son nom est **Lancer la collecte des projets GitLab maintenant**. Pour les groupes et les utilisateurs, c'est **Lancer la collecte des groupes et utilisateurs GitLab maintenant**. Seule la collecte de cette ligne démarre. L'autre ligne reste comme elle était : le play de **GitLab** ne lance pas **GitLab (groupes et utilisateurs)**, et inversement. ## 👀 La suivre Tu ne recharges pas la page. 1. L'**État** de la ligne que tu as lancée passe à **En cours** aussitôt, et son **Détail** affiche un tiret (**—**). 2. Après quelques secondes, l'**État** passe à **Terminé**. **Dernier passage** montre l'heure de ce passage, **Prochain passage** le suivant, et **Détail** dit ce qui est entré, par exemple **3 fichiers de catalogue trouvés**. Pour la ligne des groupes, par exemple **3 groupes et 1 utilisateur importés**. Les entités de la collecte sont maintenant dans **Catalogue**. ✅ C'est tout ! La suite : [Questions fréquentes](faq.md). --- # Problèmes courants avec le catalogue | Ce que tu vois | Que faire | | --- | --- | | **En échec** avec `La collecte a échoué pour une raison qu'Astrolabe n'a pas su identifier. Relancez-la ; si elle échoue encore, prévenez l'administrateur d'Astrolabe de votre entreprise.` | Clique sur le bouton de lancement du fournisseur. Si elle échoue encore, vérifie **Groupe** dans **Configurer** : un groupe qui n'existe pas donne ceci. | | **Terminé** avec `Rien trouvé : aucun catalog-info.yaml sur la branche lue, ou le jeton n'est pas membre des projets.` | Vérifie **Groupe**, **Expression régulière des projets** et **Branches** dans **Configurer**, puis relance la collecte. | | **Inconnu** avec `Passé avant le redémarrage d'Astrolabe : son résultat n'est pas connu. Lancez-le maintenant pour le voir.` | Clique sur le bouton de lancement du fournisseur. | | `Configurez d'abord l'intégration github : sans elle, ce fournisseur ne peut rien lire.` | Ajoute la connexion dans **Administration › Connexions de l'entreprise**. | | `NotFoundError: Unable to read url, no matching files found for https://…` quand tu enregistres un composant | L'adresse ne mène pas à un fichier qu'Astrolabe sait lire. Ouvre-la dans ton navigateur, puis colle l'adresse du fichier lui-même. | :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec la phrase de la colonne **Détail**. ::: --- # Gérer les accès à la démo Sur l'instance d'administration de ForgeIT, le **Backoffice** garde la liste des personnes qui peuvent entrer dans la démo publique. Tu approuves une demande, tu révoques une adresse, tu ajoutes un prospect à la main et tu vois ce qu'un visiteur a fait. Les visiteurs suivent [Demander l'accès à la démo](../../getting-started/request-demo-access.md). ## 🔧 Ouvrir la liste 1. Connecte-toi à l'instance d'administration avec un compte administrateur. 2. Dans la barre latérale, clique sur **Backoffice**. 3. Dans le menu du Backoffice, sous **SALES**, clique sur **Demo access**. La page **Demo access** liste chaque adresse, la plus récente en premier, avec les colonnes **Person**, **Email**, **Company**, **State**, **Asked on**, **Decided by** et **Actions**. **State** vaut **Requested**, **Approved** ou **Revoked**. :::note Le Backoffice est en anglais, quelle que soit la langue d'Astrolabe. ::: ## ✅ Approuver une demande 1. Sur la ligne dont **State** vaut **Requested**, clique sur **Approve** (le bouton porte le nom de l'adresse). Le message en bas dit **Access approved for** l'adresse, **State** passe à **Approved**, **Decided by** affiche ton nom d'utilisateur, et la personne reçoit l'e-mail **Votre accès à la démo Astrolabe est ouvert** avec le bouton **Entrer dans la démo**. ## ⛔ Révoquer un accès 1. Sur la ligne de l'adresse, clique sur **Revoke**. 2. Dans **Revoke this access?**, clique sur **Revoke access**. Le message dit **Access revoked for** l'adresse et **State** passe à **Revoked**. La personne ne peut plus entrer dans la démo, et une session déjà ouverte s'arrête quand son jeton expire. Pour rendre l'accès, clique sur **Approve** sur la même ligne. ## ➕ Ajouter une adresse à la main Pour un prospect qui n'a pas fait la demande lui-même. 1. En haut de la page, clique sur **Add an address**. 2. Remplis **Email**, **First name** et **Last name**. **Company (optional)** peut rester vide. 3. Clique sur **Add and notify**. Le message dit **Access granted to** l'adresse, une ligne **Approved** apparaît, et la personne reçoit le même e-mail que pour une approbation. ## 🔍 Voir ce qu'un visiteur a fait 1. Sur la ligne de l'adresse, clique sur **Activity**. La fenêtre **Activity of** l'adresse montre la première et la dernière visite, les pages les plus vues, les actions les plus utilisées, et la liste des événements avec **When**, **What**, **Detail** et **Page**. 2. Clique sur **Close** pour quitter. **Erase this activity** supprime l'historique de ce visiteur. ## ❓ Questions fréquentes ### Une approbation demande-t-elle une action de la personne ? Non. L'e-mail porte un bouton qui la connecte, une fois, pendant 7 jours. Ensuite elle saisit son adresse sur la démo et reçoit un code. ### Une adresse qui demande deux fois apparaît-elle deux fois ? Non. Une adresse donne une ligne. ## 🛠️ Dépannage | Ce que tu vois | Que faire | | --- | --- | | **Backoffice** n'est pas dans la barre latérale | Tu n'es pas sur l'instance d'administration de ForgeIT, ou ton compte n'a pas le droit. Demande à un administrateur. | | Le message dit **… but it could not be emailed: check the mail server and the demo address in the settings.** | L'approbation tient, seul l'e-mail n'est pas parti. Vérifie le serveur de messagerie et l'adresse de la démo dans les réglages du Backoffice (non vérifié sur une instance), puis dis à la personne d'entrer par la démo. | | Un visiteur dit que la démo **ne peut pas vérifier les accès pour le moment** | La démo n'atteint pas cette instance. Vérifie qu'elle tourne, puis demande au visiteur de réessayer. | --- # FAQ Général ## Quels sont les onglets de Administration › Général ? | Onglet | Ce qu'il contient | | --- | --- | | **Entreprise** | Le nom de ton organisation. | | **Application** | Les deux clés du défi de connexion et la mesure d'usage Umami : [règle-les](set-the-application-settings.md). | | **Configuration** | Les versions enregistrées de tes réglages : [reviens à une version précédente](go-back-to-an-earlier-configuration.md). | | **Messagerie** | Le serveur d'où Astrolabe envoie ses e-mails : [règle-le](set-the-mail-server.md). | | **Support** | Où part une demande de support : [règle-le](set-the-support-address.md). | | **Notifications push** | Les services push que les navigateurs de tes utilisateurs peuvent utiliser, en plus de Google, Mozilla, Apple et Microsoft. | | **À propos** | La version d'Astrolabe et de Backstage, et un bouton **Contacter le support**. | ## Un champ est grisé et dit « Défini par le fichier de config … — à modifier là-bas » La valeur vient d'un fichier de configuration de ton installation. Elle ne se change pas sur cet écran. Demande à la personne qui a installé ton Astrolabe. ## Que veut dire le bandeau « La configuration a changé. » ? Des réglages ont été enregistrés. Clique sur **Recharger** pour travailler sur les nouveaux. ## Quelle version d'Astrolabe j'utilise ? Ouvre **Administration › Général › À propos**. **App Version** est la version d'Astrolabe. --- # Revenir à une configuration précédente Chaque fois que tu enregistres des réglages dans Administration, Astrolabe garde une version. Si un changement était une erreur, tu restaures une version précédente. ## 🔧 Voir les versions 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. En haut de la page, clique sur l'onglet **Configuration**. La page **Versions de configuration** liste les versions, la plus récente en premier. La plus récente porte **Version actuelle**. Chacune a son numéro et sa date. ## 🔍 Voir ce que contient une version Sur la ligne d'une version, clique sur **Voir les modifications**. La ligne montre ce que le retour à cette version retirerait, sous forme de bloc de réglages. Clique sur **Masquer les modifications** pour le fermer. ## ⏪ Restaurer une version 1. Sur la ligne de la version voulue, clique sur **Restaurer**. 2. Une fenêtre **Confirmer la restauration de configuration** demande **Êtes-vous sûr de vouloir restaurer cette version ?** Elle dit **L'instance redémarrera après confirmation.** 3. Clique sur **Restaurer**. 4. La fenêtre **Reloading configuration** dit **Please wait while the instance is reloading...** Attends qu'Astrolabe revienne. Les réglages restaurés deviennent une nouvelle version en haut de la liste, et c'est la **Version actuelle**. ✅ C'est tout ! La suite : [FAQ Général](faq.md). --- # Régler le défi de connexion et la mesure d'usage L'onglet **Application** contient deux choses : les deux clés du défi de connexion (Cloudflare Turnstile), et les deux valeurs qui permettent à Astrolabe de mesurer son usage avec Umami. Laisse un champ vide pour éteindre la fonction qui lui correspond. Tu le fais en tant qu'administrateur. ## 🔧 Remplir l'onglet 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **PARAMÈTRES**, clique sur **Général**, puis, en haut de la page, sur l'onglet **Application**. 3. Remplis les champs dont tu as besoin. | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **Clé de site** | La clé publique du défi de connexion. Sans elle, le défi n'est pas affiché. | `0x4AAAAAAAexample` | | **Clé secrète** | La clé secrète que Cloudflare donne avec la clé de site. Remplis-la avec la **Clé de site** : l'écran n'enregistre pas l'une sans l'autre. | `0x4AAAAAAAexample-secret` | | **URL du script** | L'adresse de ton script Umami, protocole compris. | `https://umami.exemple.com/script.js` | | **ID du site web** | L'identifiant du site, tel qu'Umami le donne. | `00000000-0000-0000-0000-000000000000` | 4. Clique sur **Enregistrer**. Le message **Réglages enregistrés.** apparaît en bas à gauche. ✅ C'est tout ! Une fois enregistrée, la **Clé secrète** ne s'affiche plus jamais : le champ est verrouillé. Pour la changer, clique sur **Remplacer** à côté, saisis la nouvelle, puis **Enregistrer**. ## 🛟 Dépannage **Problèmes affiche « Le défi de connexion n'est pas vérifié : sa clé secrète manque, la page de connexion ne l'affiche donc pas. Saisis la clé secrète dans Général › Application. »** La **Clé de site** est enregistrée, sa **Clé secrète** non. Clique sur **Corriger**, remplis **Clé secrète**, puis **Enregistrer**. D'ici là, la page de connexion n'a pas de défi. **Problèmes affiche « Le défi de connexion n'est pas affiché : sa clé de site manque, rien n'est donc vérifié. Saisis la clé de site dans Général › Application. »** La **Clé secrète** est enregistrée, sa **Clé de site** non. Clique sur **Corriger**, remplis **Clé de site**, puis **Enregistrer**. Chaque enregistrement est gardé comme une version : voir [Revenir à une configuration précédente](go-back-to-an-earlier-configuration.md). La suite : [Régler l'adresse de support](set-the-support-address.md). --- # Régler l'adresse de la documentation À côté du nom de chaque plugin, intégration, source de catalogue et carte du tableau de bord, un **?** ouvre sa page de cette documentation, dans un nouvel onglet, dans la langue de l'interface. Par défaut, il mène au site de documentation de ForgeIT. Ne le change que si ton entreprise publie la documentation à une autre adresse. Tu le fais en administrateur. ## 🔗 Régler l'adresse 1. Dans la barre latérale, en bas, clique sur **Administration**. La page **Général** s'ouvre. 2. En haut de la page, clique sur l'onglet **Documentation**. 3. Dans **URL de base**, saisis l'adresse du site de documentation, sans chemin. | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **URL de base** | L'adresse du site, qui commence par `https://`. Vide : le site de ForgeIT. | `https://docs.exemple.com` | 4. Clique sur **Enregistrer**. Le message **Réglages enregistrés.** apparaît en bas à gauche de l'écran et disparaît tout seul. Chaque **?** mène maintenant à ton site. Par exemple, le **?** de **Compass** dans **Administration › Plugins** ouvre `https://docs.exemple.com/fr/docs/core-features/compass/turn-on-compass`. ✅ C'est tout ! Pour revenir au site de ForgeIT, vide **URL de base**, puis clique sur **Enregistrer**. La suite : [Revenir à une configuration précédente](go-back-to-an-earlier-configuration.md). --- # Régler le serveur de mail Astrolabe envoie certains messages par e-mail. Donne-lui le serveur de mail à utiliser. Tu le fais une fois, en tant qu'administrateur. ## Avant de commencer Demande à ton fournisseur de mail l'hôte, le port, un compte et son mot de passe. Le serveur doit offrir une connexion sécurisée (STARTTLS) : le port `587` en offre une en général. ## 🔧 Remplir le serveur de mail 1. Dans la barre latérale, en bas, clique sur **Administration**. La page **Général** s'ouvre. 2. En haut de la page, clique sur l'onglet **Messagerie**. 3. Remplis le formulaire : | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **Hôte** | L'adresse du serveur de mail | `smtp.acme.example` | | **Port** | Le port du serveur de mail, en général 587 | `587` | | **Utilisateur** | Le compte qui se connecte au serveur de mail | `astrolabe@acme.example` | | **Mot de passe** | Le mot de passe de ce compte | | | **Expéditeur** | L'adresse d'où partent les messages | `astrolabe@acme.example` | 4. Clique sur **Enregistrer**. 5. Dans le bandeau **La configuration a changé.**, clique sur **Recharger**. ✅ C'est tout ! Pour voir ces réglages à l'œuvre, [réinitialise le mot de passe administrateur](../../getting-started/Configuration/Authentication/astrolabe-account/reset-the-password.md) : le code arrive dans la boîte mail de l'administrateur. La suite : [Régler l'adresse de la documentation](set-the-documentation-address.md). --- # Régler l'adresse de support Tes utilisateurs peuvent demander de l'aide depuis Astrolabe. L'adresse de support dit où part la demande. Tu le fais une fois, en tant qu'administrateur. ## 🔧 Régler l'adresse 1. Dans la barre latérale, en bas, clique sur **Administration**. La page **Général** s'ouvre. 2. En haut de la page, clique sur l'onglet **Support**. 3. Dans **E-mail**, écris l'adresse. | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **E-mail** | Où part une demande de support | `aide@acme.example` | 4. Clique sur **Enregistrer**. Le message **Réglages enregistrés.** apparaît en bas à gauche de l'écran et disparaît tout seul. ✅ C'est tout ! Chaque enregistrement est gardé comme une version : voir [Revenir à une configuration précédente](go-back-to-an-earlier-configuration.md). La suite : [Régler le serveur de mail](set-the-mail-server.md). --- # Problèmes courants avec les réglages généraux | Ce que tu vois | Que faire | | --- | --- | | Un champ grisé, avec **Défini par le fichier de config … — à modifier là-bas** | La valeur vient d'un fichier de configuration. Demande à la personne qui a installé ton Astrolabe. | | Le bandeau **La configuration a changé.** | Clique sur **Recharger**. | | **Le serveur de messagerie n'offre pas de connexion chiffrée** quand tu demandes la réinitialisation du mot de passe | Le serveur de messagerie doit offrir une connexion sécurisée (STARTTLS), en général sur le port `587`. Sur l'onglet **Messagerie**, vérifie **Hôte** et **Port**, puis clique sur **Enregistrer**. Voir [Problèmes courants avec la connexion](../../getting-started/Configuration/Authentication/troubleshooting.md). | :::tip Toujours bloqué ? Écris à **support@forgeit.fr**, avec le nom de l'onglet et ce que dit l'écran. ::: --- # Ajouter ta licence Sans licence, Astrolabe marche encore, mais les fonctions sous licence sont limitées. Tu ajoutes la clé reçue de ForgeIT une fois, et de nouveau quand tu renouvelles. Tu le fais en tant qu'administrateur. ## Avant de commencer Aie ta clé de licence sous la main : ForgeIT te l'a envoyée. ## 🔧 Ajouter la clé 1. Dans la barre latérale, en bas, clique sur **Administration**, puis, sous **SÉCURITÉ**, sur **Licences**. 2. L'onglet **Vue d'ensemble** s'ouvre. Clique sur **Ajouter une nouvelle licence**. 3. Dans la fenêtre **Ajouter une nouvelle clé de licence**, colle la clé dans **Clé de licence**. | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **Clé de licence** | La clé de ForgeIT, copiée en entier | | 4. Clique sur **Mettre à jour la clé de licence**. Le bouton reste grisé tant que tu n'as rien collé. Si tu avais déjà une clé, la fenêtre prévient **Cela remplacera votre clé de licence existante. Assurez-vous d'avoir la bonne nouvelle clé de licence avant de continuer.** ✅ C'est tout ! Ce que la page montre une fois une clé valide en place n'a pas été vérifié sur une instance. La suite : [FAQ Licences](faq.md). --- # FAQ Licences ## Que veut dire la ligne « Aucune licence configurée. » ? Astrolabe n'a pas de clé de licence valide. La ligne en haut de chaque page nomme ce qui est limité : **Sans licence, Grafana, Polaris, LaunchDarkly ne peuvent pas être allumés, et seul le compte Astrolabe peut se connecter.** Clique sur **Configurer la licence** : vois [Ce que débloque une licence](what-a-license-unlocks.md), puis [Ajouter ta licence](add-your-license.md). ## Puis-je utiliser un plugin sans licence ? Oui, sauf si sa carte dans **Administration** › **Plugins** affiche **Nécessite la licence Premium**. La liste est dans [Ce que débloque une licence](what-a-license-unlocks.md). ## Quels sont les onglets de Administration › Licences ? **Vue d'ensemble**, **Utilisateurs** et **Demandes d'accès**. Sans licence, **Vue d'ensemble** dit **Aucune licence valide n'a été configurée pour cette application.** ## Comment renouveler ? Ajoute la nouvelle clé de la même façon : **Ajouter une nouvelle licence**. Elle remplace l'ancienne. ## Où trouver une clé ? Chez ForgeIT : écris à **support@forgeit.fr**. --- # Problèmes courants avec la licence | Ce que tu vois | Que faire | | --- | --- | | **Mettre à jour la clé de licence** est grisé | Colle d'abord la clé dans **Clé de licence**. | | L'interrupteur d'un plugin est grisé, et sa carte affiche **Nécessite la licence Premium** | Ta licence ne le couvre pas. [Ajoute une licence](add-your-license.md) qui le couvre, puis allume-le. | | La carte d'un plugin affiche **Non licencié**, et **Problèmes** affiche **Allumé, mais la licence ne le couvre pas.** | La licence ne couvre plus le plugin, et il n'est pas encore éteint. Clique sur **Corriger** dans **Problèmes**, [ajoute ta nouvelle licence](add-your-license.md), puis vérifie la carte du plugin dans **Plugins**. | | La carte d'un plugin affiche **Éteint : la licence ne le couvre plus** | La licence a expiré ou changé. [Ajoute ta nouvelle licence](add-your-license.md), puis rallume le plugin dans **Plugins**. | | **Problèmes** affiche **Éteint : la licence ne le couvre plus. Renouvelez la licence, puis rallumez-le dans Plugins.** | Comme au-dessus : clique sur **Corriger**, ajoute la licence, puis rallume le plugin. | :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec le message exact de la page. ::: --- # Ce que débloque une licence Certains plugins demandent une licence, comme la connexion par un fournisseur externe. Administration › Licences les liste pour ton instance. Tu le fais en tant qu'administrateur. ## 🔎 Voir ce que débloque une licence 1. Dans la barre latérale, en bas, clique sur **Administration**, puis, sous **SÉCURITÉ**, sur **Licences**. 2. L'onglet **Vue d'ensemble** s'ouvre. Sous l'état de ta licence, la carte **Ce que débloque une licence** liste chaque plugin avec la licence qu'il demande, par exemple : | Plugin | Licence demandée | | --- | --- | | **Grafana** | Licence Premium | | **Polaris** | Licence Premium | | **LaunchDarkly** | Licence Premium | Sa dernière ligne parle de la connexion : **Connexion par un fournisseur externe (GitHub, GitLab, Microsoft, Okta…) : toute licence. Sans licence, seul le compte Astrolabe peut se connecter.** :::tip Sans licence, la ligne en haut de chaque page dit la même chose : **Aucune licence configurée.**, suivie des plugins qui ne peuvent pas être allumés. Son lien **Configurer la licence** ouvre cette carte. ::: ## 🔌 Un plugin que ta licence ne couvre pas Dans **Administration** › **Plugins**, son interrupteur est grisé et sa carte affiche **Nécessite la licence Premium**. Clique sur cette ligne : elle ouvre **Licences**, où tu [ajoutes ta licence](add-your-license.md). Allume ensuite le plugin : voir [Activer un plugin](../plugins/turn-on-a-plugin.md). ## ⏳ Quand une licence ne couvre plus un plugin Un plugin allumé que la licence ne couvre plus est éteint dans les dix minutes : - sa carte dans **Plugins** affiche **Éteint : la licence ne le couvre plus** ; - **Problèmes** montre une ligne **Plugin**, avec son nom et **Éteint : la licence ne le couvre plus. Renouvelez la licence, puis rallumez-le dans Plugins.** Tant qu'il n'est pas éteint, la carte dans **Plugins** affiche **Non licencié**, et **Problèmes** montre une ligne **Plugin**, avec le nom du plugin et **Allumé, mais la licence ne le couvre pas.** Clique sur **Corriger** : l'écran de la licence s'ouvre. Il ne se rallume pas tout seul : 1. [Ajoute ta nouvelle licence](add-your-license.md). 2. Dans **Administration** › **Plugins**, rallume le plugin. Le rallumage une fois la licence renouvelée, et l'état éteint lui-même, n'ont pas été vérifiés sur une instance. ## 📊 Ce que fait Grafana sans licence qui le couvre Grafana fait partie de la licence Premium. Sans licence qui le couvre : - l'onglet **Monitoring** n'est pas sur les composants ; - la carte **Alertes en défaut** dit **Votre licence ne couvre pas Grafana.** ; - **Ajouter une carte** ne propose pas Grafana comme source ; - les alertes que Grafana envoie par webhook sont abandonnées. Voir [Problèmes courants avec Grafana](../../getting-started/Configuration/Integration/grafana/troubleshooting.md). ✅ C'est tout ! La suite : [FAQ Licences](faq.md). --- # Désactiver un plugin Un plugin désactivé disparaît d'Astrolabe : son entrée de la barre latérale et sa page. Ses réglages sont gardés. 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Plugins**. 3. Clique sur l'interrupteur en haut à droite de la carte du plugin. L'interrupteur s'éteint et **Configurer** devient gris. ✅ C'est tout ! Pour le réactiver : [Activer un plugin](turn-on-a-plugin.md). --- # Activer un plugin Un plugin ajoute à Astrolabe une page, un onglet sur les composants ou une carte du tableau de bord. N'active que ceux dont tes équipes se servent. Tu le fais en administrateur. ## 🔌 Activer un plugin 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Plugins**. 3. Cherche le plugin dans la liste. Chaque carte dit ce que le plugin affiche. 4. Clique sur l'interrupteur en haut à droite de sa carte. L'interrupteur s'allume et **Configurer** devient cliquable. Un plugin qui a sa propre page apparaît tout de suite dans la barre latérale. Par exemple, **Tech Atlas** apparaît sous **Documentation**. ✅ C'est tout ! ## ⚙️ Ouvrir les réglages d'un plugin 1. Sur la carte du plugin, clique sur **Configurer**. 2. Les réglages du plugin s'ouvrent. Remplis-les, puis clique sur **Enregistrer**. Les réglages de chaque plugin sont décrits sur sa propre page. :::tip Une fois le plugin activé, ses réglages sont aussi dans **Administration**, dans le menu de gauche de l'administration. ::: ## 🔗 Un plugin qui a besoin d'une intégration Certains plugins lisent un outil extérieur : Argo CD, Azure, Codacy, GitHub, GitLab, Grafana, Jira, SonarQube, Terraform. Leur interrupteur reste gris, et leur carte affiche **Configurez d'abord l'intégration …**. 1. Sur la carte, clique sur **Configurez d'abord l'intégration …**. 2. L'intégration de l'outil s'ouvre dans **Connexions de l'entreprise**. Ajoute-la : voir la page de l'outil dans [Intégrations](../../getting-started/Configuration/Integration/integration.md). 3. Remplis la connexion et clique sur **Ajouter**. Une fenêtre **Rechargement de la configuration** demande de patienter pendant le rechargement de l'instance. Attends qu'elle se ferme. 4. La liste de la connexion montre le nouveau jeton. De retour dans **Plugins**, l'interrupteur du plugin est allumé. Tu n'as rien à allumer : le plugin s'allume tout seul quand tu enregistres l'intégration depuis le lien de sa carte. Une intégration ajoutée autrement laisse le plugin éteint. ## 🔑 Un plugin qui demande une licence Certains plugins demandent une licence : Grafana, Polaris et LaunchDarkly demandent la licence Premium. Sans elle, leur interrupteur reste grisé et leur carte affiche **Nécessite la licence Premium**. 1. Sur la carte, clique sur **Nécessite la licence Premium**. **Licences** s'ouvre. 2. [Ajoute ta licence](../licensing/add-your-license.md). 3. De retour dans **Plugins**, allume le plugin. Vois [Ce que débloque une licence](../licensing/what-a-license-unlocks.md). La suite : [Désactiver un plugin](turn-off-a-plugin.md). --- # FAQ Problèmes ## Que liste la page ? - Une **Connexion de l'entreprise** qui ne se connecte pas : mauvaise adresse, jeton refusé. Voir [Connexions de l'entreprise](../../getting-started/Configuration/Integration/gitlab/add-the-integration.md). - Une **Collecte du catalogue** en échec : voir [Choisir ce que le catalogue importe](../catalog/choose-what-the-catalog-imports.md). - Un bloc **Catalogue** : des composants qui nomment un propriétaire absent du catalogue. Voir [Corriger un composant dont le propriétaire est introuvable](fix-a-missing-owner.md). ## À quelle fréquence est-elle vérifiée ? Toutes les quelques minutes. Clique sur **Revérifier** pour vérifier tout de suite. ## Une page vide prouve-t-elle que tout marche ? Elle dit que chaque connexion réglée se connecte, et que chaque collecte réglée tourne. Une connexion que tu n'as jamais réglée n'est pas listée. --- # Trouver et corriger un problème La page **Problèmes** liste ce qui ne marche pas sur ton Astrolabe en ce moment : une connexion refusée, une collecte du catalogue en échec, un composant dont le propriétaire n'est pas dans le catalogue. Chaque ligne dit où corriger. ## 🔍 Ouvrir la page 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **ÉTAT**, clique sur **Problèmes**. Quand tout va bien, la page dit **Rien n'est cassé : chaque intégration se connecte et chaque collecte tourne.** Quand quelque chose ne va pas, un nombre apparaît à côté de **Administration** dans la barre latérale et à côté de **Problèmes** dans le menu d'Administration : pour un problème, **1 problème**. ## 🔧 Corriger un problème Chaque problème est un bloc : - le genre de problème, par exemple **Connexion de l'entreprise** ou **Collecte du catalogue**, - le nom de la source, par exemple **Jenkins** ou **gitlab**, - ce qui ne va pas, en une phrase. 1. Lis la phrase. Exemple : **Aucun serveur ne répond au nom jenkins.acme.example. Vérifie l'orthographe d'après l'adresse que tu ouvres dans ton navigateur.** 2. Clique sur **Corriger**. Astrolabe ouvre l'écran où tu corriges (ici, la connexion Jenkins). 3. Corrige, par exemple l'adresse du serveur. 4. Reviens sur **Problèmes** et clique sur **Revérifier**. La page se revérifie toute seule toutes les quelques minutes. Quand le problème est réglé, le bloc disparaît. ✅ C'est tout ! La suite : [Corriger un composant dont le propriétaire est introuvable](fix-a-missing-owner.md). --- # Corriger un composant dont le propriétaire est introuvable Un composant nomme son propriétaire dans son `catalog-info.yaml`. Quand le catalogue ne connaît pas ce propriétaire, personne ne possède le composant et il ne compte pour aucune équipe. **Problèmes** le liste, pour que tu n'aies pas à ouvrir les composants un par un. ## 🔍 Trouver les composants 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **ÉTAT**, clique sur **Problèmes**. 3. Repère le bloc marqué **Catalogue**. Son titre est le nom que le catalogue ne trouve pas, par exemple `group:gitlab/does-not-exist`. La phrase dessous compte les composants, par exemple : `2 composants nomment un propriétaire absent du catalogue : group:gitlab/does-not-exist.` Sous la phrase, chaque composant est un lien. Plusieurs composants qui nomment le même propriétaire absent forment un seul bloc. ## ✏️ Corriger le propriétaire 1. Clique sur un composant du bloc. Sur sa page, dans **À propos**, **PROPRIÉTAIRE** montre le nom qu'il écrit. 2. Dans GitLab, corrige `spec.owner` dans le `catalog-info.yaml` du composant. Pour construire le bon nom, suis [Donner à un composant son propriétaire GitLab](../../getting-started/Configuration/Catalogue/gitlab/give-an-owner.md). 3. Dans **Administration › Catalogue**, dans le tableau **Collecte du catalogue**, clique sur **Lancer la collecte des projets GitLab maintenant** (ou **Lancer la collecte GitLab maintenant** si les groupes GitLab ne sont pas importés). 4. Reviens sur **Problèmes** et clique sur **Revérifier**. Le bloc disparaît quand plus aucun composant ne nomme le propriétaire absent. ✅ C'est tout ! La suite : [FAQ Problèmes](faq.md). --- # Problèmes courants avec la page Problèmes | Ce que tu vois | Que faire | | --- | --- | | `Aucun serveur ne répond au nom jenkins.acme.example. Vérifie l'orthographe d'après l'adresse que tu ouvres dans ton navigateur.` | Clique sur **Corriger** et corrige l'adresse du serveur : celle que tu ouvres dans ton navigateur, sans `https://`. | | `La dernière collecte a échoué (404). Relance-la depuis l'écran Catalogue.` | Clique sur **Corriger**. Dans **Administration › Catalogue**, vérifie le **Group** du fournisseur, puis relance la collecte. | | `La collecte a échoué pour une raison qu'Astrolabe n'a pas su identifier. Relancez-la ; si elle échoue encore, prévenez l'administrateur d'Astrolabe de votre entreprise.` | Dans **Administration › Catalogue**, clique sur le bouton de lancement du fournisseur (**Lancer la collecte GitLab maintenant** pour GitLab). | | `2 composants nomment un propriétaire absent du catalogue : group:gitlab/does-not-exist.` | Le propriétaire écrit dans leur `catalog-info.yaml` n'est pas dans le catalogue. Suis [Corriger un composant dont le propriétaire est introuvable](fix-a-missing-owner.md). | :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec la phrase de la page. ::: --- # Vérifier que GitLab joint Astrolabe La carte **GitLab** de l'onglet **Webhooks** te dit ce qu'il est arrivé aux appels. ## 🔍 Lire la carte 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Connexions de l'entreprise**, puis sur l'onglet **Webhooks**. 3. Lis la carte **GitLab** : | La carte dit | Ça veut dire | | --- | --- | | **Aucun appel reçu depuis le démarrage d'Astrolabe.** | GitLab n'a pas encore appelé. | | **Dernier appel accepté le** suivi d'une date | GitLab a appelé avec le bon secret. | | **Refusé (1), la dernière fois le** une date, puis **la source signe avec un autre secret que celui d'Astrolabe : mets le même des deux côtés.** | GitLab a appelé avec un autre secret. | ✅ C'est tout ! La suite : [FAQ Webhooks](faq.md). --- # FAQ Webhooks ## Ai-je besoin d'un webhook ? Non. Sans lui, Astrolabe lit tes outils toutes les quelques minutes. Un webhook rend ça immédiat. ## Quels outils ont un webhook ? L'onglet **Webhooks** montre **GitLab**. ## Où trouver l'adresse à donner à l'outil ? Sur la carte de la source, clique sur **Configurer**, ou **Gérer** si un secret est déjà enregistré. La fenêtre la montre sous **Adresse du webhook** ; **Copier l'adresse** la copie. ## J'ai changé le secret. Et maintenant ? Clique sur **Gérer**, puis **Remplacer**, tape le nouveau secret et clique sur **Enregistrer**. Puis clique sur **Recharger** dans le bandeau, et mets le même secret dans GitLab. ## Où lire ce qu'Astrolabe a reçu ? Sur la carte **GitLab** : [Vérifier que GitLab joint Astrolabe](check-that-calls-arrive.md). ## Qui est prévenu de ce que dit GitLab ? Voir [Choisir tes notifications](../../developer-dashboard/notifications/choose-your-notifications.md). --- # Régler le secret du webhook GitLab Un webhook laisse GitLab prévenir Astrolabe tout de suite quand quelque chose arrive, par exemple un pipeline en échec, au lieu qu'Astrolabe l'apprenne quelques minutes plus tard. Astrolabe ne fait confiance qu'à un appel signé avec un secret que vous connaissez tous les deux. Tu le fais une fois, en tant qu'administrateur. ## Avant de commencer Choisis un secret : un long texte au hasard. Tu écris le même dans GitLab. ## 🔧 Enregistrer le secret dans Astrolabe 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Connexions de l'entreprise**. 3. Clique sur l'onglet **Webhooks**. 4. Sur la carte **GitLab**, clique sur **Configurer**. 5. Dans la fenêtre **Configurer le secret GitLab**, à côté de **Adresse du webhook**, clique sur **Copier l'adresse**. Le bouton dit **Copié**. Garde cette adresse : tu la colles dans GitLab plus bas. 6. Remplis le champ : | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **Adresse du webhook** | Rien à taper : l'adresse que GitLab appelle, copiée à l'étape précédente | `https://astrolabe.exemple.com/api/orion-events/gitlab` | | **Secret du webhook** | Le secret, qui vérifie les requêtes du webhook | `un-long-texte-au-hasard` | 7. Clique sur **Enregistrer**. 8. Dans le bandeau **La configuration a changé.**, clique sur **Recharger**. La carte dit maintenant **Aucun appel reçu depuis le démarrage d'Astrolabe.** et propose **Gérer**. :::tip Changer ou retirer le secret Clique sur **Gérer**. **Remplacer** te laisse taper un nouveau secret, **Supprimer** le retire. La fenêtre montre à nouveau l'adresse à chaque ouverture. ::: Dans ton projet GitLab, ajoute un webhook : l'adresse que tu as copiée est son URL, et le secret est son jeton. Cette étape n'a pas été vérifiée sur une instance. ✅ C'est tout ! La suite : [Vérifier que GitLab joint Astrolabe](check-that-calls-arrive.md). --- # Problèmes courants avec les webhooks | Ce que tu vois | Que faire | | --- | --- | | **Refusé (1), la dernière fois le … : la source signe avec un autre secret que celui d'Astrolabe : mets le même des deux côtés.** | Clique sur **Gérer**, **Remplacer**, tape le secret que GitLab utilise et clique sur **Enregistrer**. | | Sur la carte **Grafana**, **1 événements n'ont atteint personne : la licence ne couvre pas cette source, ses événements sont abandonnés. Voir Administration › Licences.** | Grafana a appelé avec le bon secret, et Astrolabe a abandonné l'alerte parce que la licence ne couvre pas Grafana. [Ajoute une licence](../licensing/add-your-license.md) qui le couvre. | | **Aucun appel reçu depuis le démarrage d'Astrolabe.** | GitLab n'a pas encore appelé. Vérifie le webhook dans GitLab. | | **Enregistrer** est grisé | Tape d'abord le secret dans **Secret du webhook**. | :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec ce que dit la carte **GitLab**. ::: --- # Administrer les ressources IA En administrateur, tu vois quels dépôts Astrolabe lit, ce que chaque lecture a trouvé ou pourquoi elle a échoué, et toutes les ressources IA du catalogue dans un seul tableau. ## Avant de commencer Les ressources IA sont allumées : voir [Allumer les ressources IA](turn-on-ai-resources.md). ## 📋 Voir les dépôts lus 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **INTELLIGENCE**, clique sur **Ressources IA**. L'onglet **Dépôts** s'ouvre. 3. Sous **Dépôts annotés**, lis une ligne par dépôt : **Dépôt**, **État**, **Dernière lecture**, **Commit**, **Ressources** (par exemple **2 skills · 1 agent**) et **Problème**. | État | Sens | | --- | --- | | **Lu** | Le dépôt a été lu et rien ne va mal. | | **Lu, avec des problèmes** | Le dépôt a été lu ; les problèmes sont écrits dans la colonne **Problème**, trois au plus, puis **+ 1 autre problème sur l'onglet du dépôt.** | | **Lecture en échec** | Astrolabe n'a pas pu lire le dépôt. La colonne **Problème** donne la cause. | 4. Clique sur le nom d'un dépôt, ou sur **Ouvrir le dépôt**, pour ouvrir son onglet **Ressources IA**. Sur une ligne dont la lecture a échoué à cause de la connexion, clique sur **Corriger la connexion**. ## ▶️ Relire les dépôts maintenant 1. Sur l'onglet **Dépôts**, clique sur **Lancer maintenant**. Le message **Passage lancé.** apparaît en bas de l'écran et le bouton dit **Lecture en cours…**. 2. Attends la fin. Le message dit **Passage terminé : 3 dépôts lus.**, ou, quand certains ont échoué, **Passage terminé : 2 dépôts sur 4 n'ont pas pu être lus.** Il reste à l'écran jusqu'à ce que tu le fermes. Le tableau se met à jour tout seul. ## 📚 Lister toutes les ressources IA Sous le tableau des dépôts, le tableau **Ressources IA** liste toutes les ressources du catalogue : **Nom**, **Type**, **Propriétaire**, **Dépôt**, **Note** et **Peut exécuter**. Clique sur **Type** ou **Propriétaire** et choisis une valeur pour filtrer. ## ⚙️ Régler les lectures 1. Sur l'onglet **Dépôts**, clique sur **Réglages du passage**. L'onglet **Paramètres** s'ouvre, sous **Administration › Plugins › AI resources**. La ligne **Ce plugin est configuré.** apparaît en haut. 2. L'interrupteur **Lecture planifiée** est allumé, avec **Valeur par défaut** dessous : Astrolabe lit les dépôts tout seul. Règle **Minutes entre deux lectures** (30, et 5 au moins). 3. Règle les limites d'une lecture : | Champ | Ce qu'il limite | Valeur affichée | | --- | --- | --- | | **Dépôts lus au plus** | Dépôts annotés lus en un passage | 200 | | **Fichiers par dépôt** | Fichiers lus dans un dépôt | 2000 | | **Ressources IA par dépôt** | Ressources IA gardées pour un dépôt | 300 | | **Taille d’un fichier (Ko)** | Taille d'un fichier | 256 | | **Taille d’un dépôt (Mo)** | Taille de l'archive d'un dépôt | 50 | 4. Clique sur **Enregistrer**. *Non vérifié sur une instance : l'enregistrement des paramètres.* ## 🚨 Voir un dépôt en échec depuis n'importe quelle page 1. Dans la barre latérale, clique sur **Administration**. L'onglet **Problèmes** s'ouvre. 2. Repère le bloc **Ressources IA**. Il nomme les dépôts qu'Astrolabe n'a pas pu lire et la cause, par exemple **github.com répond quelque chose d'inattendu. Vérifie l'hôte et l'URL d'API.** 3. Clique sur **Corriger**. La connexion qui porte la cause s'ouvre. ✅ C'est fait ! La suite : [Dépannage](troubleshooting.md). --- # FAQ des ressources IA ## Astrolabe exécute-t-il mes skills, mes agents ou mes scripts ? Non. Astrolabe lit les fichiers des dépôts que tu déclares, les indexe et les affiche. Il ne les exécute pas et ne les vérifie pas : la page de chaque ressource le dit. Les scripts, hooks et serveurs MCP qu'il trouve sont listés sous **Ce qu'elle pourrait exécuter**, pour que tu les lises avant d'installer. ## Pourquoi n'y a-t-il pas de numéro de version sur une ressource ? Une ressource est identifiée par son dépôt et son chemin, et Astrolabe montre le **Commit** qu'il a lu. La commande d'**Installer** est épinglée sur ce commit : tu installes exactement la version que tu as lue. ## Pourquoi un runbook n'a-t-il pas de note ? Aucune bonne pratique publique n'existe pour les runbooks, donc Astrolabe n'invente pas de vérifications. Les skills, agents et règles sont notés : voir [La note de qualité des ressources IA](quality-score.md). ## À quelle fréquence les dépôts sont-ils lus ? Selon l'horaire qu'un administrateur règle, et à chaque clic sur **Relire le dépôt** ou **Lancer maintenant** : voir [Administrer les ressources IA](administration.md). ## D'où vient le propriétaire d'une ressource ? Du `spec.owner` du `catalog-info.yaml` du dépôt. Un dépôt sans propriétaire ne publie rien, et le dit sur son onglet **Ressources IA** : voir [Dépannage](troubleshooting.md). --- # Trouver et installer une ressource IA Tu cherches un skill, un agent ou une règle sur une seule page, tu le lis, puis tu copies une commande qui le met dans ton projet. ## Avant de commencer Les ressources IA sont allumées ([Allumer les ressources IA](turn-on-ai-resources.md)) et au moins un dépôt est publié ([Publier tes ressources IA](show-on-a-component.md)). ## 🔎 Trouver une ressource 1. Dans la barre latérale, clique sur **Ressources IA**. Chaque ressource est une carte avec son nom, sa sorte (**skill**, **agent**, **fichier d'instructions** ou **runbook**), sa description, les outils qui lisent son format (**Format lu par Claude Code, Cursor**), son propriétaire, son dépôt et sa note. Au-dessus des cartes, **9 ressources** les compte. 2. Dans **Chercher une ressource IA**, tape un mot d'un nom, d'une description ou d'un tag, par exemple `review`. Les cartes se réduisent pendant que tu tapes. 3. Pour réduire encore, clique sur un des filtres et choisis une valeur : **Type**, **Outil**, **Propriétaire**, **Dépôt**, **Tag**. Choisis **Tous** pour en retirer un. Par exemple, **Outil** › **Codex** garde les ressources que Codex lit. :::tip Un runbook dit **Lue par aucun outil d'IA : un guide pour les personnes**. C'est une procédure à lire, pas un fichier à installer. ::: ## 📖 Lire une ressource avant de t'en servir 1. Clique sur le nom d'une ressource. Sa page s'ouvre sur l'onglet **Vue d'ensemble**. 2. Dans **À propos de cette ressource IA**, lis le **Type**, le **Propriétaire**, le **Dépôt**, le **Chemin** du fichier, le **Commit** qu'Astrolabe a lu, et **Lu le**, la date de cette lecture. 3. Lis **Ce qu'elle pourrait exécuter**. Cette ligne liste les scripts, hooks, serveurs MCP et accès shell trouvés dans la ressource, ou dit **Aucun script, hook, serveur MCP ni shell trouvé.** Pour un skill qui a un script, elle dit par exemple **contient 1 script (scripts/run.sh) · autorise Bash**. 4. Clique sur l'onglet **Contenu** pour lire les fichiers de la ressource. :::caution Astrolabe indexe et affiche ce contenu ; il ne l'exécute ni ne le vérifie. Lisez-le avant de l'installer. ::: ## 📥 Installer une ressource 1. Sur la page de la ressource, clique sur **Installer**. La fenêtre **Installer** s'ouvre, avec une ligne **Faite pour :** qui nomme les outils qui lisent cette ressource. 2. Sous **Votre outil**, clique sur ton outil : **Claude Code**, **Cursor**, **Codex** ou **GitHub Copilot**. La commande et le dossier où elle installe changent avec l'outil, par exemple **S'installe dans .claude/agents** pour Claude Code et **.cursor/agents** pour Cursor. 3. Clique sur **Copier**. Le message **Commande copiée** apparaît en bas de l'écran. 4. Ouvre un terminal à la racine de ton projet et colle la commande. La commande télécharge seulement cette ressource, avec tes propres accès Git au dépôt, et la copie dans ton projet. Elle est épinglée sur le commit qu'Astrolabe a lu (**Épinglée sur le commit 7ea3509**) : tu reçois cette version, pas les suivantes. Reviens dans cette fenêtre pour la mettre à jour. Une ressource du même nom déjà dans le dossier est remplacée. ✅ C'est fait ! ## 🧭 Quand Astrolabe ne donne pas de commande | Ce que tu vois dans la fenêtre | Pourquoi | | --- | --- | | **Codex ne lit pas cette ressource : elle est faite pour Claude Code, Cursor.** | Le format de la ressource n'est pas celui que ton outil lit. Clique sur un outil pour lequel elle est faite, ou demande à son propriétaire une version pour ton outil. | | **Ce fichier porte les instructions d'un projet entier.** | Un `AGENTS.md` ou un `CLAUDE.md` écraserait le tien. Lis-le dans l'onglet **Contenu** et copie ce qu'il te faut. | | **Aucun outil IA ne lit cette ressource : c'est un guide pour les personnes, lisez-le dans l'onglet Contenu.** | C'est un runbook. | La suite : [La note de qualité des ressources IA](quality-score.md). --- # La note de qualité des ressources IA Chaque skill, agent et règle reçoit une note sur 100, calculée d'après des bonnes pratiques publiques. Tu vois quelles vérifications passent, lesquelles échouent, et ce qu'il faut changer dans le dépôt. ## Avant de commencer Compass est allumé et les ressources IA aussi. Astrolabe crée trois compas pour toi : **Skills IA**, **Agents IA** et **Règles IA**. Un runbook n'a pas de note. ## 🧭 Lire la note 1. Dans la barre latérale, clique sur **Ressources IA**. Une carte montre **Note : 100/100**, ou **Note : 40/100**. 2. Clique sur le nom d'une ressource, puis sur l'onglet **Compass**. Une jauge montre la note, et sous **Évaluations** chaque vérification a une coche verte (elle passe) ou une croix rouge (elle échoue). 3. Clique sur une vérification pour l'ouvrir. Elle montre son **Résultat** (**Réussi** ou **Échoué**), ce qu'Astrolabe a **Lu** dans le fichier (un champ entre guillemets, `(vide)` quand il manque, ou un nombre de lignes, de caractères ou d'octets), ce qui est **Attendu** quand la vérification a une limite (par exemple `au plus 200 lignes`), ce qu'il faut changer quand elle échoue, **Corriger dans la source** pour ouvrir le fichier, la **Source** à lire et son **poids**. Pour l'agent `helper`, **Modèle déclaré** dit : - **Résultat :** Échoué - **Lu dans model :** (vide) - **Corriger dans la source** - **À faire :** Indiquez model (sonnet, opus, haiku ou inherit), pour que son coût et son comportement soient connus. - **Choix d'Astrolabe, inspiré de la source — La page citée le recommande ; Astrolabe en fait une vérification.** - **poids : 25 %** 4. Clique sur **Source** pour ouvrir la page d'où vient la vérification. Les vérifications qui concernent le fichier se partagent la note à parts égales : un agent Claude Code a quatre vérifications de 25 % chacune. ## 🏷️ Écrit par la source, ou choix d'Astrolabe Sous chaque vérification, une de ces étiquettes dit d'où elle vient, suivie de ce qu'elle veut dire : | Étiquette | Sens | | --- | --- | | **Écrit par la source** | La page derrière **Source** énonce la règle. | | **Choix d'Astrolabe, inspiré de la source** | La page ne l'exige pas ; Astrolabe la demande parce qu'elle aide à trouver une ressource et à lui faire confiance. | | **Règle de l'entreprise** | Ton entreprise l'a écrite dans Astrolabe. **Page de l'entreprise** ouvre la page que ton entreprise a donnée pour elle. | ## ✅ Les vérifications d'un skill | Vérification | Quoi faire quand elle échoue | Étiquette | | --- | --- | --- | | **Le nom suit le standard** | Indiquez `name` dans `SKILL.md` : de 1 à 64 lettres minuscules, chiffres et tirets (`pdf-processing`). | Écrit par la source | | **Le nom est celui du dossier** | Donnez à `name`, dans `SKILL.md`, le nom de son dossier. | Écrit par la source | | **A une description** | Écrivez une `description` dans `SKILL.md`, de 1 024 caractères au plus. | Écrit par la source | | **Aucune balise XML** | Retirez les balises du nom et de la description. | Écrit par la source | | **Moins de 500 lignes** | Sortez les détails de `SKILL.md` vers les fichiers qu'il cite : gardez-le sous les 500 lignes. | Écrit par la source | | **Dit quand l'utiliser** | Dites dans la description quand utiliser le skill (« Use when… »). | Écrit par la source | | **Nom précis** | Renommez le skill : `helper`, `utils`, `tools`, `documents`, `data` ou `files` ne disent rien de ce qu'il fait. | Écrit par la source | | **Chemins avec des barres obliques** | Écrivez les chemins du skill avec `/`, jamais `\`. | Écrit par la source | | **Licence déclarée** | Indiquez `license` dans `SKILL.md`, pour qu'on sache si on peut le réutiliser. | Choix d'Astrolabe | | **Étiqueté** | Ajoutez des tags à l'en-tête, ou au dépôt dans le catalogue, pour qu'on le trouve dans le magasin. | Choix d'Astrolabe | En clair : le nom suit le standard (1 à 64 minuscules, chiffres et tirets), le nom est celui du dossier, la description existe (1 024 caractères au plus), pas de balises XML, `SKILL.md` sous 500 lignes, la description dit quand s'en servir, le nom n'est pas générique, pas d'antislash dans les chemins, une licence, au moins un tag. Sources : la [spécification Agent Skills](https://agentskills.io/specification), les [bonnes pratiques d'Anthropic](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices), les [skills de Claude Code](https://code.claude.com/docs/en/skills) et le [guide entreprise d'Anthropic](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/enterprise). ## ✅ Les vérifications d'un agent | Vérification | Quoi faire quand elle échoue | Étiquette | | --- | --- | --- | | **A un nom et une description** | Indiquez `name` et `description` dans l'en-tête de l'agent. | Écrit par la source | | **Dit quand l'utiliser** | Dites dans la description quand utiliser l'agent (« Use proactively after… »). | Écrit par la source | | **Outils limités** | Listez dans `tools` les outils dont l'agent a besoin : sans cette liste, il les reçoit tous. | Écrit par la source | | **Modèle déclaré** | Indiquez `model` (`sonnet`, `opus`, `haiku` ou `inherit`), pour que son coût et son comportement soient connus. | Choix d'Astrolabe | | **Dans la limite de Copilot** | Raccourcissez le prompt de l'agent : Copilot en lit 30 000 caractères au plus. | Écrit par la source | En clair : un nom et une description, la description dit quand déléguer, la liste `tools` est limitée (sans elle l'agent les reçoit tous), un `model` est déclaré, et le prompt tient dans les 30 000 caractères que Copilot lit. Sources : les [sous-agents de Claude Code](https://code.claude.com/docs/en/sub-agents) et les [agents personnalisés de GitHub Copilot](https://docs.github.com/en/copilot/reference/custom-agents-configuration). ## ✅ Les vérifications d'une règle | Vérification | Quoi faire quand elle échoue | Étiquette | | --- | --- | --- | | **CLAUDE.md sous les 200 lignes** | Découpez `CLAUDE.md` en fichiers `.claude/rules` : gardez-le sous les 200 lignes. | Écrit par la source | | **Règle Cursor sous les 500 lignes** | Découpez la règle : gardez-la sous les 500 lignes. | Écrit par la source | | **Règle Cursor ciblée** | Indiquez `alwaysApply`, une `description` ou des `globs`, pour que Cursor sache quand appliquer la règle. | Choix d'Astrolabe | | **applyTo renseigné** | Indiquez dans `applyTo` les fichiers auxquels s'appliquent les instructions. | Écrit par la source | | **AGENTS.md sous les 32 Kio** | Raccourcissez `AGENTS.md` : Codex n'en lit que 32 Kio. | Écrit par la source | | **Instructions Copilot sous les 4 000 caractères** | Raccourcissez les instructions, ou mettez les règles de revue en premier : la revue de code de Copilot lit les 4 000 premiers caractères. | Écrit par la source | Une vérification qui ne concerne pas le fichier sort de sa note : une règle Cursor n'est notée que sur les deux vérifications Cursor. L'onglet **Compass** les nomme au-dessus de la liste, par exemple **1 évaluation ne concerne pas ce fichier : Dans la limite de Copilot.** Aucune vérification ne concerne un `GEMINI.md` ni une règle de `.claude/rules/`. Leur carte affiche **Note : aucun contrôle pour ce type de fichier**, et leur onglet **Compass** affiche **Aucun contrôle de ce compas ne concerne ce type de fichier : il n'y a rien à noter.** Sources : la [mémoire de Claude Code](https://code.claude.com/docs/en/memory), les [règles de Cursor](https://cursor.com/docs/context/rules), les [instructions de GitHub Copilot](https://docs.github.com/en/copilot/how-tos/configure-custom-instructions/add-repository-instructions), la [revue de code de GitHub Copilot](https://docs.github.com/en/copilot/how-tos/use-copilot-agents/request-a-code-review/use-code-review) et l'[AGENTS.md de Codex](https://learn.chatgpt.com/docs/agent-configuration/agents-md). ## 🏢 Ajouter les règles de ton entreprise Ton entreprise a ses propres règles : une description en français, un tag sur chaque ressource, aucun mot de passe dans un fichier. Écris chacune dans Astrolabe, et chaque ressource qu'elle concerne est notée dessus. Il te faut le droit de créer et de modifier les évaluations Compass. ### Écrire la règle 1. Dans la barre latérale, clique sur **Administration**, puis **Compass**, puis l'onglet **Évaluations**. 2. Clique sur **Créer une évaluation**. Une fenêtre s'ouvre. 3. Dans **Nom**, écris le nom de la règle, par exemple `Description en français`. 4. Dans **Description**, écris quoi faire quand elle échoue, par exemple `Écris la description de l'agent en français.` On la lit sous la vérification en échec. 5. Dans **Point de données**, choisis le type de règle, par exemple **Règle de l'entreprise : champ d'en-tête conforme**. 6. Dans **Passe quand le contrôle est**, choisis **Vrai**. 7. Remplis les réglages sous **Paramètres**. Pour une description en français : - **Champ d'en-tête :** `description` - **Expression régulière :** `[àâçéèêëîïôûù]` - **Seulement pour ces formats (facultatif) :** `claude-code/agent` 8. Dans **Lien vers la page de l'entreprise (facultatif)**, colle l'adresse de ta page interne sur cette règle, par exemple `https://intranet.exemple.com/regles-ia`. 9. Clique sur **Sauvegarder**. La règle apparaît dans la liste, dans le bloc **Ressources IA**, et un message dit **Évaluation créée. Elle compte dans une note une fois ajoutée à un compas : onglet Compas, Modifier, Ajouter une évaluation.** ### L'ajouter à un compas 1. Clique sur l'onglet **Compas**. Sur la carte **Agents IA**, clique sur **Modifier**. 2. Sous **Évaluations**, clique sur **Ajouter une évaluation**. Coche ta règle, puis clique sur **Sauvegarder les évaluations choisies**. 3. Clique sur **Sauvegarder**. ✅ C'est fait ! À la prochaine lecture d'une ressource, son onglet **Compass** montre ta règle. Quand elle échoue, il montre ce qu'il a lu, ce qui est **Attendu** (par exemple `description qui correspond à « [àâçéèêëîïôûù] »`), **Corriger dans la source**, ta description après **À faire :**, et **Règle de l'entreprise**, avec **Page de l'entreprise**. ### Les types de règle | Point de données | Réglages | Passe quand | | --- | --- | --- | | **Règle de l'entreprise : champ d'en-tête présent** | **Champ d'en-tête** | Le front matter a ce champ. | | **Règle de l'entreprise : champ d'en-tête égal à** | **Champ d'en-tête**, **Valeur** | Le champ a exactement cette valeur. | | **Règle de l'entreprise : champ d'en-tête conforme** | **Champ d'en-tête**, **Expression régulière** | Le champ correspond à l'expression. | | **Règle de l'entreprise : étiquette obligatoire** | **Étiquette** | La ressource a ce tag. | | **Règle de l'entreprise : au plus N lignes** | **Nombre de lignes maximum** | Le fichier a au plus ce nombre de lignes. | | **Règle de l'entreprise : au plus N octets** | **Nombre d'octets maximum** | Le fichier pèse au plus ce nombre d'octets. | | **Règle de l'entreprise : format autorisé** | **Formats autorisés** | Le fichier est dans un de ces formats. | | **Règle de l'entreprise : le fichier contient** | **Expression régulière** | Une ligne du fichier correspond à l'expression. | | **Règle de l'entreprise : le fichier ne contient pas** | **Expression régulière** | Aucune ligne du fichier ne correspond à l'expression. | Le **Champ d'en-tête** des deux règles qui lisent une valeur liste les champs qu'Astrolabe garde : `name`, `description`, `model`, `tools`, `license`, `applyTo`, `globs`, `alwaysApply`. Chaque règle prend aussi **Seulement pour ces formats (facultatif)** : une liste séparée par des virgules, par exemple `agent-skills/SKILL.md, claude-md`. Sur un fichier d'un autre format, la règle ne compte pas dans la note. | Format | Fichiers | | --- | --- | | `agent-skills/SKILL.md` | un skill (`SKILL.md`) | | `claude-code/agent` | un agent Claude Code | | `copilot/agent` | un agent GitHub Copilot (`*.agent.md`) | | `claude-md` | `CLAUDE.md` | | `agents-md` | `AGENTS.md` | | `gemini-md` | `GEMINI.md` | | `copilot/instructions` | `.github/copilot-instructions.md` | | `copilot/path-instructions` | `*.instructions.md` | | `cursor/rule` | une règle Cursor (`.mdc`) | | `claude-code/rule` | une règle dans `.claude/rules/` | :::tip Une expression régulière suit la syntaxe RE2. `(?i)` au début ignore la casse : `(?i)confidentiel`. ::: ### Problèmes courants | Ce que la fenêtre dit sous un champ | Quoi faire | | --- | --- | | **Astrolabe ne sait pas exécuter cette expression régulière (RE2 : ni lookaround, ni référence arrière, 500 caractères au plus).** | Retire `(?=…)`, `(?!…)` et `\1` de l'expression, ou raccourcis-la. | | **Nombre de lignes maximum doit être un nombre entier, 0 ou plus.** | Écris un nombre sans signe ni décimale, par exemple `300`. | | **Format inconnu : …** | Écris les formats exactement comme dans le tableau ci-dessus. | | **Le lien doit commencer par https:// ou http://.** | Colle l'adresse complète de la page. | ## 🔄 Voir la note monter 1. Corrige le fichier dans Git et pousse-le sur la branche par défaut. 2. Dans la barre latérale, clique sur **Catalogue**, clique sur le composant du dépôt, puis sur l'onglet **Ressources IA**. 3. Clique sur **Relire le dépôt**. Quand c'est fini, le message **Dépôt relu, note recalculée.** apparaît en bas de l'écran. 4. Ouvre la ressource, puis son onglet **Compass** : la vérification que tu as corrigée a une coche verte. ✅ C'est fait ! :::tip Sans **Relire le dépôt**, Compass note les ressources IA toutes les 6 heures. ::: Si tu vois **Note : non mesurée** ou **Pas encore notée** à la place d'un chiffre, voir [Dépannage](troubleshooting.md). --- # Publier tes ressources IA Ton équipe garde des skills, des agents, des règles et des runbooks dans un dépôt Git. Tu déclares les dossiers dans le `catalog-info.yaml` de ce dépôt, et Astrolabe liste chaque ressource sur la page **Ressources IA** et sur un onglet du dépôt. Le plugin doit être allumé d'abord : voir [Allumer les ressources IA](turn-on-ai-resources.md). ## 📚 Les quatre sortes de ressource | Sorte | Ce que c'est | Annotation | Ce qu'Astrolabe reconnaît sous le chemin | | --- | --- | --- | --- | | **Skill** | Un dossier d'instructions qu'un outil IA charge quand il en a besoin | `astrolabe.forgeit.tech/ai-skills-path` | Chaque dossier qui contient un `SKILL.md` | | **Agent** | Un sous-agent ou un persona | `astrolabe.forgeit.tech/ai-agents-path` | Chaque fichier `*.md` qui commence par un `name` et une `description` (en-tête), et chaque fichier `*.agent.md` | | **Règle** | Les instructions données à chaque session | `astrolabe.forgeit.tech/ai-rules-path` | `AGENTS.md`, `CLAUDE.md`, `GEMINI.md`, `.github/copilot-instructions.md`, `*.mdc`, `*.instructions.md` et les `*.md` de `.claude/rules` | | **Runbook** | Une procédure à suivre, pour une personne ou un assistant | `astrolabe.forgeit.tech/ai-runbooks-path` | Chaque fichier `*.md` | ## 🗂️ Où mettre les fichiers dans le dépôt Une valeur est un chemin depuis la racine du dépôt : un dossier ou un fichier. Mets plusieurs chemins sur une même ligne, séparés par des virgules. ```text acme-ai-kit/ ├── catalog-info.yaml ├── AGENTS.md ├── skills/ │ └── code-review/ │ └── SKILL.md ├── .claude/ │ └── agents/ │ └── test-writer.md ├── .cursor/ │ └── rules/ │ └── typescript.mdc └── runbooks/ └── rotate-a-token.md ``` ## 🚀 Déclarer le dépôt 1. Ouvre le `catalog-info.yaml` à la racine du dépôt. 2. Ajoute les annotations des sortes que tu publies, sous `metadata.annotations`. Garde seulement les lignes dont tu te sers. ```yaml apiVersion: backstage.io/v1alpha1 kind: Component metadata: name: acme-ai-kit description: Skills, agents et règles partagés par l'équipe plateforme tags: [ai, platform] annotations: astrolabe.forgeit.tech/ai-skills-path: skills, .claude/skills astrolabe.forgeit.tech/ai-agents-path: .claude/agents astrolabe.forgeit.tech/ai-rules-path: AGENTS.md, .cursor/rules astrolabe.forgeit.tech/ai-runbooks-path: runbooks spec: type: library lifecycle: production owner: group:default/platform-team ``` | Champ | Ce qu'il faut saisir | Exemple | | --- | --- | --- | | `metadata.name` | Le nom du composant du dépôt | `acme-ai-kit` | | `metadata.tags` | Les mots que les gens cherchent. Chaque ressource les reçoit | `[ai, platform]` | | `spec.owner` | Le groupe propriétaire du dépôt. Chaque ressource reçoit ce propriétaire | `group:default/platform-team` | | `spec.lifecycle` | `experimental`, `production` ou `deprecated`. Chaque ressource le reçoit | `production` | 3. Valide le fichier et pousse-le sur la branche par défaut. 4. Si le dépôt n'est pas encore dans le catalogue, enregistre-le : voir [Enregistrer un composant](../catalog/register-a-component.md). :::tip Un composant sans aucune annotation `astrolabe.forgeit.tech/ai-…` n'est jamais lu. ::: ## ✨ Partir du modèle Le modèle crée un dépôt avec un exemple de chaque sorte et les annotations déjà écrites. 1. Dans la barre latérale, clique sur **La Fabrique**. 2. Sur la carte **AI resources repository**, clique sur **Choisir**. 3. À l'étape **The repository**, remplis : | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **Name** | Des lettres minuscules, des chiffres et des tirets. Il nomme le dépôt et le composant | `acme-ai-kit` | | **Description** | À quoi servent les ressources de ce dépôt | `Skills et agents de l'équipe plateforme` | | **Owner** | L'équipe qui répond de ces ressources. Clique sur le champ et choisis | `platform-team` | | **Kinds of resources** | Coche **Skills**, **Agents**, **Rules (AGENTS.md)**, **Runbooks** : un dossier et un exemple pour chaque sorte cochée | les quatre | 4. Clique sur **Suivant**. 5. À l'étape **Where to create it**, choisis l'**Hôte**, puis remplis **Propriétaire** (l'organisation ou l'utilisateur du nouveau dépôt) et **Dépôt** (son nom). 6. Clique sur **Vérifier**, contrôle tes réponses, puis clique sur **Créer**. *Non vérifié sur une instance : la création elle-même, qui demande un hôte GitHub où l'instance peut écrire.* ## ✅ Vérifier que ça a marché 1. Dans la barre latérale, clique sur **Catalogue**, puis sur le composant du dépôt. 2. Clique sur l'onglet **Ressources IA**. Il montre l'état de la lecture (**Lu**), le commit et les ressources trouvées, par exemple **2 skills** et **1 agent**. 3. Clique sur **Relire le dépôt**. Le message **Lecture du dépôt lancée.** apparaît en bas de l'écran, puis **Dépôt relu : 3 ressources.** 4. Dans la barre latérale, clique sur **Ressources IA** : chaque ressource est une carte, avec le propriétaire du dépôt. ✅ C'est fait ! La suite : [Trouver et installer une ressource IA](find-and-install.md). ## ❓ Questions fréquentes **Puis-je mettre plusieurs sortes dans le même dossier ?** Chaque chemin appartient à une sorte. Un `SKILL.md` trouvé sous `ai-rules-path` n'est pas publié comme règle : Astrolabe te dit d'ajouter son dossier à `ai-skills-path`. **D'où viennent le propriétaire et le cycle de vie d'une ressource ?** Du `catalog-info.yaml` du dépôt (`spec.owner`, `spec.lifecycle`), jamais du fichier de la ressource. **Astrolabe exécute-t-il mes scripts ?** Non. Voir la [FAQ](faq.md). **Comment retirer une ressource ?** Supprime-la du dépôt, ou retire l'annotation. Elle disparaît à la prochaine lecture. **Où vois-je ce qui ne va pas dans mon dépôt ?** Sur l'onglet **Ressources IA** du composant, sous **Problèmes** : voir [Dépannage](troubleshooting.md). --- # Dépannage ## La page et le plugin | Ce que tu vois | Quoi faire | | --- | --- | | **Les ressources IA sont désactivées par l'administrateur** | Le plugin est éteint. Un administrateur l'allume dans **Administration** › **Plugins** : voir [Allumer les ressources IA](turn-on-ai-resources.md). | | **Aucune ressource IA pour l'instant** | Aucun dépôt n'est publié, ou aucun n'a encore été lu. Ajoute les annotations : voir [Publier tes ressources IA](show-on-a-component.md). Sur cette page, **Copier l'exemple** copie un `catalog-info.yaml` pour partir de quelque chose. | | **Aucun résultat parmi 9 ressources (1 critère actif).** | La recherche ou un filtre ne garde rien. Clique sur **Retirer les filtres**. | | **La recherche n'a pas répondu.** | Clique sur **Réessayer**. Si ça dure, préviens ton administrateur. | | **Les valeurs de ce filtre n'ont pas pu être chargées.** | Recharge la page dans un instant. | | **50 sur 120 ressources affichées : affinez la recherche ou les filtres.** | La page montre les 50 premières ressources. Tape un mot dans **Chercher une ressource IA** ou choisis un filtre. | | **Ressource IA introuvable.** | La ressource n'est pas (ou plus) dans le catalogue. Reviens sur **Ressources IA** et cherche à nouveau. | ## L'onglet Ressources IA d'un dépôt Chaque message ci-dessous apparaît sous **Problèmes** sur l'onglet **Ressources IA** du composant, et sur l'onglet **Dépôts** de **Administration** › **Ressources IA**. | Ce que tu vois | Quoi faire | | --- | --- | | **Annotation inconnue `astrolabe.forgeit.tech/ai-skill-path`. Vouliez-vous dire `astrolabe.forgeit.tech/ai-skills-path` ?** | Le nom de l'annotation est mal écrit. Prends le nom qu'elle propose. | | **Annotation inconnue `astrolabe.forgeit.tech/ai-tools-path` : Astrolabe lit ai-skills-path, ai-agents-path, ai-rules-path, ai-runbooks-path.** | Prends un des quatre noms. | | **Le dossier `playbooks` (annotation `astrolabe.forgeit.tech/ai-runbooks-path`) n'existe pas sur la branche par défaut.** | Le chemin est faux, ou le dossier n'est pas encore poussé sur la branche par défaut. Corrige la valeur de l'annotation, ou pousse le dossier. | | **0 skill reconnu dans `skills` : un skill est un dossier qui contient un `SKILL.md`.** | Le chemin ne contient aucun skill. Vérifie le chemin et que chaque dossier de skill contient un `SKILL.md`. | | **0 agent reconnu dans `agents` : un agent est un fichier Markdown avec un `name` et une `description`.** | Ajoute `name` et `description` à l'en-tête de chaque fichier d'agent. | | **0 fichier d'instructions reconnu dans `rules` : sont reconnus AGENTS.md, CLAUDE.md, GEMINI.md, \*.mdc, \*.instructions.md, copilot-instructions.md et .claude/rules/\*.md.** | Fais pointer `ai-rules-path` vers un de ces fichiers ou vers le dossier qui les contient. | | **0 runbook reconnu dans `runbooks` : un runbook est un fichier Markdown.** | Mets un fichier `.md` dans le dossier, ou corrige le chemin. | | **`rules/pdf/SKILL.md` est un skill : ajoutez son dossier `rules/pdf` à `astrolabe.forgeit.tech/ai-skills-path`.** | Un fichier trouvé sous une autre sorte. Fais ce que dit le message. Le même message existe pour un agent ou une règle : ajoute-le à l'annotation que le message nomme. | | **Le frontmatter de `agents/broken.md` est invalide à la ligne 3 : le bloc YAML entre les deux lignes `---` en haut du fichier ne se lit pas. Regardez cette ligne : un crochet ou un guillemet non fermé en est la cause habituelle.** | Ouvre le fichier, va à la ligne nommée, et ferme le crochet ou le guillemet. | | **Ce dépôt n'a pas de propriétaire (`spec.owner`) : rien n'est publié.** | Ajoute `spec.owner` au `catalog-info.yaml`, par exemple `group:default/platform-team`. | | **Ce dépôt n'a pas d'annotation `backstage.io/source-location` : Astrolabe ne peut pas le lire.** | Enregistre le dépôt depuis son URL : voir [Enregistrer un composant](../catalog/register-a-component.md). | | **Seuls les emplacements `url:` peuvent être lus.** | L'emplacement du composant n'est pas un emplacement `url:`. Enregistre-le à nouveau depuis son URL. | | **L'annotation `backstage.io/source-location` de ce dépôt pointe hors du dépôt d'où il a été enregistré : Astrolabe ne lit un composant que dans son propre dépôt.** | Corrige l'annotation pour qu'elle pointe vers le dépôt qui contient le `catalog-info.yaml`. | | **2500 fichiers, limite 2000 : le dépôt est sauté, ses ressources déjà publiées restent.** | Le dépôt est trop gros. Demande à ton administrateur d'augmenter **Fichiers par dépôt** dans **Paramètres**, ou déclare un dossier plus petit. | | **350 ressources, limite 300 : seules les 300 premières sont publiées.** | Demande à ton administrateur d'augmenter **Ressources IA par dépôt**, ou découpe le dépôt. | | **`skills/big/SKILL.md` pèse 300000 octets, limite 262144 : le fichier est ignoré.** | Raccourcis le fichier, ou demande à ton administrateur d'augmenter **Taille d'un fichier**. | | **60000000 octets à lire, limite 52428800 : le dépôt est sauté, ses ressources déjà publiées restent.** | Demande à ton administrateur d'augmenter **Taille d'un dépôt**. | | **250 dépôts annotés, limite 200 : celui-ci n'est pas lu.** | Demande à ton administrateur d'augmenter **Dépôts lus au plus**. | | **Non relu depuis le 25/10/2026 : les ressources ci-dessous sont celles de cette lecture.** | La dernière lecture a échoué. La cause est sur le même onglet. | | **Ce dépôt n'a encore jamais été lu avec succès.** | La cause de l'échec est sur le même onglet. | | **Pas encore lu : la prochaine lecture publiera ses ressources.** | Clique sur **Relire le dépôt**. | | **Vous n'avez pas le droit de rafraîchir ce composant.** | Ton rôle ne te laisse pas relire le dépôt. Demande à un administrateur, ou attends la prochaine lecture. | | **Un passage est déjà en cours : réessayez dans un instant.** | Attends, puis clique à nouveau. | | **Le dépôt n'a pas été relu en 2 minutes : rechargez la page dans un instant.** | Recharge la page. | ## Quand la lecture échoue L'état est **Lecture en échec**. Le message commence par l'hôte qu'Astrolabe a essayé de joindre, par exemple `gitlab.exemple.com`. | Ce que tu vois | Quoi faire | | --- | --- | | **gitlab.exemple.com refuse les identifiants (401) : le jeton de la connexion est peut-être faux ou expiré.** | Dans **Administration** › **Connexions de l'entreprise**, remplace le jeton. | | **github.com refuse les identifiants : le jeton de la connexion est peut-être faux ou expiré.** (sans statut) | Astrolabe n'a même pas pu utiliser les identifiants : sur GitHub, c'est le plus souvent une **application GitHub** dont la clé privée n'est pas le contenu du fichier `.pem`. Dans **Administration** › **Connexions de l'entreprise** › **GitHub Apps**, colle de nouveau tout le fichier `.pem`, de `-----BEGIN` à `-----END`. | | **gitlab.exemple.com accepte le jeton mais refuse l'accès (403) : donnez au jeton le droit de lire ce dépôt.** | Donne au jeton le droit de lire le dépôt. | | **gitlab.exemple.com répond « introuvable » (404) : le dépôt a bougé, ou le jeton ne le voit pas.** | Vérifie l'adresse du dépôt, et que le jeton le voit. | | **Aucun serveur ne répond au nom gitlab.exemple.com : vérifiez l'hôte de la connexion.** | Corrige l'hôte dans **Connexions de l'entreprise**. | | **gitlab.exemple.com ne répond pas à temps : vérifiez son nom et son port.** | Corrige le nom et le port de la connexion. | | **gitlab.exemple.com refuse la connexion : vérifiez le port, et que le serveur tourne.** | Vérifie le port, et démarre le serveur. | | **Astrolabe ne fait pas confiance au certificat de gitlab.exemple.com (souvent un certificat interne).** | Préviens l'administrateur d'Astrolabe : le certificat doit être reconnu. | | **gitlab.exemple.com est trop occupé pour répondre (429) : la prochaine lecture réessaiera.** | Attends la prochaine lecture, ou clique plus tard sur **Lancer maintenant**. | | **gitlab.exemple.com répond quelque chose d'inattendu.** | Vérifie l'hôte et l'URL d'API de la connexion dans **Connexions de l'entreprise**. | | **Astrolabe n'a pas pu lire ce dépôt sur gitlab.exemple.com.** | Lis les autres messages de l'onglet. | Clique sur **Corriger la connexion** sur la ligne pour ouvrir la connexion. Au-dessus de ses jetons, la page dit lequel lit l'hôte, par exemple **Astrolabe lit gitlab.exemple.com avec le jeton « GitLab ».** Si elle dit **Aucun jeton de cette connexion n'est pour gitlab.exemple.com : ajoutez-en un avec « Ajouter un jeton ».**, ajoute un jeton pour cet hôte. La colonne **Hôte** donne l'hôte de chaque jeton. ## Quand une lecture tourne | Ce que tu vois | Quoi faire | | --- | --- | | **Un passage est déjà en cours : Astrolabe le suit.** | Attends la fin : le tableau se met à jour. | | **Le passage s'est arrêté avant de lire les dépôts : le catalogue n'a pas répondu. Réessayez dans un moment.** | Clique à nouveau sur **Lancer maintenant** dans un moment. | | **Le passage n'est pas terminé au bout de 2 minutes : le tableau se mettra à jour à la fin.** | Attends : le tableau se met à jour quand le passage est fini. | | **L'état des dépôts n'a pas pu être lu.** | Recharge la page. | | **Le catalogue n'a pas répondu : les ressources IA ne peuvent pas être listées pour l'instant.** | Recharge la page dans un moment. | ## Le fichier d'une ressource | Ce que tu vois | Quoi faire | | --- | --- | | **Le fichier n'a pas pu être lu : rechargez la page dans un instant.** | Recharge la page. | | **Ce fichier ne peut pas être affiché : son nom contient des caractères qu'Astrolabe ne lit pas (une espace, un accent…).** | Renomme le fichier dans le dépôt, sans espace ni accent. | | **Affiché en partie : le fichier est plus long que ce qu'Astrolabe lit.** | Lis la fin du fichier dans le dépôt. | ## La fenêtre Installer | Ce que tu vois | Quoi faire | | --- | --- | | **Codex ne lit pas cette ressource : elle est faite pour Claude Code, Cursor.** | Choisis un outil pour lequel elle est faite. | | **Ce fichier porte les instructions d'un projet entier.** | Lis-le dans l'onglet **Contenu** et copie ce qu'il te faut. | | **Astrolabe ne sait pas encore calculer de commande d'installation pour gitlab.exemple.com.** | Copie les fichiers depuis le dépôt, à la main. | | **Astrolabe ne donne pas de commande pour cette ressource : son chemin ou son adresse ne peut pas entrer sans risque dans une commande.** | Copie les fichiers depuis le dépôt, à la main. | | **Astrolabe ne donne pas de commande pour cette ressource : son serveur répond en http et Astrolabe n'a pas pu lire le commit, donc rien ne garantit que les fichiers seraient ceux qu'il a lus.** | Copie les fichiers depuis le dépôt, à la main, ou relis le dépôt. | | **Non épinglée : Astrolabe n'a pas pu lire le commit. La commande installe l'état actuel de la branche par défaut.** | Relis le dépôt pour épingler la commande sur un commit. | | **Copie impossible : sélectionnez le texte.** | Sélectionne la commande à la souris et copie-la. | ## La note | Ce que tu vois | Quoi faire | | --- | --- | | **Pas encore notée** | Compass n'a pas encore noté la ressource. Clique sur **Relire le dépôt** sur l'onglet **Ressources IA** du dépôt : elle est notée tout de suite. | | **Note : non mesurée** ou **Non mesuré** | Compass n'a pas pu mesurer les vérifications. Ouvre l'onglet **Compass** de la ressource et lis la raison sous **Non mesuré**. | | **Note indisponible : Compass n'a pas répondu.** | Recharge la page dans un moment. Si ça dure, préviens ton administrateur : le plugin Compass doit tourner. | | **Astrolabe n'a pas encore lu cette ressource IA : relancez la lecture de son dépôt depuis l'onglet Ressources IA du dépôt.** | Fais ce qu'il dit. | | **Le dépôt a été relu, mais Compass n'a pas pu recalculer la note : réessayez dans un moment.** | Clique à nouveau sur **Relire le dépôt** dans un moment. | | **Certaines vérifications n'ont pas pu être mesurées : elles ne comptent ni pour ni contre le score.** | Lis la raison sous chaque vérification **Non mesuré**. | :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec ce que tu vois à l'écran. ::: --- # Allumer les ressources IA Les ressources IA rassemblent sur une page d'Astrolabe les skills, agents, règles et runbooks que tes équipes gardent dans leurs dépôts. Chacun les y trouve et les lit avant de les installer dans son outil IA. Tu les allumes une fois, en administrateur. Elles sont éteintes sur une instance neuve. ## 🔌 Allumer le plugin 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Plugins**. 3. Sur la carte **Ressources IA**, clique sur l'interrupteur **Activer Ressources IA**. La page se recharge et le message **Activé : Ressources IA** apparaît en bas de l'écran. 4. Dans la barre latérale, clique sur **Ressources IA**. La page dit **Aucune ressource IA pour l'instant** tant qu'aucun dépôt n'en publie (voir [Publier tes ressources IA](show-on-a-component.md)). ✅ C'est fait ! La suite : [Publier tes ressources IA](show-on-a-component.md), pour remplir la page. ## ❓ Questions fréquentes **Qui peut les allumer ?** Seul un administrateur. **Y a-t-il quelque chose à configurer ?** Non. Le plugin lit les dépôts que ton catalogue lit déjà. **Comment une ressource arrive-t-elle sur la page ?** Une équipe déclare les dossiers de son dépôt dans son `catalog-info.yaml` : voir [Publier tes ressources IA](show-on-a-component.md). ## 🛠️ Dépannage **La page dit « Les ressources IA sont désactivées par l'administrateur ».** Le plugin est éteint sur cette instance. Un administrateur l'allume dans **Administration** › **Plugins** (étapes ci-dessus). **Il n'y a pas d'entrée Ressources IA dans la barre latérale.** Même cause : le plugin est éteint. --- # FAQ des annonces ## Qui voit une annonce ? Les utilisateurs des groupes choisis dans **Sélectionner des groupes**. Avec **Tous les groupes**, tout le monde. ## Puis-je publier une annonce ? Seuls les administrateurs le peuvent : **Gérer les annonces** est dans **Administration**. Tous les autres les lisent avec le mégaphone ([Lire les annonces](read-announcements.md)). ## Un brouillon apparaît-il dans le mégaphone ? Non. Une annonce en **Brouillon** est enregistrée dans **Gérer les annonces**, et personne d'autre ne la voit. ## Puis-je modifier une annonce déjà publiée ? Oui : dans **Gérer les annonces**, clique sur son titre, change-la et clique sur **Save**. Les utilisateurs déjà prévenus ne le sont pas une seconde fois. --- # Publier une annonce Tu es administrateur et tu veux dire quelque chose à tes utilisateurs : écris l'annonce, choisis son audience, et publie-la. ## Avant de commencer Tu es connecté en tant qu'administrateur. ## Publier 1. Dans la barre latérale de gauche, en bas, clique sur **Administration**. 2. Dans le menu de gauche, sous **PARAMÈTRES**, clique sur **Annonces**. 3. En haut à droite, clique sur **Nouvelle annonce**. 4. Remplis le formulaire **Créer une annonce** : | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **Titre** | Le titre (obligatoire) | `Maintenance prévue` | | **Description** | Le texte (obligatoire) | `Astrolabe sera indisponible samedi de 20 h à 21 h.` | | **Sélectionner des groupes** | Qui la lit. Clique sur le champ, choisis **Tous les groupes** ou une équipe, puis appuie sur Échap pour fermer la liste | `Tous les groupes` | | **Statut** | Il vaut **Brouillon** au départ. Choisis **Active** pour publier maintenant | `Active` | | **Sévérité** | **Faible**, **Normal**, **Élevée** ou **Critique** | `Normal` | Sous le champ **Sélectionner des groupes**, le nombre de lecteurs s'affiche. 5. Clique sur **Créer**. Le bouton reste grisé tant que les champs obligatoires ne sont pas remplis. La liste **Gérer les annonces** montre ton annonce avec son **Audience** (**Tous les groupes**, ou le nom de l'équipe), son **Statut** (**Active**) et sa date **Publiée le**, écrite dans la langue de l'interface. Un brouillon se lit **Inactive**. Tes utilisateurs la voient dans le mégaphone : voir [Lire les annonces](read-announcements.md). ## Préparer une annonce pour plus tard Le champ **Statut** propose aussi : | Statut | Ce qu'il fait | | --- | --- | | **Brouillon** | Enregistre l'annonce sans la montrer à personne. Sa date **Publiée le** affiche `-` | | **Planifiée** | Ajoute le champ **Date et heure de planification** : choisis une date à venir | ## Modifier une annonce 1. Dans **Gérer les annonces**, clique sur le titre de l'annonce. 2. Dans **Edit Announcement**, change ce que tu veux. Sur une annonce déjà active, un bandeau dit : **This announcement is currently active. Recipients who have already been notified won't be notified again.** 3. Clique sur **Save**. ## Supprimer une annonce 1. Dans **Gérer les annonces**, à la fin de sa ligne, clique sur la corbeille rouge (**Supprimer l'annonce**). 2. Dans la fenêtre **Delete Announcement**, clique sur **Delete**. ✅ C'est tout ! La suite : [FAQ des annonces](faq.md). --- # Lire les annonces Ton entreprise utilise les annonces pour dire quelque chose à tous les utilisateurs d'Astrolabe : une maintenance prévue, une nouveauté. Tu les lis depuis la barre du haut. ## Ouvrir les annonces 1. En haut à droite de n'importe quelle page, clique sur le mégaphone (**Annonces**). Un panneau s'ouvre à droite. Il liste chaque annonce avec son titre, son texte et sa date de publication. Quand il n'y en a aucune, il le dit. :::tip À l'ouverture d'Astrolabe Une annonce active que tu n'as pas encore lue s'ouvre d'elle-même dans une fenêtre **Important Announcements**. Clique sur **Understood** pour la fermer. ::: ## En lire une en entier 1. Dans le panneau, clique sur le titre d'une annonce. La page montre le titre, **Published on** et sa date, et le texte en entier. 2. Clique sur **Retour aux annonces** pour revenir à la liste de toutes les annonces. ## Voir toutes les annonces 1. Dans le panneau, clique sur **Toutes les annonces** (sous la liste). La page **Annonces** liste chaque annonce avec son **Title**, sa **Description** et sa date **Published On**. En bas, **Show 10 results** permet d'en afficher 5, 10 ou 25 par page. 2. Clique sur le titre d'une annonce pour l'ouvrir. ✅ C'est tout ! La suite : [Publier une annonce](publish-an-announcement.md). --- # Problèmes courants avec les annonces | Ce que tu vois | Quoi faire | | --- | --- | | Le panneau du mégaphone ne contient aucune annonce | Rien n'a été publié pour toi. | | **Créer** est grisé dans le formulaire | Remplis **Titre**, **Description** et **Sélectionner des groupes** : ils sont marqués **(Obligatoire)**. | | **Nothing here yet** et **There are no items to display.** dans **Gérer les annonces** | Tu n'as encore publié aucune annonce. Clique sur **Nouvelle annonce**. | :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec ce que tu vois à l'écran. ::: --- # Parcourir le catalogue Le catalogue liste tout ce que ton entreprise construit et fait tourner : composants, API, systèmes, équipes. Tu l'ouvres, tu choisis un type d'élément, et tu ouvres sa page. ## Ouvrir le catalogue 1. Dans la barre latérale de gauche, clique sur **Catalogue**. La page s'ouvre sur l'onglet **Composants** : une ligne par composant, avec son **Nom**, son **Système**, son **Propriétaire**, son **Type**, son **Cycle de vie** et sa **Description**. ## Passer à un autre type d'élément 1. Au-dessus de la liste, clique sur un autre onglet. | Onglet | Ce qu'il liste | | --- | --- | | **APIs** | Les interfaces que tes composants offrent ou utilisent | | **Composants** | Services, sites web, bibliothèques | | **Domaines** | Les domaines métier qui regroupent des systèmes | | **Groupes** | Les équipes | | **Ressources** | Bases de données, files, caches | | **Systèmes** | Des composants qui forment ensemble un produit | | **Templates** | Les modèles de [La Fabrique](../the-foundry/create-a-component.md) | | **Utilisateurs** | Les personnes de ton Astrolabe | ## Ouvrir la page d'un composant 1. Dans la colonne **Nom**, clique sur le nom d'un composant, par exemple `order-service`. La page s'ouvre sur l'onglet **Vue d'ensemble**. La carte **À propos** montre sa **Description**, son **Propriétaire**, son **Système**, son **Type**, son **Cycle de vie** et ses **Tags**. Clique sur le propriétaire ou sur le système pour ouvrir leurs pages. Les autres onglets de la page : | Onglet | Ce qu'il montre | | --- | --- | | **Vue d'ensemble** | La carte **À propos** et les cartes que ton administrateur a activées | | **API** | Les API que le composant fournit, dans **APIs fournies** | | **Dépendances** | Un graphe des composants, ressources et équipes auxquels il est lié, et la liste **Dépend de composants** | | **Documentation** | La documentation du composant : voir [Lire la documentation d'un composant](../techdocs/read-component-docs.md) | :::tip Revenir à la liste Dans le titre de la page, clique sur **Catalogue** pour retrouver la liste que tu avais quittée. ::: ✅ C'est tout ! La suite : [Filtrer le catalogue](filter-the-catalog.md). --- # FAQ du catalogue ## Que regarde **Rechercher par nom** ? Uniquement le nom. Un mot de la description, un tag ou le propriétaire ne sont pas cherchés : utilise les [**Filtres**](filter-the-catalog.md) pour ceux-là. ## Où vois-je les membres d'une équipe ? Ouvre l'onglet **Groupes**, clique sur l'équipe et lis **members** sur sa page : voir [Voir un groupe et ses membres](../groups/see-a-group.md). ## Pourquoi je vois moins de lignes que prévu ? Un filtre est encore actif : un propriétaire, un cycle de vie, un tag, **Favoris**, ou un nom dans **Rechercher par nom**. Ouvre **Filtres** pour le retirer et vide le champ de recherche. ## Comment trouver la documentation d'un composant ? Ouvre le composant et clique sur son onglet **Documentation**, ou clique sur **Documentation** dans la barre latérale de gauche : voir [Lire la documentation d'un composant](../techdocs/read-component-docs.md). ## Pourquoi **Modifier** et **Désenregistrer l'entité** sont-ils grisés ? Ton rôle ne te laisse pas changer ni retirer un composant. Tu les vois sur la page d'un composant (**Modifier** dans la carte **À propos**, **Désenregistrer l'entité** dans son menu **Plus**) et dans **Plus d'actions** sur une ligne de la liste. Tu peux toujours l'ouvrir, le mettre en favori et le surveiller. ## Où est un composant que personne n'a encore listé ? Il entre dans le catalogue quand on enregistre son fichier `catalog-info.yaml`. --- # Filtrer le catalogue Ton catalogue est long. Tape une partie d'un nom, ou filtre par propriétaire, cycle de vie ou tag, pour ne garder que ce que tu cherches. ## Retrouver un élément par son nom 1. Dans la barre latérale de gauche, clique sur **Catalogue**. 2. Au-dessus de la liste, clique dans **Rechercher par nom** et tape une partie du nom, par exemple `order`. Seules les lignes dont le nom contient ce que tu as tapé restent. ## Filtrer par propriétaire, cycle de vie ou tag 1. Au-dessus de la liste, à droite, clique sur **Filtres**. Un panneau s'ouvre à droite. 2. Choisis ce que tu veux : | Filtre | Ce qu'il garde | Exemple | | --- | --- | --- | | **Type** | Un seul type de composant | `service` ou `website` | | **Propriétaire** | Les éléments des équipes que tu choisis | `platform-team` | | **Cycle de vie** | Les éléments dans les phases que tu choisis | `experimental` | | **Tags** | Les éléments qui portent les tags que tu choisis | `backend` | | **Namespace** | Les éléments du namespace que tu choisis | `default` | 3. Dans **Propriétaire**, **Cycle de vie** ou **Tags**, clique sur le champ **Sélectionner un élément** puis sur une valeur de la liste. Tu peux en choisir plusieurs. La liste derrière le panneau se met à jour tout de suite. 4. Clique sur **Fermer** quand tu as fini. Pour retirer une valeur, ouvre **Filtres**, clique sur le champ puis clique à nouveau sur la valeur. :::tip Partager ce que tu vois L'adresse de la page garde tes filtres. Copie-la pour envoyer la même liste à un collègue. ::: ## Ne garder que tes éléments Dans **Filtres**, le bloc **Personnel** contient deux entrées, chacune avec un nombre : | Entrée | Ce qu'elle garde | | --- | --- | | **Mes entités** | Les éléments dont tu es propriétaire | | **Favoris** | Les éléments que tu as mis en favoris | Clique sur l'une d'elles pour ne garder que ceux-là. Clique sur **Tout** pour tout revoir. ✅ C'est tout ! La suite : [Mettre un composant en favori](star-a-component.md). --- # Enregistrer un composant existant Ton composant a déjà un fichier `catalog-info.yaml` dans son dépôt. Donne son URL à Astrolabe : le composant apparaît dans le catalogue. ## Avant de commencer - L'URL du fichier `catalog-info.yaml`, telle que ton navigateur l'affiche. Exemple : `https://github.com/acme/shop-api/blob/main/catalog-info.yaml`. - L'intégration de l'outil qui héberge le fichier (GitHub, GitLab…) dans **Connexions de l'entreprise**. Voir [Intégrations](../../getting-started/Configuration/Integration/integration.md). ## 📥 Enregistrer le composant 1. Dans la barre latérale, clique sur **Catalogue**. 2. En haut à droite de la page, clique sur **Enregistrer un composant existant**. 3. Dans **URL**, colle l'URL du fichier `catalog-info.yaml`. 4. Clique sur **Analyser**. Astrolabe lit le fichier et affiche **Les entités suivantes seront ajoutées au catalogue :**. 5. Vérifie la liste, puis clique sur **Importer**. L'écran dit **Les entités suivantes ont été ajoutées au catalogue :**. 6. Clique sur **Voir le composant** pour ouvrir sa page. ✅ C'est tout ! Pour en ajouter un autre, clique sur **En enregistrer un autre**. ## Problèmes courants | Ce que tu vois | Ce qu'il faut faire | | --- | --- | | **Rien n'a été trouvé à cette adresse. Vérifiez que le fichier existe sur …, sur la branche saisie, puis réessayez.** | Le fichier n'est pas à cette adresse. Ouvre l'URL dans ton navigateur, copie l'adresse du fichier `catalog-info.yaml` lui-même, et colle-la à nouveau. | | **Astrolabe n'est pas connecté à …. Demandez à un administrateur de l'ajouter dans Administration › Connexions de l'entreprise, puis réessayez.** | Astrolabe n'a pas d'intégration pour cet hôte. Demande à ton administrateur Astrolabe de l'ajouter dans **Connexions de l'entreprise**. | | **Le fichier a été trouvé, mais ce n'est pas une description de composant valide. Vérifiez qu'il commence par apiVersion, kind et metadata, puis réessayez.** | Le fichier n'est pas une description de composant. Ouvre-le et vérifie qu'il commence par `apiVersion`, `kind` et `metadata`. | | **Astrolabe n'a pas pu lire cette adresse. Vérifiez l'adresse, puis réessayez.** | Vérifie l'adresse (une faute de frappe ?), puis clique à nouveau sur **Analyser**. | | **Les emplacements suivants existent déjà dans le catalogue :** | Le fichier est déjà enregistré. Clique sur **Rafraîchir** pour le relire, ou sur **Retour** pour saisir une autre URL. | --- # Mettre un composant en favori Une étoile garde un composant à portée de main : un clic dans **Filtres** et la liste ne contient plus que tes favoris. ## Mettre un composant en favori 1. Dans la barre latérale de gauche, clique sur **Catalogue**. 2. À la fin de la ligne du composant, clique sur les trois points (**Plus d'actions**), puis sur **Ajouter aux favoris**. :::tip Depuis la page du composant À côté du nom du composant, clique sur l'étoile vide. Elle devient jaune. ::: ## Lister tes favoris 1. Au-dessus de la liste, clique sur **Filtres**. 2. Dans le bloc **Personnel**, clique sur **Favoris**. Le nombre à côté est ton nombre de favoris. ## Retirer un favori 1. À la fin de sa ligne, clique sur les trois points (**Plus d'actions**), puis sur **Retirer des favoris**. Les mêmes trois points contiennent aussi **Surveiller**, pour être prévenu de tout ce qui arrive à un composant : voir [Surveiller un composant](../../developer-dashboard/notifications/watch-a-component.md). ✅ C'est tout ! --- # Problèmes courants avec le catalogue | Ce que tu vois | Quoi faire | | --- | --- | | **Aucune donnée à afficher** dans la liste | Aucun nom ne contient ce que tu as tapé dans **Rechercher par nom**, ou un filtre ne garde rien. Vide le champ et retire les filtres dans **Filtres**. | | La liste est vide après avoir choisi une valeur dans **Filtres** | Ouvre **Filtres** sur l'onglet **Composants**, où **Propriétaire**, **Cycle de vie** et **Tags** sont affichés, et retire la valeur : clique sur le champ, puis à nouveau sur la valeur. | | **Favoris** ou **Mes entités** affiche `0` et ne se clique pas | Tu n'as pas encore de favori (ou tu ne possèdes rien). Mets d'abord un composant en favori : voir [Mettre un composant en favori](star-a-component.md). | | L'onglet **Documentation** d'un composant dit **Annotation manquante** | Voir [Problèmes courants avec la documentation](../techdocs/troubleshooting.md). | | **Modifier** ou **Désenregistrer l'entité** est grisé | Ton rôle ne te laisse pas changer ni retirer un composant : voir la [FAQ](faq.md). | :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec ce que tu vois à l'écran. ::: --- # Ajouter la carte Compass à ton tableau de bord La carte **Compass** liste les notes des composants du catalogue sur ton **Tableau de bord**, pour voir ce qui demande du travail sans ouvrir chaque composant. ## Avant de commencer **Compass** est allumé dans **Administration › Plugins**. Tant qu'il ne l'est pas, la source `astrolabe` n'est pas proposée dans **Ajouter une carte**. Voir [Allumer un plugin](../../administration/plugins/turn-on-a-plugin.md). ## Ce que la carte affiche, et pour qui Une ligne par composant du catalogue : **Name**, **Owner**, **Mine**, une colonne par compas actif, et **Global Score**. **Mine** dit **À moi** ou **Autres** : pour ne garder que tes composants, filtre sur cette colonne et enregistre le filtre avec la carte, voir [Ne garder que tes lignes](../../developer-dashboard/my-dashboard/change-or-remove-a-card.md#-ne-garder-que-tes-lignes). *Une carte qui contient des notes n'a pas été vérifiée sur une instance.* Compass autorise la lecture des notes par une seule permission pour tout le catalogue. Si ton rôle ne l'a pas, la carte dit **Votre rôle ne permet pas de voir les scores Compass. Demandez à un administrateur.** au-dessus du tableau. Quand il n'y a aucune note à montrer, la carte dit **Rien à afficher** et pourquoi : **Aucun composant du catalogue n'a encore de score Compass à montrer.** Clique sur **En savoir plus** sous la phrase pour revenir à cette page. ## ➕ Ajouter la carte 1. Dans la barre latérale, clique sur **Tableau de bord**, puis sur l'onglet du tableau voulu. 2. Clique sur **Ajouter une carte**, en haut de la page. 3. Dans **Ajouter une carte**, choisis la **Source** `astrolabe` et la **Clé** `Compass`. La ligne sous la clé dit **Les scores Compass de chaque composant**. 4. Saisis un **Nom de la carte**, par exemple `Scores`, puis clique sur **Ajouter**. :::tip Une carte trop étroite ? Clique sur **Réorganiser**, tire le coin en bas à droite de la carte pour l'élargir, et clique sur **Terminer**. ::: ✅ C'est tout ! La suite : [Questions fréquentes](faq.md). --- # Créer un compas Un compas est une liste de règles qu'Astrolabe vérifie sur tes composants. Tu écris d'abord les règles (les **évaluations**), puis tu les regroupes dans un compass. ## Avant de commencer Il faut être administrateur, et Compass doit être allumé ([Allumer Compass](turn-on-compass.md)). ## 1. 📝 Créer une évaluation Une évaluation est une règle : « cette donnée, comparée de cette façon, avec cette valeur ». 1. Dans **Administration**, sous **INTELLIGENCE**, clique sur **Compass**, puis sur l'onglet **Évaluations**. 2. Clique sur **Créer une évaluation**. 3. Remplis le formulaire : | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **Nom** | Ce que la règle vérifie | `Has an on-call schedule` | | **Description** | Pourquoi c'est utile | `Someone is on call for it.` | | **Source de données** | D'où vient la valeur | `Catalogue` | | **Point de données** | La valeur à lire | `PagerDuty renseigné` | | **Passe quand le contrôle est** | Ce qu'il doit être | `Vrai` | Un point de données oui/non, comme celui-ci, ne demande que **Passe quand le contrôle est**. Un point de données qui lit un nombre (un compte, une durée, un pourcentage) demande à la place un **Opérateur** et une **Valeur**, par exemple `Supérieur à` et `80`. Sous **Règles**, **Toutes** veut dire que toutes les règles doivent passer, **Au moins une** qu'une seule suffit. Clique sur **Ajouter une règle** pour une deuxième règle. 4. Clique sur **Sauvegarder**. Le message de réussite apparaît, et la règle est dans le tableau. :::tip Quelles sources de données puis-je utiliser ? L'onglet **Sources de données** liste chaque source et chaque point de données. Une source autre que **Catalog** (GitHub, GitLab, Jira, SonarQube, Azure, Repository) a besoin de sa connexion dans **Administration › Connexions de l'entreprise**. ::: ## 2. 🧭 Créer le compas 1. Clique sur l'onglet **Compas**, puis sur **Créer un compas**. 2. Remplis le formulaire : | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **Nom** | Le nom du compas | `Production readiness` | | **Description** | À quoi il sert | `What a service needs before it goes to production.` | | **Type d'entité** | Le type d'entité qu'il note | `Component` | | **Sous-type d'entité** | Un sous-type, ou `all` | `all` | | **Propriétaires (optionnel)** | Seulement les composants de ces propriétaires | | 3. Sous **Évaluations**, clique sur **Ajouter une évaluation**. Coche les règles à utiliser (**Tout sélectionner** les coche toutes), puis clique sur **Sauvegarder les évaluations choisies**. 4. Clique sur **Sauvegarder**. **Compas créé** apparaît, et tu reviens sur l'onglet **Compas**, où le compas a sa carte. ## 3. ✅ L'allumer 1. Sur la carte du nouveau compas, clique sur l'interrupteur en haut à droite. Un message de confirmation apparaît. 2. Clique sur le lien de la note sur la carte. L'onglet **Scores** montre une colonne pour ton compass. ✅ C'est tout ! La suite : [Lancer une campagne](run-a-campaign.md). --- # Questions fréquentes ## Où trouver la page Compass dans la barre latérale ? Il n'y a pas d'entrée dans la barre latérale de gauche. Compass vit sur chaque composant (l'onglet **Compass**) et dans **Administration**, sous **INTELLIGENCE**. Pour ouvrir le tableau des notes, clique sur le lien de la note sur la carte d'un compass. ## Pourquoi la carte Compass de mon tableau de bord dit-elle « Rien à afficher » ? Parce qu'aucun composant du catalogue n'a encore de score Compass. La carte le dit mot pour mot : « Aucun composant du catalogue n'a encore de score Compass à montrer. » Vérifie qu'un compas est allumé et note tes composants : voir [Créer un compas](create-a-compass.md). ## Pourquoi la carte Compass dit-elle « Votre rôle ne permet pas de voir les scores Compass » ? Parce que ton rôle n'a pas la permission qui lit les scores Compass, une seule permission pour tout le catalogue. Demande à un administrateur : la carte dit « Votre rôle ne permet pas de voir les scores Compass. Demandez à un administrateur. » ## La carte Compass ne montre-t-elle que mes composants ? Non : elle liste tous les composants du catalogue. La colonne **Mine** dit **À moi** ou **Autres** : filtre dessus pour garder les tiens, voir [Ne garder que tes lignes](../../developer-dashboard/my-dashboard/change-or-remove-a-card.md#-ne-garder-que-tes-lignes). ## Puis-je créer un compas ? Pas sans droit d'administration : les compas, les évaluations et les campagnes se créent dans **Administration › Compass**, que seuls les administrateurs voient. Toi, tu lis les notes : l'onglet **Compass** d'un composant, la carte **Statistiques Compass** de sa **Vue d'ensemble**, et la carte **Compass** de ton tableau de bord. ## Que note Compass ? Des composants : l'onglet **Compass** est sur la page d'un composant. ## Qu'est-ce que le score global ? La moyenne des notes des compas affichés dans le tableau. ## Quels composants un compas note-t-il ? Ceux qui correspondent à son filtre de composants : le **Type d'entité**, le **Sous-type d'entité** et les **Propriétaires (optionnel)** que tu as choisis dans le compass. ## Puis-je modifier ou supprimer le compas Les essentiels du catalogue ? Oui, comme n'importe quel compas : clique sur le crayon de sa carte, puis **Sauvegarder** ou **Supprimer**. ## Un nouveau compas n'a pas encore de note. Un nouveau compas est éteint. Clique sur l'interrupteur de sa carte, puis ouvre le lien de sa note. ## Où créer des compas, des évaluations et des campagnes ? Dans **Administration › Compass**. ## Les notes peuvent-elles se rafraîchir toutes seules ? Oui. Dans **Administration › Compass**, ouvre l'onglet **Paramètres**, coche **Lancer des scans périodiques** sous **Scans Compass** et sous **Scans de campagne**, puis clique sur **Sauvegarder**. --- # Lancer une campagne Une campagne suit une ou plusieurs règles sur tes composants jusqu'à une échéance, et montre ce qui échoue encore. Sers-t'en pour un grand ménage daté : « tous les composants documentés d'ici la fin de l'année ». ## Avant de commencer Il faut être administrateur, et la règle à suivre doit exister comme évaluation ([Créer un compas](create-a-compass.md)). ## 🚩 Créer la campagne 1. Dans **Administration**, sous **INTELLIGENCE**, clique sur **Compass**, puis sur l'onglet **Campagnes**. 2. Clique sur **Créer une campagne**. 3. **Détails** : remplis le formulaire, puis clique sur **Suivant**. | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **Nom** | Le nom de la campagne | `Docs by year end` | | **Propriétaire** | L'équipe responsable | `platform-team` | | **Description** | Le but | `Every component documented.` | | **Date de début** | Le premier jour | | | **Date de fin** | L'échéance | `2026-12-31` | 4. **Vérifications** : dans **Source de données**, choisis `Catalogue`. Dans **Vérifications**, choisis la règle à suivre, par exemple `Has documentation`. Clique sur **Suivant**. 5. **Filtres** : choisis les composants concernés (**Type d'entité**, **Sous-type d'entité**, **Propriétaire (optionnel)**). Clique sur **Suivant**. 6. **Jalons** : clique sur **Ajouter un jalon**, puis donne-lui un nom, une valeur cible en pourcentage et une date d'échéance. Clique sur **Suivant**. 7. **Notifications** : coche quand Astrolabe doit notifier : au démarrage de la campagne, à sa fin, à son annulation, quand un jalon est atteint. Clique sur **Suivant**. 8. **Révision** : lis le résumé, puis clique sur **Sauvegarder**. La campagne apparaît dans l'onglet **Campagnes** avec son statut **Active**, les jours restants, une barre de progression, le nombre de vérifications et de composants. ## 👀 La suivre 1. Ouvre la page **Compass** (le lien de la note d'un compas, voir [Voir les notes de tous les composants](see-the-scores-of-all-components.md)), puis l'onglet **Campagnes**. 2. Clique sur la campagne. Tu vois **Avancement**, **Jours restants**, **Composants**, **Vérifications effectuées**, **Taux de complétion**, les **Vérifications**, une **Chronologie** et le tableau des composants. ✅ C'est tout ! La suite : [Ajouter la carte Compass à ton tableau de bord](add-the-dashboard-card.md). --- # Voir la note d'un composant Ouvre un composant pour voir sa note pour chaque compas, et les règles qu'il ne respecte pas. ## Avant de commencer Compass est allumé ([Allumer Compass](turn-on-compass.md)) et au moins un compas est actif. ## 🧭 Lire la note dans l'aperçu 1. Dans la barre latérale, clique sur **Catalogue**, puis sur un composant. 2. Dans l'aperçu, repère la carte **Statistiques Compass**. À gauche, une jauge montre la note en pourcentage, avec dessous le niveau atteint (par exemple **Réglage orbital**). À côté, chaque compas a sa propre ligne avec sa note. La carte a la hauteur de ce qu'elle montre. ## 🔎 Voir les règles qui échouent 1. En bas de la carte **Statistiques Compass**, clique sur **Voir le détail**. L'onglet **Compass** s'ouvre. 2. En haut, une ligne de six niveaux montre où en est le composant : **Poussière d'étoiles**, **Constellation**, **Alignement**, **Réglage orbital**, **Calibration stellaire**, **Harmonie céleste**. 3. En dessous, chaque compas a son bloc : son nom, sa description, une jauge avec la note, et ses **Évaluations**. Une coche verte veut dire que la règle passe, une croix rouge qu'elle échoue. 4. Clique sur une règle pour l'ouvrir. Elle montre **Actuel** (ce qu'Astrolabe a trouvé), **Attendu** (ce que la règle demande) et le **poids** de la règle dans la note. Une règle oui/non montre à la place **Résultat : Réussi** ou **Résultat : Échoué**, avec ce qu'Astrolabe a **Lu** quand la source le dit. 5. Clique sur **Lancer le scan** pour évaluer à nouveau le composant. **Dernière évaluation** dit quand ça a été fait pour la dernière fois. **Lancer le scan** est grisé quand ton rôle ne le permet pas : la note reste la dernière calculée. :::tip Comment la note est faite La note est la part des règles qui passent, chacune comptée avec son poids. Un compas de six règles de même poids donne 17 % à chaque règle : cinq règles réussies font 83,3 %. ::: ✅ C'est tout ! La suite : [Voir les notes de tous les composants](see-the-scores-of-all-components.md). --- # Voir les notes de tous les composants Un seul tableau montre chaque composant et sa note pour chaque compas, pour voir où agir en premier. ## Avant de commencer Il faut être administrateur : le tableau est dans **Administration**. Sans cela, la carte **Compass** de ton tableau de bord liste les notes des composants du catalogue : voir [Ajouter la carte Compass à ton tableau de bord](add-the-dashboard-card.md). Compass est allumé et au moins un compas est actif ([Allumer Compass](turn-on-compass.md)). ## 📊 Ouvrir le tableau 1. Dans la barre latérale de gauche, en bas, clique sur **Administration**, puis, sous **INTELLIGENCE**, sur **Compass**. 2. Sur la carte d'un compas, clique sur le lien de sa note (par exemple **Score moyen : 71,4 %** ; un compas pas encore calculé dit **Pas encore noté**). L'onglet **Scores** s'ouvre sur ce seul compas : le filtre **Nom du compas** montre son nom. Ses colonnes sont **Nom de l'entité**, **Propriétaire**, une colonne par compas affiché, et **Score global**, qui est la moyenne des notes des compas affichés. Pour voir tous les compas, choisis **Tous** dans le filtre **Nom du compas**. 3. Clique sur le nom d'un composant pour l'ouvrir. ## 🔍 Filtrer le tableau 1. En haut à droite, clique sur **Filtres**. 2. Choisis un **Nom du compas**, une valeur de **Propriétaires**, ou déplace les curseurs de la **Plage de score global** (**0 – 100**). 3. Clique sur **Fermer**. ✅ C'est tout ! La suite : [Créer un compas](create-a-compass.md). --- # Problèmes courants avec Compass | Ce que tu vois | Quoi faire | | --- | --- | | Pas d'onglet **Compass** sur un composant | Allume **Compass** dans **Administration › Plugins**. L'onglet est sur la page d'un composant. | | `Aucun compas disponible pour cette entité pour l'instant.` dans l'onglet **Compass** | Aucun compas actif ne note ce composant. Clique sur **Créer un compas**, ou allume un compas dans **Administration › Compass**, et vérifie son filtre de composants. | | **Rien à afficher** et `Aucun composant du catalogue n'a encore de score Compass à montrer.` dans la carte **Compass** du **Tableau de bord** | Aucun compas ne note encore de composant. Allume un compas dans **Administration › Compass**, et vérifie son **Components Filter**. | | `Votre rôle ne permet pas de voir les scores Compass. Demandez à un administrateur.` au-dessus du tableau de la carte **Compass** | Ton rôle ne peut pas lire les scores Compass. Demande à un administrateur de lui donner la permission. | | Pas de clé **Compass** dans **Ajouter une carte** | Allume **Compass** dans **Administration › Plugins**. | | L'entrée **Compass** manque dans **Administration** | Allume **Compass** dans **Administration › Plugins**. | | Le nouveau compas n'a pas de note | Clique sur l'interrupteur de sa carte pour l'allumer, puis ouvre le lien de sa note. | | Une règle est rouge et tu ne sais pas pourquoi | Ouvre l'onglet **Compass** du composant et clique sur la règle : **Actuel** et **Attendu** (ou, pour une règle oui/non, **Résultat** et **Lu**) montrent ce qu'Astrolabe a trouvé et ce que la règle demande. | | Une règle sur GitHub, GitLab, Jira, SonarQube ou Azure ne mesure rien | Ajoute la connexion dans **Administration › Connexions de l'entreprise** : l'onglet **Sources de données** dit laquelle une source demande. | | **Lancer le scan** est grisé dans l'onglet **Compass** | Ton rôle ne permet pas un nouveau scan. La note affichée est la dernière : voir **Dernière évaluation**. | | `Vous n'avez pas le droit de lancer les calculs : demandez à un administrateur le droit de rafraîchir les scores.` | Ton rôle ne peut pas rafraîchir les scores Compass. Demande à un administrateur de lui donner la permission. | | `Astrolabe n'a pas pu lancer les calculs : réessayez dans une minute ; si cela continue, prévenez l'administrateur Astrolabe de votre entreprise.` | Attends une minute et clique de nouveau sur **Lancer les calculs**. Si le message revient, écris à l'administrateur Astrolabe de ton entreprise. | :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec le nom du composant et du compass. ::: --- # Allumer Compass Compass donne à chaque composant une note, calculée sur des règles comme « a un propriétaire » ou « a une documentation ». Tu l'allumes une fois, dans l'administration. ## Avant de commencer Il faut être administrateur. Compass n'a besoin d'aucune connexion pour ses premières règles : elles lisent le catalogue. ## 🔌 Allumer le plugin 1. Dans la barre latérale de gauche, en bas, clique sur **Administration**. 2. Dans le menu de l'administration, sous **PLATEFORME**, clique sur **Plugins**. 3. Sur la carte **Compass**, clique sur l'interrupteur en haut à droite de la carte. Il s'allume tout de suite. Une nouvelle entrée, **Compass**, apparaît dans le menu de l'administration, sous **INTELLIGENCE**. Clique dessus : l'onglet **Compas** contient déjà un compas, **Les essentiels du catalogue**, avec six règles sur ce que chaque composant doit dire de lui-même (un propriétaire, une description, un cycle de vie, un système, une documentation, un lien vers son dépôt). Chaque composant a maintenant un onglet **Compass**, et une carte **Statistiques Compass** dans son aperçu. ✅ C'est tout ! La suite : [Voir la note d'un composant](see-the-score-of-a-component.md). --- # Problèmes courants avec Cost Insights | Ce que tu vois | Quoi faire | | --- | --- | | Le bouton **Configurer** de la carte **Cost Insights** est grisé | Allume d'abord l'interrupteur de la carte. | | `Cost Insights n'est pas encore configuré` dans l'onglet **Coûts** d'un composant, avec `Manquant ou invalide : ID du compte, Région` | Clique sur **Ouvrir les réglages de Cost Insights** et remplis **ID du compte** et **Région**. | | `Il attend encore : ID du compte, Région` en haut des réglages | Remplis **ID du compte** et **Région**, puis clique sur **Enregistrer**. | | **Cost Insights** : **Allumé, mais pas encore configuré.** dans **Administration › Problèmes** | Clique sur **Corriger**, puis sur **Configurer** sur la carte **Cost Insights**, remplis **ID du compte** et **Région**, et clique sur **Enregistrer**. Retourne sur **Problèmes** et clique sur **Revérifier**. | | **À configurer** sur la carte **Cost Insights** | Clique sur **Configurer**, remplis **ID du compte** et **Région**, puis clique sur **Enregistrer**. | :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec le nom du composant. ::: --- # Allumer Cost Insights Cost Insights montre les coûts cloud de tes composants, lus dans AWS Cost Explorer. Tu l'allumes, puis tu dis à Astrolabe quel compte AWS lire. ## Avant de commencer Il faut être administrateur, et connaître l'identifiant de ton compte AWS et la région AWS de Cost Explorer (par exemple `eu-west-1`). ## 🔌 Allumer le plugin 1. Dans la barre latérale de gauche, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Plugins**. 3. Sur la carte **Cost Insights**, clique sur l'interrupteur en haut à droite. Il s'allume tout de suite. La carte dit maintenant **À configurer**. Chaque composant a maintenant un onglet **Coûts**. Tant que Cost Insights n'est pas réglé, il dit **Cost Insights n'est pas encore configuré**, et **Administration › Problèmes** liste **Cost Insights** avec **Allumé, mais pas encore configuré.** ## 🔧 Saisir les réglages 1. Sur la carte **Cost Insights**, clique sur **Configurer**. 2. Remplis les champs : | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **ID du compte** | Le compte AWS dont les coûts sont lus | `123456789012` | | **Région** | La région AWS de Cost Explorer | `eu-west-1` | | **Mesure du coût** | La mesure de Cost Explorer (facultatif) | `UnblendedCost` | | **ID de la clé d'accès** et **Clé d'accès secrète** | Laisse les deux vides pour utiliser les identifiants de la machine qui fait tourner Astrolabe | | 3. Clique sur **Enregistrer**. Le message **Réglages enregistrés.** apparaît en bas à gauche de l'écran et disparaît tout seul. La ligne du haut passe de **Il attend encore : ID du compte, Région** à **Ce plugin est configuré.** Ouvre un composant depuis **Catalogue** et clique sur son onglet **Coûts** : il s'ouvre sur **Total cost**, titré **Cloud Cost**, avec un bouton **Past 6 Months**. Les chiffres qu'il montre quand AWS répond n'ont pas été vérifiés sur une instance. ## 🏷️ Relier un composant à ses coûts Ajoute cette annotation au `catalog-info.yaml` du composant, avec l'étiquette AWS qui marque ses ressources : ```yaml metadata: annotations: aws.amazon.com/cost-insights-tags: Team=platform-team ``` Cette étape n'a pas été vérifiée sur une instance. ✅ C'est tout ! La suite : [Problèmes courants avec Cost Insights](troubleshooting.md). --- # Ajouter la carte Déploiements à ton tableau de bord La carte **Déploiements** liste la version déployée sur chaque environnement pour les composants du catalogue, sur ton **Tableau de bord**. ## Avant de commencer **Déploiements** est allumé dans **Administration › Plugins**. Tant qu'il ne l'est pas, la source `astrolabe` n'est pas proposée dans **Ajouter une carte**. Voir [Allumer un plugin](../../administration/plugins/turn-on-a-plugin.md). ## Ce que la carte affiche, et pour qui Une ligne par composant du catalogue : **Nom**, **Propriétaire**, **À moi**, puis une colonne par environnement (par exemple **Production** et **Staging**) avec la version déployée. La colonne **À moi** affiche **À moi** ou **Autres** : pour ne garder que tes composants, filtre sur cette colonne et enregistre le filtre avec la carte, voir [Ne garder que tes lignes](../../developer-dashboard/my-dashboard/change-or-remove-a-card.md#-ne-garder-que-tes-lignes). *Une carte qui contient des versions n'a pas été vérifiée sur une instance.* Une carte qui n'a rien à montrer dit **Rien à afficher** et pourquoi : **Aucun déploiement n'est encore enregistré pour un composant du catalogue.** Clique sur **En savoir plus** sous la phrase pour revenir à cette page. Les versions viennent de la source choisie dans les réglages de **Déploiements** : voir [Voir les versions déployées](see-deployed-versions.md). ## ➕ Ajouter la carte 1. Dans la barre latérale, clique sur **Tableau de bord**, puis sur l'onglet du tableau voulu. 2. Clique sur **Ajouter une carte**, en haut de la page. 3. Dans **Ajouter une carte**, choisis la **Source** `astrolabe` et la **Clé** `Déploiements`. La ligne sous la clé dit **Les versions déployées de chaque composant, par environnement**. 4. Saisis un **Nom de la carte**, par exemple `Versions par environnement`, puis clique sur **Ajouter**. :::tip Une carte trop étroite ? Clique sur **Réorganiser**, tire le coin en bas à droite de la carte pour l'élargir, et clique sur **Terminer**. Les colonnes des environnements montrent alors leur nom en entier. ::: ✅ C'est tout ! La suite : [Lire les versions dans Argo CD](read-from-argo-cd.md). --- # Questions fréquentes ## On a deux Argo CD, un pour la production et un pour le reste. Deux sources ? Non, une. Connecte chaque Argo CD dans **Administration › Connexions de l'entreprise**, choisis **argocd** une fois dans les réglages des **Déploiements** : Astrolabe cherche dans tous. ## Pourquoi la carte Déploiements de mon tableau de bord dit-elle « Rien à afficher » ? Parce qu'aucun pipeline n'a encore déclaré de déploiement pour un composant du catalogue. La carte le dit mot pour mot : « Aucun déploiement n'est encore enregistré pour un composant du catalogue. » Déclare des déploiements depuis tes pipelines, voir [Déclarer les déploiements depuis tes pipelines](report-from-pipelines.md), puis clique sur **Actualiser** dans le menu de la carte. ## Pourquoi un composant affiche-t-il « Aucun déploiement » ? Parce qu'aucun pipeline n'a déclaré de déploiement sous le nom de ce composant. Le nom est le `metadata.name` de son `catalog-info.yaml` : voir [Déclarer les déploiements depuis tes pipelines](report-from-pipelines.md). Avec Argo CD, la carte dit ce qui manque, avec le label à ajouter : voir [Problèmes courants avec les Déploiements](troubleshooting.md). ## Je saisis la liste des environnements quelque part ? Non. Les environnements sont les valeurs du label nommé dans **Environment label** (`environment` par défaut), telles qu'elles sont écrites sur tes applications Argo CD. ## Une application n'a pas de label d'environnement. Que se passe-t-il ? Astrolabe ne sait pas dans quelle colonne la mettre, donc la carte **Déploiements** du composant le dit : `L'application Argo CD shop-pay-recette appartient à shop-pay mais n'apparaît dans aucun environnement. Dans Argo CD, ajoutez à cette application le label environment, …`. Ajoute le label et l'application apparaît : voir [Problèmes courants avec les Déploiements](troubleshooting.md). ## Un composant n'a pas d'application sur un environnement. Sa case montre un tiret (**—**). ## `argocd/app-name` suffit ? Non : il affiche l'onglet **Argo CD** du composant. Pour les **Déploiements**, étiquette tes applications Argo CD : voir [Lire les versions dans Argo CD](read-from-argo-cd.md). ## Dois-je écrire quelque chose dans le `catalog-info.yaml` de chaque composant ? Non. Le réglage **Component label** relie un composant à chaque application Argo CD qui porte ce label avec son nom : voir [Lire les versions dans Argo CD](read-from-argo-cd.md). ## Qui voit les déploiements ? Toute personne qui peut ouvrir le composant. Astrolabe lit Argo CD avec le jeton de l'intégration, le même pour tout le monde. ## L'ordre compte entre l'intégration Argo CD et les réglages des Déploiements ? Non. L'un ou l'autre d'abord. ## Quelle version s'affiche quand une application fait tourner plusieurs images ? L'image qui porte le nom du composant (`.../shop-api:2.5.0` pour `shop-api`). À défaut, l'image du Deployment ou du StatefulSet de l'application. ## Quelqu'un peut-il déclarer un déploiement depuis sa propre session ? Non. Seul le jeton de pipeline déclare un déploiement : voir [Déclarer les déploiements depuis tes pipelines](report-from-pipelines.md). ## Chaque équipe a sa CI. Un jeton par équipe ? Non, un seul jeton pour tout Astrolabe : chaque CI range le même dans son secret `ASTROLABE_PIPELINE_TOKEN`. Le remplacer, c'est donner le nouveau à chaque CI. --- # Lire les versions dans Argo CD Si Argo CD déploie tes applications, Astrolabe lit la version **réellement déployée** : le tag de l'image du composant, sur chaque environnement. Rien à déclarer depuis tes pipelines, et rien à écrire dans le `catalog-info.yaml` de tes composants. Plusieurs Argo CD (la production, les autres environnements) forment **une seule** source : Astrolabe cherche dans tous. :::tip Avant de commencer Connecte chaque Argo CD dans **Administration › Connexions de l'entreprise** : voir [Ajouter l'intégration Argo CD](../../getting-started/Configuration/Integration/argocd/add-the-integration.md). Tu peux le faire avant ou après les étapes ci-dessous. ::: ## 1. ⚙️ Choisir Argo CD comme source 1. Dans la barre latérale, clique sur **Administration**, puis sur **Plugins**. 2. Sur la carte **Déploiements**, clique sur **Configurer**. L'onglet **Paramètres** s'ouvre. 3. Dans **Source**, choisis **argocd**. Deux champs apparaissent dessous. Leurs libellés restent en anglais : | Champ | Ce qu'il faut écrire | Laissé vide | | --- | --- | --- | | **Component label** | Le label de tes applications Argo CD dont la valeur est le **nom du composant**, par exemple `app.kubernetes.io/name` | `backstage.io/component` | | **Environment label** | Le label de tes applications Argo CD dont la valeur est l'**environnement**, par exemple `env` | `environment` | Écris un label sans espace ni accent. 4. Clique sur **Enregistrer**. Le message **Réglages enregistrés.** s'affiche. :::tip L'écran dit « Still waiting for: integrations.argocd » Aucun Argo CD n'est encore connecté. Ajoute-en un dans **Administration › Connexions de l'entreprise**. ::: ## 2. 🏷️ Étiqueter tes applications Argo CD Pose deux labels sur chaque application Argo CD d'un composant : le label du composant, avec le nom du composant pour valeur, et le label d'environnement, avec le nom de l'environnement pour valeur. ```yaml apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: shop-api-recette labels: backstage.io/component: shop-api # le label du composant : le nom du composant environment: recette # le label d'environnement : le nom de la colonne ``` Le nom du composant est le `metadata.name` de son `catalog-info.yaml`. La valeur du label d'environnement est le nom de la colonne, au caractère près : `recette` et `Recette` font deux colonnes. Rien d'autre à faire : Astrolabe relie un composant à chaque application qui porte le label du composant avec son nom. ## ✅ Vérifier Ouvre le composant depuis **Catalogue** : la carte **Déploiements** de la **Vue d'ensemble** montre chaque environnement et sa version, par exemple `recette` `2.5.0` et `prod` `2.4.0`. La version est le tag de l'image qui porte le nom du composant : `registry.example.com/shop-api:2.5.0` donne `2.5.0`. Un proxy ou un agent à côté ne l'emporte jamais. ✅ C'est tout ! ## 🔗 Relier un composant avec un autre label La plupart de tes composants suivent le label de l'étape 1. Pour un composant dont les applications portent un autre label, ajoute une ligne à son `catalog-info.yaml` : ```yaml apiVersion: backstage.io/v1alpha1 kind: Component metadata: name: shop-api annotations: argocd/app-selector: team.example.com/app=shop-api spec: type: service lifecycle: production owner: group:default/plateforme ``` Le sélecteur doit contenir un label dont la valeur est le nom du composant : `team.example.com/app=shop-api` pour le composant `shop-api`. Un sélecteur qui ne nomme pas le composant ne relie rien : voir [Problèmes courants avec les déploiements](troubleshooting.md). *Cette annotation n'a été vérifiée que lorsqu'elle est fausse. Le cas où elle relie le composant n'a pas été vérifié sur une instance.* La suite : [Questions fréquentes](faq.md). --- # Déclarer les déploiements depuis tes pipelines Avec la source **astrolabe**, tes pipelines disent à Astrolabe ce qu'ils déploient : à la fin de chaque déploiement, un appel, et la version s'affiche sur le composant et sur la page **Déploiements**. Le pipeline s'identifie avec un **jeton de pipeline**, qui ne permet rien d'autre que déclarer un déploiement. :::tip Avant de commencer Il faut être administrateur, et **Déploiements** doit être allumé : voir [Voir les versions déployées](see-deployed-versions.md). La source doit être **astrolabe** (c'est la valeur par défaut). Si Argo CD déploie tes applications, lis plutôt [Lire les versions dans Argo CD](read-from-argo-cd.md) : rien à faire dans tes pipelines. ::: ## 1. 🔑 Générer le jeton de pipeline 1. Dans la barre latérale, clique sur **Administration**, puis, sous **PLATEFORME**, sur **Plugins**. 2. Sur la carte **Déploiements**, clique sur **Configurer**. 3. En haut de la page, clique sur l'onglet **Jeton de pipeline**. Il dit `Aucun jeton de pipeline : aucun pipeline ne peut déclarer de déploiement.` 4. Clique sur **Générer un jeton de pipeline**. 5. Le jeton s'affiche dans un encadré vert, sous `Copiez ce jeton maintenant et rangez-le dans le secret ASTROLABE_PIPELINE_TOKEN de votre CI : il ne sera plus affiché.` Clique sur **Copier le jeton**. ## 2. 🔒 Le ranger dans ta CI Dans ta CI (GitLab CI, GitHub Actions, Jenkins…), crée une variable secrète nommée `ASTROLABE_PIPELINE_TOKEN` et colles-y le jeton. Ne l'écris jamais dans un fichier de ton dépôt. ## 3. 🧩 Vérifier le nom du composant Rien à ajouter au catalogue : un déploiement se rattache au composant par son **nom**, le `metadata.name` de son `catalog-info.yaml`. Par exemple, pour `shop-api` : ```yaml apiVersion: backstage.io/v1alpha1 kind: Component metadata: name: shop-api spec: type: service lifecycle: production owner: group:default/platform ``` ## 4. 🚀 Déclarer un déploiement 1. De retour sur l'onglet **Jeton de pipeline**, sous **Déclarer un déploiement depuis un pipeline**, clique sur **Copier l'appel**. Il contient déjà l'adresse de ton Astrolabe : ```bash curl -X POST "https://astrolabe.exemple.com/api/release-manager/pipeline/projects/$COMPONENT/environments/$ENVIRONMENT" \ -H "Authorization: Bearer $ASTROLABE_PIPELINE_TOKEN" \ -H "Content-Type: application/json" \ -d "{\"version\": \"$VERSION\", \"deploymentUrl\": \"$CI_JOB_URL\"}" ``` 2. Colle-le à la fin du job de déploiement de ton pipeline, et donne-lui ses valeurs : - `COMPONENT` : le nom du composant dans le catalogue, par exemple `shop-api` ; - `ENVIRONMENT` : l'environnement, par exemple `production` ou `staging` — c'est le nom de la colonne ; - `VERSION` : la version déployée, par exemple `2.4.0` ; - `CI_JOB_URL` : le lien vers le job ; GitLab CI le fournit sous ce nom. Tu peux l'enlever. 3. Lance le pipeline. L'appel répond `201`. ## ✅ Vérifier 1. Dans la barre latérale, clique sur **Déploiements** : la ligne du composant affiche la version sous son environnement, par exemple `2.4.0` sous `production`. 2. De retour sur l'onglet **Jeton de pipeline**, le jeton dit quand il a servi pour la dernière fois : `Dernière utilisation le 16/10/2026 10:11:21.` ✅ C'est fait ! ## 🔄 Remplacer ou révoquer le jeton Le jeton a fuité, ou quelqu'un qui le connaissait est parti : 1. Sur l'onglet **Jeton de pipeline**, clique sur **Remplacer le jeton**. 2. La fenêtre **Remplacer le jeton de pipeline ?** dit `Le jeton actuel cesse de fonctionner immédiatement : chaque pipeline qui l'utilise devra recevoir le nouveau.` Clique sur **Remplacer**. 3. Copie le nouveau jeton et mets-le dans le secret `ASTROLABE_PIPELINE_TOKEN` de chaque CI. Pour empêcher tout pipeline de déclarer, clique sur **Révoquer le jeton**, puis sur **Révoquer**. Le message `Jeton de pipeline révoqué.` s'affiche ; plus rien n'est déclaré tant qu'un nouveau jeton n'est pas généré. :::tip Un seul jeton pour tous tes pipelines Astrolabe garde un seul jeton de pipeline : toutes les CI utilisent le même. En générer un nouveau remplace l'ancien. ::: La suite : [Problèmes courants des Déploiements](troubleshooting.md). --- # Voir les versions déployées **Déploiements** montre quelle version de chaque composant tourne sur chaque environnement : sur une page à part, et sur chaque composant. ## Ce que tu vois, et qui le voit - **Déploiements**, dans la barre latérale : un tableau avec une ligne par composant. Il a une colonne **Composant**, une colonne **Propriétaire**, puis une colonne par environnement, qui porte son nom (par exemple **production** et **staging**). Chaque case d'environnement porte la version déployée, dans une puce verte. La version la plus récente du composant est une puce pleine ; une version plus ancienne est plus pâle. Un composant qui n'est pas déployé sur un environnement montre un tiret (**—**). - Sur un composant : une carte **Déploiements** dans son aperçu (la version sur chaque environnement), et un onglet **Déploiements** avec un tableau (chaque environnement, sa version, sa date de déploiement). La frise est à un clic. La carte est dans la **Vue d'ensemble** de chaque composant : tant qu'aucun pipeline ni Argo CD n'a déclaré de version, elle dit **Aucun déploiement**. Toute personne qui peut ouvrir un composant voit ses déploiements. Les versions viennent de la source choisie par ton administrateur : ce que tes pipelines déclarent à Astrolabe — voir [Déclarer les déploiements depuis tes pipelines](report-from-pipelines.md) — ou Argo CD — voir [Lire les versions dans Argo CD](read-from-argo-cd.md). ## 1. 🔌 Allumer les Déploiements Il faut être administrateur. 1. Dans la barre latérale, clique sur **Administration**, puis, sous **PLATEFORME**, sur **Plugins**. 2. Sur la carte **Déploiements**, clique sur l'interrupteur **en haut à droite de la carte** (nommé « Activer Déploiements »). Il s'allume aussitôt, et **Déploiements** apparaît dans la barre latérale. ## 2. 🔎 Trouver un composant 1. Dans la barre latérale, clique sur **Déploiements**. 2. Dans **Rechercher un composant**, tape une partie de son nom. Seules les lignes dont le composant contient ce que tu as tapé restent. Quand il ne reste aucune ligne, la page dit **Aucun résultat avec ces filtres** : clique sur **Effacer les filtres**. :::tip Réduire le tableau **Filtres** (en haut à droite) garde certains composants, propriétaires ou environnements. **Mes équipes uniquement** garde les composants de tes équipes. ::: ## Quand rien n'a encore été déclaré Avec la source **astrolabe**, la page dit **Aucun déploiement n'a encore été déclaré.** tant qu'un pipeline n'en a pas déclaré. Un administrateur voit dessous le lien **Déclarer des déploiements depuis vos pipelines** : il mène à l'onglet **Pipeline token**, voir [Déclarer les déploiements depuis tes pipelines](report-from-pipelines.md). Toute autre personne lit **Un administrateur génère le jeton avec lequel vos pipelines déclarent leurs déploiements.** ## 3. 📦 Regarder un composant 1. Ouvre le composant depuis **Catalogue**. 2. Dans son aperçu, la carte **Déploiements** montre la version sur chaque environnement. Clique sur une version pour ouvrir son déploiement. 3. Clique sur l'onglet **Déploiements** : le **Tableau** montre chaque environnement, sa version et sa date de déploiement. Clique sur **Frise** pour voir les versions l'une après l'autre. ✅ C'est tout ! La suite : [Déclarer les déploiements depuis tes pipelines](report-from-pipelines.md). --- # Problèmes courants avec les Déploiements ## Sur un composant, ou sur la page Déploiements | Ce que tu vois | Quoi faire | | --- | --- | | Pas d'onglet **Déploiements**, pas de carte **Déploiements**, pas de clé **Déploiements** dans **Ajouter une carte** | Allume **Déploiements** dans **Administration › Plugins**. | | `shop-web n'affiche aucun déploiement Argo CD : son annotation argocd/app-selector (« env=prod ») ne contient pas son nom. Supprimez cette annotation pour utiliser le label backstage.io/component (les applications qui portent backstage.io/component=shop-web), ou écrivez : argocd/app-selector: backstage.io/component=shop-web.` dans la carte **Déploiements** de la **Vue d'ensemble** | Supprime l'annotation `argocd/app-selector` du `catalog-info.yaml` du composant. Le composant est alors relié aux applications qui portent le label du composant avec son nom. | | `L'application Argo CD shop-pay-recette appartient à shop-pay mais n'apparaît dans aucun environnement. Dans Argo CD, ajoutez à cette application le label environment, avec le nom de son environnement pour valeur (par exemple environment=prod). Le label recherché est le réglage « Environment label » de Administration › Deployments.` dans la carte **Déploiements** de la **Vue d'ensemble** | Dans Argo CD, ajoute à l'application nommée dans le message le label d'environnement que le message indique, avec le nom de son environnement pour valeur, par exemple `environment: prod`. | | `Aucune application Argo CD de admin-api n'a été trouvée. Dans Argo CD, ajoutez à chacune de ses applications le label backstage.io/component avec la valeur admin-api. Le label recherché est le réglage « Component label » de Administration › Deployments.` dans la carte **Déploiements** de la **Vue d'ensemble** | Dans Argo CD, ajoute à chaque application du composant le label que le message indique, avec le nom du composant pour valeur, par exemple `backstage.io/component: admin-api`. Vérifie que le label du message est bien celui que portent tes applications : c'est le réglage **Component label** de **Administration › Plugins › Déploiements**. | | `Argo CD (argocd-prod) refuse la connexion.` | Vérifie l'hôte et le port de cet Argo CD dans **Administration › Connexions de l'entreprise**, et qu'il tourne. Les autres Argo CD continuent d'afficher leurs versions. | | `Argo CD n'est pas encore relié à Astrolabe.` | Ajoute ton Argo CD dans **Administration › Connexions de l'entreprise** : clique sur **Ouvrir l'intégration Argo CD**. | | **Rien à afficher** et `Aucun déploiement n'est encore enregistré pour un composant du catalogue.` dans la carte **Déploiements** du **Tableau de bord** | Aucun pipeline n'a encore déclaré de déploiement. Déclares-en un : voir [Déclarer les déploiements depuis tes pipelines](report-from-pipelines.md). | | **Aucun déploiement** | Avec Argo CD : lis le message au-dessus de la carte, il nomme le label à ajouter. Avec un pipeline : aucun déploiement n'a été déclaré sous le nom du composant. | | `Le serveur d'Astrolabe n'a pas su répondre (503).` | Réessaie dans un instant. Si ça dure, dis à l'administrateur d'Astrolabe de ton entreprise ce que tu faisais. | | **Aucun déploiement n'a encore été déclaré.** sur la page Déploiements | Aucun pipeline n'a déclaré de déploiement. En administrateur, clique sur **Déclarer des déploiements depuis vos pipelines** sous la phrase et suis [Déclarer les déploiements depuis tes pipelines](report-from-pipelines.md). Toute autre personne le demande à un administrateur : la page dit **Un administrateur génère le jeton avec lequel vos pipelines déclarent leurs déploiements.** | | **Aucun résultat avec ces filtres** sur la page Déploiements | Vide **Rechercher un composant**, ou clique sur **Effacer les filtres**. | ## Dans les réglages des Déploiements | Ce que tu vois | Quoi faire | | --- | --- | | `« mon env » n'est pas accepté.` sous **Environment label** ou **Component label** | Un label s'écrit sans espace ni accent, par exemple `env` ou `app.kubernetes.io/environment`. | | `Still waiting for: integrations.argocd` | Aucun Argo CD n'est encore connecté : ajoutes-en un dans **Administration › Connexions de l'entreprise**. | ## Quand un pipeline déclare un déploiement L'appel du pipeline répond par l'un de ces messages, en anglais ; lis-les dans le journal du job. | Ce que tu vois | Quoi faire | | --- | --- | | `A pipeline token is required: generate one in Administration › Plugins › Deployments › Configure › Pipeline token and send it as « Authorization: Bearer ».` | L'appel ne porte aucun jeton. Vérifie que le job voit le secret `ASTROLABE_PIPELINE_TOKEN` (branches protégées, environnements de ta CI), et que l'appel envoie la ligne `Authorization`. | | `This pipeline token is not valid: it was replaced or revoked. Generate a new one in Administration › Plugins › Deployments › Configure › Pipeline token.` | Le jeton a été remplacé ou révoqué. Génères-en un nouveau et mets-le dans le secret `ASTROLABE_PIPELINE_TOKEN` : voir [Déclarer les déploiements depuis tes pipelines](report-from-pipelines.md). | | `No component named shop-api in the catalog: COMPONENT must be the name of a component of the catalog.` | `COMPONENT` contient un nom que le catalogue ne connaît pas. Mets le nom du composant, celui de `metadata.name` dans son `catalog-info.yaml`. | | `version is required` | `VERSION` est vide dans le job : donne-lui la version déployée. | | L'appel réussit mais le composant affiche **Aucun déploiement** | Vérifie que `COMPONENT` est le nom du composant, celui de `metadata.name` dans son `catalog-info.yaml`, et l'environnement que tu regardes. | ## Quand tu ajoutes un Argo CD | Ce que tu vois | Quoi faire | | --- | --- | | `argocd.example.com a refusé les identifiants (401). Vérifie le jeton, et qu'il n'a pas expiré.` | Crée un nouveau jeton d'API Argo CD : voir [Créer un jeton d'API Argo CD](../../getting-started/Configuration/Integration/argocd/create-a-token.md). | :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec le nom du composant. ::: --- # Modifier ou supprimer un groupe Tu es administrateur. ## Modifier un groupe 1. Dans **Administration**, sous **SÉCURITÉ**, clique sur **Groupes**. 2. À la fin de la ligne du groupe, clique sur le crayon (**Modifier le groupe**). 3. Dans la fenêtre de modification, change le **Titre**, la **Description**, le **Groupe parent** ou les **Membres**. Pour retirer un membre, clique sur la croix de sa pastille. Le **Nom** est grisé : il ne change jamais. 4. Clique sur **Enregistrer**. :::tip Le groupe **astrolabe-administrators** est dans la liste dès le départ : ses membres sont les administrateurs. Voir [Donner les droits d'administration à quelqu'un](../../administration/access-control/give-administrator-rights.md). Sa corbeille est grisée : ce groupe ne se supprime pas. ::: ## Supprimer un groupe 1. À la fin de la ligne du groupe, clique sur la corbeille rouge (**Supprimer le groupe**). 2. Dans la fenêtre **Supprimer ce groupe ?**, lis **Le groupe acme-team quittera le catalogue, et ses membres perdront les rôles qu'il donne.** 3. Clique sur **Supprimer**. ✅ C'est tout ! La suite : [FAQ des groupes](faq.md). --- # Créer un groupe Tu es administrateur. Un groupe liste des personnes, possède des composants et reçoit des rôles. Tu le crées une fois ; il apparaît ensuite dans le catalogue. ## Le créer 1. Dans la barre latérale de gauche, en bas, clique sur **Administration**. 2. Dans le menu de gauche, sous **SÉCURITÉ**, clique sur **Groupes**. 3. En haut à droite, clique sur **Ajouter un groupe**. 4. Dans la fenêtre **Ajouter un groupe**, remplis : | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **Nom** | Minuscules, chiffres et tirets (obligatoire). Il ne change plus une fois créé | `acme-team` | | **Titre** | Le nom affiché à tout le monde | `Acme team` | | **Description** | Ce que fait l'équipe | `L'équipe plateforme d'Acme` | | **Groupe parent** | Le groupe au-dessus. Laisse **Aucun parent** pour un groupe de premier niveau | `Aucun parent` | | **Membres** | Clique sur le champ, choisis une personne, et recommence pour chacune | `Jane Doe (user:default/jane.doe)` | 5. Clique sur **Créer**. Un message dit **Groupe créé. Il arrive au catalogue dans quelques secondes.** La liste montre le groupe avec son **Nom**, son **Titre**, son **Groupe parent** et ses **Membres**. Dans **Catalogue › Groupes**, le groupe apparaît sous son **Titre** : voir [Voir un groupe et ses membres](see-a-group.md). ✅ C'est tout ! La suite : [Modifier ou supprimer un groupe](change-or-delete-a-group.md). --- # FAQ des groupes ## À quoi sert un groupe ? Il liste des personnes, possède des composants et reçoit des rôles. Dans le catalogue, le **Propriétaire** d'un composant est un groupe. ## Où vois-je les groupes ? Tout le monde les voit dans **Catalogue › Groupes**. Les administrateurs les créent et les modifient dans **Administration › Groupes**. ## Puis-je changer le nom d'un groupe ? Non. Le **Nom** ne change plus une fois le groupe créé. Change plutôt son **Titre**, ou supprime le groupe et recrée-le. --- # Voir un groupe et ses membres Un groupe est une équipe. Sa page liste ses membres et tout ce qu'elle possède : composants, API, bases de données. ## Ouvrir un groupe 1. Dans la barre latérale de gauche, clique sur **Catalogue**. 2. Au-dessus de la liste, clique sur l'onglet **Groupes**. 3. Clique sur le nom du groupe, par exemple `platform-team`. ## Ce que montre la page | Où | Quoi | | --- | --- | | Carte **Ownership** | Une tuile par type d'élément que le groupe possède, avec un nombre : par exemple **4 SERVICES**, **2 DATABASES**. Clique sur une tuile pour les lister dans le catalogue | | **Include indirect ownership** | Allume-le pour inclure ce qui est possédé indirectement, par d'autres groupes | | Carte **… members** | Les personnes du groupe, avec leur adresse e-mail. Tape dans **Search members…** pour en trouver une | | Carte **À propos** | Sa description, son type, son propriétaire | | Carte au nom du groupe | Son **Entity Ref**, son **Parent Group** et ses **Child Groups** (**N/A** quand il n'en a pas) | 4. Dans la carte **members**, clique sur le nom d'une personne pour ouvrir sa page. :::tip Suivre une équipe À côté du nom du groupe, clique sur l'œil (**Surveiller**) pour être prévenu de ce qui lui arrive, et sur l'étoile pour le mettre en favori. ::: ✅ C'est tout ! La suite : [Créer un groupe](create-a-group.md). --- # Problèmes courants avec les groupes | Ce que tu vois | Quoi faire | | --- | --- | | `Minuscules, chiffres et tirets uniquement (63 caractères au plus).` sous **Nom** | Écris le nom avec des minuscules, des chiffres et des tirets, par exemple `acme-team`. | | **No group yet. Groups own components and receive roles.** dans **Administration › Groupes** | Aucun groupe n'a encore été créé ici. Clique sur **Ajouter un groupe**. | | Le groupe que tu viens de créer n'est pas dans **Catalogue › Groupes** | Attends quelques secondes : **Groupe créé. Il arrive au catalogue dans quelques secondes.** Puis rouvre le catalogue. | :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec ce que tu vois à l'écran. ::: --- # Choisir ta langue et ton thème Astrolabe parle anglais et français, et existe en thème clair et en thème sombre. Tu choisis les deux depuis le menu de ton avatar. Au départ, Astrolabe s'ouvre dans la langue de ton navigateur : en français si ton navigateur est réglé en français, en anglais s'il est réglé en anglais. Le choix que tu fais dans le menu passe devant, et Astrolabe le garde sur ce navigateur. ## Changer la langue 1. En haut à droite de n'importe quelle page, clique sur ton avatar. 2. À côté de **Langue** (**Language** si ton interface est en anglais), clique sur **FR** pour le français, ou sur **EN** pour l'anglais. Toute l'interface change d'un coup : la barre latérale, les menus, les pages. ## Changer le thème 1. En haut à droite de n'importe quelle page, clique sur ton avatar. 2. À côté de **Thème** (**Theme** en anglais), clique sur la lune (**Dark mode**) ou sur le soleil (**Light mode**). Le thème change tout de suite. Le menu se ferme. ✅ C'est tout ! La suite : [Connecter tes propres comptes](connect-my-accounts.md). --- # Connecter tes propres comptes Certaines cartes de ton tableau de bord montrent ton propre travail : tes tickets, tes pull requests. Elles le lisent avec **ton** compte sur l'outil, pas avec celui de l'entreprise. Tu le connectes une fois, depuis **Mon compte**. ## Ouvrir la liste 1. En haut à droite de n'importe quelle page, clique sur ton avatar, puis sur **Mon compte**. 2. Ouvre l'onglet **Mes comptes**. Chaque outil que ton entreprise a connecté a une carte avec son état : **Connectée**, **Non connectée**, **Jeton refusé** ou **Non vérifiée**. **Connecter** ajoute ton jeton, **Configurer** le change ou le supprime. Quand ton entreprise n'a connecté ni GitHub, ni GitLab, ni Jira, ni Azure DevOps, l'onglet dit : **Aucune source à connecter pour l'instant : votre administrateur n'a configuré ni GitHub, ni GitLab, ni Jira, ni Azure DevOps.** Demande à ton administrateur Astrolabe de les connecter. Le pas à pas, outil par outil, est dans [Le jeton de l'entreprise et ton propre compte](../../getting-started/Configuration/Integration/company-token-and-my-account.md). ✅ C'est tout ! La suite : [Voir tes succès](see-my-achievements.md). --- # FAQ de Mon compte ## Où change-t-on la langue ? Dans le menu de ton avatar, à côté de **Langue** : voir [Choisir ta langue et ton thème](choose-language-and-theme.md). Elle n'est pas dans **Mon compte**. ## Pourquoi Astrolabe s'ouvre-t-il dans une autre langue sur un autre ordinateur ? Parce que ton choix est gardé sur le navigateur où tu l'as fait. Sur un autre navigateur, Astrolabe s'ouvre dans la langue de ce navigateur : choisis la tienne à nouveau dans le menu de ton avatar. ## Où change-t-on son nom ou son adresse e-mail ? L'onglet **Profil** les montre mais ne permet pas de les changer ici. ## Quelle différence entre le jeton de l'entreprise et mon compte ? Le jeton de l'entreprise sert les pages des composants. Ton propre compte sert les cartes de ton tableau de bord qui montrent ton propre travail. Voir [Le jeton de l'entreprise et ton propre compte](../../getting-started/Configuration/Integration/company-token-and-my-account.md). ## Comment arrêter les messages de succès ? Éteins **When you unlock an achievement** dans **Mon compte › Notifications**. --- # Ouvrir ton compte La page de ton compte contient ton profil, tes propres connexions, tes notifications et tes succès. ## L'ouvrir 1. En haut à droite de n'importe quelle page, clique sur ton avatar (un bouton rond avec ton initiale). 2. Dans le menu, clique sur **Mon compte**. La page s'ouvre sur l'onglet **Profil** : ton nom et ton adresse e-mail. ## Les onglets | Onglet | Ce qu'il contient | | --- | --- | | **Profil** | Ton nom et ton adresse e-mail | | **Mes comptes** | Tes propres comptes GitHub, GitLab, Jira et Azure DevOps : voir [Connecter tes propres comptes](connect-my-accounts.md) | | **Notifications** | Ce que tu veux qu'on te dise, et où : voir [Choisir tes notifications](../../developer-dashboard/notifications/choose-your-notifications.md) | | **Succès** | Ton niveau et les succès que tu as débloqués : voir [Voir tes succès](see-my-achievements.md) | Le même menu de ton avatar contient ta langue et ton thème : voir [Choisir ta langue et ton thème](choose-language-and-theme.md). ✅ C'est tout ! La suite : [Choisir ta langue et ton thème](choose-language-and-theme.md). --- # Voir tes succès Astrolabe récompense ce que tu fais avec lui. Chaque récompense est un succès, et chaque succès rapporte des points qui font monter ton niveau. ## Les ouvrir 1. En haut à droite de n'importe quelle page, clique sur ton avatar, puis sur **Mon compte**. 2. Ouvre l'onglet **Succès**. Le haut de la page montre ton niveau, par exemple **Niveau 2 — Apprenti**, tes points (**70 / 150 XP**) et combien tu en as débloqué (**7 / 35 succès débloqués**). Ton niveau apparaît aussi dans le menu de ton avatar. En dessous, les succès sont groupés par thème : **Exploration**, **Catalogue**, **The Foundry**, **Compass**, **Chronicles**, **Guild**, **Sentinel**, **Dashboard**, **Release Manager**, **Administration**, **Secrets** et **Legends**. À côté de chaque thème, un compteur comme `3/5` dit combien tu en as débloqué. - Un succès débloqué montre son image et son nom. - Un succès verrouillé montre un cadenas. - Sous chaque nom, **IRON**, **STEEL**, **MITHRIL** ou **STELLAR** est son rang. - Les succès de **Secrets** affichent **Hidden achievement** tant que tu ne les as pas débloqués. ## Quand tu en débloques un Un message **Achievement unlocked!** apparaît en bas à gauche de l'écran et disparaît tout seul au bout de quelques secondes. Il donne le nom du succès et les points gagnés (**+10 Forge Shards**). La cloche reçoit aussi une notification **Achievement unlocked: …**. Clique sur le message, ou sur la notification de la cloche : Astrolabe ouvre l'onglet **Succès** de **Mon compte** avec le succès que tu viens de débloquer au premier plan. Pour arrêter ces notifications, voir [Choisir tes notifications](../../developer-dashboard/notifications/choose-your-notifications.md) : la section **Achievements** a un interrupteur **When you unlock an achievement**. ✅ C'est tout ! --- # Problèmes courants avec Mon compte | Ce que tu vois | Quoi faire | | --- | --- | | **Aucune source à connecter pour l'instant : votre administrateur n'a configuré ni GitHub, ni GitLab, ni Jira, ni Azure DevOps.** dans **Mes comptes** | Demande à ton administrateur Astrolabe de connecter les outils. | | **Ce navigateur a refusé les notifications ; autorisez-les d'abord dans ses réglages.** dans **Notifications** | Autorise les notifications pour Astrolabe dans les réglages du site de ton navigateur, puis recharge la page. | :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec ce que tu vois à l'écran. ::: --- # Poser une question à Polaris Pose une question à Polaris, et retrouve tes conversations plus tard. ## Avant de commencer Un administrateur a [allumé Polaris](turn-on-polaris.md). ## 💬 Poser une question 1. Dans la barre latérale, clique sur **Polaris**. 2. Dans le champ **Votre question**, écris ta question, par exemple `Comment déployer shop-api ?`. 3. Clique sur **Envoyer**. La conversation apparaît dans la liste à gauche, sous le bouton **Nouvelle conversation**. Cette étape n'a pas été vérifiée avec un serveur IA qui fonctionne : l'aspect de la réponse n'a pas été vu. ## ➕ Commencer une autre conversation Clique sur **Nouvelle conversation**, puis pose ta question. ✅ C'est tout ! La suite : [Problèmes courants avec Polaris](troubleshooting.md). --- # Problèmes courants avec Polaris | Ce que tu vois | Quoi faire | | --- | --- | | Pas de **Polaris** dans la barre latérale | Un administrateur allume **Activer Polaris** dans **Administration › Plugins** : [Allumer Polaris](turn-on-polaris.md). | | Sur la page Polaris : `Polaris n'est pas encore configuré` `Ce plugin fonctionne, mais il n'a rien à afficher tant qu'il n'est pas configuré depuis l'administration.` `Manquant ou invalide : IP address, Token` | Clique sur **Ouvrir les réglages de Polaris**, remplis **IP address** et **Token**, clique sur **Enregistrer**, puis sur **Recharger**. | | Un message `Polaris n’a pas pu répondre. Réessayez dans un instant.` et ta question qui revient dans le champ | Polaris ne joint pas son serveur IA. Réessaie dans un instant. Si ça continue, demande à ton administrateur de vérifier **IP address** et **Token** dans **Administration › Plugins › Polaris › Configurer**. | :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec le message que tu vois. ::: --- # Allumer Polaris Polaris est l'assistant conversationnel d'Astrolabe. Il a sa propre page, où chacun pose ses questions et retrouve ses conversations. Tu le règles une fois, en administrateur. ## Avant de commencer Polaris répond par un serveur IA. Il te faut son adresse, et le jeton (bearer) qu'il attend. ## 🔌 Allumer le plugin 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Plugins**. 3. Sur la carte **Polaris**, clique sur l'interrupteur **Activer Polaris**. La carte dit alors **À configurer**, et **Polaris** apparaît dans la barre latérale. ## 🔧 Donner à Polaris son serveur IA 1. Sur la carte **Polaris**, clique sur **Configurer**. La page **Réglages** s'ouvre. 2. Remplis le formulaire : | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **IP address** | L'hôte du serveur IA, sans `http://` ni `https://`. Astrolabe le colle dans `https://:8443`. Une adresse ou un nom. | `ai.exemple.com` | | **Token** | Le jeton (bearer) qu'attend le serveur IA. Il reste dans Astrolabe : le navigateur ne parle jamais au serveur IA. | | 3. Clique sur **Enregistrer**. Le message **Réglages enregistrés.** apparaît en bas à gauche de l'écran et disparaît tout seul. 4. Clique sur **Recharger**. La page dit **Ce plugin est configuré.** ✅ C'est tout ! La suite : [Poser une question à Polaris](ask-polaris.md). --- # FAQ de la recherche ## Y a-t-il un raccourci pour ouvrir la recherche ? Non : clique sur **Recherche** dans la barre latérale de gauche. ## La recherche regarde-t-elle dans la documentation d'un composant ? Oui, même si personne n'a encore ouvert cette documentation : Astrolabe la construit en arrière-plan. Une documentation qui ne se construit pas n'est pas cherchée, et **Administration › Problèmes** le dit : voir [Problèmes courants avec Confluence](../../getting-started/Configuration/Integration/confluence/troubleshooting.md). Pour lire la documentation d'un composant, voir [Lire la documentation d'un composant](../techdocs/read-component-docs.md). ## La recherche regarde-t-elle dans Confluence ? Oui, une fois Confluence connecté : voir [Ajouter l'intégration Confluence](../../getting-started/Configuration/Integration/confluence/add-the-integration.md). ## Quelle différence avec **Rechercher par nom** dans le catalogue ? **Rechercher par nom** (dans le [catalogue](../catalog/filter-the-catalog.md)) ne regarde que les noms, dans un seul type d'élément à la fois. **Recherche** regarde les noms et les descriptions, dans tous les types à la fois. ## Pourquoi la recherche ne trouve-t-elle rien sur une nouvelle instance ? Parce que l'index de recherche met quelques minutes à se construire. La page le dit : **Sur une nouvelle instance, l'index de recherche peut mettre quelques minutes à se construire.** Attends, puis cherche à nouveau. ## Pourquoi un composant que je connais n'apparaît pas ? Son nom et sa description ne contiennent aucun de tes mots, ou un filtre est actif. Ouvre **Filtres**, choisis **Tous** dans **Type** et décoche **Cycle de vie**. --- # Rechercher dans Astrolabe Un seul champ de recherche pour tout le catalogue. Tape un mot et ouvre ce que tu trouves. ## Rechercher 1. Dans la barre latérale de gauche, clique sur **Recherche**. 2. Clique dans le champ de recherche en haut de la page et tape un mot, par exemple `payment`. La liste se met à jour pendant que tu tapes. Chaque résultat montre son nom, sa description et des pastilles : son type d'élément (**Component**, **API**, **System**, **Group**, **User**, **Template**, **Resource**, **Domain**) et son type ou son cycle de vie. 3. Clique sur un résultat pour ouvrir sa page. En bas de la liste, **Previous** et **Next** passent d'une page de résultats à l'autre. :::tip Ce qui est cherché Le nom **et** la description. `gestion` trouve un composant dont la description dit « Service de gestion des commandes », même si son nom ne contient pas le mot. ::: ## La documentation et les pages Confluence sont trouvées aussi La recherche lit aussi la documentation de tes composants, et les pages de Confluence une fois qu'il est [connecté](../../getting-started/Configuration/Integration/confluence/add-the-integration.md). La documentation d'un composant est trouvée **même si personne ne l'a encore ouverte** : Astrolabe la construit en arrière-plan, tu n'as donc pas à ouvrir une page de documentation pour que ses mots soient cherchés. Tape un mot de la documentation : le résultat est la page de documentation qui le contient. Une page Confluence montre son espace (par exemple **Space ENG**) et s'ouvre sur ton Confluence, dans une nouvelle fenêtre. :::note La recherche des mots de la documentation d'un composant n'a pas été essayée sur une instance avec une vraie documentation ; les pages Confluence, si. ::: ## Ne garder qu'un type de résultat 1. En haut à droite, clique sur **Filtres**. 2. Dans **Type**, clique sur **Tous** et choisis **Component**, **Template**, **User** ou **Group**. 3. Dans **Cycle de vie**, coche **production** ou **experimental** pour ne garder que les éléments de cette phase. 4. Clique sur **Fermer**. Décoche la case, ou choisis à nouveau **Tous**, pour retirer un filtre. ✅ C'est tout ! La suite : [FAQ de la recherche](faq.md). --- # Problèmes courants avec la recherche | Ce que tu vois | Quoi faire | | --- | --- | | **Nous n'avons trouvé aucun résultat** et **Essayez d'ajuster vos termes de recherche ou vos filtres.** | Aucun nom ni aucune description ne contient ton mot, ou un filtre est actif. Essaie un mot plus court, puis ouvre **Filtres** et choisis **Tous** dans **Type**. | | **Nous n'avons trouvé aucun résultat**, **Essayez d'ajuster vos termes de recherche ou vos filtres.** et **Sur une nouvelle instance, l'index de recherche peut mettre quelques minutes à se construire.** | Ton Astrolabe est neuf et la recherche n'a pas fini de lister le catalogue. Attends quelques minutes, puis cherche à nouveau. | | **Nous n'avons trouvé aucun résultat** pour un mot d'une page Confluence ou de la documentation d'un composant | Ouvre **Filtres** et choisis **Tous** dans **Type**. Puis voir [Problèmes courants avec Confluence](../../getting-started/Configuration/Integration/confluence/troubleshooting.md). | | La page liste tout avant que tu tapes | C'est normal : avec un champ vide, la recherche liste le catalogue. Tape un mot pour la réduire. | :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec ce que tu vois à l'écran. ::: --- # Ajouter des entrées au radar Une entrée est une technologie du radar : une bibliothèque, une plateforme, une pratique, un outil. ## Avant de commencer Il faut être administrateur, et les anneaux existent ([Allumer Tech Atlas](turn-on-tech-atlas.md)). ## ➕ Ajouter une entrée 1. Dans **Administration**, sous **INTELLIGENCE**, clique sur **Tech Atlas**. L'onglet **Entrées** s'ouvre. 2. Clique sur **Ajouter une entrée**. 3. Remplis le formulaire : | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **Titre** | Le nom affiché sur le radar | `React Query` | | **Clé** | Un identifiant court, en `snake_case` | `react_query` | | **Quadrant** | Où elle se place | `Languages & Frameworks` | | **Anneau** | Sa recommandation aujourd'hui | `Adopt` | | **URL** | Une page pour en savoir plus | `https://example.com/react-query` | | **Description** | Pourquoi tu la recommandes | `Our way to fetch data in the browser.` | 4. Clique sur **Ajouter**. L'entrée est dans le tableau, avec son **Anneau actuel** et sa **Dernière mise à jour**. Les listes **Quadrant** et **Anneau** au-dessus du tableau gardent les entrées que tu veux voir. ## 🕒 Déplacer une entrée vers un autre anneau Une entrée garde un historique : chaque changement d'anneau est un instantané (**snapshot**). 1. Sur la ligne de l'entrée, clique sur l'icône d'horloge (**Gérer la chronologie de** l'entrée). La fenêtre **Chronologie** liste les instantanés. 2. Clique sur **Ajouter un snapshot**. 3. Choisis le nouvel **Anneau**, la **Date**, et le **Mouvement** (**Reculé**, **Sans changement** ou **Avancé**). Ajoute une **Description** si tu veux dire pourquoi. 4. Clique sur **Confirmer**. Le radar montre l'entrée dans son nouvel anneau. ✅ C'est tout ! La suite : [Lire le radar](read-the-radar.md). --- # Questions fréquentes ## Puis-je ajouter un cinquième quadrant ou en supprimer un ? Non. Un radar a exactement quatre quadrants. Tu peux les renommer dans l'onglet **Quadrants** de **Administration › Tech Atlas**. ## D'où viennent les entrées ? De **Administration › Tech Atlas › Entrées**, où tu les ajoutes à la main. L'onglet **Paramètres** propose aussi une seconde **Source des données**, `url`, pour lire les entrées dans un document publié : tape son adresse dans **URL**, puis clique sur **Enregistrer**. ## Que fait « Relancer le relevé » ? Il lit les dépôts de tes composants pour trouver les technologies qu'ils utilisent. Il a besoin d'une intégration pour l'hôte de tes dépôts. ## Puis-je ajouter ou déplacer une entrée depuis le radar ? Non. Le radar se lit seulement : clique sur une entrée pour voir sa description et son **History**. Les entrées s'ajoutent et se déplacent dans **Administration › Tech Atlas**, par les administrateurs. ## Qui voit le radar ? Le radar est la page **Tech Atlas** de la barre latérale. Ses réglages, ses anneaux et ses entrées sont dans **Administration › Tech Atlas**. --- # Lire le radar Le radar montre chaque technologie que tes administrateurs y ont placée, pour savoir par quoi commencer et quoi laisser. ## Avant de commencer Tech Atlas est allumé et a des entrées ([Allumer Tech Atlas](turn-on-tech-atlas.md)). ## 🛰️ Ouvrir le radar 1. Dans la barre latérale de gauche, clique sur **Tech Atlas**. La page s'intitule **Forge Atlas**. 2. Les quatre quadrants (**Techniques**, **Tools**, **Platforms**, **Languages & Frameworks**) listent chacun leurs entrées par anneau, du centre (**Adopt**) vers l'extérieur (**Hold**). Un anneau vide dit **(empty)**. Chaque entrée a un numéro, le même que son point sur le radar. 3. Sous le radar, la légende donne à chaque anneau son sens, tel que tes administrateurs l'ont écrit. **▲ avancé** et **▼ reculé** disent qu'une entrée a changé d'anneau. 4. Clique sur une entrée. Une fenêtre s'ouvre avec sa description, son historique et un lien pour en savoir plus. 5. Tape dans **Filtrer**, en haut à droite, pour trouver une entrée. ✅ C'est tout ! La suite : [Questions fréquentes](faq.md). --- # Problèmes courants avec Tech Atlas | Ce que tu vois | Quoi faire | | --- | --- | | Pas de **Tech Atlas** dans la barre latérale | Allume **Tech Atlas** dans **Administration › Plugins**. | | `Aucune intégration ne sait lire les dépôts de vos composants (github.com). Ajoutez-en une pour cet hôte dans Administration › Connexions de l'entreprise.` après **Relancer le relevé** | Ajoute l'intégration de l'hôte nommé dans le message (ici GitHub) dans **Administration › Connexions de l'entreprise**, puis clique à nouveau sur **Relancer le relevé**. | | `Tech Atlas est allumé, mais votre catalogue n'a encore aucun dépôt à lire. Ajoutez un fournisseur dans Administration › Catalogue › Fournisseurs, puis lancez le relevé depuis l'onglet Entrées.` après avoir allumé Tech Atlas | Ajoute un fournisseur de catalogue dans **Administration › Catalogue**, puis clique sur **Relancer le relevé** dans l'onglet **Entrées** de **Administration › Tech Atlas**. | | `Tech Atlas est allumé, mais aucune intégration n'est réglée pour github.com. Ajoutez-en une dans Administration › Connexions de l'entreprise, puis lancez le relevé depuis l'onglet Entrées.` après avoir allumé Tech Atlas | Ajoute l'intégration de l'hôte nommé dans le message dans **Administration › Connexions de l'entreprise**, puis clique sur **Relancer le relevé**. | | `Le relevé a échoué : aucun dépôt n'a pu être lu (github.com). Vérifiez le jeton de l'intégration dans Administration › Connexions de l'entreprise. Rien n'a été modifié.` | Le jeton de l'intégration est refusé ou a expiré : remplace-le dans **Administration › Connexions de l'entreprise**, puis clique sur **Relancer le relevé**. | | `Tech Atlas est allumé, mais vous n'avez pas le droit de lancer le relevé. Demandez à un administrateur.` | Ton rôle ne peut pas lancer le relevé. Demande à un administrateur de cliquer sur **Relancer le relevé**. | | `Le relevé a échoué. Rien n'a été modifié. Relancez-le depuis l'onglet Entrées.` | Clique sur **Relancer le relevé** dans l'onglet **Entrées** de **Administration › Tech Atlas**. | | L'onglet **Anneaux** est vide | Clique sur **Ajouter un anneau** et crée au moins un anneau. | | L'onglet **Entrées** est vide | Clique sur **Ajouter une entrée**. | | Chaque anneau du radar dit **(empty)** | Aucune entrée n'a été ajoutée : ajoute des entrées dans **Administration › Tech Atlas**. | --- # Allumer Tech Atlas Tech Atlas est un radar technologique : une page qui dit à tout le monde quels langages, plateformes, techniques et outils ton entreprise recommande. Tu l'allumes, puis tu crées les **anneaux** (les niveaux de recommandation). ## Avant de commencer Il faut être administrateur. ## 🔌 Allumer le plugin 1. Dans la barre latérale de gauche, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Plugins**. 3. Sur la carte **Tech Atlas**, clique sur l'interrupteur en haut à droite. Il s'allume tout de suite. Déjà allumé ? Tech Atlas est activé : passe à l'étape suivante. **Tech Atlas** apparaît dans la barre latérale de gauche, et dans le menu de l'administration sous **INTELLIGENCE**. Un premier relevé démarre tout de suite, sans que tu le demandes : il lit les dépôts de ton catalogue pour trouver les technologies qu'ils utilisent. Au-dessus des cartes de **Plugins**, la page dit **Le relevé est en cours : les dépôts de votre catalogue sont lus. La page se recharge à la fin.** Puis, en quelques secondes, par exemple **Relevé terminé : 17 dépôts lus, 10 ajoutés, 0 déplacés.** Les entrées trouvées sont dans **Administration › Tech Atlas**, onglet **Entrées**. Tu peux y relancer le relevé avec **Relancer le relevé**. ## ⭕ Créer les anneaux Un radar neuf n'a aucun anneau : la liste **Anneau** d'une entrée propose les anneaux que tu crées ici. 1. Dans **Administration**, sous **INTELLIGENCE**, clique sur **Tech Atlas**, puis sur l'onglet **Anneaux**. 2. Clique sur **Ajouter un anneau**. 3. Remplis le formulaire : | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **Nom** | Le nom de l'anneau | `Adopt` | | **Position (1 = centre)** | 1 est le centre du radar | `1` | | **Couleur** | Une couleur, au format `#rrggbb` | `#0ea586` | | **Description** | Ce que l'anneau veut dire | `Use it by default.` | 4. Clique sur **Ajouter**. Un message confirme la création. 5. Recommence pour les autres anneaux, par exemple `Trial` (2), `Assess` (3) et `Hold` (4). :::tip Les quatre quadrants Le radar a exactement quatre quadrants : **Languages & Frameworks**, **Platforms**, **Techniques**, **Tools**. On ne peut ni les créer ni les supprimer. Dans l'onglet **Quadrants**, tu peux les renommer. ::: ✅ C'est tout ! La suite : [Ajouter des entrées au radar](add-entries.md). --- # Ajouter une documentation à un composant Un composant sans documentation le dit dans son onglet **Documentation**. Une annotation dans son fichier `catalog-info.yaml` le relie à la documentation de son dépôt. ## Avant de commencer - Le composant est dans le catalogue. - Son dépôt contient un fichier `mkdocs.yml` et un dossier `docs`. ## Ajouter l'annotation 1. Dans le dépôt du composant, ouvre `catalog-info.yaml`. 2. Sous `metadata`, ajoute l'annotation `backstage.io/techdocs-ref` : ```yaml apiVersion: backstage.io/v1alpha1 kind: Component metadata: name: order-service annotations: backstage.io/techdocs-ref: dir:. spec: type: service owner: platform-team ``` 3. Enregistre et pousse le fichier. Une fois qu'Astrolabe a relu le fichier, l'onglet **Documentation** du composant montre la documentation, et le composant apparaît dans la page **Documentation**. Cette étape n'a pas été vérifiée sur une instance. ✅ C'est tout ! --- # FAQ de la documentation ## Pourquoi mon composant n'est pas dans la page **Documentation** ? Seuls les composants qui portent l'annotation `backstage.io/techdocs-ref` y sont listés. Voir [Ajouter une documentation à un composant](add-docs-to-a-component.md). ## Où trouver la documentation d'un seul composant ? Sur la page du composant, dans l'onglet **Documentation**. Dans la carte **À propos**, **Voir TechDocs** ouvre la même documentation. ## Puis-je chercher dans la documentation ? **Recherche**, dans la barre latérale de gauche, liste les éléments du catalogue, pas les pages d'une documentation : voir [FAQ de la recherche](../search/faq.md). --- # Lire la documentation d'un composant La documentation d'un composant vit à côté de son code. Tu la lis dans Astrolabe, avec la liste des pages à gauche et le sommaire à droite. ## Depuis la page Documentation 1. Dans la barre latérale de gauche, clique sur **Documentation**. La page liste les composants qui ont une documentation : **Document**, **Propriétaire**, **Catégorie**, **Type** et **Actions**. 2. Clique sur le nom d'un document, par exemple `customer-portal`. La documentation s'ouvre. En haut, tu vois le **Component**, son **Propriétaire** et son **Cycle de vie** : clique sur le composant pour ouvrir sa page. En dessous : | Où | Quoi | | --- | --- | | À gauche | Les pages de la documentation. Clique sur l'une d'elles pour l'ouvrir | | Au milieu | La page que tu lis | | À droite, **Table of contents** | Les titres de la page. Clique sur l'un d'eux pour y aller | :::tip Un bandeau annonce une version plus récente **Une nouvelle version de cette documentation est maintenant disponible, veuillez rafraîchir pour la consulter.** Clique sur **Rafraîchir** : la page se recharge avec la dernière version. ::: ## Depuis le composant 1. Dans la barre latérale de gauche, clique sur **Catalogue** et ouvre le composant. 2. Clique sur l'onglet **Documentation**. Ou, dans la carte **À propos**, clique sur **Voir TechDocs**. ## Retrouver un document dans la liste 1. Sur la page **Documentation**, clique sur **Filtres**. 2. Dans le bloc **Personnel**, clique sur **Favoris** pour garder la documentation de tes composants favoris. Ou choisis une valeur dans **Propriétaire** ou **Tags**. 3. Clique sur **Fermer**. Dans la colonne **Actions**, le premier bouton copie le lien de la documentation, le second l'ajoute à tes favoris. ✅ C'est tout ! La suite : [Ajouter une documentation à un composant](add-docs-to-a-component.md). --- # Problèmes courants avec la documentation | Ce que tu vois | Quoi faire | | --- | --- | | **Annotation manquante**, puis `L'annotation backstage.io/techdocs-ref est manquante. Ajoutez-la à votre Component pour activer cet outil.` dans l'onglet **Documentation** | Le composant n'a pas encore de documentation. Ajoute l'annotation : voir [Ajouter une documentation à un composant](add-docs-to-a-component.md). L'écran montre le YAML à copier. | | **Une nouvelle version de cette documentation est maintenant disponible, veuillez rafraîchir pour la consulter.** | Clique sur **Rafraîchir**. | :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec ce que tu vois à l'écran. ::: --- # Créer un composant depuis un modèle Un modèle est un point de départ prêt à l'emploi : un site de documentation, un service Node.js, une API Python. Tu en choisis un, tu réponds à quelques questions, et Astrolabe crée le composant pour toi. ## Choisir un modèle 1. Dans la barre latérale de gauche, clique sur **La Fabrique**. L'onglet **Templates** montre une carte par modèle : sa catégorie, son titre, sa description, ses tags et son propriétaire. 2. Pour réduire la liste, clique sur **Filtres** (en haut à droite). Dans le panneau, clique sur **Favoris** pour garder tes modèles favoris, ou choisis une valeur dans **Catégories**, **Tags** ou **Propriétaire**. Clique sur **Fermer**. 3. Sur la carte du modèle voulu, clique sur **Choisir**. ## Remplir le formulaire Le formulaire est découpé en étapes, affichées en haut. Exemple avec le modèle **Component Sandbox**, qui génère les fichiers d'un composant sans rien publier : une seule étape, **Component Information**. 1. Remplis : | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **Component Name** | Le nom du nouveau composant | `acme-sandbox` | | **Description** | Une courte description | `Bac à sable d'acme` | | **Owner** | L'équipe ou la personne propriétaire. Clique sur le champ et choisis | `platform-team` | 2. Clique sur **Vérifier**. Dans le tableau, vérifie tes réponses. **Retour** permet d'en changer une. 3. Clique sur **Créer**. Astrolabe ouvre la page de la tâche et déroule ses étapes : voir [Suivre la création d'un composant](follow-a-task.md). :::tip Chaque modèle a son formulaire Les questions, et les étapes, changent d'un modèle à l'autre. Un modèle à plusieurs étapes a un bouton **Suivant** entre elles. ::: ✅ C'est tout ! La suite : [Suivre la création d'un composant](follow-a-task.md). --- # FAQ de La Fabrique ## Où vois-je tous les modèles ? Dans **La Fabrique**, ou dans l'onglet **Templates** du [catalogue](../catalog/browse-the-catalog.md). ## À quoi servent les onglets **Éditeur**, **Actions** et **Extensions de templating** ? Ils sont pour les personnes qui écrivent des modèles : **Éditeur** charge ou crée un modèle pour l'essayer, **Actions** liste ce qu'un modèle sait faire, **Extensions de templating** liste les aides qu'il peut utiliser. Pour créer un composant, reste dans l'onglet **Templates**. ## Pourquoi les cartes de modèle n'ont-elles pas de bouton **Choisir** ? Ton rôle ne te laisse pas créer de composants. Tu peux lire les modèles, pas en démarrer un. Demande à ton administrateur de donner `scaffolder.task.create` à ton rôle. ## Pourquoi l'onglet **Tâches** dit-il `Error: Request failed with 403 Forbidden` ? Ton rôle ne te laisse pas lire les tâches. Demande à ton administrateur de donner `scaffolder.task.read` à ton rôle. ## Puis-je recommencer avec les mêmes réponses ? Oui : sur la page de la tâche, clique sur **Recommencer**. Le formulaire s'ouvre avec tes réponses déjà remplies. --- # Suivre la création d'un composant Quand tu cliques sur **Créer**, Astrolabe déroule les étapes du modèle les unes après les autres. Tu les regardes sur la page de la tâche. ## Regarder les étapes La page montre les étapes du modèle, par exemple **Generate the Files** et **List the Files** pour **Component Sandbox**, ou **Fetch Base Template**, **Publish to GitHub** et **Register Component**. Chacune a une icône : une étape qui échoue devient rouge, les suivantes sont sautées. Sous les étapes, le journal liste ce que chaque étape a fait. Les boutons en haut à droite : | Bouton | Ce qu'il fait | | --- | --- | | **Masquer les logs** | Cache le journal sous les étapes | | **Recommencer** | Rouvre le formulaire, avec tes réponses déjà remplies | | **Annuler** | Grisé quand la tâche est terminée | Dans le journal, le champ de recherche filtre les lignes, et la flèche à côté télécharge le journal. ## Quand la création réussit Chaque étape se termine par une coche verte, et la barre au-dessus des étapes devient verte. Sous les étapes, un bloc montre le résultat du modèle, avec un titre choisi par le modèle (par exemple **Files generated**). **Annuler** est grisé et **Recommencer** reste disponible. Dans l'onglet **Tâches**, le **Statut** de la tâche indique **Terminée**. Les liens qu'un modèle peut afficher dans ce bloc, comme **Repository** ou **Open in Catalog**, n'ont pas été vérifiés sur une instance. ## Quand la création échoue L'étape en échec devient rouge, et un message rouge apparaît sous les étapes. Il commence par **Le modèle ne s'est pas terminé**, puis nomme l'étape et dit ce qui s'est passé. Le journal en dessous garde le détail. Les messages sont listés dans [Problèmes courants avec La Fabrique](troubleshooting.md). ## Retrouver tes créations passées 1. Dans **La Fabrique**, clique sur l'onglet **Tâches**. Le tableau liste chaque tâche : **ID tâche**, **Template**, **Créée le**, **Propriétaire** et **Statut** (par exemple **Échouée**). Clique sur un **ID tâche** pour rouvrir sa page. En bas, **Afficher 20 résultats** change le nombre de tâches par page. ✅ C'est tout ! La suite : [FAQ de La Fabrique](faq.md). --- # Problèmes courants avec La Fabrique | Ce que tu vois | Quoi faire | | --- | --- | | **Please fill out this field.** quand tu cliques sur **Suivant** | Remplis le champ marqué d'une étoile (`*`). | | Un message rouge commence par **Le modèle ne s'est pas terminé** et dit `n'a pas trouvé un fichier dont le modèle a besoin` | Le modèle pointe vers des fichiers qui n'existent pas. Préviens le propriétaire du modèle (affiché sur sa carte) pour qu'il corrige sa source. | | Le message rouge dit `n'a pas eu le droit de lire ou d'écrire un fichier` | Demande à ton administrateur de vérifier les droits du serveur. | | Le message rouge dit `n'a pas pu joindre` suivi d'une adresse | Vérifie que l'adresse est juste et que le service répond, puis clique sur **Recommencer**. | | Le message rouge dit `a été refusée par le service où elle publie : la connexion manque ou son jeton n'est plus valable` | Demande à un administrateur de corriger la connexion dans **Administration › Connexions de l'entreprise**, puis clique sur **Recommencer**. | | Le message rouge dit `n'a pas reçu ce qu'elle attend : le modèle est mal écrit` | Préviens le propriétaire du modèle (affiché sur sa carte) pour qu'il le corrige. | | Le message rouge dit `a échoué. Le journal ci-dessous dit ce qui s'est passé ; transmets-le à ton administrateur` | Lis le journal de l'étape rouge, puis envoie le **ID tâche** et les lignes rouges à ton administrateur. | | Une étape est rouge, et les suivantes disent `Skipping step … because a previous step failed` | Lis le journal de l'étape rouge : il dit ce qui a échoué. Corrige, puis clique sur **Recommencer**. | | Le tableau **Tâches** affiche **Échouée** dans **Statut** | Clique sur la tâche pour lire son journal. | | Pas de bouton **Choisir** sur les cartes de l'onglet **Templates** | Ton rôle ne te laisse pas créer de composants. Demande à ton administrateur : voir la [FAQ](faq.md). | | `Error: Request failed with 403 Forbidden` dans l'onglet **Tâches** | Ton rôle ne te laisse pas lire les tâches. Demande à ton administrateur : voir la [FAQ](faq.md). | :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec l'**ID tâche**. ::: --- # Ajouter une carte Une carte montre une chose d'une source sur ton tableau de bord : tes merge requests, tes pipelines, les scores Compass de tes composants. Tu choisis la source et ce qu'elle montre. ## Avant de commencer Ton rôle doit le permettre. Sans cela, **Ajouter une carte** affiche un cadenas. Survole-le : l'infobulle dit **Votre rôle ne permet pas d'ajouter des cartes aux tableaux de bord. Demandez-le à un administrateur.** Demande à ton administrateur de donner à ton rôle les autorisations **Orion-dashboard** `dashboard.create`, `dashboard.update`, `dashboard.card.create`, `dashboard.card.update` et `dashboard.card.delete` ([Vérifier ce que donne un rôle](../../administration/access-control/check-what-a-role-gives.md)). Une source autre que **astrolabe** demande une connexion ajoutée par ton administrateur dans **Administration › Connexions de l'entreprise** : voir par exemple [Ajouter l'intégration GitLab](../../getting-started/Configuration/Integration/gitlab/add-the-integration.md). La source **astrolabe** n'est proposée que si un plugin qu'elle sert est allumé dans **Administration › Plugins** : **Déploiements** donne la clé **Déploiements**, **Compass** donne la clé **Compass**. Avec les deux éteints, **astrolabe** n'est pas dans la liste ; avec un seul allumé, seule sa clé y est. ## 🔧 Ajouter la carte 1. Dans la barre latérale, clique sur **Tableau de bord**, puis sur l'onglet du tableau voulu. 2. Clique sur **Ajouter une carte**, en haut de la page, à côté de **Réorganiser** et **Plein écran**. Sur un tableau vide, le même bouton est au milieu de la page. 3. Dans la fenêtre **Ajouter une carte**, remplis le formulaire : | Champ | Quoi choisir | Exemple | | --- | --- | --- | | **Source** | D'où viennent les données : `astrolabe`, `github`, `gitlab`, `jira`… | `astrolabe` | | **Clé** | Ce que la carte montre. Une ligne sous le champ le dit. | `Compass` | | **Nom de la carte** | Le titre de la carte (obligatoire) | `Scores` | | **Dans le tableau** | Le tableau qui reçoit la carte. Il part du tableau que tu regardes. | `Livraison` | 4. Clique sur **Ajouter**. Rien à enregistrer ensuite. Quand tu as choisi un autre tableau que celui que tu regardes, un message dit **Carte ajoutée à « Livraison »**, avec un bouton **Ouvrir** qui t'y emmène. | Source | Clés | | --- | --- | | `astrolabe` | **Déploiements** (les versions déployées sur chaque environnement), **Compass** (les scores de chaque composant) | | `github` | **Pull requests**, **Workflows**, **Releases**, **Workflows détaillés** | | `gitlab` | **Merge requests**, **Pipelines**, **Releases**, **Pipelines détaillés**, **À faire** | | `jira` | **À relire**, **Mes tickets ouverts**, **Requête JQL** | ## 👀 Ce que montre une carte, et comment ne garder que le tien Une carte lit **tout ce que ton compte peut voir** parmi les composants du catalogue, pas seulement ce qui est à toi : toutes les pull requests d'un dépôt du catalogue que ton jeton lit, toutes les applications, tous les builds. Certains tableaux ont une colonne qui dit quelles lignes sont à toi (**Mon rôle**, **À moi**) : tu peux **filtrer** dessus et enregistrer le filtre avec la carte, voir [Modifier ou retirer une carte](change-or-remove-a-card.md#-ne-garder-que-tes-lignes). Les cartes de chaque outil ont leur page : par exemple [Ajouter les cartes GitHub à ton tableau de bord](../../getting-started/Configuration/Integration/github/add-the-dashboard-cards.md), [Ajouter les cartes GitLab à ton tableau de bord](../../getting-started/Configuration/Integration/gitlab/add-the-dashboard-cards.md), [Ajouter la carte Argo CD](../../getting-started/Configuration/Integration/argocd/add-the-dashboard-card.md), [Ajouter les cartes Jira](../../getting-started/Configuration/Integration/jira/add-the-dashboard-cards.md). ✅ C'est tout ! La suite : [Organiser tes cartes](arrange-your-cards.md). --- # Organiser tes cartes Mets les cartes où tu veux, aussi grandes que tu veux, et coupe un tableau devenu trop long. ## 🔧 Déplacer et redimensionner 1. Dans la barre latérale, clique sur **Tableau de bord**, puis sur l'onglet du tableau. 2. Clique sur **Réorganiser**, en haut de la page (un tableau sans carte ne le propose pas). Les onglets sont grisés, **Annuler** et **Terminer** remplacent les boutons, et la page dit : **Glissez les cartes pour les déplacer, tirez un coin pour les redimensionner. Cochez des cartes pour les déplacer vers un autre tableau.** 3. Pour déplacer une carte, fais-la glisser par son titre jusqu'à sa nouvelle place. 4. Pour la redimensionner, fais glisser le coin en bas à droite de la carte. 5. Clique sur **Terminer**. Le message **Enregistré avec succès** apparaît. **Annuler** te rend la disposition d'avant **Réorganiser**. Ta disposition est gardée : elle est la même à la prochaine ouverture du tableau. ## 📦 Déplacer des cartes vers un autre tableau 1. Clique sur **Réorganiser**. 2. Sur chaque carte à déplacer, coche la case **Sélectionner**, en haut à droite de la carte. Une barre apparaît au-dessus des cartes : **1 sélectionnée(s)**, **Déplacer vers…** et **Tout désélectionner**. 3. Clique sur **Déplacer vers…** et choisis le tableau qui reçoit les cartes. 4. Un message dit **1 carte(s) déplacée(s) vers « Livraison »**, avec un bouton **Ouvrir** qui t'emmène sur ce tableau. Clique sur **Terminer**. **Tout désélectionner** décoche toutes les cartes. Avec un seul tableau, **Déplacer vers…** n'a nulle part où aller : [crée d'abord un autre tableau](create-a-dashboard.md). ✅ C'est tout ! La suite : [Modifier ou retirer une carte](change-or-remove-a-card.md). --- # Modifier ou retirer une carte ## ✏️ Modifier une carte 1. Sur **Mes tableaux de bord**, ouvre l'onglet du tableau. 2. Sur la carte, clique sur le bouton **Plus**, toujours visible en haut à droite de la carte. Un menu propose **Actualiser**, **Modifier** et **Supprimer**. 3. Clique sur **Modifier**. La fenêtre **Modifier la carte** a trois onglets : | Onglet | Ce que tu fais | | --- | --- | | **Général** | Choisis une icône avec **Sélectionner une icône**, et change le **Nom de la carte**. | | **Colonnes** | Sous **Sélectionner les colonnes à afficher**, décoche une colonne pour la cacher, coche-la pour l'afficher. | | **Filtres** | Vois, pour chaque colonne, les valeurs que la carte montre, et retire celles que tu ne veux pas : voir [Ne garder que tes lignes](#-ne-garder-que-tes-lignes). | 4. Clique sur **Enregistrer**. ## 🔎 Ne garder que tes lignes Une carte montre tout ce que ton compte peut voir. Certains tableaux ont une colonne qui dit si une ligne est à toi : **Mon rôle** sur les cartes de pull requests (**Auteur**, **Relecteur**… ou **Aucun**), **À moi** sur les cartes qui listent des composants (**À moi** ou **Autres**). Tu gardes tes lignes en retirant les autres valeurs de cette colonne. 1. Sur **Mes tableaux de bord**, ouvre l'onglet du tableau. 2. Sur la carte **Pull requests**, clique sur **Plus**, puis sur **Modifier**. 3. Ouvre l'onglet **Filtres**. Sous **Configurer les données des colonnes**, chaque colonne liste les valeurs que la carte contient. Sous **mon rôle**, tu lis **Aucun** et **Auteur**. 4. Clique sur la croix de **Aucun** (**Retirer le filtre Aucun**). Seul **Auteur** reste. 5. Clique sur **Enregistrer** dans la fenêtre. La carte ne liste plus que les pull requests dont tu es l'auteur. Le filtre est enregistré avec la carte : tu le retrouves après avoir rechargé la page. Dans l'onglet **Filtres**, **Réinitialiser** sous une colonne remet toutes ses valeurs. ## 🔄 Relire la source Sur la carte, clique sur **Plus**, puis sur **Actualiser**. La carte relit sa source : voir [Relire la source d'une carte](refresh-a-card.md). ## 🗑️ Retirer une carte 1. Sur la carte, clique sur **Plus**, puis sur **Supprimer**. La carte disparaît tout de suite, sans question. Pour la mettre sur un autre tableau plutôt que de la supprimer, voir [Organiser tes cartes](arrange-your-cards.md#-déplacer-des-cartes-vers-un-autre-tableau). ✅ C'est tout ! La suite : [Choisir combien de résultats une carte montre](choose-how-many-results.md). --- # Choisir combien de résultats une carte montre Une carte qui liste des lignes (tickets, pull requests, builds…) en montre 5 au départ. Tu peux en afficher 10, 25 ou 50. Le choix appartient à la carte : Astrolabe le garde. ## 🔢 Choisir le nombre de lignes 1. Sur **Mes tableaux de bord**, ouvre l'onglet du tableau. 2. Sous le tableau de la carte, clique sur **Afficher 5 résultats**. La liste propose **Afficher 5 résultats**, **Afficher 10 résultats**, **Afficher 25 résultats** et **Afficher 50 résultats**. 3. Clique sur **Afficher 50 résultats**, par exemple. Le tableau montre 50 lignes d'un coup. Le compte sous le tableau suit, par exemple **1-50 sur 1000**. Les flèches **Previous table page** et **Next table page** font défiler les autres pages. ## 💾 Ton choix reste Recharge la page, ou reviens demain : le bouton sous la carte dit toujours **Afficher 50 résultats**. Chaque carte garde son propre nombre : une autre carte du même tableau reste sur 5 tant que tu ne la changes pas. ✅ C'est tout ! ## Questions fréquentes ### Pourquoi n'y a-t-il pas ce bouton sous ma carte ? Le bouton se trouve sous le **tableau** d'une carte. Une carte qui affiche un message à la place d'un tableau, par exemple **Votre compte Jira n'est pas connecté.**, n'a pas de tableau, donc pas de bouton. Connecte le compte ou fais ce que dit le message : le tableau et son bouton reviennent. ### Quelles cartes ont ce bouton ? Les cartes qui listent des lignes. *Vérifié sur une carte Jira ; les autres cartes en liste n'ont pas été vérifiées une à une.* La suite : [Relire la source d'une carte](refresh-a-card.md). --- # Créer un tableau de bord Tes cartes ne tiennent plus sur un écran ? Donne à chaque sujet son tableau : un onglet par tableau, côte à côte en haut de la page. ## Avant de commencer Ton rôle doit le permettre. Sans cela, le bouton **+** affiche un cadenas. Survole-le : l'infobulle dit **Votre rôle ne permet pas de créer des tableaux de bord. Demandez-le à un administrateur.** Demande à ton administrateur de donner à ton rôle l'autorisation **Orion-dashboard** `dashboard.create` ([Voir ce que donne un rôle](../../administration/access-control/check-what-a-role-gives.md)). ## 🔧 Le créer 1. Dans la barre latérale, clique sur **Tableau de bord**. Les onglets sont en haut de la page, sous le titre **Mes tableaux de bord**. 2. À droite du dernier onglet, clique sur le bouton **+** (**Nouveau tableau**). Un nouvel onglet apparaît, nommé `Nouveau tableau`, et son nom est déjà en cours de saisie. 3. Tape le nom, par exemple `Livraison`, puis appuie sur Entrée. Le nouveau tableau est vide. Il dit **Bienvenue sur votre tableau de bord Astrolabe !** et **Ce tableau est vide. Ajoutez une carte, ou déplacez-y des cartes d'un autre tableau avec Réorganiser.** La suite : [Ajouter une carte](add-a-card.md). ## 🚫 Ce qu'Astrolabe refuse Un refus sur le nom s'affiche sous le nom, en rouge, et le nom reste en cours de saisie. | Message | Pourquoi | | --- | --- | | **Le nom d'un tableau compte de 1 à 60 caractères.** | Le nom est vide ou trop long. | | **Un tableau porte déjà ce nom.** | Deux de tes tableaux ne peuvent pas avoir le même nom. | | **Vous pouvez avoir 10 tableaux au plus. Supprimez-en un pour en créer un autre.** | Tu as 10 tableaux. Clique sur **+** : le message apparaît tout de suite en bas à gauche de l'écran et y reste jusqu'à ce que tu le fermes avec son bouton **×**, et aucun onglet n'est ajouté. [Supprime un tableau](delete-a-dashboard.md). | ✅ C'est tout ! La suite : [Renommer un tableau de bord](rename-a-dashboard.md). --- # Suivre les notifications critiques de tes tableaux Quand quelque chose casse dans une carte (un workflow en échec, un pipeline rouge), Astrolabe t'envoie une notification critique. Tes tableaux te disent où regarder, et la notification t'emmène sur la carte. ## Quel tableau a des notifications critiques non lues Un petit nombre apparaît sur l'onglet de chaque tableau dont les cartes ont des notifications critiques non lues. Il se lit, par exemple, **2 notifications critiques non lues**. Le nombre baisse à mesure que tu lis les notifications : voir [Lire tes notifications](../notifications/read-your-notifications.md). *Non vérifié sur une instance : le compteur demande une notification critique envoyée par un webhook.* ## Ouvrir une notification sur sa carte 1. Dans la barre du haut, clique sur la cloche (**Notifications**). 2. Clique sur une notification qui vient d'une carte. Astrolabe ouvre **Mes tableaux de bord** sur le tableau qui porte la carte, défile jusqu'à elle et la met en évidence, avec le message **Carte « Pipeline » affichée**. *Non vérifié sur une instance, comme ci-dessus.* ## Quand la carte ou le tableau a disparu | Ce que tu vois | Ce qui s'est passé | | --- | --- | | **Cette carte n'est plus sur vos tableaux.** | Tu as supprimé la carte, ou tu l'as sortie de tes tableaux, depuis l'arrivée de la notification. Le tableau s'ouvre, sans rien de mis en évidence. | | **Le tableau de ce lien n'existe plus. « My Dashboard » s'affiche à la place.** | Le tableau du lien a été supprimé. Le tableau nommé dans le message s'ouvre à la place. Le message apparaît en bas à gauche de l'écran et disparaît tout seul au bout de quelques secondes. | ✅ C'est tout ! La suite : [Voir ton tableau de bord en plein écran](full-screen.md). --- # Supprimer un tableau de bord ## 🔧 Le supprimer 1. Clique sur l'onglet du tableau. 2. Clique sur son bouton d'options (**Options du tableau** et son nom, à côté de **+**), puis sur **Supprimer**. 3. La fenêtre **Supprimer le tableau** demande : **Supprimer « Livraison » et toutes ses cartes ? Les notifications des dépôts qui ne sont dans aucun autre de vos tableaux s'arrêtent.** Clique sur **Supprimer**. L'onglet disparaît avec ses cartes. Le message **Tableau « Livraison » supprimé** apparaît en bas à gauche de l'écran et disparaît tout seul au bout de quelques secondes, et le tableau voisin s'ouvre. Pour garder une carte, [déplace-la vers un autre tableau](arrange-your-cards.md#-déplacer-des-cartes-vers-un-autre-tableau) avant. ## 🚫 Ton dernier tableau Tu ne peux pas supprimer ton seul tableau. La fenêtre **Gardez au moins un tableau** dit : **« My Dashboard » est votre dernier tableau. Créez-en un autre avant de le supprimer.** Clique sur **Fermer**, [crée un autre tableau](create-a-dashboard.md), puis supprime celui-ci. ✅ C'est tout ! La suite : [Ajouter une carte](add-a-card.md). --- # FAQ des tableaux de bord ## Puis-je avoir plusieurs tableaux de bord ? Oui, jusqu'à 10, un onglet chacun : voir [Créer un tableau de bord](create-a-dashboard.md). Ils sont tous à toi ; personne d'autre ne les voit. ## Y a-t-il un tableau de bord pour mon équipe ? Non. Chaque tableau de bord est personnel. ## Pourquoi n'y a-t-il pas de bouton Modifier ? Il n'y en a plus sur le tableau : **Ajouter une carte** est toujours en haut de la page, et chaque carte a son propre bouton **more**. Pour déplacer et redimensionner les cartes, clique sur **Réorganiser**. ## Pourquoi Ajouter une carte ou Réorganiser affiche-t-il un cadenas ? Ton rôle ne te laisse pas changer ces tableaux. Survole le cadenas : il dit **Votre rôle ne permet pas d'ajouter des cartes aux tableaux de bord. Demandez-le à un administrateur.** (**Ajouter une carte**) ou **Votre rôle ne permet pas de modifier les tableaux de bord. Demandez-le à un administrateur.** (**Réorganiser**). Demande à ton administrateur de donner `dashboard.create` ou `dashboard.update` à ton rôle. Les cartes déjà sur le tableau restent visibles. ## Puis-je déplacer une carte vers un autre tableau ? Oui : clique sur **Réorganiser**, coche la carte, puis **Déplacer vers…** : voir [Organiser tes cartes](arrange-your-cards.md#-déplacer-des-cartes-vers-un-autre-tableau). ## Que deviennent les cartes quand je supprime un tableau ? Elles sont supprimées avec lui, et les notifications des dépôts qui ne sont dans aucun autre tableau s'arrêtent. Déplace d'abord les cartes que tu veux garder. ## Pourquoi une carte dit-elle « Rien à afficher » ? Parce qu'elle n'a rien à te montrer. Elle dit pourquoi sous le titre, par exemple « Aucune merge request ouverte dont vous êtes l'auteur, l'assigné ou le relecteur… » : la phrase nomme ce qui remplirait la carte. Clique sur **En savoir plus** dessous pour ouvrir la page de la carte. ## Une carte ne montre-t-elle que mes éléments ? Non. Une carte montre ce que **ton compte peut voir** parmi les composants du catalogue. Un product owner ou un responsable d'équipe voit toutes les pull requests des dépôts du catalogue que son jeton lit, et garde les siennes avec le filtre **Mon rôle** : voir [Ne garder que tes lignes](change-or-remove-a-card.md#-ne-garder-que-tes-lignes). ## Pourquoi la source `astrolabe` manque-t-elle dans Ajouter une carte ? Parce que ni **Déploiements** ni **Compass** ne sont allumés. Demande à ton administrateur d'en allumer un dans **Administration › Plugins** : voir [Allumer un plugin](../../administration/plugins/turn-on-a-plugin.md). ## Une carte dit « Liste tronquée : trop d'éléments à lire, seuls les plus récents sont affichés. » La source contient plus que ce que la carte peut lire. La phrase s'affiche au-dessus du tableau, et les lignes montrées sont les plus récentes. ## Comment relire la source d'une carte ? Clique sur **more** sur la carte, puis sur **Actualiser**. ## Où sont les pages des cartes ? Chaque outil a ses pages sous **Integration** : par exemple pour GitLab, [Ajouter les cartes GitLab à ton tableau de bord](../../getting-started/Configuration/Integration/gitlab/add-the-dashboard-cards.md). --- # Voir ton tableau de bord en plein écran ## 🔧 Passer en plein écran 1. Dans la barre latérale, clique sur **Tableau de bord**. 2. En haut de la page, clique sur **Plein écran**. Les menus disparaissent et tes cartes remplissent l'écran. ## 🔙 Revenir Clique sur **Quitter le plein écran**. ✅ C'est tout ! La suite : [FAQ Tableau de bord](faq.md). --- # Relire la source d'une carte Une carte lit sa source (Jira, GitLab, GitHub…) toute seule de temps en temps. Pour voir les données les plus récentes tout de suite, demande-lui de relire. ## 🔄 Actualiser une carte 1. Sur **Mes tableaux de bord**, ouvre l'onglet du tableau. 2. En haut à droite de la carte, clique sur le bouton **Plus**. Un menu propose **Actualiser**, **Modifier** et **Supprimer**. 3. Clique sur **Actualiser**. Une barre de chargement apparaît sur la carte, avec le texte **Actualisation des données**. Quand elle disparaît, le tableau montre ce que la source a répondu à l'instant. ✅ C'est tout ! *Vérifié sur une carte Jira ; les autres cartes ont le même menu et n'ont pas été vérifiées une à une.* La suite : [Suivre les notifications critiques de tes tableaux](critical-notifications.md). --- # Renommer un tableau de bord ## 🔧 Le renommer Prends le geste que tu préfères. Les trois ouvrent le nom en cours de saisie. - **Double-clique** sur l'onglet. - Clique sur l'onglet, puis appuie sur **F2**. - Clique sur le bouton d'options du tableau (**Options du tableau** et son nom, à côté de **+**), puis sur **Renommer**. Tape ensuite le nouveau nom et appuie sur Entrée. Échap garde l'ancien nom. Les refus sont ceux de [Créer un tableau de bord](create-a-dashboard.md#-ce-quastrolabe-refuse) : un nom de 1 à 60 caractères, et pas deux tableaux avec le même nom. Ton rôle doit avoir l'autorisation **Orion-dashboard** `dashboard.update`. Sans elle, **Renommer** affiche un cadenas. Survole-le : l'infobulle dit **Votre rôle ne permet pas de modifier les tableaux de bord. Demandez-le à un administrateur.** ✅ C'est tout ! La suite : [Ranger tes tableaux](reorder-your-dashboards.md). --- # Ranger tes tableaux de bord ## 🔧 Déplacer un onglet 1. Clique sur l'onglet à déplacer. 2. Clique sur son bouton d'options (**Options du tableau** et son nom, à côté de **+**). 3. Clique sur **Déplacer à gauche** ou **Déplacer à droite**. L'onglet change de place tout de suite, et l'ordre est le même à la prochaine ouverture de **Mes tableaux de bord**. **Déplacer à gauche** est grisé sur le premier onglet, **Déplacer à droite** sur le dernier. ✅ C'est tout ! La suite : [Supprimer un tableau de bord](delete-a-dashboard.md). --- # Problèmes courants avec le tableau de bord | Ce que tu vois | Que faire | | --- | --- | | Dans une carte GitLab : **Votre compte GitLab n'est pas connecté.** et **Connecter mon compte GitLab** | Cette carte montre ce que voit ton propre compte GitLab. Clique sur **Connecter mon compte GitLab**, ou va dans **Mon compte › Mes comptes**. | | **Rien à afficher** et une phrase dessous, dans une carte | La carte fonctionne et n'a rien à montrer : la phrase dit ce qui la remplirait. Clique sur **En savoir plus** sous la phrase pour ouvrir la page de la carte. | | **Bienvenue sur votre tableau de bord Astrolabe !** et **Ce tableau est vide.** | Ce tableau n'a pas encore de carte. Clique sur **Ajouter une carte** : voir [Ajouter une carte](add-a-card.md). | | Dans **Ajouter une carte**, le titre **Aucune source de données n'est connectée** et un lien **Ouvrir les connexions de l'entreprise** | Aucune source n'est encore connectée. Demande à un administrateur d'en connecter une dans **Administration › Connexions de l'entreprise**, par exemple [Ajouter l'intégration GitLab](../../getting-started/Configuration/Integration/gitlab/add-the-integration.md). Si tu es administrateur, clique sur **Ouvrir les connexions de l'entreprise**. | | Dans **Ajouter une carte**, le titre **Grafana demande la licence Premium** et un lien **Ouvrir la licence** | La seule source connectée est Grafana, et ta licence ne la couvre pas. Un administrateur clique sur **Ouvrir la licence** et [ajoute une licence](../../administration/licensing/add-your-license.md) qui la couvre. | | **Ajouter une carte** affiche un cadenas. Survole-le : **Votre rôle ne permet pas d'ajouter des cartes aux tableaux de bord. Demandez-le à un administrateur.** | Ton rôle ne le permet pas. Demande à ton administrateur : voir [Ajouter une carte](add-a-card.md). | | **Réorganiser** ou **Renommer** affiche un cadenas. Survole-le : **Votre rôle ne permet pas de modifier les tableaux de bord. Demandez-le à un administrateur.** | Ton rôle ne te laisse pas changer les tableaux. Demande à ton administrateur de lui donner `dashboard.update`. | | Le bouton **+** affiche un cadenas. Survole-le : **Votre rôle ne permet pas de créer des tableaux de bord. Demandez-le à un administrateur.** | Demande à ton administrateur de donner `dashboard.create` à ton rôle. | | Sous le nom d'un tableau : **Un tableau porte déjà ce nom.** ou **Le nom d'un tableau compte de 1 à 60 caractères.** — ou, en bas à gauche de l'écran (il y reste jusqu'à ce que tu le fermes avec son **×**), **Vous pouvez avoir 10 tableaux au plus. Supprimez-en un pour en créer un autre.** | Voir [Créer un tableau de bord](create-a-dashboard.md#-ce-quastrolabe-refuse). | | La fenêtre **Gardez au moins un tableau** | Tu ne peux pas supprimer ton dernier tableau : voir [Supprimer un tableau de bord](delete-a-dashboard.md#-ton-dernier-tableau). | | **Créez un autre tableau pour y déplacer des cartes.** dans **Réorganiser** | Tu n'as qu'un tableau. [Crée-en un autre](create-a-dashboard.md). | | **Cette carte n'est plus sur vos tableaux.** ou **Le tableau de ce lien n'existe plus.** | Voir [Suivre les notifications critiques de tes tableaux](critical-notifications.md#quand-la-carte-ou-le-tableau-a-disparu). | | **Astrolabe n'a pas pu appliquer ce changement. Réessayez, ou rechargez la page.** | Le changement n'est pas arrivé jusqu'au serveur. Recharge la page et recommence. | | Dans une carte : **Astrolabe ne propose pas cette fonction Grafana sur cette instance.** et **Un module manque à cette installation d'Astrolabe. Prévenez votre administrateur d'Astrolabe.** | L'installation d'Astrolabe n'a pas le module de cette source. Préviens ton administrateur, avec le nom de la source : rien à changer dans la carte. | | Dans une carte **Coûts Azure du mois**, sous le champ **tag** : **L'étiquette « foo » n'est pas écrite clé=valeur (par exemple app=shop-api), avec des lettres, chiffres et _ . : / @ + - seulement.** | Écris l'étiquette sous la forme `clé=valeur`, par exemple `app=shop-api`, ou laisse le champ vide pour tout l'abonnement. | :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec le nom de la carte et ce qu'elle dit. ::: --- # Choisir tes notifications en 2 minutes Astrolabe te prévient quand il se passe quelque chose dans tes outils : un pipeline qui échoue, une PR à relire, un ticket qui t'est assigné. Tu choisis quels événements, et où ils t'arrivent. ## Comment faire ### 1. Ouvre tes réglages de notifications 1. En haut à droite, clique sur ton avatar, puis sur **Mon compte**. 2. Ouvre l'onglet **Notifications**. La carte **Que voulez-vous recevoir ?** liste les outils de ton Astrolabe, une section chacun (**Jira**, **GitHub**…). ### 2. Lis les deux colonnes | Colonne | Où la notification t'arrive | | --- | --- | | **Dans Astrolabe** | Dans la cloche, en haut à droite d'Astrolabe | | **Sur ce navigateur** | En notification de ton navigateur, même onglet d'Astrolabe fermé | ### 3. Allume ou éteins chaque événement Chaque ligne est un événement. Allume ou éteins son interrupteur, dans chaque colonne. C'est enregistré tout de suite. - Ce qui casse vient en premier, marqué **Critique** (un pipeline qui échoue, un quality gate au rouge…). C'est allumé par défaut. - Ce qui démarre ou réussit seulement est replié sous **Démarrages et réussites**. Clique dessus pour le voir. C'est éteint par défaut, sauf dans la section **Composants surveillés** : tout ce qui arrive à un composant que tu surveilles est allumé, réussites comprises. :::tip La colonne du navigateur est grisée ? Elle affiche **Éteint sur ce navigateur** : ton navigateur ne reçoit pas encore de notifications. Clique sur **Activer** sous le titre de la colonne : va sur [Recevoir les notifications sur ce navigateur](turn-on-this-browser.md). Elle affiche **Bloqué dans les réglages de ce navigateur** : autorise les notifications d'Astrolabe dans les réglages du site de ton navigateur, puis recharge la page. ::: ✅ C'est tout ! --- # Supprimer les notifications que tu as lues Quand tu as lu une notification, tu peux la retirer de ton historique. Tu en supprimes une, ou toutes celles qui sont lues d'un coup. Une notification que tu n'as pas encore lue reste : Astrolabe ne la supprime jamais. ## 🗑️ Supprimer une notification 1. En haut à droite de n'importe quelle page, clique sur la cloche (**Notifications**). Le panneau s'ouvre à droite. 2. Lis la notification, ou marque-la comme lue : voir [Lire tes notifications](read-your-notifications.md#marquer-comme-lu). 3. À l'extrémité droite de la ligne de la notification, clique sur le bouton de suppression. Son nom est **Supprimer la notification :** suivi du titre de la notification. La notification disparaît de la liste aussitôt. Astrolabe ne demande rien avant. Une notification que tu n'as pas lue n'a pas de bouton de suppression. Lis-la d'abord. ## 🧹 Supprimer toutes les notifications lues 1. Dans le panneau, en haut à droite, clique sur **Supprimer les notifications lues**. Il se trouve à côté de la double coche qui marque tout comme lu. 2. La fenêtre **Supprimer les notifications lues** demande : `2 notifications que vous avez déjà lues seront supprimées de votre historique. Les non lues sont conservées. Cette action est définitive.` Le nombre est celui des notifications que tu as lues. 3. Clique sur **Supprimer**. Pour changer d'avis, clique sur **Annuler**. Les notifications lues ont disparu. Celles que tu n'as pas lues sont toujours là. Quand il ne reste rien, le panneau dit **Aucune notification**, et **Supprimer les notifications lues** est grisé. ✅ C'est tout ! :::tip Supprimer est définitif Une notification supprimée ne revient pas. Lis celles que tu veux garder avant de supprimer. ::: La suite : [Choisir tes notifications](choose-your-notifications.md). --- # FAQ des notifications ## Pourquoi je ne vois pas GitLab (ou un autre outil) ? Ton Astrolabe ne montre que les outils qui y sont connectés. Demande à ton administrateur d'Astrolabe de le connecter. ## Pourquoi « démarre » et « réussit » sont éteints ? Pour que ce qui casse se voie. Ouvre **Démarrages et réussites** sous un outil et allume ce que tu veux. ## Je règle ça une fois pour tous mes navigateurs ? Les interrupteurs **Dans Astrolabe** et **Sur ce navigateur** sont à toi, où que tu te connectes. Activer le navigateur (**Activer sur ce navigateur**) se fait une fois par navigateur. ## Un interrupteur que j'ai bougé est revenu à sa place Il n'a pas été enregistré : l'écran affiche **Ce changement n'a pas été enregistré**. Va sur [Problèmes courants](troubleshooting.md). --- # Lire tes notifications La cloche, en haut à droite d'Astrolabe, rassemble tout ce qu'Astrolabe te dit : un succès que tu as débloqué, un pipeline qui échoue sur un composant que tu surveilles. Tu le lis là. ## Ouvrir la cloche 1. En haut à droite de n'importe quelle page, clique sur la cloche (**Notifications**). Un nombre dessus compte ce que tu n'as pas encore lu. Un panneau s'ouvre à droite. Les notifications sont groupées par jour (**Aujourd'hui**), la plus récente en premier. Chacune a un titre, un texte et le temps écoulé depuis son arrivée. Ce que tu n'as pas encore lu a une barre verte à gauche. ## Ne garder que ce que tu n'as pas lu 1. En haut du panneau, clique sur **Non lus**. Le nombre entre parenthèses est ce que tu n'as pas lu. 2. Clique sur **Tout** pour tout revoir. ## Ne garder qu'un niveau 1. En haut du panneau, clique sur l'entonnoir (**Filtrer les notifications**). 2. Choisis **Critique**, **Élevée**, **Normale** ou **Faible**. Choisis **Tout** pour retirer le filtre. La même liste propose aussi la source des notifications, par exemple **achievements**. ## Ouvrir ce dont parle une notification 1. Clique n'importe où sur une notification, son titre, son texte ou son heure. Tu arrives sur ce qu'elle t'annonce : la page du composant que tu surveilles, la carte du tableau de bord, ou, pour une merge request ou un pipeline, sa page dans GitHub ou GitLab, dans un nouvel onglet. 2. Quand une nouvelle notification arrive, une petite alerte apparaît en bas à gauche de la page. Clique sur son message pour ouvrir la même chose. ## Marquer comme lu 1. Clique sur une notification pour la lire : elle est marquée comme lue, et le nombre sur la cloche baisse de un. 2. Pour tout marquer d'un coup, clique sur la double coche en haut à droite du panneau (**Marquer 2 notifications comme lues**, le nombre est ce que tu n'as pas lu). ✅ C'est tout ! La suite : [Supprimer les notifications que tu as lues](delete-read-notifications.md). --- # Problèmes courants avec les notifications | Ce que tu vois | Quoi faire | | --- | --- | | `Vos réglages de notifications n'ont pas pu être chargés : Astrolabe n'a pas répondu. Rechargez la page dans une minute. Si cela continue, prévenez votre administrateur.` | Recharge la page dans une minute. | | `Ce changement n'a pas été enregistré : Astrolabe n'a pas répondu. Réessayez dans une minute.` | L'interrupteur est revenu à sa place. Bouge-le à nouveau dans une minute. | | `Impossible de supprimer la notification : …` ou `Impossible de supprimer les notifications lues : …` | Rien n'a été supprimé. Réessaie dans une minute : voir [Supprimer les notifications que tu as lues](delete-read-notifications.md). | | Pas de bouton de suppression sur une notification | Tu ne l'as pas encore lue. Lis-la, ou marque-la comme lue : le bouton apparaît. | | La colonne **Sur ce navigateur** est grisée, avec **Éteint sur ce navigateur** | Clique sur **Activer** sous le titre de la colonne, puis sur **Autoriser** dans ton navigateur. | | **Bloqué dans les réglages de ce navigateur** sous **Sur ce navigateur** | Ton navigateur a refusé les notifications d'Astrolabe. Autorise-les dans les réglages du site de ton navigateur, puis recharge la page. | | **Indisponible sur ce navigateur** sous **Sur ce navigateur** | Ton navigateur ne peut pas recevoir de notifications push. Utilise la colonne **Dans Astrolabe**. | | `Aucun outil n'est encore connecté à Astrolabe : il n'y a rien à recevoir.` | Demande à ton administrateur d'Astrolabe de connecter tes outils. | | `Impossible de surveiller payment-processor : …` ou `Impossible d'arrêter de surveiller payment-processor : …` | Rien n'a changé : l'œil est resté comme avant. Réessaie dans une minute. | | Tu surveilles un composant mais ne reçois rien de ses pipelines | Son `catalog-info.yaml` ne nomme pas son projet pour cet outil : ajoute l'annotation (voir [Surveiller un composant](watch-a-component.md)). | :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec le message que tu vois. ::: --- # Recevoir les notifications sur ce navigateur Astrolabe peut afficher ses notifications comme des notifications de ton navigateur, même quand son onglet est fermé. Tu l'actives une fois par navigateur. ## Comment faire 1. En haut à droite, clique sur ton avatar, puis sur **Mon compte**. 2. Ouvre l'onglet **Notifications**. 3. Dans la carte **Notifications du navigateur**, clique sur **Activer sur ce navigateur**. 4. Ton navigateur demande si Astrolabe peut afficher des notifications : clique sur **Autoriser**. La carte affiche **Ce navigateur reçoit les notifications critiques, même sans onglet ouvert.** La colonne **Sur ce navigateur** de **Que voulez-vous recevoir ?** n'est plus grisée : choisis-y ce qui arrive sur ce navigateur. ✅ C'est tout ! Pour arrêter : clique sur **Désactiver sur ce navigateur** dans la même carte. --- # Surveiller un composant en 1 minute Tu travailles avec un composant qui n'est pas à toi : une API que tu appelles, une bibliothèque dont tu dépends. Surveille-le, et Astrolabe te dit tout ce qui lui arrive : un pipeline qui démarre, échoue ou réussit, un quality gate qui passe au rouge ou au vert, un score Compass qui baisse. ## Comment faire ### 1. Surveille-le depuis le catalogue 1. Dans la barre latérale, clique sur **Catalogue**. 2. Trouve le composant dans la liste (tape son nom dans **Rechercher par nom**, au-dessus de la liste). 3. Sur sa ligne, clique sur **Plus d'actions** (les trois points), puis sur **Surveiller**. Un message confirme : **Vous surveillez payment-processor : vous serez prévenu de tout ce qui lui arrive.** :::tip Depuis la page du composant À côté de l'étoile, près du nom du composant, clique sur l'œil **Surveiller**. Enfoncé, il devient **Ne plus surveiller**. ::: ### 2. Retrouve ce que tu surveilles 1. En haut à droite, clique sur ton avatar, puis sur **Mon compte**. 2. Ouvre l'onglet **Notifications**. La carte **Composants surveillés** les liste. Clique sur un nom pour ouvrir sa page. ### 3. Reçois les notifications Ce qui arrive à un composant surveillé t'arrive dans la cloche, en haut à droite d'Astrolabe. Clique sur une notification : elle ouvre l'onglet du composant qui montre le problème (son onglet CI, SonarQube, Codacy ou Compass), ou la page du composant. ### 4. Éteins un seul événement Tu veux les échecs, pas les réussites ? Garde la surveillance, et éteins cet événement. 1. Dans **Mon compte** › **Notifications**, descends jusqu'à **Que voulez-vous recevoir ?**. 2. Dans la section **Composants surveillés**, ce qui casse vient d'abord. Clique sur **Démarrages et réussites** pour voir le reste. 3. Éteins l'événement, par exemple **GitHub — When a workflow completes successfully**, dans la colonne **Dans Astrolabe** (la cloche) ou **Sur ce navigateur**. C'est enregistré tout de suite. ### 5. Arrête de surveiller Dans **Mon compte** › **Notifications** › **Composants surveillés**, clique sur **Ne plus surveiller payment-processor** à côté de son nom. Ou, sur sa page, clique sur l'œil enfoncé **Ne plus surveiller**. ✅ C'est tout ! ## Ce qu'on te dit, et quand | Outil | Événements | Quand | | --- | --- | --- | | GitHub, GitLab, Azure DevOps | Pipeline démarré, réussi, échoué, annulé | Tout de suite avec le webhook de l'outil, sinon en quelques minutes | | Jenkins | Build démarré, réussi, échoué, interrompu | En quelques minutes | | SonarQube | Quality gate passé au rouge, revenu au vert | Tout de suite avec le webhook, sinon en quelques minutes | | Codacy | Note en baisse, note en hausse | En quelques minutes | | Compass | Score en baisse, score en hausse | En quelques minutes | Un échec est **Critique**. Un état qui ne bouge pas ne dit rien : un quality gate qui reste rouge n'est signalé qu'une fois. Le composant doit nommer son projet dans son `catalog-info.yaml`, pour chaque outil : ```yaml metadata: annotations: github.com/project-slug: acme/payment-processor gitlab.com/project-slug: acme/payment-processor dev.azure.com/project-repo: payments/payment-processor jenkins.io/job-full-name: payment-processor sonarqube.org/project-key: acme-payment-processor codacy.com/project-slug: gh/acme/payment-processor ``` Compass n'a besoin d'aucune annotation. --- # Réinitialiser le mot de passe administrateur Si tu as oublié le mot de passe administrateur, Astrolabe envoie un code de vérification à l'**adresse e-mail de l'administrateur**. ## Avant de commencer Ton Astrolabe a besoin d'un serveur de messagerie pour envoyer le code. Un administrateur le saisit une fois, dans **Administration › Général**, sur l'onglet **Messagerie** : | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **Hôte** | L'adresse du serveur de messagerie | `smtp.exemple.com` | | **Port** | Son port, en général `587` | `587` | | **Utilisateur** | Le compte qui envoie les messages | `astrolabe` | | **Mot de passe** | Le mot de passe de ce compte | | | **Expéditeur** | L'adresse d'où viennent les messages | `astrolabe@exemple.com` | Clique sur **Enregistrer**. Le serveur de messagerie doit offrir une connexion sécurisée (STARTTLS), en général sur le port `587`. ## 🔑 Demander le code 1. Sur la page de connexion, clique sur **Mot de passe oublié ?** 2. La fenêtre **Réinitialiser le mot de passe administrateur** s'ouvre : **Cliquez ci-dessous pour envoyer un code de vérification à l'adresse e-mail de l'administrateur.** Clique sur **Envoyer le code**. 3. La fenêtre affiche l'adresse e-mail de l'administrateur, en partie masquée, sous **E-mail administrateur**. Astrolabe dit **Code de vérification envoyé à votre adresse e-mail**. 4. Ouvre la boîte mail de l'administrateur. Ouvre le message **[Astrolabe] Password Request - Your verification code** et lis le code à six chiffres. ## 🔓 Récupérer le mot de passe 1. De retour dans la fenêtre, clique dans le champ **Code de vérification** et tape le code. 2. Clique sur **Vérifier le code**. La page de connexion dit **Le mot de passe a été envoyé par e-mail à** suivi de l'adresse masquée. 3. Ouvre la boîte mail de l'administrateur. Ouvre le message **[Astrolabe] Password Request - Your admin password**. 4. Sur la page de connexion, tape le nom de l'administrateur dans **Nom d'utilisateur** et le mot de passe du message dans **Mot de passe**, puis clique sur **SE CONNECTER**. ✅ C'est tout ! Quelque chose ne va pas ? Voir [Problèmes courants avec la connexion](../troubleshooting.md). --- # Se connecter avec ton compte Astrolabe Le formulaire **Nom d'utilisateur** et **Mot de passe** de la page de connexion est l'entrée du compte **administrateur** de ton Astrolabe. Il est toujours là, quels que soient les fournisseurs que tu allumes. Tous les autres se connectent avec un fournisseur : voir [Choisir comment les gens se connectent](../authentification.md). ## Avant de commencer Il te faut l'adresse de ton Astrolabe, et le nom d'utilisateur et le mot de passe de l'administrateur. ## 🔐 Se connecter 1. Ouvre l'adresse de ton Astrolabe dans ton navigateur. 2. Dans **Username** (**Nom d'utilisateur** si tu as déjà choisi le français sur ce navigateur), écris le nom d'utilisateur de l'administrateur. 3. Dans **Password** (**Mot de passe**), écris le mot de passe. Clique sur l'icône en forme d'œil, **Show value**, pour relire ce que tu as tapé. 4. Clique sur **SIGN IN** (**SE CONNECTER**). Tu arrives sur **Tableau de bord**. **Administration** est dans la barre latérale à gauche. ## 🚪 Se déconnecter 1. En haut à droite, clique sur ton initiale. 2. Clique sur **Déconnexion**. La page de connexion revient. :::tip Un nouveau mot de passe administrateur déconnecte chaque navigateur encore ouvert avec l'ancien : reconnecte-toi là avec le nouveau. ::: ✅ C'est tout ! Mot de passe oublié ? Voir [Réinitialiser le mot de passe administrateur](reset-the-password.md). --- # Ajouter Atlassian Tu donnes à Astrolabe l'app Atlassian que tu as créée. Atlassian apparaît alors dans **Administration › Authentification** comme fournisseur actif. Tu le fais une fois, en administrateur. ## Avant de commencer Il te faut l'**ID client** et le **Secret** d'une app OAuth 2.0 Atlassian : voir [Créer l'app OAuth 2.0 Atlassian](create-the-atlassian-app.md). ## 🔧 Allumer Atlassian 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Authentification**. 3. Sur la carte **Atlassian**, allume l'interrupteur en haut à droite. La fenêtre **Configurer Atlassian** s'ouvre. 4. Remplis le formulaire : | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **ID client** | Le Client ID de l'app | | | **Secret client** | Son Secret | | | **Périmètres** | Les permissions demandées, séparées par des espaces | `offline_access read:jira-work read:jira-user` | Les trois champs sont marqués **(Obligatoire)**. 5. Clique sur **Installer**. L'écran dit **La configuration a changé ; le serveur redémarre.** Attends quelques secondes. La carte **Atlassian** est maintenant parmi les fournisseurs actifs, en haut de la liste, son interrupteur est allumé, et elle a un bouton **Configurer**. ## 🔄 Changer ou retirer Atlassian 1. Sur la carte **Atlassian**, clique sur **Configurer**. 2. Pour changer une valeur, modifie le champ. Pour changer le secret, clique sur **Remplacer** à côté de **Secret client**. Clique sur **Mettre à jour**. 3. Pour retirer Atlassian, clique sur **Désinstaller**. ✅ C'est tout ! Quelque chose ne va pas ? Voir [Problèmes courants avec la connexion](../troubleshooting.md). --- # Créer l'app OAuth 2.0 Atlassian Atlassian doit connaître Astrolabe avant de lui parler. Tu crées une **intégration OAuth 2.0** dans la console développeur Atlassian et tu y copies deux valeurs. Tu le fais une fois. Ces étapes se font chez Atlassian. Elles n'ont pas été vérifiées sur une instance. ## Avant de commencer Il te faut l'adresse de ton Astrolabe, par exemple `astrolabe.exemple.com`. ## 🔑 Créer l'app 1. Dans la console développeur Atlassian, clique sur **Create**, puis sur **OAuth 2.0 integration**. 2. Dans **Name**, écris `Astrolabe`, puis crée l'app. 3. Ouvre **Authorization**. Dans **Callback URL**, écris : ```text https://astrolabe.exemple.com/api/auth/atlassian/handler/frame ``` Remplace `astrolabe.exemple.com` par l'adresse de ton Astrolabe. 4. Enregistre. 5. Ouvre **Settings**, et **copie le Client ID et le Secret**. ✅ C'est tout ! La suite : [Ajouter Atlassian](add-atlassian.md). --- # Ajouter la connexion Auth0 Une fois Auth0 allumé, la page de connexion affiche un bouton **Continuer avec Auth0**. Tu le fais une fois, en administrateur. ## Avant de commencer Il te faut le **Domaine**, l'**ID client** et le **Secret client** d'une application Auth0 : voir [Créer l'application Auth0](create-the-auth0-app.md). ## 🔧 Allumer Auth0 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Authentification**. 3. Sur la carte **Auth0**, allume l'interrupteur en haut à droite. La fenêtre **Configurer Auth0** s'ouvre. 4. Remplis le formulaire : | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **ID client** | Le Client ID de l'application | | | **Secret client** | Son Client Secret | | | **Domaine** | Le domaine Auth0, **sans** `https://` | `exemple.eu.auth0.com` | | **Audience** | Laisse vide | | | **Connexion** | Laisse vide | | | **Périmètres de la connexion** | Laisse vide | | **ID client**, **Secret client** et **Domaine** sont marqués **(Obligatoire)**. Les trois autres champs sont facultatifs. 5. Clique sur **Installer**. L'écran dit **La configuration a changé ; le serveur redémarre.** Attends quelques secondes. La carte **Auth0** est maintenant parmi les fournisseurs actifs, en haut de la liste, son interrupteur est allumé, et elle a un bouton **Configurer**. ## ✅ Vérifier 1. En haut à droite, clique sur ton initiale, puis sur **Déconnexion**. 2. La page de connexion affiche **Continuer avec Auth0**, au-dessus de **OU** et du formulaire **Nom d'utilisateur** et **Mot de passe**. La connexion par Auth0 n'a pas été vérifiée sur une instance. Astrolabe cherche ensuite dans ton catalogue l'utilisateur dont l'adresse e-mail est celle du compte Auth0. ## 🔄 Changer ou retirer Auth0 1. Sur la carte **Auth0**, clique sur **Configurer**. 2. Pour changer une valeur, modifie le champ. Pour changer le secret, clique sur **Remplacer** à côté de **Secret client**. Clique sur **Mettre à jour**. 3. Pour retirer Auth0, clique sur **Désinstaller**. ✅ C'est tout ! Quelque chose ne va pas ? Voir [Problèmes courants avec la connexion](../troubleshooting.md). --- # Créer l'application Auth0 Auth0 doit connaître Astrolabe avant de laisser les gens se connecter. Tu crées une **application** dans Auth0 et tu y copies trois valeurs. Tu le fais une fois. Ces étapes se font dans Auth0. Elles n'ont pas été vérifiées sur une instance. ## Avant de commencer Il te faut l'adresse de ton Astrolabe, par exemple `astrolabe.exemple.com`. ## 🔑 Créer l'application 1. Dans le tableau de bord Auth0, ouvre **Applications**, puis **Applications**. 2. Clique sur **Create Application**. 3. Dans **Name**, écris `Astrolabe`. Pour le type, choisis **Regular Web Applications**. Clique sur **Create**. 4. Ouvre l'onglet **Settings**. 5. Dans **Allowed Callback URLs**, écris : ```text https://astrolabe.exemple.com/api/auth/auth0/handler/frame ``` Remplace `astrolabe.exemple.com` par l'adresse de ton Astrolabe. 6. Clique sur **Save Changes**. 7. **Copie le Domain, le Client ID et le Client Secret.** ✅ C'est tout ! La suite : [Ajouter la connexion Auth0](add-auth0-sign-in.md). --- # Choisir comment les gens se connectent Ton Astrolabe a toujours un formulaire **nom d'utilisateur et mot de passe** pour le compte administrateur. Tu peux ajouter des **fournisseurs** à côté : les gens se connectent alors avec le compte qu'ils ont déjà chez Google ou Auth0. Tu choisis les fournisseurs une fois, en administrateur. ## Ce que la page de connexion affiche La page de connexion liste un bouton par fournisseur actif, par exemple **Continuer avec Google**. Sous **OU**, le formulaire **Nom d'utilisateur** et **Mot de passe** est toujours là. ## Où allumer un fournisseur Dans la barre latérale, en bas, clique sur **Administration**. Sous **PLATEFORME**, clique sur **Authentification**. L'onglet **Fournisseurs** montre une carte par fournisseur, avec un interrupteur en haut à droite. Les fournisseurs actifs viennent d'abord, chacun avec un bouton **Configurer**. ## Les fournisseurs | Fournisseur | Ce que tu fais | | --- | --- | | Compte Astrolabe | [Se connecter avec ton compte Astrolabe](astrolabe-account/sign-in.md) | | Google | [Ajouter la connexion Google](google/add-google-sign-in.md) | | Auth0 | [Ajouter la connexion Auth0](auth0/add-auth0-sign-in.md) | | Okta | [Ajouter Okta](okta/add-okta.md) | | Atlassian | [Ajouter Atlassian](atlassian/add-atlassian.md) | | Azure | [Azure Entra ID](./microsoft/set-up-sign-in.md) | | GitHub | [GitHub](./github/configure-github-sign-in.md) | ## Les étapes sont toujours les mêmes 1. Chez le fournisseur, crée une application et copie son **Client ID** et son **Client Secret**. Tu donnes au fournisseur l'adresse qu'Astrolabe affiche dans le **?** à côté de **Client ID**. 2. Dans Astrolabe, allume le fournisseur et saisis ce que tu as copié. 3. Déconnecte-toi, et regarde la page de connexion. ✅ C'est tout ! Des questions ? Voir la [FAQ de l'authentification](faq.md). Quelque chose ne va pas ? Voir [Problèmes courants avec la connexion](troubleshooting.md). --- # FAQ de l'authentification ## Puis-je allumer plusieurs fournisseurs ? Oui. La page de connexion montre un bouton par fournisseur, par exemple **Continuer avec Auth0** et **Continuer avec Google**. ## Le formulaire nom d'utilisateur et mot de passe est-il toujours là ? Oui. Il reste sous **OU**, quels que soient les fournisseurs que tu allumes. C'est l'entrée de l'administrateur. ## Où vois-je quels fournisseurs sont allumés ? Dans **Administration › Authentification**. Les fournisseurs actifs viennent d'abord, chacun avec un bouton **Configurer** et son interrupteur allumé. ## Comment éteindre un fournisseur ? Sur sa carte, clique sur **Configurer**, puis sur **Désinstaller**. ## Dois-je redémarrer Astrolabe ? Non. Après **Installer**, **Mettre à jour** ou **Désinstaller**, Astrolabe redémarre tout seul : l'écran dit **La configuration a changé ; le serveur redémarre.** ## Pourquoi les boutons sont-ils grisés ? Sans licence active, les boutons des fournisseurs sont grisés, avec **Connexion désactivée : la licence n'est pas active** dessous. Le formulaire nom d'utilisateur et mot de passe continue de marcher. Voir [Problèmes courants avec la connexion](troubleshooting.md). ## Où créer les autres comptes ? Pas dans Astrolabe : les gens se connectent avec le compte qu'ils ont chez leur fournisseur. ## Qu'est-ce que je donne au fournisseur ? L'adresse qu'Astrolabe affiche dans le **?** à côté de **Client ID**, `/api/auth//handler/frame`, où `` vaut `google`, `auth0`, `okta` ou `atlassian`. --- # Configurer la connexion GitHub dans Astrolabe Tu donnes à Astrolabe l'**ID client** et le **Secret client** de ton application OAuth GitHub. Ensuite, la page de connexion propose **Continue with GitHub**. Tu le fais une fois, en administrateur. ## Avant de commencer Il te faut l'**ID client** et le **Secret client** de l'application : voir [Créer l'application OAuth dans GitHub](create-the-oauth-app.md). ## 🔧 Installer le fournisseur GitHub 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Authentification**. L'onglet **Fournisseurs** s'ouvre. 3. Sur la carte **GitHub**, clique sur l'interrupteur en haut à droite de la carte. La fenêtre **Configurer GitHub** s'ouvre. 4. Remplis le formulaire. Chaque **?** à côté d'un libellé explique le champ. | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **ID client** | Le Client ID de ton application OAuth | `Ov23li…` | | **Secret client** | Le secret client de l'application | `0123…` | | **URL de l'instance d'entreprise** | Laisse vide. Pour GitHub Enterprise seulement : son adresse complète avec `https://`. | `https://github.exemple.com` | | **URL de rappel** | Laisse vide : Astrolabe utilise `/api/auth/github/handler/frame`. | | 5. Clique sur **Installer**. L'instance se recharge. Quand la page revient, la carte **GitHub** a son interrupteur allumé, avec un bouton **Configurer**. Un avertissement au-dessus des cartes dit `Personne ne peut encore se connecter avec GitHub : un compte doit d'abord être dans le catalogue.` tant que la section suivante n'est pas faite. ## 👥 Importer les membres La connexion avec GitHub ne marche que pour un compte qu'Astrolabe connaît déjà. Tu importes les membres de ton organisation GitHub dans le catalogue. 1. Dans l'avertissement, clique sur **Ouvrir Catalogue › GitHub**. La page **Catalogue** s'ouvre. 2. Sur la carte **GitHub**, clique sur **Configurer**. La fenêtre **Configurer GitHub** s'ouvre. 3. Remplis **Organisation** avec le nom de ton organisation GitHub. 4. Coche **Importer les membres et équipes GitHub**. 5. Clique sur **Installer**. L'instance se recharge. 6. Retourne dans **Administration › Authentification** : l'avertissement a disparu. Les étapes 3 à 6 n'ont pas été vérifiées sur une instance reliée à une vraie organisation GitHub. Le jeton de ta connexion GitHub a besoin des droits **`read:org`** et **`read:user`**. Les autres champs sont décrits dans [Importer tes dépôts GitHub](../../Catalogue/github/import-repositories.md#-membres-et-équipes). ✅ C'est tout ! La suite : [Se connecter avec GitHub](sign-in-with-github.md). ## 🔌 Éteindre la connexion GitHub 1. Dans **Administration › Authentification**, clique sur **Configurer** sur la carte **GitHub**. 2. Clique sur **Désinstaller**. L'instance se recharge, sans demander de confirmation. Le bouton **Continue with GitHub** quitte la page de connexion. --- # Créer l'application OAuth dans GitHub Pour que tes utilisateurs se connectent à Astrolabe avec GitHub, GitHub doit connaître Astrolabe : tu y crées une **application OAuth**, qui te donne un **ID client** et un **Secret client**. Tu le fais une fois, en administrateur de ton compte ou de ton organisation GitHub. ## Avant de commencer Il te faut l'adresse de ton Astrolabe, telle que tes utilisateurs l'ouvrent. Le formulaire d'Astrolabe donne l'adresse que GitHub doit rappeler : ```text /api/auth/github/handler/frame ``` ## 🔑 Créer l'application 1. Dans GitHub, ouvre **Settings › Developer settings › OAuth Apps**, puis **New OAuth App**. 2. Remplis le formulaire : | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **Application name** | Un nom de ton choix | `Astrolabe` | | **Homepage URL** | L'adresse de ton Astrolabe | `https://astrolabe.exemple.com` | | **Authorization callback URL** | L'adresse ci-dessus | `https://astrolabe.exemple.com/api/auth/github/handler/frame` | 3. Clique sur **Register application**. 4. Copie l'**ID client**. 5. Clique sur **Generate a new client secret** et copie le secret. Cette étape n'a pas été vérifiée sur une instance : les écrans GitHub viennent de l'aide du formulaire d'Astrolabe, qui ne fait que nommer l'application OAuth et l'adresse à rappeler. ✅ C'est tout ! La suite : [Configurer la connexion GitHub dans Astrolabe](configure-github-sign-in.md). --- # FAQ de la connexion GitHub ### Quelle adresse de rappel donner à GitHub ? `/api/auth/github/handler/frame`. Laisse **URL de rappel** vide dans Astrolabe : il utilise cette adresse. ### Est-ce que ça marche avec GitHub Enterprise ? Le formulaire a un champ **URL de l'instance d'entreprise** pour ça : écris l'adresse complète de ton GitHub Enterprise, avec `https://`. Laisse-le vide pour github.com. ### Où relire le Client ID ? Dans **Administration › Authentification**, avec **Configurer** sur la carte **GitHub**. Le secret y est caché : à côté, **Remplacer** permet d'en saisir un nouveau. --- # Se connecter avec GitHub Une fois la connexion GitHub configurée, tes utilisateurs se connectent à Astrolabe avec leur compte GitHub. ## Avant de commencer L'administrateur a [configuré la connexion GitHub](configure-github-sign-in.md). ## 🚪 Se connecter 1. Ouvre ton Astrolabe. La page de connexion dit **welcome to Astrolabe**. 2. Clique sur **Continue with GitHub**. 3. Autorise l'application sur GitHub. Tu reviens dans Astrolabe, connecté. Cette étape n'a pas été vérifiée sur une instance. ✅ C'est tout ! Quelque chose ne marche pas ? Lis la [FAQ](faq.md) et les [problèmes courants](troubleshooting.md). --- # Problèmes courants avec la connexion GitHub | Ce que tu vois | Quoi faire | | --- | --- | | Dans la fenêtre **Configurer GitHub**, sous **ID client** : `Client ID est requis` | Colle le Client ID de ton application OAuth. | | Sous **Secret client** : `Client Secret est requis` | Colle le secret client de ton application OAuth. | | Sur la page de connexion, **Continue with GitHub** est désactivé, avec `Sign-in disabled: license is not active` | L'instance n'a pas de licence active. Dans **Administration**, clique sur **Licences** et configure-la. | | Une personne qui se connecte avec GitHub lit `Ton compte n'est pas encore connu d'Astrolabe. Demande à ton administrateur de t'ajouter, puis réessaie.` | Les membres de ton organisation GitHub ne sont pas dans le catalogue. Un administrateur ouvre **Administration › Authentification**, clique sur **Ouvrir Catalogue › GitHub** dans l'avertissement, puis sur la carte **GitHub** sur **Configurer**, coche **Importer les membres et équipes GitHub** et clique sur **Installer**. Voir [Importer les membres](configure-github-sign-in.md#-importer-les-membres). Une fois l'import passé, la personne réessaie. | | Dans **Administration › Authentification**, au-dessus des cartes : `Personne ne peut encore se connecter avec GitHub : un compte doit d'abord être dans le catalogue.` | Clique sur **Ouvrir Catalogue › GitHub** et importe les membres, comme ci-dessus. | :::tip Toujours bloqué ? Écris à **support@forgeit.fr**. ::: --- # Configurer la connexion GitLab dans Astrolabe Tu donnes à Astrolabe l'**ID d'application** et le **Secret** de ton application GitLab. Ensuite, la page de connexion propose GitLab. Tu le fais une fois, en administrateur. ## Avant de commencer Il te faut l'**ID d'application** et le **Secret** de l'application : voir [Créer l'application GitLab](create-the-oauth-app.md). ## 🔧 Installer le fournisseur GitLab 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Authentification**. L'onglet **Fournisseurs** s'ouvre. 3. Sur la carte **GitLab**, clique sur l'interrupteur en haut à droite de la carte. La fenêtre **Configurer GitLab** s'ouvre. 4. Remplis le formulaire. Chaque **?** à côté d'un libellé explique le champ. | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **ID de l'application** | L'ID d'application de ton application GitLab | `1a2b3c…` | | **Secret** | Le secret de cette application | `0123…` | | **URL de GitLab** | Laisse vide pour gitlab.com. Pour ton propre GitLab : son adresse complète avec `https://`. | `https://gitlab.exemple.com` | | **URL de rappel** | Laisse vide : Astrolabe utilise `/api/auth/gitlab/handler/frame`. | | 5. Clique sur **Installer**. L'instance redémarre. Quand la page revient, la carte **GitLab** affiche son interrupteur allumé, avec un bouton **Configurer**. ## 👥 Importer les membres La connexion avec GitLab ne marche que pour un compte qu'Astrolabe connaît déjà. Tu importes tes groupes GitLab et leurs membres dans le catalogue. Il faut d'abord une connexion GitLab. 1. Dans la barre latérale, sous **PLATEFORME**, clique sur **Connexions de l'entreprise**. 2. Sur la carte **GitLab**, clique sur **Gérer**. Sous **Jeton(s)**, clique sur **Ajouter un jeton**. 3. Remplis le **Nom**, l'**Hôte de l'instance GitLab** (par exemple `gitlab.exemple.com`, sans `https://`) et le **Jeton GitLab**. Clique sur **Tester la connexion**, puis sur **Ajouter**. L'instance redémarre. 4. Va dans **Administration › Catalogue**. Sur la carte **GitLab**, clique sur **Configurer**. 5. Coche **Importer les groupes GitLab et leurs membres**. Clique sur **Installer**. L'instance redémarre. Les groupes et leurs membres arrivent alors dans le catalogue. Voir [Importer tes groupes GitLab](../../Catalogue/gitlab/import-groups.md). Ces écrans ont été vérifiés jusqu'à la carte GitLab du catalogue ; la suite de cette section n'a pas été vérifiée sur un GitLab en service. ✅ C'est fait ! Suite : [Se connecter avec GitLab](sign-in-with-gitlab.md). ## 🔌 Désactiver la connexion GitLab 1. Dans **Administration › Authentification**, clique sur **Configurer** sur la carte **GitLab**. 2. Clique sur **Désinstaller**. L'instance redémarre, sans demander de confirmation. --- # Créer l'application GitLab Pour que tes utilisateurs se connectent à Astrolabe avec GitLab, GitLab doit connaître Astrolabe : tu crées une **application** chez lui, qui te donne un **ID d'application** et un **Secret**. Tu le fais une fois. Il te faut un compte qui peut créer des applications sur ton GitLab : le tien (**Paramètres utilisateur › Applications**) ou, pour un GitLab que tu héberges, la **Zone d'administration › Applications**. ## Avant de commencer Il te faut l'adresse de ton Astrolabe, telle que tes utilisateurs l'ouvrent. L'**URL de rappel** que GitLab doit appeler est : ```text /api/auth/gitlab/handler/frame ``` Pour `https://astrolabe.exemple.com`, c'est `https://astrolabe.exemple.com/api/auth/gitlab/handler/frame`. ## 🔑 Créer l'application 1. Dans GitLab, ouvre **Paramètres utilisateur › Applications**, ou **Zone d'administration › Applications** si tu la crées pour toute l'instance. 2. Remplis le formulaire : | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **Nom** | Un nom de ton choix | `Astrolabe` | | **URI de redirection** | L'adresse de rappel ci-dessus | `https://astrolabe.exemple.com/api/auth/gitlab/handler/frame` | | **Périmètres** | `read_user`, `openid`, `profile` et `email` | | 3. Enregistre l'application. GitLab affiche l'**ID d'application** et le **Secret**. Copie les deux. Ces écrans n'ont pas été vérifiés sur un GitLab en service : les étapes viennent de l'aide du formulaire d'Astrolabe, qui nomme les périmètres et l'adresse de rappel. ✅ C'est fait ! Suite : [Configurer la connexion GitLab dans Astrolabe](configure-gitlab-sign-in.md). --- # Questions sur la connexion GitLab ### Quelle adresse de rappel donner à GitLab ? `/api/auth/gitlab/handler/frame`. Laisse **URL de rappel** vide dans Astrolabe : il utilise cette adresse. ### Ça marche avec un GitLab que j'héberge moi-même ? Oui. Écris son adresse complète dans **URL de GitLab**, avec `https://`, par exemple `https://gitlab.exemple.com`. Laisse vide pour gitlab.com. ### Où relire l'ID d'application ? Dans **Administration › Authentification**, avec **Configurer** sur la carte **GitLab**. Le secret y est masqué. --- # Se connecter avec GitLab Une fois la connexion GitLab configurée, tes utilisateurs se connectent à Astrolabe avec leur compte GitLab. ## Avant de commencer L'administrateur a [configuré la connexion GitLab](configure-gitlab-sign-in.md), et ton compte a été importé dans le catalogue. ## 🚪 Se connecter 1. Ouvre ton Astrolabe. La page de connexion dit **bienvenue sur Astrolabe**. 2. Clique sur le bouton GitLab de la page de connexion. 3. Autorise l'application sur GitLab. Tu reviens dans Astrolabe, connecté. Cette étape n'a pas été vérifiée sur un GitLab en service. ✅ C'est fait ! Quelque chose ne marche pas ? Lis les [questions fréquentes](faq.md) et les [problèmes courants](troubleshooting.md). --- # Problèmes courants de la connexion GitLab Les messages ci-dessous sont cités tels que l'interface française les affiche. | Ce que tu vois | Quoi faire | | --- | --- | | Dans la fenêtre **Configurer GitLab**, sous **ID de l'application** : `ID de l'application est requis` | Colle l'ID d'application de ton application GitLab. | | Sous **Secret** : `Secret est requis` | Colle le secret de ton application GitLab. | | Dans **Connexions de l'entreprise › GitLab**, après **Tester la connexion** : `Aucun serveur ne répond au nom gitlab.exemple.com.` | Vérifie l'orthographe de l'**Hôte de l'instance GitLab**, sans `https://`. Si elle est juste, ton Astrolabe ne joint pas ce serveur : préviens l'administrateur de ton entreprise. | | Dans **Administration › Catalogue**, sur la carte **GitLab** : `Configurez d'abord l'intégration GitLab : sans elle, ce fournisseur ne peut rien lire.` | Ajoute d'abord le jeton GitLab, dans **Connexions de l'entreprise › GitLab**, comme décrit dans [Importer les membres](configure-gitlab-sign-in.md#-importer-les-membres). | | Quelqu'un qui se connecte avec GitLab lit `Your account is not known to Astrolabe yet. Ask your administrator to add you, then try again.` | Les membres de tes groupes GitLab ne sont pas dans le catalogue. Un administrateur les importe, comme décrit dans [Importer les membres](configure-gitlab-sign-in.md#-importer-les-membres). Une fois l'import passé, la personne réessaie. | :::tip Toujours bloqué ? Écris à **support@forgeit.fr**. ::: --- # Ajouter la connexion Google Une fois Google allumé, la page de connexion affiche un bouton **Continuer avec Google**. Tu le fais une fois, en administrateur. ## Avant de commencer Il te faut l'**ID client** et le **Secret client** d'un client OAuth Google : voir [Créer le client OAuth Google](create-the-google-app.md). ## 🔧 Allumer Google 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Authentification**. 3. Sur la carte **Google**, allume l'interrupteur en haut à droite. La fenêtre **Configurer Google** s'ouvre. 4. Remplis le formulaire : | Champ | Quoi écrire | | --- | --- | | **ID client** | Le Client ID du client OAuth | | **Secret client** | Son Client secret | Les deux sont marqués **(Obligatoire)**. Le **?** à côté de l'**ID client** donne l'adresse à déclarer chez Google : `/api/auth/google/handler/frame`. 5. Clique sur **Installer**. L'écran dit **La configuration a changé ; le serveur redémarre.** Attends quelques secondes. La carte **Google** est maintenant parmi les fournisseurs actifs, en haut de la liste, son interrupteur est allumé, et elle a un bouton **Configurer**. ## ✅ Vérifier 1. En haut à droite, clique sur ton initiale, puis sur **Déconnexion**. 2. La page de connexion affiche **Continuer avec Google**, au-dessus de **OU** et du formulaire **Nom d'utilisateur** et **Mot de passe**. La connexion par Google n'a pas été vérifiée sur une instance. Astrolabe cherche ensuite dans ton catalogue l'utilisateur dont le nom est la partie de l'adresse e-mail Google avant le `@`. ## 🔄 Changer ou retirer Google 1. Sur la carte **Google**, clique sur **Configurer**. 2. Pour changer le client, modifie **ID client**. Pour changer le secret, clique sur **Remplacer** à côté de **Secret client**. Clique sur **Mettre à jour**. 3. Pour retirer Google, clique sur **Désinstaller**. ✅ C'est tout ! Quelque chose ne va pas ? Voir [Problèmes courants avec la connexion](../troubleshooting.md). --- # Créer le client OAuth Google Google doit connaître Astrolabe avant de laisser les gens se connecter. Tu crées un **client OAuth** dans Google Cloud et tu y copies deux valeurs. Tu le fais une fois. Ces étapes se font dans Google Cloud. Elles n'ont pas été vérifiées sur une instance. ## Avant de commencer Il te faut l'adresse de ton Astrolabe, par exemple `astrolabe.exemple.com`. ## 🔑 Créer le client 1. Dans la console Google Cloud, ouvre **APIs & Services**, puis **Credentials**. 2. Clique sur **Create credentials**, puis sur **OAuth client ID**. 3. Dans **Application type**, choisis **Web application**. 4. Dans **Name**, écris `Astrolabe`. 5. Sous **Authorized redirect URIs**, clique sur **Add URI** et écris : ```text https://astrolabe.exemple.com/api/auth/google/handler/frame ``` Remplace `astrolabe.exemple.com` par l'adresse de ton Astrolabe. 6. Clique sur **Create**. 7. **Copie le Client ID et le Client secret.** ✅ C'est tout ! La suite : [Ajouter la connexion Google](add-google-sign-in.md). --- # FAQ connexion Microsoft ## Quelle URL de redirection déclarer dans Microsoft Entra ID ? L'adresse de ton Astrolabe suivie de `/api/auth/microsoft/handler/frame`. Le **?** à côté de **Client ID**, dans la fenêtre **Configurer Azure**, dit la même chose. ## Pourquoi le bouton « Continuer avec Microsoft » est-il grisé ? Parce que l'instance n'a pas de licence active : la page dit **Connexion désactivée : la licence n'est pas active**. Voir **Administration › Licences**. ## À quoi sert le Domain Hint ? À passer le sélecteur de compte de Microsoft : écris le domaine de ton organisation, par exemple `exemple.com`. Le champ est facultatif. --- # Mettre en place la connexion Microsoft Tes utilisateurs se connectent à Astrolabe avec leur compte Microsoft Entra ID, grâce au bouton **Continuer avec Microsoft** de la page de connexion. Tu le mets en place une fois, en administrateur. *La connexion Microsoft elle-même n'a pas été vérifiée : le bouton reste grisé sur une instance sans licence active, et aucun compte utilisateur Microsoft n'était sous la main. Cette étape n'a pas été vérifiée sur une instance.* ## Avant de commencer Il te faut : - une **licence active** (**Administration › Licences**) ; - une inscription d'application dans Microsoft Entra ID, avec un secret client. Garde son **Application (client) ID**, son **Directory (tenant) ID** et la **Value** de son secret client ; - l'**URL de redirection** déclarée sur cette inscription d'application : l'adresse de ton Astrolabe suivie de `/api/auth/microsoft/handler/frame`. Par exemple : ``` https://astrolabe.exemple.com/api/auth/microsoft/handler/frame ``` ## 🔧 Ajouter le fournisseur 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Authentification**. L'onglet **Fournisseurs** s'ouvre. 3. Sur la carte **Azure**, clique sur l'interrupteur. La fenêtre **Configurer Azure** s'ouvre. 4. Remplis le formulaire. Chaque **?** à côté d'un libellé explique le champ. | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **ID client** | L'Application (client) ID | | | **Secret client** | La Value du secret client, pas le Secret ID | | | **ID du locataire** | Le Directory (tenant) ID | | | **Indication de domaine** | Facultatif. Le domaine de ton organisation, pour passer le sélecteur de compte de Microsoft. | `exemple.com` | | **Ne pas lire le profil** | Facultatif. Coche-le pour qu'Astrolabe ne lise pas le profil et la photo de l'utilisateur dans Microsoft Graph, si l'application n'a pas le droit d'appeler Graph. | | 5. Clique sur **Installer**. Un bandeau annonce **La configuration a changé ; le serveur redémarre.** Environ une minute plus tard, la carte **Azure** est en haut de la liste, avec un bouton **Configurer**. ## 🚪 Voir le bouton 1. En haut à droite, clique sur ton nom, puis sur **Déconnexion**. 2. La page de connexion montre **Continuer avec Microsoft**. Sur une instance sans licence active, le bouton est grisé et la page dit **Connexion désactivée : la licence n'est pas active**. Connecte-toi avec ton nom d'utilisateur et ton mot de passe, et active la licence. ✅ C'est tout ! La suite : [Problèmes courants](troubleshooting.md). --- # Problèmes courants avec la connexion Microsoft | Ce que tu vois | Quoi faire | | --- | --- | | Sur la page de connexion, **Continuer avec Microsoft** est grisé et la page dit `Connexion désactivée : la licence n'est pas active` | L'instance n'a pas de licence active. Connecte-toi avec ton nom d'utilisateur et ton mot de passe, puis va dans **Administration › Licences**. | | Dans **Administration**, un bandeau `Aucune licence configurée. L'application reste utilisable ; les fonctions sous licence sont limitées.` | Clique sur **Configurer la licence**. | :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec le message que tu vois. ::: --- # Ajouter Okta Tu donnes à Astrolabe l'application Okta que tu as créée. Okta apparaît alors dans **Administration › Authentification** comme fournisseur actif. Tu le fais une fois, en administrateur. ## Avant de commencer Il te faut l'**ID client** et le **Client secret** d'une application Okta, et l'adresse de ton Okta : voir [Créer l'application Okta](create-the-okta-app.md). ## 🔧 Allumer Okta 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Authentification**. 3. Sur la carte **Okta**, allume l'interrupteur en haut à droite. La fenêtre **Configurer Okta** s'ouvre. 4. Remplis le formulaire : | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **ID client** | Le Client ID de l'application | | | **Secret client** | Son Client secret | | | **Audience** | L'adresse de ton Okta, **avec** `https://` | `https://exemple.okta.com` | | **ID du serveur d'autorisation** | Laisse vide | | | **Fournisseur d'identité** | Laisse vide | | | **Durée de la session** | Laisse vide | | | **Périmètres supplémentaires** | Laisse vide | | | **Configuration de la connexion** | Laisse vide | | **ID client**, **Secret client** et **Audience** sont marqués **(Obligatoire)**. Les autres champs sont facultatifs. 5. Clique sur **Installer**. L'écran dit **La configuration a changé ; le serveur redémarre.** Attends quelques secondes. La carte **Okta** est maintenant parmi les fournisseurs actifs, en haut de la liste, son interrupteur est allumé, et elle a un bouton **Configurer**. ## 🔄 Changer ou retirer Okta 1. Sur la carte **Okta**, clique sur **Configurer**. 2. Pour changer une valeur, modifie le champ. Pour changer le secret, clique sur **Remplacer** à côté de **Secret client**. Clique sur **Mettre à jour**. 3. Pour retirer Okta, clique sur **Désinstaller**. ✅ C'est tout ! Quelque chose ne va pas ? Voir [Problèmes courants avec la connexion](../troubleshooting.md). --- # Créer l'application Okta Okta doit connaître Astrolabe avant de lui parler. Tu crées une **application** dans Okta et tu y copies deux valeurs. Tu le fais une fois. Ces étapes se font dans Okta. Elles n'ont pas été vérifiées sur une instance. ## Avant de commencer Il te faut l'adresse de ton Astrolabe, par exemple `astrolabe.exemple.com`, et l'adresse de ton Okta, par exemple `https://exemple.okta.com`. ## 🔑 Créer l'application 1. Dans la console d'administration Okta, ouvre **Applications**, puis **Applications**. 2. Clique sur **Create App Integration**. 3. Dans **Sign-in method**, choisis **OIDC - OpenID Connect**. Dans **Application type**, choisis **Web Application**. Clique sur **Next**. 4. Dans **App integration name**, écris `Astrolabe`. 5. Dans **Sign-in redirect URIs**, écris : ```text https://astrolabe.exemple.com/api/auth/okta/handler/frame ``` Remplace `astrolabe.exemple.com` par l'adresse de ton Astrolabe. 6. Clique sur **Save**. 7. **Copie le Client ID et le Client secret.** ✅ C'est tout ! La suite : [Ajouter Okta](add-okta.md). --- # Demander l'accès quand la connexion est refusée Quand tu te connectes avec un fournisseur et qu'Astrolabe te refuse, la page de connexion te laisse demander l'accès à un administrateur. Il y a deux cas : tu n'as pas de licence, ou Astrolabe ne connaît pas encore ton compte. Un administrateur répond ensuite dans **Administration › Licences**. ## 🙋 Demander l'accès quand tu n'as pas de licence 1. Sur la page de connexion, la fenêtre **Demander l'accès à Astrolabe** est ouverte. Elle dit **Vous n'avez pas de licence active pour Astrolabe. Souhaitez-vous demander un accès ?** et, dessous, ton compte, par exemple `Utilisateur : user:default/acme.dupont`. Tu n'as rien à saisir pour cette ligne. 2. Dans **Raison de la demande d'accès (optionnel)**, écris pourquoi tu as besoin de l'accès. 3. Clique sur **Demander l'accès**. La fenêtre se ferme et un message dit **Demande d'accès envoyée. Un administrateur va l'examiner.** La fenêtre s'ouvre de la même façon quand le fournisseur te renvoie vers Astrolabe après le refus. Cette page a été écrite à partir de ce retour sur la page de connexion ; l'écran du fournisseur lui-même n'a pas été vérifié sur une instance. ✅ C'est tout ! ## 🙋 Demander l'accès quand Astrolabe ne connaît pas ton compte Quand le fournisseur t'accepte mais qu'Astrolabe n'a aucun compte à ton nom dans son catalogue, tu reviens sur la page de connexion et un message en haut dit **Ton compte n'est pas encore connu d'Astrolabe. Demande à ton administrateur de t'ajouter, puis réessaie.** 1. Sous **Astrolabe**, clique sur **Demander l'accès**. 2. Dans la fenêtre **Demander l'accès à Astrolabe**, écris ton adresse dans **Votre e-mail**. Elle est obligatoire : **Demander l'accès** reste grisé tant que l'adresse n'est pas valide. 3. Dans **Votre nom (facultatif)**, écris ton nom. 4. Dans **Raison de la demande d'accès (optionnel)**, écris pourquoi tu as besoin de l'accès. 5. Clique sur **Demander l'accès**. La fenêtre se ferme et un message dit **Demande d'accès envoyée. Un administrateur va l'examiner.** Si tu envoies une seconde demande avec la même adresse pendant que la première attend, un message dit **Une demande d'accès est déjà en attente pour cet e-mail.** Rien d'autre à faire : attends l'administrateur. ✅ C'est tout ! ## 🛡️ Répondre à une demande (administrateur) 1. Dans la barre latérale, en bas, clique sur **Administration**, puis, sous **SÉCURITÉ**, sur **Licences**. 2. Clique sur l'onglet **Demandes d'accès**. Le titre dit combien il y en a, par exemple **Demandes d'accès (1)**. 3. Chaque ligne montre **Utilisateur**, **Origine**, **Statut** (**En attente**), **Demandé**, **Raison** et deux boutons, **Approuver** et **Refuser**. **Origine** vaut **Pas de licence** ou **Compte absent du catalogue**. 4. Pour une demande dont l'**Origine** est **Compte absent du catalogue**, clique sur **Approuver**. Un message dit **Demande approuvée. Le compte n'est pas dans le catalogue : ajoutez-le pour que la personne puisse se connecter.** La demande passe à **Approuvé** (clique sur **Afficher toutes les demandes** pour la voir), mais la personne ne peut se connecter qu'une fois son compte ajouté au catalogue. Ce que **Approuver** et **Refuser** font pour une personne sans licence n'a pas été vérifié sur une instance. **Refuser** n'a pas été vérifié non plus. La suite : [Problèmes courants avec la connexion](troubleshooting.md). --- # Problèmes courants avec la connexion ## Sur la page de connexion | Ce que tu vois | Quoi faire | | --- | --- | | Un bandeau **Échec de l'authentification** après **SE CONNECTER** | Le **Nom d'utilisateur** ou le **Mot de passe** est faux. Retape-les : clique sur l'icône en forme d'œil, **Show value**, pour relire le mot de passe. Si tu l'as oublié, voir [Réinitialiser le mot de passe administrateur](astrolabe-account/reset-the-password.md). | | **Connexion désactivée : la licence n'est pas active** sous un bouton de fournisseur | Astrolabe n'a pas de licence active. Dans **Administration**, le bandeau **Configurer la licence** mène à l'écran de la licence. | | **La connexion a été annulée. Clique à nouveau sur le bouton pour réessayer.** | Tu as fermé la fenêtre du fournisseur avant la fin. Clique à nouveau sur le bouton du fournisseur. | | **Ton navigateur a bloqué la fenêtre de connexion. Autorise les fenêtres pop-up pour ce site, puis clique à nouveau sur le bouton.** | Ton navigateur bloque les pop-up pour cette adresse. Autorise-les pour ce site dans le navigateur, puis clique à nouveau sur le bouton du fournisseur. | | **Ton compte n'est pas encore connu d'Astrolabe. Demande à ton administrateur de t'ajouter, puis réessaie.** | Le fournisseur te connaît, Astrolabe non. Clique sur **Demander l'accès** sous **Astrolabe** : voir [Demander l'accès quand la connexion est refusée](request-access.md). | | **Ta session a expiré. Connecte-toi à nouveau.** | Reconnecte-toi avec le bouton du fournisseur ou avec ton nom d'utilisateur et ton mot de passe. | | **Astrolabe n'a pas pu joindre le fournisseur de connexion. Réessaie dans une minute. Si ça continue, préviens ton administrateur.** | Le fournisseur ne répond pas. Attends une minute puis réessaie. Si ça continue, préviens ton administrateur. | | **Cette méthode de connexion n'est pas bien configurée. Préviens ton administrateur.** | Les réglages du fournisseur sont faux. Ton administrateur les vérifie dans **Administration › Authentification**. | | **La connexion a échoué. Réessaie. Si ça continue, préviens ton administrateur.** | Astrolabe ne peut pas dire la cause. Réessaie, puis préviens ton administrateur. | | La fenêtre **Demander l'accès à Astrolabe** s'ouvre : **Vous n'avez pas de licence active pour Astrolabe. Souhaitez-vous demander un accès ?** | Astrolabe a refusé ta connexion faute de licence active. Clique sur **Demander l'accès** : voir [Demander l'accès quand la connexion est refusée](request-access.md). | | **Le serveur de messagerie n'offre pas de connexion chiffrée, qu'Astrolabe exige pour envoyer un mot de passe.** dans la fenêtre **Réinitialiser le mot de passe administrateur** | Le serveur de messagerie n'offre pas de connexion sécurisée (STARTTLS). Demande à ton fournisseur de mail un serveur et un port qui en offrent une, en général le port `587`, puis saisis-les dans **Hôte** et **Port** sur l'onglet **Messagerie** de **Administration › Général**. | | **Le serveur de messagerie est injoignable.** dans la fenêtre **Réinitialiser le mot de passe administrateur** | L'**Hôte** est mal écrit, ou le serveur ne répond pas. Vérifie **Hôte** et **Port** sur l'onglet **Messagerie** de **Administration › Général**. | | **Le serveur de messagerie refuse les connexions sur ce port.** dans la fenêtre **Réinitialiser le mot de passe administrateur** | Le **Port** n'est pas celui où le serveur de messagerie écoute. Vérifie **Port** sur l'onglet **Messagerie** de **Administration › Général**, en général `587`. | | **Le serveur de messagerie a refusé les identifiants.** dans la fenêtre **Réinitialiser le mot de passe administrateur** | L'**Utilisateur** ou le **Mot de passe** est faux. Vérifie-les sur l'onglet **Messagerie** de **Administration › Général**. | | **La messagerie n'est pas encore réglée.** dans la fenêtre **Réinitialiser le mot de passe administrateur** | Aucun serveur de messagerie n'est enregistré : [règle le serveur de mail](../../../administration/general/set-the-mail-server.md). | | **Le service de messagerie est indisponible.** dans la fenêtre **Réinitialiser le mot de passe administrateur** | Astrolabe n'a pas pu envoyer le message. Vérifie **Hôte**, **Port**, **Utilisateur** et **Mot de passe** sur l'onglet **Messagerie** de **Administration › Général** : voir [Réinitialiser le mot de passe administrateur](astrolabe-account/reset-the-password.md). | | **Code invalide ou expiré.** après **Vérifier le code** | Le code est faux ou trop ancien. Clique sur **Fermer**, clique à nouveau sur **Mot de passe oublié ?**, clique sur **Envoyer le code** et utilise le code du nouveau message. | ## Dans Administration › Authentification | Ce que tu vois | Quoi faire | | --- | --- | | **Client ID est requis** sous un champ | Remplis le champ. Chaque champ marqué **(Obligatoire)** doit avoir une valeur. | | **Client Secret est requis** sous un champ | Pareil : écris le Client Secret. | | Le fournisseur refuse la connexion à cause de l'adresse de retour | L'adresse donnée au fournisseur doit être exactement `https:///api/auth//handler/frame`. Copie-la depuis le **?** à côté de **Client ID**. | :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec le nom du fournisseur. ::: --- # FAQ du catalogue Azure DevOps ### À quelle fréquence le catalogue lit-il Azure DevOps ? Toutes les 30 minutes. Le tableau **Collecte du catalogue** de **Administration › Catalogue** montre le **Dernier passage** et le **Prochain passage**. Pour lire tout de suite, clique sur **Lancer la collecte Azure DevOps maintenant**. ### Puis-je n'importer que certains projets ou dépôts ? Oui. Dans **Projet**, écris le nom du projet à la place de `*`. Dans **Dépôt**, écris un préfixe suivi de `*`, par exemple `service-*`. Voir [Importer tes dépôts Azure DevOps](import-repositories.md#-configurer-le-fournisseur-azure-devops). ### Quel fichier Astrolabe cherche-t-il ? Celui qui est écrit dans **Chemin**, dans chaque dépôt : `/catalog-info.yaml` par défaut. ### Quel jeton lit les dépôts ? Celui de l'[intégration Azure DevOps](../../Integration/azure-devops/add-the-integration.md). Le fournisseur n'a pas de champ jeton à lui. ### Où vois-je que quelque chose ne va pas ? Sur la carte **Azure DevOps**, dans le tableau **Collecte du catalogue**, et dans **Administration › Problèmes**. --- # Importer tes dépôts Azure DevOps Astrolabe lit le fichier `catalog-info.yaml` de tes dépôts Azure DevOps et les ajoute au catalogue. Tu le règles une fois, en administrateur. ## Avant de commencer Le catalogue lit Azure DevOps avec le jeton de l'**intégration Azure DevOps**. Ajoute-la d'abord : voir [Ajouter l'intégration Azure DevOps](../../Integration/azure-devops/add-the-integration.md). Tant qu'elle n'est pas ajoutée, la carte **Azure DevOps** de **Administration › Catalogue** est grisée, avec le message **Configurez d'abord l'intégration azure : sans elle, ce fournisseur ne peut rien lire.** ## 🔧 Configurer le fournisseur Azure DevOps 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Catalogue**. L'onglet **Fournisseurs** s'ouvre. 3. Sur la carte **Azure DevOps**, clique sur **Configurer**. 4. Dans **Hôte**, garde l'hôte de ton intégration, par exemple `dev.azure.com`. 5. Remplis les autres champs. | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **Organisation** | L'organisation, comme dans `https://dev.azure.com/`. | `acme` | | **Projet** | Le projet à parcourir. `*` pour tous les projets de l'organisation. | `*` | | **Dépôt** | Les dépôts à parcourir. `*` pour tous, ou un préfixe suivi de `*`. | `*` | | **Chemin** | L'emplacement du fichier descripteur dans chaque dépôt. | `/catalog-info.yaml` | | **Branche** | Facultatif. La branche où lire le descripteur. Vide : la branche par défaut de chaque dépôt. | `main` | 6. Clique sur **Installer**. La fenêtre **Rechargement de la configuration** s'affiche, puis la page revient. :::tip Chaque champ a son ? Survole le **?** à côté d'un champ pour voir ce qu'il attend, avec un exemple. ::: ## ▶️ Lancer la collecte maintenant Le catalogue lit Azure DevOps toutes les 30 minutes. Tu ne veux pas attendre ? 1. Sur **Administration › Catalogue**, repère le tableau **Collecte du catalogue**. 2. Sur la ligne qui commence par **Azure DevOps**, clique sur **Lancer la collecte Azure DevOps maintenant**, dans la colonne des actions. 3. Attends une demi-minute, puis recharge la page. **État** donne le résultat du passage, et **Détail** dit pourquoi quand il a échoué. Tes dépôts sont alors dans **Catalogue**. Cette étape n'a pas été vérifiée sur une instance. ✅ C'est tout ! La suite : [Questions sur le catalogue Azure DevOps](faq.md). --- # Problèmes courants du catalogue Azure DevOps | Ce que tu vois | Quoi faire | | --- | --- | | Sur la carte **Azure DevOps**, le message d'attente de l'intégration (**Configurez d'abord l'intégration azure…**). | Ajoute d'abord l'intégration : [Ajouter l'intégration Azure DevOps](../../Integration/azure-devops/add-the-integration.md). | | Dans **Configurer Azure DevOps**, sous **Hôte** : `L'intégration de cet hôte ne se connecte pas en ce moment : La source a refusé le jeton (401) : vérifiez-le dans Administration › Connexions de l'entreprise. La collecte échouera tant qu'elle ne sera pas corrigée dans Administration › Connexions de l'entreprise.` | Le jeton de l'intégration est faux ou expiré. Remplace-le dans **Administration › Connexions de l'entreprise › Azure DevOps**. | | Dans le tableau **Collecte du catalogue**, **État** dit **En échec**, et **Détail** dit `La source a refusé le jeton (401) : vérifiez-le dans Administration › Connexions de l'entreprise.` | Pareil : remplace le jeton, puis clique sur **Lancer la collecte Azure DevOps maintenant**. | | Dans **Administration › Problèmes** : `refuse les identifiants (203). Le jeton est peut-être faux ou expiré.` ou `refuse les identifiants (302). Le jeton est peut-être faux ou expiré.` | Pareil. Clique sur **Corriger**, remplace le jeton, puis clique sur **Revérifier**. | :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec le message que tu vois. ::: --- # FAQ du catalogue Bitbucket Cloud ### À quelle fréquence le catalogue lit-il Bitbucket Cloud ? Toutes les 30 minutes. Le tableau **Collecte du catalogue** de **Administration › Catalogue** montre le **Dernier passage** et le **Prochain passage**. Pour lire tout de suite, clique sur **Lancer la collecte Bitbucket Cloud maintenant**. ### Puis-je n'importer que certains dépôts ? Oui. Remplis **Expression régulière des clés de projet** pour garder les projets dont la clé correspond, et **Expression régulière des slugs de dépôt** pour garder les dépôts dont le slug correspond. Vide veut dire tous. Voir [Importer tes dépôts Bitbucket Cloud](import-repositories.md#les-autres-champs). ### Quel fichier Astrolabe cherche-t-il ? Celui qui est écrit dans **Chemin du fichier de catalogue**, dans chaque dépôt : `/catalog-info.yaml` par défaut. ### Quel jeton lit les dépôts ? Celui de l'[intégration Bitbucket Cloud](../../Integration/bitbucket-cloud/add-the-integration.md). Le fournisseur n'a pas de champ jeton à lui. ### Où vois-je que quelque chose ne va pas ? Sur la carte **Bitbucket Cloud**, dans le tableau **Collecte du catalogue**, et dans **Administration › Problèmes**. --- # Importer tes dépôts Bitbucket Cloud Astrolabe lit le fichier `catalog-info.yaml` des dépôts de ton espace de travail Bitbucket Cloud et les ajoute au catalogue. Tu le règles une fois, en administrateur. ## Avant de commencer Le catalogue lit Bitbucket Cloud avec le jeton de l'**intégration Bitbucket Cloud**. Ajoute-la d'abord : voir [Ajouter l'intégration Bitbucket Cloud](../../Integration/bitbucket-cloud/add-the-integration.md). Tant qu'elle n'est pas ajoutée, la carte **Bitbucket Cloud** de **Administration › Catalogue** est grisée, avec le message **Configurez d'abord l'intégration bitbucketCloud : sans elle, ce fournisseur ne peut rien lire.** ## 🔧 Configurer le fournisseur Bitbucket Cloud 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Catalogue**. L'onglet **Fournisseurs** s'ouvre. 3. Sur la carte **Bitbucket Cloud**, clique sur **Configurer**. 4. Dans **Espace de travail**, écris ton espace de travail, comme dans `https://bitbucket.org/`. Par exemple `acme`. 5. Clique sur **Installer**. La fenêtre **Rechargement de la configuration** s'affiche, puis la page revient. :::tip Chaque champ a son ? Survole le **?** à côté d'un champ pour voir ce qu'il attend, avec un exemple. ::: ## Les autres champs | Champ | Ce qu'il fait | | --- | --- | | **Chemin du fichier de catalogue** | L'emplacement du fichier descripteur dans chaque dépôt. Par défaut : `/catalog-info.yaml`. | | **Expression régulière des clés de projet** | Seuls les projets dont la clé correspond sont importés, par exemple `^team-.*`. Vide : tous. | | **Expression régulière des slugs de dépôt** | Seuls les dépôts dont le slug correspond sont importés, par exemple `^team-.*`. Vide : tous. | | **Dépôts par page** | Combien de dépôts Astrolabe demande à Bitbucket Cloud à la fois. Vide : la valeur de Bitbucket. | ## ▶️ Lancer la collecte maintenant Le catalogue lit Bitbucket Cloud toutes les 30 minutes. Tu ne veux pas attendre ? 1. Sur **Administration › Catalogue**, repère le tableau **Collecte du catalogue**. 2. Sur la ligne **Bitbucket Cloud**, clique sur **Lancer la collecte Bitbucket Cloud maintenant**, dans la colonne des actions. 3. Attends une demi-minute, puis recharge la page. **État** donne le résultat du passage, et **Détail** dit pourquoi quand il a échoué. Tes dépôts sont alors dans **Catalogue**. Cette étape n'a pas été vérifiée sur une instance. ✅ C'est tout ! La suite : [Questions sur le catalogue Bitbucket Cloud](faq.md). --- # Problèmes courants du catalogue Bitbucket Cloud | Ce que tu vois | Quoi faire | | --- | --- | | Sur la carte **Bitbucket Cloud**, le message d'attente de l'intégration (**Configurez d'abord l'intégration bitbucketCloud…**). | Ajoute d'abord l'intégration : [Ajouter l'intégration Bitbucket Cloud](../../Integration/bitbucket-cloud/add-the-integration.md). | | Dans le tableau **Collecte du catalogue**, **État** dit **En échec**, et **Détail** dit `La source a refusé le jeton (401) : vérifiez-le dans Administration › Connexions de l'entreprise.` | Le jeton de l'intégration est faux ou expiré. Remplace-le dans **Administration › Connexions de l'entreprise › Bitbucket Cloud**, puis clique sur **Lancer la collecte Bitbucket Cloud maintenant**. | :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec le message que tu vois. ::: --- # FAQ du catalogue Bitbucket Server ### À quelle fréquence le catalogue lit-il Bitbucket Server ? Toutes les 30 minutes. Le tableau **Collecte du catalogue** de **Administration › Catalogue** montre **Dernier passage** et **Prochain passage**. Pour le lire tout de suite, clique sur **Lancer la collecte Bitbucket Server maintenant**. ### Puis-je n'importer que certains dépôts ? Oui. Remplis **Expression régulière des clés de projet** pour garder les projets dont la clé correspond, et **Expression régulière des slugs de dépôt** pour garder les dépôts dont le slug correspond. Vide veut dire tous. Voir [Importer tes dépôts Bitbucket Server](import-repositories.md#les-autres-champs). ### Quel fichier Astrolabe cherche-t-il ? `catalog-info.yaml` à la racine de chaque dépôt. **Chemin du fichier de catalogue** change l'endroit où il cherche. ### Les dépôts archivés sont-ils importés ? Oui, sauf si tu coches **Ignorer les dépôts archivés**. ### Quel jeton lit les dépôts ? Celui de l'[intégration Bitbucket Server](../../Integration/bitbucket-server/add-the-integration.md). --- # Importer tes dépôts Bitbucket Server Astrolabe lit le fichier `catalog-info.yaml` de tes dépôts Bitbucket Server et les ajoute au catalogue. Tu le règles une fois, en administrateur. ## Avant de commencer Le catalogue lit Bitbucket Server avec le jeton de l'**intégration Bitbucket Server**. Ajoute-la d'abord : voir [Ajouter l'intégration Bitbucket Server](../../Integration/bitbucket-server/add-the-integration.md). Tant qu'elle n'est pas ajoutée, la carte **Bitbucket Server** de **Administration › Catalogue** est grisée, avec **Configurez d'abord l'intégration bitbucketServer : sans elle, ce fournisseur ne peut rien lire.** ## 🔧 Configurer le fournisseur Bitbucket Server 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Catalogue**. L'onglet **Fournisseurs** s'ouvre. 3. Sur la carte **Bitbucket Server**, clique sur **Configurer**. 4. Dans **Hôte**, choisis ton serveur dans la liste. C'est l'hôte de ton intégration. 5. Clique sur **Installer**. Une fenêtre **Reloading configuration** dit **Please wait while the instance is reloading...**. Puis la page revient. :::tip Chaque champ a son ? Passe la souris sur le **?** à côté d'un champ : il dit ce qu'il attend, avec un exemple. ::: ## Les autres champs | Champ | À quoi il sert | | --- | --- | | **Chemin du fichier de catalogue** | L'endroit du fichier descripteur dans chaque dépôt. Par défaut : `/catalog-info.yaml`. | | **Expression régulière des clés de projet** | Seuls les projets dont la clé correspond sont importés, par exemple `^team-.*`. Vide : tous. | | **Expression régulière des slugs de dépôt** | Seuls les dépôts dont le slug correspond sont importés, par exemple `^team-.*`. Vide : tous. | | **Ignorer les dépôts archivés** | Laisse de côté les dépôts archivés. | | **Vérifier que les fichiers existent** | Vérifie que le fichier descripteur existe avant de l'enregistrer. | ## ▶️ Lancer la collecte maintenant Le catalogue relit Bitbucket Server toutes les 30 minutes. Tu ne veux pas attendre ? 1. Sur **Administration › Catalogue**, trouve le tableau **Collecte du catalogue**. 2. Sur la ligne **Bitbucket Server**, clique sur **Lancer la collecte Bitbucket Server maintenant**, dans la colonne **Actions**. Un message dit **Collecte lancée**. 3. Attends une minute, puis recharge la page. **État** montre le résultat, et **Détail** dit pourquoi quand la collecte a échoué. Tes dépôts sont alors dans **Catalogue**. Cette étape n'a pas été vérifiée sur une instance. ✅ C'est tout ! La suite : [Questions sur le catalogue Bitbucket Server](faq.md). --- # Problèmes courants avec le catalogue Bitbucket Server | Ce que tu vois | Quoi faire | | --- | --- | | Sur la carte **Bitbucket Server**, **Configurez d'abord l'intégration bitbucketServer : sans elle, ce fournisseur ne peut rien lire.** | Ajoute d'abord l'intégration : [Ajouter l'intégration Bitbucket Server](../../Integration/bitbucket-server/add-the-integration.md). | | Dans **Configurer Bitbucket Server**, sous **Hôte**, `L'intégration de cet hôte ne se connecte pas en ce moment : Aucun serveur ne répond à ce nom d'hôte : vérifiez son orthographe dans l'intégration (hôte et URL). S'il est juste, prévenez l'administrateur d'Astrolabe de votre entreprise. La collecte échouera tant qu'elle ne sera pas corrigée dans Administration › Connexions de l'entreprise.` | Corrige l'hôte de l'intégration dans **Administration › Connexions de l'entreprise › Bitbucket Server**. | | Dans le tableau **Collecte du catalogue**, **État** dit **En échec**, et **Détail** dit `Aucun serveur ne répond à ce nom d'hôte : vérifiez son orthographe dans l'intégration (hôte et URL). S'il est juste, prévenez l'administrateur d'Astrolabe de votre entreprise.` | Pareil : corrige l'intégration, puis clique sur **Lancer la collecte Bitbucket Server maintenant**. | :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec le message que tu vois. ::: --- # FAQ du catalogue GitHub ### Si j'écris une organisation, tous ses dépôts sont-ils importés ? Chaque dépôt qui a un fichier `catalog-info.yaml`, et que tes filtres laissent passer. Un dépôt sans le fichier n'ajoute rien. ### Les utilisateurs et les équipes de mon organisation sont-ils importés ? Oui, quand **Importer les membres et équipes GitHub** est coché sur la carte **GitHub**. Voir [Importer tes dépôts GitHub](import-repositories.md#-membres-et-équipes). ### Puis-je importer plusieurs organisations ? La carte **GitHub** prend une seule **Organisation**. Pour un composant d'une autre organisation, utilise **Enregistrer un composant existant** dans **Catalogue** : voir [Afficher l'onglet GitHub](../../Integration/github/show-the-tab.md#3--mettre-le-composant-au-catalogue). ### Comment ne lire que quelques dépôts ? Remplis **Expression régulière des dépôts** avec une expression qui correspond à leurs noms, par exemple `^(shop-api|shop-web)$`. ### À quelle fréquence le catalogue lit-il GitHub ? Toutes les 30 minutes. Pour le lire maintenant, clique sur **Lancer la collecte GitHub maintenant** dans **Administration › Catalogue**. ### Si je laisse Branch vide, toutes les branches sont-elles lues ? Non. Chaque dépôt est lu sur sa branche par défaut, et seulement sur elle. ### L'onglet GitHub apparaît-il sur les composants importés ? Oui, quand leur `catalog-info.yaml` porte l'annotation `github.com/project-slug`. Voir [Afficher l'onglet GitHub](../../Integration/github/show-the-tab.md). --- # Importer tes dépôts GitHub Astrolabe lit le fichier `catalog-info.yaml` des dépôts d'une organisation GitHub et les ajoute au catalogue. Tu le règles une fois, en administrateur. Ensuite, le catalogue se remplit tout seul toutes les 30 minutes. ## Avant de commencer Le catalogue lit GitHub avec le jeton de l'**intégration GitHub**. Ajoute-la d'abord : voir [GitHub › Ajouter l'intégration GitHub](../../Integration/github/add-the-integration.md). Le jeton a besoin des droits **`repo`**, **`read:org`** et **`read:user`**. ## 🔧 Régler le fournisseur GitHub 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Catalogue**. L'onglet **Fournisseurs** s'ouvre. 3. Sur la carte **GitHub**, clique sur **Configurer**. 4. Dans **Organisation**, écris l'organisation à lire, comme dans `https://github.com/`, par exemple `acme`. 5. Laisse **Hôte** sur `github.com`. 6. En bas du formulaire, coche **Importer les membres et équipes GitHub**. 7. Clique sur **Installer**. La fenêtre de rechargement s'affiche le temps que l'instance redémarre. Puis la page revient. :::tip Chaque champ a son ? Passe sur le **?** à côté d'un champ pour voir ce qu'il attend, avec un exemple. ::: ## 👥 Membres et équipes **Importer les membres et équipes GitHub** importe aussi les membres et les équipes de l'organisation. Ils peuvent alors se connecter avec GitHub et posséder des composants : `owner: group:github/<équipe>`. Passe sur le **?** à côté pour le lire. Il demande l'**Organisation** ci-dessus : sans elle, le formulaire refuse avec `Organisation est requis`. Le jeton a besoin des droits **`read:org`** et **`read:user`**. Pour les voir, clique sur **Catalogue** dans la barre latérale, puis sur l'onglet **Users** ou **Groups**. Si la case n'est pas cochée, seuls les dépôts sont importés : personne ne peut se connecter avec GitHub, et le catalogue ne contient aucun utilisateur GitHub. Pour le changer plus tard, clique de nouveau sur **Configurer** sur la carte **GitHub**, coche ou décoche la case, puis clique sur **Mettre à jour**. ## Les autres champs | Champ | Ce qu'il fait | | --- | --- | | **ID de l'application GitHub** | Vide : Astrolabe lit avec le jeton. | | **Hôte** | `github.com`. Pour GitHub Enterprise, son nom de domaine, écrit exactement comme dans l'intégration GitHub. | | **Chemin du fichier de catalogue** | Où se trouve le fichier dans chaque dépôt. Vide : `/catalog-info.yaml`. Jokers permis : `/**/catalog-info.yaml`. | | **Branche** | La branche à lire. Vide : la branche par défaut de chaque dépôt. | | **Expression régulière des dépôts** | Seulement les dépôts dont le nom correspond, par exemple `^team-.*`. | | **Inclure les forks** | Coché : les dépôts forkés sont importés aussi. | | **Inclure les dépôts archivés** | Coché : les dépôts archivés sont importés aussi. | | **Sujets à inclure** | Clique sur **Ajouter Sujets à inclure** et tape un topic : seulement les dépôts qui portent l'un de ces topics. | | **Sujets à exclure** | Clique sur **Ajouter Sujets à exclure** et tape un topic : les dépôts qui le portent sont laissés de côté. | | **Visibilité** | Clique sur **Ajouter Visibilité** : seulement les dépôts de ces visibilités (public, private, internal). Vide : tous. | | **Vérifier que les fichiers existent** | Coché : vérifie que le fichier existe avant de l'ajouter. Plus lent, mais pas d'erreur pour un dépôt qui n'en a pas. | | **Dépôts par page** | Combien de dépôts sont lus par requête. Par défaut : 25. | ## ▶️ Lancer la collecte maintenant Tu ne veux pas attendre 30 minutes ? 1. Sur **Administration › Catalogue**, trouve le tableau **Collecte du catalogue**. 2. Sur la ligne **GitHub**, clique sur **Lancer la collecte GitHub maintenant**, dans la colonne **Actions**. 3. Recharge la page. **État** indique **Terminé**. **Détail** dit combien de fichiers ont été trouvés, par exemple **3 fichiers de catalogue trouvés**. Tes composants sont maintenant dans **Catalogue**. ✅ C'est tout ! La suite : [afficher l'onglet GitHub sur un composant](../../Integration/github/show-the-tab.md). --- # Problèmes courants avec le catalogue GitHub | Ce que tu vois | Que faire | | --- | --- | | Sous **Organisation** : `Organisation est requis` | Écris l'organisation, comme dans `https://github.com/`. | | Dans le tableau **Collecte du catalogue**, **État** indique **Terminé** et **Détail** dit `Rien trouvé : aucun catalog-info.yaml sur la branche lue, ou le jeton n'est pas membre des projets.` | Aucun dépôt n'a passé les filtres. Vérifie **Expression régulière des dépôts**, **Branche** et **Chemin du fichier de catalogue**, et que le compte du jeton voit les dépôts. | | **État** indique **En échec** et **Détail** dit `La collecte a échoué pour une raison qu'Astrolabe n'a pas su identifier. Relancez-la ; si elle échoue encore, prévenez l'administrateur d'Astrolabe de votre entreprise.` | Avec **Importer les membres et équipes GitHub** coché, il manque le plus souvent le droit **`read:user`** au jeton : dans GitHub, ouvre le jeton, coche **`read:user`** et clique sur **Update token** (le jeton reste le même, rien à recoller). Sinon, vérifie que **Organisation** est écrite comme dans `https://github.com/`, et que le compte du jeton la voit. Puis clique sur **Lancer la collecte GitHub maintenant**. | | **Administration › Problèmes** liste `Collecte du catalogue`, `La dernière collecte a échoué. Relance-la depuis l'écran Catalogue.` | Clique sur **Corriger** : il mène à **Administration › Catalogue**. Corrige le fournisseur, puis relance la collecte. | | **État** indique **Inconnu** et **Détail** dit `Passé avant le redémarrage d'Astrolabe : son résultat n'est pas connu. Lancez-le maintenant pour le voir.` | Clique sur **Lancer la collecte GitHub maintenant**. | | Tu ne vois que **administrator** dans **Catalogue**, sous **Users** | **Importer les membres et équipes GitHub** n'est pas coché. Dans **Administration › Catalogue**, clique sur **Configurer** sur la carte **GitHub**, coche **Importer les membres et équipes GitHub** (avec **Organisation** remplie), clique sur **Mettre à jour**, puis sur **Lancer la collecte GitHub maintenant**. | | Une personne qui se connecte avec GitHub lit `Your GitHub account is not in the Astrolabe catalog yet. Ask your Astrolabe administrator to tick « Import GitHub members and teams » in Administration › Catalog › GitHub.` | Même correction : coche **Importer les membres et équipes GitHub**, comme ci-dessus. | | Un nouveau dépôt ou un `catalog-info.yaml` modifié n'apparaît pas | Le catalogue relit GitHub toutes les 30 minutes. Clique sur **Lancer la collecte GitHub maintenant**. | :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec le nom du dépôt. ::: --- # Questions sur les propriétaires GitLab ### Comment je fais pour que `owner` référence un vrai groupe GitLab qui existe ? [Importe tes groupes GitLab](import-groups.md), puis écris `owner: group:gitlab/` dans le `catalog-info.yaml`. Le préfixe `group:gitlab/` est obligatoire. Avec `owner: paiement-api` seul, Astrolabe cherche parmi ses propres groupes et ne trouve rien. ### Si je renseigne un groupe précis, je n'importe que celui-là ? Non. Ce groupe **et tous ses sous-groupes**, à tous les niveaux. ### Mon entreprise a plusieurs groupes racines, sans parent commun. Comment je les ai tous ? Laisse **Groupe** vide : sur un GitLab auto-hébergé, tous les groupes entrent. Sur gitlab.com, un groupe est obligatoire : là, tu importes un seul groupe racine. ### Le groupe est sous plusieurs dossiers. J'écris comment ? Un séparateur par niveau. - **Groupe** renseigné à `acme` : `acme/paiement/api/v2` → `owner: group:gitlab/paiement-api-v2` - **Groupe** vide : `acme/paiement/api/v2` → `owner: group:gitlab/acme.paiement.api.v2` 63 caractères au plus. Un doute ? [Copie le nom depuis le catalogue](give-an-owner.md#-trouver-le-nom-exact). ### Il se passe quoi si je référence un groupe que je n'ai pas importé ? Le composant est importé quand même. Sa page affiche un avertissement : `Cette entité a des relations vers d'autres entités qui ne se trouvent pas dans le catalogue.` `Les entités non trouvées sont : group:gitlab/does-not-exist` **PROPRIÉTAIRE** affiche `gitlab/does-not-exist`. Le lien mène à **Warning: Entity not found**. Personne ne possède le composant : il ne compte pour aucune équipe. **Administration › Problèmes** le liste aussi, dans un bloc **Catalogue**, avec tous les composants qui nomment le même groupe. Voir [Corriger un composant dont le propriétaire est introuvable](../../../../administration/problems/fix-a-missing-owner.md). ### Pourquoi Catalogue › Groups affiche `api` et pas `paiement-api` ? La liste montre le nom GitLab du groupe. `owner` a besoin du nom du catalogue, qui porte ses parents. Ouvre le groupe et copie son **Entity Ref**. ### Le catalogue relit GitLab tous les combien ? Toutes les 30 minutes. Pour le relire tout de suite, clique sur le bouton lecture (**Lancer la collecte GitLab maintenant**) dans le tableau **Collecte du catalogue** de **Administration › Catalogue**. ### Pourquoi l'écran dit que les équipes seront renommées quand je change Groupe ? Parce que le nom d'une équipe importée vient de son chemin **sous** le **Groupe**. Avec `acme`, `acme/paiement/api` est `paiement-api` ; avec `acme/paiement`, c'est `api`. Le propriétaire de tes composants doit suivre. Voir [Changer le groupe plus tard](import-projects.md#changer-le-groupe-plus-tard). ### Si je laisse Branches vide, est-ce qu'il lit toutes les branches ? Non. Chaque projet est lu sur sa branche par défaut, et seulement sur elle. Pour lire plusieurs branches, liste-les dans **Branches** : par exemple `master` et `backstage` si tes projets gardent leur `catalog-info.yaml` sur l'une ou l'autre. Astrolabe lit chaque projet sur chaque branche de la liste. --- # Donner à un composant son propriétaire GitLab Chaque composant nomme son propriétaire dans son `catalog-info.yaml`. Avec tes groupes GitLab importés, ce peut être un vrai groupe GitLab. Il te faut d'abord [l'import de tes groupes GitLab](import-groups.md). ## ✏️ Écrire le propriétaire Dans le `catalog-info.yaml` du composant, dans GitLab, écris le groupe dans `spec.owner`, **avec** le préfixe `group:gitlab/` : ```yaml apiVersion: backstage.io/v1alpha1 kind: Component metadata: name: payment-api spec: type: service lifecycle: production owner: group:gitlab/paiement-api ``` À la collecte suivante, la page du composant montre le groupe sous **PROPRIÉTAIRE**, dans **À propos**. ## Construire le nom du groupe Un séparateur par niveau du chemin GitLab. Lequel dépend du champ **Groupe** du fournisseur. | Champ Groupe | Groupe GitLab | À écrire | | --- | --- | --- | | `acme` | `acme/paiement/api` | `group:gitlab/paiement-api` | | `acme` | `acme/paiement/api/v2` | `group:gitlab/paiement-api-v2` | | Vide | `acme/paiement/api` | `group:gitlab/acme.paiement.api` | | Vide | `acme/paiement/api/v2` | `group:gitlab/acme.paiement.api.v2` | Avec un groupe renseigné, le nom part **sous** lui, avec un `-` par niveau. Avec **Groupe** vide, c'est le chemin complet, avec un `.` par niveau. :::warning Avec Groupe vide, un chemin qui contient un « . » est écarté Un `.` ne doit jamais remplacer autre chose qu'un `/`. Sinon deux groupes différents pourraient porter le même nom, et l'un prendrait les composants de l'autre. ::: ## 🔎 Trouver le nom exact Un doute ? Copie-le depuis le catalogue. 1. Ouvre **Catalogue**, puis l'onglet **Groups**. 2. Clique sur le groupe. La liste montre son nom GitLab (`api`), pas le nom à écrire. 3. Dans la carte du groupe, copie la ligne au-dessus de **Entity Ref**, par exemple `group:gitlab/paiement-api`. 4. Colle-la telle quelle dans `owner`. La même page montre le **Parent Group**, les composants que le groupe possède (**Ownership**) et ses membres. ✅ C'est tout ! Quelque chose ne colle pas ? Lis les [questions fréquentes](faq.md) et les [problèmes courants](troubleshooting.md). --- # Importer tes groupes GitLab Tes groupes GitLab peuvent entrer dans le catalogue, avec leurs membres. Un composant peut alors nommer un vrai groupe GitLab comme propriétaire. ## 👥 Allumer l'import 1. Ouvre **Administration › Catalogue**, puis **Configurer** sur la carte **GitLab**. 2. Coche **Importer les groupes GitLab et leurs membres**. 3. Clique sur **Installer**, ou **Mettre à jour** si le fournisseur était déjà installé. 4. Dans le tableau **Collecte du catalogue**, sur la ligne **GitLab (groupes et utilisateurs)**, clique sur le bouton lecture (**Lancer la collecte des groupes et utilisateurs GitLab maintenant**). 5. Recharge la page. **État** indique **Terminé**. **Détail** dit ce qui est entré, par exemple **3 groupes et 1 utilisateur importés**. Tes groupes sont dans **Catalogue**, onglet **Groups**. ## Quels groupes entrent Ça dépend du champ **Groupe**. | Groupe | Groupes importés | | --- | --- | | Un groupe, par exemple `acme` | `acme` et **tous** ses sous-groupes, à tous les niveaux | | Vide | **Tous** les groupes de ton GitLab, tous les groupes racines compris. GitLab auto-hébergé seulement. | D'autres champs du même formulaire resserrent ou élargissent l'import : | Champ | Ce qu'il fait | | --- | --- | | **Expression régulière des groupes** | Seulement les groupes dont le chemin complet correspond, par exemple `^acme/team-.*`. Vide : tous. | | **Expression régulière des utilisateurs** | Seulement les utilisateurs dont l'identifiant correspond. Vide : tous. | | **Limiter les utilisateurs à un groupe** | Seulement les utilisateurs de ce chemin de groupe, par exemple `acme/staff`. | | **Autoriser les appartenances héritées** | Compte aussi comme membre d'un sous-groupe la personne qui appartient à un groupe parent. | | **Inclure les utilisateurs sans licence** | Importe aussi les utilisateurs qui n'occupent pas de licence payante. | | **Importer les relations** | Relie dans le catalogue chaque groupe à son parent et à ses membres. | :::tip Plusieurs groupes racines ? Tes équipes sont réparties sur plusieurs groupes racines, sans parent commun ? Laisse **Groupe** vide : ils entrent tous. ::: :::warning Sur gitlab.com, Groupe est obligatoire Sans groupe, ce seraient tous les groupes publics de gitlab.com. Astrolabe refuse, sous le champ : `Sur gitlab.com, importer les groupes GitLab demande un Groupe : sans lui, ce serait tous les groupes publics de gitlab.com. Saisissez votre groupe de premier niveau (par exemple acme) ; ses sous-groupes viennent avec.` ::: ## Deux règles de Backstage :::warning Un groupe sans membre direct n'est pas importé Un groupe dont les personnes sont seulement membres de ses sous-groupes, ou de son parent, n'apparaît pas. ::: :::warning Un nom fait 63 caractères au plus Un chemin de groupe plus long est refusé. Le groupe manque au catalogue. ::: ✅ C'est tout ! Maintenant, [donne à chaque composant son propriétaire](give-an-owner.md). --- # Importer tes projets GitLab Astrolabe lit le fichier `catalog-info.yaml` de tes projets GitLab et les ajoute au catalogue. Tu le règles une fois, en administrateur. Ensuite, le catalogue se remplit tout seul toutes les 30 minutes. ## Avant de commencer Le catalogue lit GitLab avec le jeton de l'**intégration GitLab**. Ajoute-la d'abord : voir [GitLab › Ajouter l'intégration GitLab](../../Integration/gitlab/add-the-integration.md). Le jeton a besoin des droits **`read_api`** et **`read_repository`**. ## 🔧 Régler le fournisseur GitLab 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Catalogue**. L'onglet **Fournisseurs** s'ouvre. 3. Sur la carte **GitLab**, clique sur **Configurer**. 4. Dans **Hôte**, choisis ton GitLab dans la liste. C'est l'hôte de ton intégration. 5. Dans **Groupe**, écris le groupe à lire, comme dans `https:///`. Ses sous-groupes viennent avec. :::tip Ce champ fait aussi le nom de tes équipes Les équipes importées sont nommées par leur chemin **sous** ce groupe : avec `acme`, le groupe `acme/paiement/api` devient `paiement-api`. C'est ce nom que les composants écrivent dans `owner`. Choisis donc le groupe le plus haut de ton entreprise. Voir [Donner son propriétaire GitLab à un composant](give-an-owner.md). ::: 6. Clique sur **Installer**. La fenêtre de rechargement s'affiche le temps que l'instance redémarre. Puis la page revient. :::tip Chaque champ a son ? Passe sur le **?** à côté d'un champ pour voir ce qu'il attend, avec un exemple. ::: ## ✏️ Changer le groupe plus tard {#changer-le-groupe-plus-tard} 1. Ouvre **Administration › Catalogue**, puis **Configurer** sur la carte **GitLab**. 2. Dans **Groupe**, tape le nouveau groupe. Dès qu'il diffère de celui qui est enregistré, un avertissement s'affiche sous le champ, par exemple avec `acme` enregistré et `acme/paiement` tapé : `Les équipes déjà importées seront renommées, et le propriétaire (owner) des composants qui les citent ne sera plus trouvé tant que vous ne l'aurez pas mis à jour. Exemple : acme/paiement/api s'appelait paiement-api et deviendra api.` 3. Clique sur **Mettre à jour**. 4. Dans chaque `catalog-info.yaml`, écris le nouveau nom de l'équipe dans `owner`. Voir [Donner son propriétaire GitLab à un composant](give-an-owner.md). Retape le groupe enregistré : l'avertissement disparaît. ## Les autres champs | Champ | Ce qu'il fait | | --- | --- | | **Uniquement les projets dont je suis membre** | Seulement les projets de l'utilisateur du jeton. Conseillé sur gitlab.com. | | **Branches** | Les branches à lire, une par ligne : clique sur **Ajouter Branches**, tape `master`, clique encore sur **Ajouter Branches**, tape `backstage`. Vide : la branche par défaut de chaque projet. Pas de `/` dans un nom. **Retirer** enlève une branche. | | **Fichier de catalogue** | Le fichier à lire à la racine de chaque projet. Par défaut : `catalog-info.yaml`. | | **Expression régulière des projets** | Seulement les projets dont le nom correspond, par exemple `^team-.*`. | | **Ignorer les dépôts issus d'un fork** | Laisse de côté les projets forkés. | | **Importer les groupes GitLab et leurs membres** | Importe aussi tes groupes. Voir [Importer tes groupes GitLab](import-groups.md). | | **Dépôts exclus** | Les projets à laisser de côté, un chemin par ligne, par exemple `acme/sandbox`. | | **Sujets** | Seulement les projets qui portent l'un de ces sujets GitLab, un par ligne. | | **Inclure les dépôts archivés** | Importe aussi les projets archivés. | | **Branche de repli** | La branche à lire quand le fichier de catalogue n'est pas sur la branche par défaut d'un projet. | | **Utiliser la recherche GitLab** | Trouve les projets par la recherche de GitLab au lieu de lister tous ceux du périmètre. | ## ▶️ Lancer la collecte maintenant Tu ne veux pas attendre 30 minutes ? 1. Sur **Administration › Catalogue**, trouve le tableau **Collecte du catalogue**. 2. Sur la ligne **GitLab**, dans la colonne **Actions**, clique sur le bouton lecture (**Lancer la collecte GitLab maintenant** ; quand tu importes aussi les groupes, c'est **Lancer la collecte des projets GitLab maintenant**). 3. Ne recharge pas la page. **État** passe à **En cours**, puis à **Terminé**. **Détail** dit combien de fichiers ont été trouvés, par exemple **3 fichiers de catalogue trouvés**. Le play de la ligne **GitLab** ne lance que cette ligne : voir [Lancer une collecte du catalogue maintenant](../../../../administration/catalog/run-a-collection.md). La ligne **GitLab (groupes et utilisateurs)**, juste au-dessus, apparaît quand tu as coché **Importer les groupes GitLab et leurs membres**. Son **Détail** dit ce qui est entré, par exemple **3 groupes et 1 utilisateur importés**. Tes composants sont maintenant dans **Catalogue**. ✅ C'est tout ! Pour donner à chaque composant un vrai groupe GitLab comme propriétaire, lis [Importer tes groupes GitLab](import-groups.md). --- # Problèmes courants avec le catalogue GitLab | Ce que tu vois | Que faire | | --- | --- | | Sous **Groupe** : `Sur gitlab.com, importer les groupes GitLab demande un Groupe : sans lui, ce serait tous les groupes publics de gitlab.com. Saisissez votre groupe de premier niveau (par exemple acme) ; ses sous-groupes viennent avec.` | Sur gitlab.com, écris ton groupe racine. | | Sur un composant : `Cette entité a des relations vers d'autres entités qui ne se trouvent pas dans le catalogue.` | Le groupe d'`owner` n'est pas au catalogue. Vérifie le préfixe `group:gitlab/`, puis [copie le nom depuis le catalogue](give-an-owner.md#-trouver-le-nom-exact). | | Un groupe GitLab manque dans **Catalogue › Groups** | Donne-lui un membre direct dans GitLab. Vérifie qu'il est sous **Groupe**, que son nom fait 63 caractères au plus et, avec **Groupe** vide, que son chemin ne contient pas de `.`. Puis relance la collecte. | | La carte **GitLab** dit `Passé avant le redémarrage d'Astrolabe : son résultat n'est pas connu. Lancez-le maintenant pour le voir.` | Clique sur le bouton lecture (**Lancer la collecte GitLab maintenant**) dans le tableau **Collecte du catalogue**. | | Un nouveau projet ou un `owner` modifié n'apparaît pas | Le catalogue relit GitLab toutes les 30 minutes. Clique sur le bouton lecture (**Lancer la collecte GitLab maintenant**). | | La carte **GitLab** dit `Configurez d'abord l'intégration GitLab : sans elle, ce fournisseur ne peut rien lire.` | Ajoute d'abord l'intégration GitLab : [GitLab › Ajouter l'intégration GitLab](../../Integration/gitlab/add-the-integration.md). | | Dans le tableau **Collecte du catalogue**, **Détail** dit `La source ne connaît pas ce que les réglages nomment (404) : vérifiez le Groupe, l'Organisation ou le Projet dans les réglages du fournisseur.` | Le groupe n'existe pas, ou il est mal écrit. Dans **Groupe**, écris-le comme dans `https:///`. | | Dans **Administration › Problèmes**, un bloc **Catalogue** : `2 composants nomment un propriétaire absent du catalogue : group:gitlab/does-not-exist.` | Le groupe `owner` n'est pas dans le catalogue. [Copie le nom depuis le catalogue](give-an-owner.md#-trouver-le-nom-exact), puis vois [Corriger un composant dont le propriétaire est introuvable](../../../../administration/problems/fix-a-missing-owner.md). | :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec le nom du composant ou du groupe. ::: --- # FAQ Microsoft Entra ID ## De quelles permissions l'inscription d'application a-t-elle besoin ? Les permissions d'application **`User.Read.All`** et **`GroupMember.Read.All`**, avec le consentement administrateur. Astrolabe ne fait que lire. ## Est-ce la même inscription d'application que la connexion Microsoft ? Le formulaire de la connexion demande les mêmes trois valeurs (tenant, client ID, secret client). Voir [Connexion Microsoft](../../Authentication/microsoft/set-up-sign-in.md). ## Comment changer le secret ? Dans **Administration › Catalogue**, clique sur **Configurer** sur la carte **Microsoft Graph**. À côté de **Secret client**, clique sur **Remplacer**, colle la nouvelle Value, puis clique sur **Mettre à jour**. ## Où vois-je qu'une collecte a échoué ? Dans **Administration › Problèmes**, sous **Collecte du catalogue**, et dans le tableau **Collecte du catalogue** de **Administration › Catalogue**. --- # Importer tes utilisateurs et groupes Entra ID Astrolabe lit les utilisateurs et les groupes de ton Microsoft Entra ID avec une inscription d'application, et les ajoute au catalogue. Tu le mets en place une fois, en administrateur. *La collecte elle-même n'a pas été vérifiée avec une inscription d'application autorisée à lire l'annuaire. Cette étape n'a pas été vérifiée sur une instance.* ## Avant de commencer Il te faut une inscription d'application dans Microsoft Entra ID, avec : - les **permissions d'application** `User.Read.All` et `GroupMember.Read.All`, avec le consentement administrateur ; - un secret client. Garde trois valeurs : son **Directory (tenant) ID** et son **Application (client) ID**, sur sa page Overview, et la **Value** du secret client (*Certificates & secrets*). ## 🔧 Configurer le fournisseur Microsoft Graph 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Catalogue**. L'onglet **Fournisseurs** s'ouvre. 3. Sur la carte **Microsoft Graph**, clique sur **Configurer**. 4. Remplis le formulaire. Chaque **?** à côté d'un libellé explique le champ. | Champ | Quoi écrire | | --- | --- | | **URL de la cible** | Laisse `https://graph.microsoft.com/v1.0`, sauf si tu utilises un cloud national | | **URL de l'autorité** | Laisse `https://login.microsoftonline.com`, sauf si tu utilises un cloud national | | **ID du locataire** | Le Directory (tenant) ID | | **ID client** | L'Application (client) ID | | **Secret client** | La Value du secret client | 5. Clique sur **Installer**. Une fenêtre dit **Rechargement de la configuration**, puis la page revient. :::tip Remplis les trois valeurs avant d'installer **ID du locataire**, **ID client** et **Secret client** sont nécessaires au démarrage du fournisseur. ::: ## 🔍 N'importer que certains utilisateurs et groupes Le même formulaire a deux sections facultatives. Laisse-les vides pour tout importer. | Champ | Ce qu'il fait | Exemple | | --- | --- | --- | | **Membres de groupe › Filtre des membres de groupe** | Seulement les utilisateurs membres des groupes qui correspondent à ce filtre OData | `displayName eq 'Engineering'` | | **Membres de groupe › Recherche des membres de groupe** | La même chose, sous forme d'expression de recherche | `"displayName:Engineering"` | | **Groupes › Filtre des groupes** | Seulement les groupes qui correspondent à ce filtre OData | `securityEnabled eq true` | | **Groupes › Recherche des groupes** | Seulement les groupes qui correspondent à cette recherche | `"displayName:team"` | | **Groupes › Propriétés de groupe à développer** | Des propriétés de groupe supplémentaires à récupérer | `member` | | **Groupes › Champs de groupe à lire** | Les propriétés de groupe à lire : clique sur **Ajouter Champs de groupe à lire**, une par entrée | `id`, `displayName`, `description` | ## ▶️ Lancer la collecte maintenant Tu ne veux pas attendre le prochain passage ? 1. Dans **Administration › Catalogue**, trouve le tableau **Collecte du catalogue**. 2. Sur la ligne **Microsoft Graph · default**, clique sur **Lancer la collecte Microsoft Graph maintenant** dans la colonne **Actions**. 3. Recharge la page. **État** dit comment ça s'est passé et **Détail** dit pourquoi quand ça a échoué. Tes utilisateurs et tes groupes sont alors dans **Catalogue**. ✅ C'est tout ! La suite : [Problèmes courants](troubleshooting.md). --- # Problèmes courants avec le catalogue Microsoft Entra ID | Ce que tu vois | Quoi faire | | --- | --- | | Dans le tableau **Collecte du catalogue**, **État** `En échec` et **Détail** `La collecte a échoué pour une raison qu'Astrolabe n'a pas su identifier. Relancez-la ; si elle échoue encore, prévenez l'administrateur d'Astrolabe de votre entreprise.` | Relance-la avec **Lancer la collecte Microsoft Graph maintenant**. Si elle échoue encore, vérifie dans Microsoft Entra ID que l'inscription d'application a les permissions d'application `User.Read.All` et `GroupMember.Read.All`, avec le consentement administrateur, et que le secret client n'a pas expiré. | | **État** `Inconnu` et **Détail** `Passé avant le redémarrage d'Astrolabe : son résultat n'est pas connu. Lancez-le maintenant pour le voir.` | Clique sur **Lancer la collecte Microsoft Graph maintenant**. | | La carte **Microsoft Graph** dit `Non démarré : Astrolabe a refusé ses réglages au démarrage. Vérifiez son hôte et son intégration ; s'ils semblent justes, prévenez l'administrateur d'Astrolabe de votre entreprise.` | Clique sur **Configurer** et vérifie **ID du locataire**, **ID client** et **Secret client** : les trois doivent être remplis. | :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec le message que tu vois. ::: --- # Ajouter la carte Applications à ton tableau de bord La carte **Applications** liste les applications Argo CD des composants du catalogue, sur ton **Tableau de bord**. ## Avant de commencer L'intégration Argo CD est ajoutée ([Ajouter l'intégration](add-the-integration.md)). Tant qu'elle ne l'est pas, `argocd` n'est pas dans la liste **Source** de **Ajouter une carte**. ## Ce que la carte affiche, et pour qui Une ligne par application : **Clé**, **Espace de noms**, **Ressource**, **Révision cible**, **Révision**, **Santé**, **Synchronisation**, **Dernière synchronisation**, **Date**. **Les applications nommées par un composant du catalogue** avec `argocd/app-name`, quel que soit son propriétaire. Les applications qu'aucun composant ne nomme n'y sont pas. Deux colonnes de plus, **Owner** et **Mine**, disent qui possède le composant et s'il est à toi (**À moi** ou **Autres**) : pour ne garder que tes applications, filtre sur **Mine** et enregistre le filtre avec la carte, voir [Ne garder que tes lignes](../../../../developer-dashboard/my-dashboard/change-or-remove-a-card.md#-ne-garder-que-tes-lignes). *Cette carte n'a pas été vérifiée sur une instance : aucun Argo CD n'était connecté.* ## ➕ Ajouter la carte 1. Dans la barre latérale, clique sur **Tableau de bord**, puis sur l'onglet du tableau voulu. 2. Clique sur **Ajouter une carte**, en haut de la page. 3. Dans **Ajouter une carte**, choisis la **Source** `argocd` et la **Clé** `Applications`. 4. Saisis un **Nom de la carte**, puis clique sur **Ajouter**. ✅ C'est tout ! --- # Ajouter l'intégration Argo CD L'intégration donne à Astrolabe l'hôte de ton Argo CD et son jeton. Sans elle, le plugin Argo CD ne s'allume pas. Tu le fais une fois, en administrateur. ## Avant de commencer Il te faut un jeton d'API Argo CD : voir [Créer un jeton Argo CD en lecture seule](create-a-token.md). ## 🔧 Ajouter l'intégration 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Connexions de l'entreprise**. 3. Sur la carte **ArgoCD**, clique sur **Configurer**. La carte dit **Non configurée**. 4. En haut à droite, clique sur **Ajouter un jeton**. 5. Remplis le formulaire. Chaque **?** à côté d'un libellé explique le champ. | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **Nom** | Un nom de ton choix, affiché dans la liste des jetons | `Argo CD` | | **Hôte de l'instance ArgoCD** | Le nom de domaine d'Argo CD, avec son port s'il n'est pas 443. Un `https://` en tête est retiré à l'enregistrement. | `argocd.exemple.com` | | **Jeton d'API** | Le jeton | `eyJhbGciOi…` | 6. Clique sur **Tester la connexion**. Le formulaire dit **La connexion fonctionne : la source a accepté les identifiants.** 7. Clique sur **Ajouter**. Un bandeau annonce **La configuration a changé ; le serveur redémarre.** Quelques secondes plus tard, ton jeton est dans la liste, avec l'état **Connectée**. La carte **ArgoCD** des intégrations propose **Gérer**. ✅ C'est tout ! La suite : [Afficher l'onglet Argo CD sur un composant](show-the-tab.md). :::tip Le test échoue ? Chaque message est expliqué dans [Problèmes courants avec Argo CD](troubleshooting.md). ::: --- # Créer un jeton Argo CD en lecture seule Astrolabe lit Argo CD avec **un jeton d'API**. Le jeton appartient à un compte qui peut **lire les applications**, et rien d'autre. :::warning Le compte `admin` ne peut pas te donner ce jeton Par défaut, le compte `admin` d'Argo CD n'a que la capacité `login`. Lui demander un jeton échoue avec : `account 'admin' does not have apiKey capability`. Crée un compte dédié. ::: ## 👤 Créer un compte dédié Demande à l'administrateur d'Argo CD d'ajouter un compte, ici `astrolabe`, dans les ConfigMaps `argocd-cm` et `argocd-rbac-cm` du namespace `argocd` : ```yaml # argocd-cm data: accounts.astrolabe: apiKey --- # argocd-rbac-cm data: policy.csv: | p, astrolabe, applications, get, */*, allow ``` ## 🔑 Générer le jeton Soit dans l'interface d'Argo CD : **Settings › Accounts › astrolabe › Generate New**. Soit en ligne de commande : ```bash argocd account generate-token --account astrolabe ``` Copie le jeton **tel quel** : une longue chaîne qui commence par `eyJ`, sans `Bearer ` devant. :::tip Pourquoi en lecture seule ? Tous les utilisateurs d'Astrolabe lisent Argo CD avec ce jeton. Astrolabe n'écrit jamais dans Argo CD : ne lui donne pas un jeton d'administrateur. ::: ✅ C'est tout ! La suite : [Ajouter l'intégration Argo CD](add-the-integration.md). --- # FAQ Argo CD ## Un composant peut-il afficher plusieurs applications, une par environnement ? `argocd/app-name` nomme **une** application. Donne à chaque environnement son propre composant dans le catalogue, chacun avec son `argocd/app-name` : l'onglet **Argo CD** de chaque composant montre son application. ## Pourquoi la carte de mon tableau de bord ne liste-t-elle pas toutes les applications d'Argo CD ? C'est voulu. La carte liste les applications nommées par un **composant du catalogue**. Une application qu'aucun composant ne nomme n'y apparaît pas. ## La carte ne liste-t-elle que les applications de mes composants ? Non : elle liste celles de tous les composants du catalogue. Filtre la colonne **Mine** pour garder les tiennes : voir [Ne garder que tes lignes](../../../../developer-dashboard/my-dashboard/change-or-remove-a-card.md#-ne-garder-que-tes-lignes). ## Quels droits faut-il au jeton ? La lecture des applications (`applications, get`). Astrolabe n'écrit jamais dans Argo CD. Ne lui donne pas un jeton d'administrateur : tous les utilisateurs d'Astrolabe lisent Argo CD avec lui. --- # Afficher l'onglet Argo CD sur un composant Chaque composant annoté reçoit un onglet **Argo CD** : la santé de son application, sa synchronisation, ses ressources et ses déploiements. Deux étapes : allumer le plugin, annoter le composant. ## Ce que l'onglet affiche, et pour qui **Santé**, **Synchronisation**, **Dernière synchronisation** (statut, date, message), **Révision**, **Source**, un lien **Ouvrir dans Argo CD**, puis les sous-onglets **Ressources** et **Déploiements**. Toute personne qui peut ouvrir le composant voit l'onglet. Astrolabe lit Argo CD avec **le jeton de l'intégration**, le même pour tout le monde. ## 1. 🔌 Allumer le plugin 1. Dans **Administration**, sous **PLATEFORME**, clique sur **Plugins**. 2. Sur la carte **Argo CD**, clique sur l'interrupteur **en haut à droite de la carte** (nommé « Activer Argo CD »). Il s'allume aussitôt, sans confirmation. :::tip L'interrupteur est grisé ? Si la carte dit **Configurez d'abord l'intégration Argo CD**, clique dessus : l'intégration s'ouvre dans **Connexions de l'entreprise**. Ajoute-la ([Ajouter l'intégration Argo CD](add-the-integration.md)). Le plugin s'allume tout seul quand tu enregistres l'intégration : passe à l'étape 2. ::: ## 2. 🏷️ Annoter le composant Dans le `catalog-info.yaml` du composant, nomme **une** application Argo CD : ```yaml apiVersion: backstage.io/v1alpha1 kind: Component metadata: name: shop-api annotations: argocd/app-name: shop-api # le nom de l'application dans Argo CD spec: type: service lifecycle: production owner: group:default/plateforme # ses propriétaires la voient dans leur carte ``` :::warning Une application par composant Une liste comme `shop-api-recette,shop-api-prod` n'est pas un nom valide : l'onglet **Argo CD** disparaît, sans message. Voir la [FAQ](faq.md). ::: ## ✅ Vérifier Attends quelques minutes que le catalogue relise le fichier. Puis ouvre le composant depuis **Catalogue** : l'onglet **Argo CD** est après **Documentation**. ✅ C'est tout ! La suite : [Ajouter la carte Applications à ton tableau de bord](add-the-dashboard-card.md). --- # Problèmes courants avec Argo CD ## Quand tu ajoutes l'intégration | Ce que tu vois | Quoi faire | | --- | --- | | ` a refusé les identifiants (401). Vérifie le jeton, et qu'il n'a pas expiré.` | Le jeton est faux, révoqué, expiré (un jeton récupéré d'une session de navigateur dure 24 h), tronqué, ou collé avec `Bearer ` devant. Génère un nouveau jeton d'API pour un compte dédié ([Créer un jeton](create-a-token.md)) et colle-le seul. | | `Astrolabe ne reconnaît pas le certificat de sécurité de (souvent un certificat interne à ton entreprise).` | Argo CD utilise un certificat signé par l'autorité interne de ton entreprise. L'administrateur d'Astrolabe ajoute cette autorité à Astrolabe (voir le guide d'installation Docker Hub). | | ` a refusé la connexion. Vérifie le port, et que le service tourne.` | Mauvais port, ou Argo CD arrêté. Vérifie l'hôte et son port (`argocd.exemple.com:8443`). | ## Sur la page du composant | Ce que tu vois | Quoi faire | | --- | --- | | Pas d'onglet **Argo CD** | Vérifie l'annotation `argocd/app-name` : un seul nom (minuscules, chiffres, `-` et `.`), sans virgule. Vérifie que **Argo CD** est allumé dans **Administration › Plugins**. | | Interrupteur **Argo CD** grisé, lien « Configurez d'abord l'intégration Argo CD » | Aucun jeton Argo CD qui fonctionne. [Ajoute l'intégration](add-the-integration.md). | | Dans l'onglet : `L'application n'est pas visible avec votre jeton Argo CD : vérifiez l'annotation argocd/app-name, ou ce que le jeton peut lire.` | Aucune application ne porte ce nom, **ou** le compte du jeton n'a pas le droit de la lire : Argo CD répond pareil dans les deux cas. Compare l'annotation au nom dans Argo CD, puis le `policy.csv` du compte. | ## Quand l'onglet dit qu'un module manque | Ce que tu vois | Que faire | | --- | --- | | `Astrolabe ne propose pas cette fonction Argo CD sur cette instance.` et `Un module manque à cette installation d'Astrolabe. Prévenez votre administrateur d'Astrolabe.` | L'intégration peut être connectée et le plugin allumé, mais cette installation d'Astrolabe n'a pas le module qui sert Argo CD. Préviens ton administrateur d'Astrolabe. Rien à changer sur le composant. | *Non vérifié sur une instance : ce message demande une installation à laquelle le module manque.* :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec le nom du composant et de son application Argo CD. ::: --- # Ajouter l'intégration AWS L'intégration donne à Astrolabe une clé d'accès AWS. La carte de **Administration › Connexions de l'entreprise** la décrit ainsi : **Identifiants AWS pour des services comme Cost Explorer.** Tu le fais une fois, en administrateur. ## Avant de commencer Il te faut le numéro à 12 chiffres de ton compte AWS, et une clé d'accès d'un utilisateur IAM en lecture seule. AWS n'affiche la clé d'accès secrète qu'une fois, à la création de la clé. Cette étape n'a pas été vérifiée sur une instance. ## 🔧 Ajouter l'intégration 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Connexions de l'entreprise**. 3. Sur la carte **AWS**, clique sur **Configurer**. 4. En haut à droite, clique sur **Ajouter un jeton**. 5. Remplis le formulaire : | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **ID du compte** | Le numéro à 12 chiffres du compte AWS | `123456789012` | | **Nom** | Un nom pour toi, affiché dans la liste des jetons. Déjà rempli avec `AWS`. | `AWS` | | **Région AWS** | La région AWS à lire. Déjà rempli avec `eu-west-1`. | `eu-west-1` | | **ID de la clé d'accès** | L'identifiant de clé d'accès d'un utilisateur IAM en lecture seule | `AKIAIOSFODNN7EXAMPLE` | | **Clé d'accès secrète** | La clé d'accès secrète associée à l'identifiant | | 6. Clique sur **Tester la connexion**. 7. Clique sur **Ajouter**. Le formulaire prévient : **L'instance redémarrera après confirmation.** Attends quelques secondes. Le jeton est dans la liste. Cette étape n'a pas été vérifiée sur une instance avec une clé valide. :::tip Chaque champ a son ? Passe la souris sur le **?** à côté d'un champ : il dit ce qu'il attend, avec un exemple. ::: ✅ C'est tout ! --- # Problèmes courants avec AWS ## Quand tu ajoutes l'intégration | Ce que tu vois | Quoi faire | | --- | --- | | `Le champ « ID du compte » est obligatoire.` | Remplis **ID du compte**. | | `Account ID must be a 12-digit AWS account number` | Écris les 12 chiffres de ton numéro de compte, sans tirets : `123456789012`. | | `Region must be a valid AWS region (e.g., 'eu-west-1', 'us-east-1')` | Écris un nom de région comme `eu-west-1`. | | `Access Key ID must contain only uppercase letters and numbers` | Recopie l'identifiant de clé d'accès depuis AWS, sans espace. | | `sts.eu-west-1.amazonaws.com a refusé les identifiants (401). Vérifie le jeton, et qu'il n'a pas expiré. Corrige le champ, ou enregistre quand même si la source n'est que momentanément injoignable.` | L'identifiant de clé ou la clé secrète est faux, ou la clé a été supprimée. Crée une nouvelle clé dans AWS et saisis de nouveau les deux valeurs. | Le formulaire propose aussi **Enregistrer quand même**, pour garder la clé quand AWS n'est que momentanément injoignable. ## Après l'ajout | Ce que tu vois | Quoi faire | | --- | --- | | Dans la liste des jetons, dans **État**, le message `sts.eu-west-1.amazonaws.com a refusé les identifiants (401). Vérifie le jeton, et qu'il n'a pas expiré.` | Modifie le jeton et saisis une clé valide. | | Dans **Administration › Problèmes**, une ligne **Connexion de l'entreprise** **AWS** : `sts.eu-west-1.amazonaws.com refuse les identifiants (403). Le jeton est peut-être faux ou expiré.` | Clique sur **Corriger** : l'intégration s'ouvre. Saisis une clé valide. | :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec le message que tu vois. ::: --- # Ajouter la carte de coûts Azure à ton tableau de bord La carte **Coûts Azure du mois** montre les coûts du mois en cours, service par service, pour tout l'abonnement ou pour les ressources qui portent un tag. ## ➕ Ajouter la carte 1. Dans la barre latérale, clique sur **Tableau de bord**, puis sur l'onglet du tableau voulu. 2. Clique sur **Ajouter une carte**, en haut de la page. 3. Dans **Ajouter une carte**, choisis la **Source** `azureCloud`. La **Clé** est **Azure costs this month**. 4. Dans **Étiquette Azure**, écris un tag `clé=valeur` comme `app=shop-api` pour ne garder que les ressources qui le portent. Laisse vide pour tout l'abonnement. 5. Saisis un **Nom de la carte**, puis clique sur **Ajouter**. Sur un tableau de bord en mode modification, clique ensuite sur **Enregistrer**. :::tip La source `azureCloud` manque ? Elle n'est proposée qu'une fois que l'administrateur a [ajouté l'intégration Azure Cloud](add-the-integration.md). ::: ## Ce que la carte montre Un tableau avec une ligne par service et les colonnes **Service**, **Coût**, **Mois dernier** et **Part**. Les montants sont dans la devise de l'abonnement, par exemple `24.00 EUR`. Avec un tag qu'aucune ressource ne porte, la carte dit **Rien à afficher** et **Azure ne signale aucun coût ce mois-ci, pour l'abonnement ou pour les ressources qui portent l'étiquette de cette carte.** ✅ C'est tout ! --- # Ajouter l'intégration Azure Cloud L'intégration donne à Astrolabe les identifiants de ton principal de service et de ton abonnement. Le plugin **Azure** et la carte **Coûts Azure du mois** en ont besoin. Tu le fais une fois, en administrateur. ## Avant de commencer Il te faut les quatre valeurs de [Préparer un principal de service Azure](create-a-service-principal.md). ## 🔧 Ajouter l'intégration 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Connexions de l'entreprise**. 3. Sur la carte **Azure Cloud**, clique sur **Configurer**. La carte dit **Non configurée**. 4. En haut à droite, clique sur **Ajouter un jeton**. 5. Remplis le formulaire. Chaque **?** à côté d'un libellé explique le champ. | Champ | Quoi écrire | | --- | --- | | **Nom** | Un nom de ton choix. Prérempli avec `Azure Cloud`. | | **ID du locataire** | Le Directory (tenant) ID | | **ID client** | L'Application (client) ID | | **Secret client** | La Value du secret client | | **ID de l'abonnement** | L'identifiant de l'abonnement | 6. Clique sur **Tester la connexion**. Le formulaire dit **La connexion fonctionne : la source a accepté les identifiants.** 7. Clique sur **Ajouter**. Un bandeau annonce **La configuration a changé ; le serveur redémarre.** Environ une minute plus tard, ton entrée est dans la liste, avec la provenance **Administration** et l'état **Connectée**. ✅ C'est tout ! La suite : [Afficher Azure sur un composant](show-on-a-component.md). --- # Préparer un principal de service Azure Astrolabe lit les ressources et les coûts de ton abonnement Azure avec **une inscription d'application** de Microsoft Entra ID (un principal de service). Il ne fait que lire. *Cette page n'a pas été vérifiée sur un vrai portail Azure : elle liste ce que le formulaire d'Astrolabe demande, et où le formulaire dit de le trouver.* ## Ce qu'il te faut | Il te faut | Où le formulaire dit de le trouver | | --- | --- | | **ID du locataire** | Le *Directory (tenant) ID*, un GUID affiché sur la page Overview de l'inscription d'application dans Microsoft Entra ID | | **ID client** | L'*Application (client) ID*, un GUID affiché sur la même page Overview | | **Secret client** | La **Value** d'un secret client, dans *Certificates & secrets* de l'inscription d'application. Azure ne l'affiche qu'une fois : copie la **Value**, pas le *Secret ID*. | | **ID de l'abonnement** | L'identifiant de l'abonnement à lire, un GUID affiché dans *Subscriptions* | ## 🔑 Lui donner les bons rôles L'inscription d'application a besoin de deux rôles **sur l'abonnement** : - **Reader** - **Cost Management Reader** ✅ C'est tout ! La suite : [Ajouter l'intégration Azure Cloud](add-the-integration.md). --- # FAQ Azure Cloud ## De quels rôles le principal de service a-t-il besoin ? **Reader** et **Cost Management Reader**, sur l'abonnement. Astrolabe ne fait que lire. ## Pourquoi mon composant n'a-t-il pas d'onglet Azure ? Parce qu'il n'a pas d'annotation `azure.com/tag-selector`, ou que le plugin **Azure** est éteint dans **Administration › Plugins**. Voir [Afficher Azure sur un composant](show-on-a-component.md). ## Est-ce la même chose que l'intégration Azure DevOps ? **Non.** Azure Cloud lit les ressources et les coûts d'un abonnement. Azure DevOps lit les pipelines, les pull requests et les work items : voir [Azure DevOps](../azure-devops/add-the-integration.md). --- # Afficher Azure sur un composant Un composant annoté reçoit une carte **Coûts Azure** sur sa **Vue d'ensemble** et un onglet **Azure** avec ses ressources et ses coûts. Deux étapes : allumer le plugin, annoter le composant. ## Ce que ça affiche | Où | Quoi | | --- | --- | | Carte **Coûts Azure** de la **Vue d'ensemble** | **Ce mois-ci** et **Le mois dernier**, et un lien **Ouvrir l'analyse des coûts** vers le portail Azure | | Onglet **Azure**, sous-onglet **Ressources** | Les ressources qui portent le tag, avec les colonnes **Ressource**, **Type**, **Groupe de ressources** et **Région** | | Onglet **Azure**, sous-onglet **Coûts** | Les deux mêmes montants, et un tableau par **Service** : **Coût ce mois-ci**, **Le mois dernier** | ## 1. 🔌 Allumer le plugin 1. Dans **Administration**, sous **PLATEFORME**, clique sur **Plugins**. 2. Sur la carte **Azure**, clique sur l'interrupteur en haut à droite de la carte. :::tip L'interrupteur est grisé ? Si la carte dit **Configurez d'abord l'intégration Azure**, clique dessus : l'intégration s'ouvre dans **Connexions de l'entreprise**. Ajoute-la ([Ajouter l'intégration Azure](add-the-integration.md)). Le plugin s'allume tout seul quand tu enregistres l'intégration : passe à l'étape 2. ::: ## 2. 🏷️ Annoter le composant Dans le `catalog-info.yaml` du composant, ajoute l'annotation `azure.com/tag-selector`, avec **un seul tag** écrit `clé=valeur` : ```yaml apiVersion: backstage.io/v1alpha1 kind: Component metadata: name: shop-api annotations: azure.com/tag-selector: app=shop-api spec: type: service lifecycle: production owner: team-a ``` Les ressources de ton abonnement doivent porter ce tag dans Azure. ## 3. 👀 Le voir 1. Dans la barre latérale, clique sur **Catalogue**, puis sur ton composant. 2. Sur la **Vue d'ensemble**, cherche la carte **Coûts Azure**. Clique sur l'onglet **Azure** pour le détail. Quand aucune ressource ne porte le tag, le sous-onglet **Ressources** dit **Aucune ressource ne porte le tag app=shop-api.** et le sous-onglet **Coûts** dit **Aucun coût ce mois-ci pour le tag app=shop-api.** *Un composant dont le tag correspond à des ressources n'était pas sous la main : le tableau rempli n'a pas été vérifié.* ✅ C'est tout ! La suite : [Ajouter la carte de coûts à ton tableau de bord](add-the-dashboard-card.md). --- # Problèmes courants avec Azure Cloud ## Quand tu ajoutes l'intégration | Ce que tu vois | Quoi faire | | --- | --- | | Sous un champ : `Le champ « ID du locataire » est obligatoire.` | Le champ est vide. Remplis les quatre valeurs. | | `login.microsoftonline.com a refusé les identifiants (401). Vérifie le jeton, et qu'il n'a pas expiré. Corrige le champ, ou enregistre quand même si la source n'est que momentanément injoignable.` | Le tenant, le client ID ou le secret client est faux, ou le secret a expiré. Recopie la **Value** du secret, ou crée un nouveau secret. | | `management.azure.com a répondu quelque chose d'inattendu (400). Vérifie l'hôte et l'URL d'API. Corrige le champ, ou enregistre quand même si la source n'est que momentanément injoignable.` | Le champ **ID de l'abonnement** n'est pas un abonnement que le principal de service peut lire. Recopie-le depuis *Subscriptions*. | ## Sur un composant | Ce que tu vois | Quoi faire | | --- | --- | | Pas d'onglet **Azure** | Ajoute l'annotation `azure.com/tag-selector` et allume **Azure** dans **Administration › Plugins**. Voir [Afficher Azure sur un composant](show-on-a-component.md). | | La carte **Azure** de **Plugins** te renvoie vers l'intégration à configurer d'abord | [Ajoute l'intégration Azure Cloud](add-the-integration.md). | | `Aucune ressource ne porte le tag app=shop-api.` | Aucune ressource de l'abonnement ne porte ce tag. Compare l'annotation aux tags du portail Azure. | ## Sur ton tableau de bord | Ce que tu vois | Quoi faire | | --- | --- | | La source **azureCloud** manque dans **Ajouter une carte** | L'intégration n'est pas configurée. [Ajoute-la](add-the-integration.md). | | Sous le champ **tag** du formulaire, quand tu ajoutes la carte : `L'étiquette « foo » n'est pas écrite clé=valeur (par exemple app=shop-api), avec des lettres, chiffres et _ . : / @ + - seulement.` | Écris l'étiquette sous la forme `clé=valeur`, par exemple `app=shop-api`, ou laisse le champ vide pour tout l'abonnement. Astrolabe refuse la carte tant que l'étiquette n'est pas juste. | | **Rien à afficher** et `Azure ne signale aucun coût ce mois-ci, pour l'abonnement ou pour les ressources qui portent l'étiquette de cette carte.` | Aucune ressource ne porte le tag que tu as écrit dans la carte. | :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec le message que tu vois. ::: --- # Ajouter les cartes Azure DevOps à ton tableau de bord Les cartes Azure DevOps de ton **tableau de bord** montrent ce que **ton propre compte Azure DevOps** voit. Elles ont besoin de ton propre jeton, connecté une fois, depuis la carte elle-même. ## Les cartes | Clé | Ce qu'elle dit montrer | | --- | --- | | **Pipelines** | Les exécutions d'Azure Pipelines de chaque dépôt du catalogue que votre jeton lit, quel qu'en soit le demandeur (filtrez sur « demandé par moi » pour garder les vôtres) | | **Pipelines détaillés** | Pipeline runs with timeline stages, status breakdown, and duration | | **Pull requests** | Les pull requests de chaque dépôt Azure DevOps du catalogue que votre jeton lit, avec les relecteurs, leur vote et votre rôle (filtrez dessus pour ne garder que les vôtres) | | **À relire** | Azure DevOps work items assigned to you as reviewer | | **Mes work items ouverts** | Open work items assigned to you with status | | **Requête WIQL** | Run a custom WIQL query and display matching work items | Les clés et leur description s'affichent en anglais dans les deux langues. *Ce que les cartes montrent une fois ton compte connecté n'a pas été vérifié sur une vraie organisation Azure DevOps.* ### Quels dépôts, et comment ne garder que les tiens **Pull requests**, **Pipelines** et **Pipelines détaillés** lisent **chaque dépôt du catalogue** que ton jeton lit (les composants qui portent l'annotation `dev.azure.com/project-repo`), quel qu'en soit le propriétaire et quel que soit celui qui a lancé l'exécution. Chaque ligne dit ce que tu es dessus, dans une colonne filtrable, et le filtre est enregistré avec la carte : | Carte | Colonne | Valeurs | Pour garder les tiennes | | --- | --- | --- | --- | | **Pull requests** | **Mon rôle** | **Auteur**, **Relecteur**, **Autre** | Retire **Autre** dans l'onglet **Filtres** | | **Pipelines** et **Pipelines détaillés** | **Lancé par moi** | **Oui**, **Non** | Retire **Non** dans l'onglet **Filtres** | Les étapes sont celles de [Ne garder que tes lignes](../../../../developer-dashboard/my-dashboard/change-or-remove-a-card.md#-ne-garder-que-tes-lignes). Quand Azure DevOps contient plus que ce qu'une carte peut lire, la carte le dit au-dessus du tableau : `Liste partielle : la lecture s'est arrêtée à sa limite pour …. Azure DevOps en contient davantage.` et nomme les listes concernées. ## ➕ Ajouter une carte 1. Dans la barre latérale, clique sur **Tableau de bord**, puis sur l'onglet du tableau voulu. 2. Clique sur **Ajouter une carte**, en haut de la page. 3. Dans **Ajouter une carte**, choisis la **Source** `azure`, puis une **Clé**. La ligne sous la clé dit ce qu'elle montre. 4. Pour **Requête WIQL** seulement, un champ **Requête WIQL** apparaît : écris la requête à exécuter sur Azure DevOps. Par exemple : ``` SELECT [System.Id] FROM WorkItems WHERE [System.AssignedTo] = @Me AND [System.State] <> 'Closed' ``` 5. Saisis un **Nom de la carte**, puis clique sur **Ajouter**. Sur un tableau de bord en mode modification, clique ensuite sur **Enregistrer**. :::tip La source `azure` manque ? Elle n'est proposée qu'une fois que l'administrateur a [ajouté l'intégration Azure DevOps](add-the-integration.md). ::: ## 🔗 Connecter ton compte Azure DevOps La première fois, la carte dit que ton compte Azure DevOps n'est pas connecté, et explique que le jeton de l'entreprise ne sert pas cette carte. 1. Dans la carte, clique sur **Connecter mon compte Azure DevOps**. La fenêtre **Connecter mon compte Azure DevOps** s'ouvre. Elle liste les droits dont le jeton a besoin et propose le lien **Créer mon jeton sur Azure DevOps**. 2. Remplis : - **Nom d'utilisateur** : l'adresse e-mail de ton compte Azure DevOps, par exemple `jdoe@exemple.com`. Astrolabe te reconnaît par elle dans les événements Azure DevOps. - **Jeton** : un jeton de ton propre compte. Voir [Créer un jeton Azure DevOps](create-a-token.md). 3. Clique sur **Tester la connexion**. 4. Clique sur **Enregistrer**. Toutes les cartes Azure DevOps de ton tableau de bord se relisent. *Cette étape n'a pas été vérifiée sur une instance.* ✅ C'est tout ! La suite : [Problèmes courants](troubleshooting.md). --- # Ajouter l'intégration Azure DevOps L'intégration donne à Astrolabe ton hôte Azure DevOps, ton organisation et le jeton de l'entreprise. La source Azure DevOps du tableau de bord en a besoin. Tu le fais une fois, en administrateur. ## Avant de commencer Il te faut un jeton d'accès personnel : voir [Créer un jeton Azure DevOps](create-a-token.md). ## 🔧 Ajouter l'intégration 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Connexions de l'entreprise**. 3. Sur la carte **Azure DevOps**, clique sur **Configurer**. La carte dit **Non configurée**. 4. En haut à droite, clique sur **Ajouter un jeton**. 5. Remplis le formulaire. Chaque **?** à côté d'un libellé explique le champ. | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **Nom** | Un nom de ton choix. Prérempli avec `Azure Server`. | `Azure DevOps` | | **Hôte du serveur Azure** | Le nom de domaine seul, sans chemin. Un `https://` au début est retiré à l'enregistrement. | `dev.azure.com` | | **Organisation** | L'organisation, comme dans l'adresse `https://dev.azure.com/`. | `acme` | | **Jeton d'accès personnel** | Le jeton de l'entreprise | | 6. Clique sur **Tester la connexion**. Avec un hôte ou une organisation faux, le formulaire dit pourquoi (voir [Problèmes courants](troubleshooting.md)). *Le message pour un jeton qu'Azure DevOps accepte n'a pas été vérifié sur une instance.* 7. Clique sur **Ajouter**. Si le test a trouvé un problème, le bouton **Enregistrer quand même** apparaît à la place : clique dessus seulement si la source n'est que momentanément injoignable. Un bandeau annonce **La configuration a changé ; le serveur redémarre.** Environ une minute plus tard, recharge la page si le bandeau t'y invite. Ton jeton est dans la liste, avec la provenance **Administration** et son état. :::tip Où voir ce qui ne va pas **Administration › Problèmes** liste une connexion qui ne marche pas, avec un bouton **Corriger**. ::: ✅ C'est tout ! La suite : [Ajouter les cartes Azure DevOps à ton tableau de bord](add-the-dashboard-cards.md). --- # Créer un jeton Azure DevOps Astrolabe lit Azure DevOps avec **un jeton d'accès personnel**. L'administrateur en saisit un pour l'entreprise, et chaque utilisateur en crée un pour ses propres cartes du tableau de bord. *Cette page n'a pas été vérifiée sur une vraie organisation Azure DevOps : les droits ci-dessous sont ceux que les écrans d'Astrolabe demandent.* ## Deux jetons, deux usages | Jeton | Saisi dans | Lit Azure DevOps pour | | --- | --- | --- | | Celui de **l'entreprise** | **Administration › Connexions de l'entreprise › Azure DevOps** | Les onglets des entités, le catalogue et Compass, les mêmes pour tout le monde | | **Le tien** | Les cartes Azure DevOps de **Tableau de bord**, ou **Mon compte › Mes comptes** | **Tes** cartes du tableau de bord. Le jeton de l'entreprise n'y sert jamais. | ## 🔑 Créer le jeton 1. Dans Azure DevOps, ouvre **User settings › Personal access tokens**. Depuis une carte du tableau de bord, le lien **Créer mon jeton sur Azure DevOps** t'y emmène. 2. Crée un nouveau jeton avec ces droits, tous en lecture : | Jeton | Droits | | --- | --- | | Celui de l'entreprise | **Code** (Read) | | Le tien | **Code**, **Project and Team**, **Graph**, **Identity** et **Work Items** (Read) | 3. Copie le jeton **tel quel**. Azure DevOps ne l'affiche qu'une fois. ✅ C'est tout ! La suite : [Ajouter l'intégration Azure DevOps](add-the-integration.md). --- # FAQ Azure DevOps ## Y a-t-il un onglet Azure DevOps sur mes composants ? **Non.** L'intégration alimente les cartes Azure DevOps de ton **tableau de bord**. L'onglet **Azure** d'un composant est une autre intégration, pour les ressources et les coûts du cloud Azure : voir [Azure Cloud](../azure-cloud/add-the-integration.md). ## Pourquoi une carte demande-t-elle de connecter mon compte Azure DevOps ? Parce que la carte montre ce que **ton propre** compte Azure DevOps voit. Le jeton de l'entreprise ne la sert pas. Clique sur **Connecter mon compte Azure DevOps** dans la carte. ## Quels droits de jeton Astrolabe demande-t-il ? Lecture sur **Code** pour le jeton de l'entreprise. Lecture sur **Code**, **Project and Team**, **Graph**, **Identity** et **Work Items** pour le tien. Voir [Créer un jeton Azure DevOps](create-a-token.md). ## Où retrouver mon jeton ensuite ? Dans **Mon compte › Mes comptes**, sur la carte **Azure DevOps**, avec un bouton **Connecter**. --- # Problèmes courants avec Azure DevOps ## Quand tu ajoutes l'intégration | Ce que tu vois | Quoi faire | | --- | --- | | Sous **Hôte du serveur Azure** : `Le champ « Hôte du serveur Azure » est obligatoire.` | Le champ est vide. Écris `dev.azure.com`. | | `Aucun serveur ne répond au nom . Vérifie l'orthographe avec l'adresse que tu ouvres dans ton navigateur. Si elle est juste, Astrolabe ne voit pas ce serveur : préviens l'administrateur d'Astrolabe de votre entreprise. Corrige le champ, ou enregistre quand même si la source n'est que momentanément injoignable.` | Recopie l'hôte depuis la barre d'adresse de ton Azure DevOps, sans `https://` ni chemin. | | `dev.azure.com répond « introuvable » (404). Vérifie l'hôte et l'URL d'API. Corrige le champ, ou enregistre quand même si la source n'est que momentanément injoignable.` | L'**Organisation** n'existe pas. Recopie-la depuis `https://dev.azure.com/`. | | `dev.azure.com a répondu quelque chose d'inattendu (302). Vérifie l'hôte et l'URL d'API.` | Vérifie le jeton : [crées-en un nouveau](create-a-token.md) et remplace-le. | ## Sur ton tableau de bord | Ce que tu vois | Quoi faire | | --- | --- | | `Votre compte Azure DevOps n'est pas connecté.` | Clique sur **Connecter mon compte Azure DevOps** dans la carte. | | `Azure DevOps a refusé le jeton. Le jeton a peut-être expiré ou été révoqué : remplacez-le dans Administration › Connexions de l'entreprise › Azure DevOps (ou dans Mon compte › Mes comptes si c'est le vôtre).` | Crée un nouveau jeton ([comment](create-a-token.md)) et remplace-le là où le message le dit. | | `Liste partielle : la lecture s'est arrêtée à sa limite pour …. Azure DevOps en contient davantage.` au-dessus du tableau d'une carte | Azure DevOps contient plus que ce que la carte peut lire : les lignes montrées sont celles lues avant la limite. | | La source **azure** manque dans **Ajouter une carte** | L'intégration n'est pas configurée. [Ajoute-la](add-the-integration.md). | ## Dans l'administration | Ce que tu vois | Quoi faire | | --- | --- | | Dans **Problèmes**, une ligne **Connexion de l'entreprise** `dev.azure.com répond quelque chose d'inattendu (302). Vérifie l'hôte et l'URL d'API.` | Clique sur **Corriger**, vérifie le jeton, puis clique sur **Revérifier**. | :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec le message que tu vois. ::: --- # Ajouter l'intégration Bitbucket Cloud L'intégration donne à Astrolabe l'e-mail et le jeton d'un compte Bitbucket Cloud. La carte de **Administration › Connexions de l'entreprise** la décrit ainsi : **Dépôts et entités du catalogue de Bitbucket Cloud.** Tu le fais une fois, en administrateur. ## Avant de commencer Il te faut l'adresse e-mail d'un compte Atlassian, et un jeton de ce compte avec un accès en lecture aux dépôts. Dans Bitbucket, tu le crées sous **Personal settings**. Cette étape n'a pas été vérifiée sur une instance. ## 🔧 Ajouter l'intégration 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Connexions de l'entreprise**. 3. Sur la carte **Bitbucket Cloud**, clique sur **Configurer**. 4. En haut à droite, clique sur **Ajouter un jeton**. 5. Remplis le formulaire : | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **E-mail** | L'adresse e-mail du compte Atlassian auquel appartient le jeton | `dev@exemple.com` | | **Jeton** | Un jeton d'API (ou un mot de passe d'application) de ce compte, avec un accès en lecture aux dépôts | | 6. Clique sur **Tester la connexion**. 7. Clique sur **Ajouter**. Le formulaire prévient : **L'instance redémarrera après confirmation.** Attends quelques secondes. Le jeton est dans la liste. Cette étape n'a pas été vérifiée sur une instance avec un jeton valide. ## Le réglage facultatif Sous **Réglages facultatifs**, **Nom** est le nom affiché dans la liste des jetons. Il est déjà rempli avec `Bitbucket Cloud`. ✅ C'est tout ! --- # Problèmes courants avec Bitbucket Cloud ## Quand tu ajoutes l'intégration | Ce que tu vois | Quoi faire | | --- | --- | | `Le champ « E-mail » est obligatoire.` | Remplis **E-mail** avec l'adresse du compte Atlassian qui possède le jeton. | | `api.bitbucket.org a refusé les identifiants (401). Vérifie le jeton, et qu'il n'a pas expiré. Corrige le champ, ou enregistre quand même si la source n'est que momentanément injoignable.` | L'e-mail ou le jeton est faux, ou le jeton a expiré. Vérifie **E-mail**, puis crée un nouveau jeton dans Bitbucket et colle-le dans **Jeton**. | Le formulaire propose aussi **Enregistrer quand même**, pour garder le jeton quand Bitbucket n'est que momentanément injoignable. ## Après l'ajout | Ce que tu vois | Quoi faire | | --- | --- | | Dans la liste des jetons, dans **État**, le message `api.bitbucket.org a refusé les identifiants (401). Vérifie le jeton, et qu'il n'a pas expiré.` | Modifie le jeton : nouveau jeton, puis **Tester la connexion**. | | Dans **Administration › Problèmes**, une ligne **Connexion de l'entreprise** **Bitbucket Cloud** : `api.bitbucket.org refuse les identifiants (401). Le jeton est peut-être faux ou expiré.` | Clique sur **Corriger** : l'intégration s'ouvre. Colle un nouveau jeton. | | Sur **Administration › Connexions de l'entreprise**, **Ne fonctionne pas** sur la carte **Bitbucket Cloud** | Ouvre la carte : **État** dit pourquoi. | :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec le message que tu vois. ::: --- # Ajouter l'intégration Bitbucket Server L'intégration donne à Astrolabe l'adresse de ton Bitbucket Server et un jeton pour le lire. Le catalogue lit tes dépôts avec elle : voir [Importer tes dépôts Bitbucket Server](../../Catalogue/bitbucket-server/import-repositories.md). Tu le fais une fois, en administrateur. ## Avant de commencer Il te faut un jeton d'accès de ton Bitbucket Server, avec un accès en lecture aux projets. Dans Bitbucket, tu le crées sous **Manage account › HTTP access tokens**. Cette étape n'a pas été vérifiée sur une instance. ## 🔧 Ajouter l'intégration 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Connexions de l'entreprise**. 3. Sur la carte **Bitbucket Server**, clique sur **Configurer**. 4. En haut à droite, clique sur **Ajouter un jeton**. 5. Remplis le formulaire : | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **Nom** | Un nom pour toi, affiché dans la liste des jetons. Déjà rempli avec `Bitbucket Server`. | `Bitbucket Server` | | **Hôte du Bitbucket Server** | L'adresse de ton serveur, sans `https://` et sans chemin. C'est le nom exact auquel le serveur répond. | `bitbucket.exemple.com` | | **Jeton** | Le jeton d'accès | | 6. Clique sur **Tester la connexion**. 7. Clique sur **Ajouter**. Le formulaire prévient : **L'instance redémarrera après confirmation.** Attends quelques secondes. Le jeton est dans la liste. Cette étape n'a pas été vérifiée sur une instance avec un jeton valide. :::tip Chaque champ a son ? Passe la souris sur le **?** à côté d'un champ : il dit ce qu'il attend, avec un exemple. ::: ## Le réglage facultatif Sous **Réglages facultatifs**, **URL de base de l'API** est l'adresse complète de l'API REST, avec `https://`. Laisse-la vide : Astrolabe utilise alors `https:///rest/api/1.0`. ✅ C'est tout ! La suite : [Importer tes dépôts Bitbucket Server](../../Catalogue/bitbucket-server/import-repositories.md). --- # Problèmes courants avec Bitbucket Server ## Quand tu ajoutes l'intégration | Ce que tu vois | Quoi faire | | --- | --- | | `Le champ « Hôte du Bitbucket Server » est obligatoire.` | Remplis **Hôte du Bitbucket Server**, par exemple `bitbucket.exemple.com`. | | `Aucun serveur ne répond au nom bitbucket.example.com. Vérifie l'orthographe avec l'adresse que tu ouvres dans ton navigateur. Si elle est juste, Astrolabe ne voit pas ce serveur : préviens l'administrateur d'Astrolabe de votre entreprise. Corrige le champ, ou enregistre quand même si la source n'est que momentanément injoignable.` | Copie dans **Hôte du Bitbucket Server** l'adresse que tu ouvres dans ton navigateur, sans `https://`. Si elle est juste, ton Bitbucket Server n'est pas joignable depuis Astrolabe. | | `example.com répond « introuvable » (404). Vérifie l'hôte et l'URL d'API. Corrige le champ, ou enregistre quand même si la source n'est que momentanément injoignable.` | L'hôte répond, mais ce n'est pas un Bitbucket Server. Vérifie **Hôte du Bitbucket Server**, et **URL de base de l'API** sous **Réglages facultatifs**. | Le formulaire propose aussi **Enregistrer quand même**, pour garder le jeton quand le serveur n'est que momentanément injoignable. ## Après l'ajout **Administration › Problèmes** liste ce qui ne marche pas, avec un bouton **Corriger**. | Ce que tu vois | Quoi faire | | --- | --- | | Dans la liste des jetons, dans **État**, le message `Aucun serveur ne répond au nom bitbucket.example.com. Vérifie l'orthographe avec l'adresse que tu ouvres dans ton navigateur. Si elle est juste, Astrolabe ne voit pas ce serveur : préviens l'administrateur d'Astrolabe de votre entreprise.` | Modifie le jeton et corrige l'hôte. | | Dans **Administration › Problèmes**, une ligne **Connexion de l'entreprise** **Bitbucket Server** : `Aucun serveur ne répond au nom bitbucket.example.com. Vérifie l'orthographe d'après l'adresse que tu ouvres dans ton navigateur.` | Clique sur **Corriger** : l'intégration s'ouvre. | :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec le message que tu vois. ::: --- # Ajouter l'intégration Codacy L'intégration donne à Astrolabe un jeton d'API de compte Codacy. C'est ce que lit le plugin **Codacy** : la note d'un composant et ses problèmes. Tu le fais une fois, en administrateur. ## Avant de commencer Il te faut un **jeton d'API de compte** Codacy. Dans Codacy, tu le crées sous **your account › Access management › API tokens**. Cette étape n'a pas été vérifiée sur une instance. ## 🔧 Ajouter l'intégration 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Connexions de l'entreprise**. 3. Sur la carte **Codacy**, clique sur **Configurer**. 4. En haut à droite, clique sur **Ajouter un jeton**. 5. Remplis le formulaire : | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **Nom** | Un nom pour toi, affiché dans la liste des jetons. Déjà rempli avec `Codacy`. | `Codacy` | | **Jeton d'API du compte** | Le jeton d'API de compte | | 6. Clique sur **Tester la connexion**. 7. Clique sur **Ajouter**. Le formulaire prévient : **L'instance redémarrera après confirmation.** Attends quelques secondes. Le jeton est dans la liste. Cette étape n'a pas été vérifiée sur une instance avec un jeton valide. ## Le réglage facultatif Sous **Réglages facultatifs**, **Adresse de l'API (Codacy auto-hébergé uniquement)** est l'adresse complète de ton propre Codacy, avec `https://`. Laisse-la vide pour utiliser `app.codacy.com`. ✅ C'est tout ! La suite : [Afficher Codacy sur un composant](show-on-a-component.md). --- # Afficher Codacy sur un composant Chaque composant annoté montre sa note Codacy sur sa vue d'ensemble, et ses problèmes dans un onglet. La carte de **Administration › Plugins** dit : **La note Codacy d'un composant sur sa vue, ses problèmes dans un onglet.** Deux étapes : allumer le plugin, annoter le composant. ## 1. 🔌 Allumer le plugin 1. Dans **Administration**, sous **PLATEFORME**, clique sur **Plugins**. 2. Sur la carte **Codacy**, clique sur l'interrupteur **Activer Codacy**. :::tip L'interrupteur est grisé ? Si la carte dit **Configurez d'abord l'intégration Codacy**, clique dessus : l'intégration s'ouvre dans **Connexions de l'entreprise**. Ajoute-la ([Ajouter l'intégration Codacy](add-the-integration.md)). Le plugin s'allume tout seul quand tu enregistres l'intégration : passe à l'étape 2. ::: ## 2. 🏷️ Annoter le composant Dans le `catalog-info.yaml` du composant, nomme le dépôt comme Codacy le connaît : le fournisseur Codacy (`gh` pour GitHub, `gl` pour GitLab, `bb` pour Bitbucket), l'organisation, puis le dépôt. ```yaml apiVersion: backstage.io/v1alpha1 kind: Component metadata: name: shop-api annotations: codacy.com/project-slug: gh/acme/shop-api spec: type: service lifecycle: production owner: group:default/platform-team ``` ## ✅ Vérifier Attends quelques minutes que le catalogue lise le fichier, puis ouvre le composant depuis **Catalogue**. Sans l'annotation, le composant n'a ni carte Codacy sur sa vue d'ensemble, ni onglet Codacy. Avec l'annotation, la carte et l'onglet montrent la note et les problèmes. Cette partie n'a pas été vérifiée sur une instance. ✅ C'est tout ! --- # Problèmes courants avec Codacy ## Quand tu ajoutes l'intégration | Ce que tu vois | Quoi faire | | --- | --- | | `Le champ « Jeton d'API du compte » est obligatoire.` | Colle le jeton d'API de compte dans **Jeton d'API du compte**. | | `app.codacy.com a refusé les identifiants (401). Vérifie le jeton, et qu'il n'a pas expiré. Corrige le champ, ou enregistre quand même si la source n'est que momentanément injoignable.` | Le jeton est faux ou expiré. Crée un nouveau jeton d'API de compte dans Codacy et colle-le dans **Jeton d'API du compte**. | ## Après l'ajout | Ce que tu vois | Quoi faire | | --- | --- | | Sur la carte **Codacy** de **Administration › Plugins**, un interrupteur grisé et **Configurez d'abord l'intégration Codacy** | Ajoute l'intégration : [Ajouter l'intégration Codacy](add-the-integration.md). | | Dans **Administration › Problèmes**, une ligne **Connexion de l'entreprise** **Codacy** : `app.codacy.com refuse les identifiants (401). Le jeton est peut-être faux ou expiré.` | Clique sur **Corriger** : l'intégration s'ouvre. Colle un nouveau jeton. | | Ni carte Codacy sur la vue d'ensemble du composant, ni onglet Codacy | Ajoute l'annotation `codacy.com/project-slug` au composant, et allume **Activer Codacy** dans **Administration › Plugins**. | ## Quand l'onglet dit qu'un module manque | Ce que tu vois | Que faire | | --- | --- | | `Astrolabe ne propose pas cette fonction Codacy sur cette instance.` et `Un module manque à cette installation d'Astrolabe. Prévenez votre administrateur d'Astrolabe.` | L'intégration peut être connectée et le plugin allumé, mais cette installation d'Astrolabe n'a pas le module qui sert Codacy. Préviens ton administrateur d'Astrolabe. Rien à changer sur le composant. | *Non vérifié sur une instance : ce message demande une installation à laquelle le module manque.* :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec le nom du composant et le message que tu vois. ::: --- # Le jeton de l'entreprise et ton propre compte GitHub, GitLab, Jira et Azure DevOps ont chacun **deux** jetons dans Astrolabe. Ce ne sont pas les mêmes, et l'un ne remplace jamais l'autre. | | Le jeton de l'entreprise | Ton propre compte | | --- | --- | --- | | **Qui le saisit** | Un administrateur d'Astrolabe, une fois | Chaque utilisateur, pour lui-même | | **Où** | **Administration › Connexions de l'entreprise**, sur la carte de l'outil | **Dans la carte du tableau de bord** qui en a besoin (**Connecter mon compte <outil>**), ou **Mon compte › Mes comptes** | | **Ce qu'il lit** | Les onglets des composants, le catalogue et Compass — la même chose pour tout le monde | **Tes** cartes du tableau de bord : mes tickets, mes pull requests, mes merge requests — ce que **ton** compte voit | :::tip Lequel me manque ? Une carte du tableau de bord qui affiche **Votre compte <outil> n'est pas connecté.** demande **ton propre** compte, pas le jeton de l'entreprise. Clique sur **Connecter mon compte <outil>** dans la carte : la fenêtre s'ouvre là, dit où créer le jeton et avec quels droits. ::: ## 🔑 Connecter ton propre compte 1. Sur le **Tableau de bord**, dans la carte qui affiche **Votre compte <outil> n'est pas connecté.**, clique sur **Connecter mon compte <outil>**. 2. La fenêtre dit où créer le jeton, avec quels droits, et mène à la page des jetons de ton outil. Crée le jeton là-bas. 3. Remplis **Nom d'utilisateur** et **Jeton**, puis clique sur **Tester la connexion**. Il affiche **La connexion fonctionne : l'outil a accepté votre jeton.** Si l'outil le refuse, la fenêtre dit pourquoi : un jeton faux, un droit manquant ou un jeton expiré. 4. Clique sur **Enregistrer**. La fenêtre se ferme et toutes les cartes de l'outil se relisent. ✅ C'est tout ! Pas à pas, outil par outil : [Jira](jira/add-the-dashboard-cards.md), [GitLab](gitlab/add-the-dashboard-cards.md), [GitHub](github/add-the-dashboard-cards.md). ## 🧰 Voir, changer ou retirer tes comptes 1. En haut à droite, clique sur ton avatar, puis sur **Mon compte**. 2. Ouvre l'onglet **Mes comptes**. Chaque outil a sa carte : **Connectée**, **Non connectée**, **Jeton refusé** ou **Non vérifiée**. **Configurer** change ou supprime ton jeton ; **Connecter** en ajoute un. ## Pour l'administrateur Sur la page de chacun de ces outils, dans **Administration › Connexions de l'entreprise**, Astrolabe le dit aussi : « Ce jeton de l'entreprise ne sert qu'aux onglets des entités, au catalogue et à Compass. Il ne sert pas aux cartes personnelles du tableau de bord (mes tickets, mes pull requests) : chacun y connecte son propre compte, depuis la carte elle-même ou dans Mon compte › Mes comptes. » --- # Ajouter l'intégration Confluence Une fois Confluence connecté, la recherche d'Astrolabe trouve ses pages : tu tapes un mot d'une page, et la page est dans la liste. Tu le fais une fois, en administrateur d'Astrolabe. ## 🔑 1. Créer un jeton dans Confluence Le jeton lit ce que son propriétaire voit : le compte doit pouvoir ouvrir les pages que tu veux retrouver. Aucun droit d'administrateur Confluence n'est nécessaire. 1. Connecte-toi à Confluence avec le compte qu'Astrolabe utilisera. 2. Ouvre ton profil, puis **Jetons d'accès personnels**, puis clique sur **Créer un jeton**. 3. Donne-lui un nom (`Astrolabe`), puis crée-le. 4. Copie le jeton **tel quel**. ## 🔌 2. Ajouter l'intégration 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Connexions de l'entreprise**. 3. Sur la carte **Confluence**, clique sur **Configurer**. 4. En haut à droite, clique sur **Ajouter un jeton**. 5. Remplis le formulaire : | Champ | Ce que tu saisis | Exemple | | --- | --- | --- | | **Nom** | Un nom de ton choix (le formulaire propose `Confluence`) | `Confluence` | | **Hôte de Confluence** | Le nom de domaine de ton Confluence, avec son port s'il n'est pas 443 ; sans `https://` | `wiki.exemple.com` | | **Jeton d'API** | Le jeton de l'étape 1, collé tel quel | | 6. Clique sur **Tester la connexion**. Le formulaire affiche **La connexion fonctionne : la source a accepté les identifiants.** 7. Clique sur **Ajouter**. Astrolabe redémarre tout seul, en quelques secondes. Le jeton est dans la liste, avec l'état **Connectée**. ## 🗂️ 3. Choisir les espaces à chercher (facultatif) Sans cette étape, Astrolabe cherche dans tous les espaces que le compte du jeton peut lire. Pour n'en garder que certains, fais ceci dans le formulaire de l'étape 2, avant **Ajouter** : 1. Clique sur **Réglages facultatifs**. 2. Dans **Espaces à chercher**, tape les clés des espaces, séparées par des virgules : `ENG, OPS`. La clé d'un espace est dans son adresse : `.../spaces/ENG/...`. 3. Clique sur **Ajouter**. **Tester la connexion** ne vérifie pas les clés d'espaces. Une clé qui ne correspond à aucun espace est dite plus tard, dans **Administration › Problèmes** : voir [Problèmes courants avec Confluence](troubleshooting.md). Deux autres champs facultatifs sont dans **Réglages facultatifs** : **E-mail** (Confluence Cloud seulement : l'e-mail du compte Atlassian à qui appartient le jeton d'API) et **Chemin de contexte** (un Confluence installé sous un chemin, comme `/confluence`). Laisse-les vides sinon. :::note Confluence Cloud Un Confluence Cloud (`.atlassian.net`) demande l'**E-mail** du compte Atlassian avec un jeton d'API de ce compte (`id.atlassian.com`, **Sécurité**, **Créer et gérer les jetons d'API**). Ce chemin n'a pas été essayé sur une instance Confluence Cloud. ::: ✅ C'est tout ! Suite : [Retrouver une page Confluence dans la recherche](search-confluence-pages.md). --- # Retrouver une page Confluence dans la recherche Avec l'[intégration Confluence](add-the-integration.md) en place, les pages de Confluence sont dans la même recherche que tes composants. 1. Dans la barre latérale de gauche, clique sur **Recherche**. 2. Clique dans le champ de recherche en haut de la page et tape un mot de la page, par exemple `runbook`. Le résultat montre le titre de la page, le début de son texte et, dessous, son espace (par exemple **Space ENG**). 3. Clique sur le résultat. La page s'ouvre dans une nouvelle fenêtre, sur ton Confluence. La recherche regarde dans le titre **et** dans le texte de la page. :::tip Une page que tu viens d'écrire Les pages sont relues à intervalles réguliers, et une fois au redémarrage d'Astrolabe. Une page écrite il y a une minute peut mettre jusqu'à une demi-heure à apparaître. ::: ## Ce que font les filtres avec les pages Confluence 1. En haut à droite, clique sur **Filtres**. 2. Dans **Type**, **Tous** garde les pages Confluence dans la liste ; **Component**, **Template**, **User** ou **Group** les en sort. ✅ C'est tout ! Suite : [Problèmes courants avec Confluence](troubleshooting.md). --- # Problèmes courants avec Confluence ## Quand tu ajoutes l'intégration | Ce que tu vois | Quoi faire | | --- | --- | | `wiki.exemple.com a refusé les identifiants (401). Vérifie le jeton, et qu'il n'a pas expiré. Corrige le champ, ou enregistre quand même si la source n'est que momentanément injoignable.` | Le jeton est faux ou expiré. Crée-en un nouveau ([étape 1](add-the-integration.md)) et colle-le tel quel dans **Jeton d'API**. | | `Aucun serveur ne répond au nom wiki.exemple.com. Vérifie l'orthographe d'après l'adresse que tu ouvres dans ton navigateur. Si elle est juste, Astrolabe ne voit pas ce serveur : préviens l'administrateur d'Astrolabe de ton entreprise. Corrige le champ, ou enregistre quand même si la source n'est que momentanément injoignable.` | Copie le nom de domaine de la barre d'adresse de ton navigateur dans **Hôte de Confluence**, sans `https://`. | ## Dans l'administration | Ce que tu vois | Quoi faire | | --- | --- | | Dans **Administration › Problèmes**, une ligne **Connexion de l'entreprise** `wiki.exemple.com refuse les identifiants (401). Le jeton est peut-être faux ou expiré.` (la colonne **État** de la carte Confluence dit `wiki.exemple.com a refusé les identifiants (401). Vérifie le jeton, et qu'il n'a pas expiré.`) | Le jeton ne marche plus. Clique sur **Corriger**, supprime le jeton, et ajoute-en un nouveau. | | Dans **Administration › Problèmes**, une ligne **Recherche** `Confluence · ` qui dit `wiki.exemple.com répond, mais aucune page à chercher n'a été trouvée. Vérifie les clés d'espaces de la connexion : une clé mal écrite ne trouve rien.` | Les clés de **Espaces à chercher** ne correspondent à aucun espace. Clique sur **Corriger**, compare chaque clé avec l'adresse de son espace (`.../spaces/ENG/...`), et corrige le champ. | | Dans **Administration › Problèmes**, une ligne **Recherche** `Documentation · ` qui dit `La documentation n'a pas pu être construite depuis son dépôt, elle n'est donc pas cherchée. Ouvre-la pour lire l'erreur, puis corrige son mkdocs.yml ou ses pages.` | La documentation de ce composant ne se construit pas, la recherche ne peut donc pas la lire. Clique sur **Corriger** : la documentation s'ouvre et montre l'erreur. Corrige le `mkdocs.yml` ou la page qu'elle nomme. *(Message pris dans les textes de l'écran ; non provoqué sur une instance.)* | ## Dans la recherche | Ce que tu vois | Quoi faire | | --- | --- | | **Nous n'avons trouvé aucun résultat** pour un mot que tu sais présent sur une page Confluence | Ouvre **Filtres** et choisis **Tous** dans **Type**. Sinon la page est dans un espace hors de **Espaces à chercher**, ou a été écrite il y a moins d'une demi-heure. | :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec ce que tu vois à l'écran. ::: --- # Ajouter les cartes GitHub à ton tableau de bord Les cartes GitHub du **Tableau de bord** montrent ce que voit **ton propre compte GitHub**. Elles demandent ton propre jeton, connecté une fois — depuis la carte elle-même. ## Les cartes | Clé | Ce qu'elle montre (description à l'écran) | | --- | --- | | **Workflows** | GitHub Actions workflow runs with status and run number | | **Workflows détaillés** | Workflow runs with individual job details, stages, and duration | | **Pull requests** | Les pull requests de chaque dépôt GitHub du catalogue que votre jeton lit, avec l'auteur, les relecteurs, le statut et votre rôle (filtrez dessus pour les vôtres) | | **Releases** | La dernière version publiée de chaque dépôt GitHub du catalogue que votre jeton peut lire | Une carte sans rien à afficher dit **Rien à afficher** et, dessous, ce qui la remplirait : | Carte | Ce qu'elle dit | | --- | --- | | **Pull requests** | Aucune pull request ouverte dans les dépôts GitHub nommés par les composants du catalogue (annotation github.com/project-slug) que votre jeton peut lire. | | **Workflows** et **Workflows détaillés** | Aucune exécution de workflow récente dans les dépôts GitHub des composants dont vous êtes propriétaire (annotation github.com/project-slug). | | **Releases** | Aucune version publiée dans les dépôts GitHub nommés par les composants du catalogue (annotation github.com/project-slug) que votre jeton peut lire. | Clique sur **En savoir plus** sous la phrase pour revenir à cette page. ## ➕ Ajouter une carte 1. Dans la barre latérale, clique sur **Tableau de bord**, puis sur l'onglet du tableau voulu. 2. Clique sur **Ajouter une carte**, en haut de la page. 3. Dans **Ajouter une carte**, choisis la **Source** `github`, puis une **Clé**. 4. Laisse **Organisations** vide, ou lis [Quels dépôts ?](#quels-dépôts-) plus bas. 5. Saisis un **Nom de la carte**, puis clique sur **Ajouter**. Sur un tableau en modification, clique ensuite sur **Enregistrer**. :::tip La source `github` manque ? Elle n'est proposée qu'une fois que l'administrateur a [ajouté l'intégration GitHub](add-the-integration.md). ::: ## 🔗 Connecter ton compte GitHub La première fois, la carte affiche **Votre compte GitHub n'est pas connecté.** (« Cette carte montre ce que voit votre propre compte GitHub. Le jeton saisi dans l'administration ne sert qu'aux onglets des entités, au catalogue et à Compass : connectez votre propre compte GitHub, ici ou dans Mon compte › Mes comptes. ») 1. Dans la carte, clique sur **Connecter mon compte GitHub**. La fenêtre **Connecter mon compte GitHub** s'ouvre sur le tableau de bord. Elle dit où créer le jeton, avec quels droits (`repo` et `read:org`), et mène à la page des jetons de ton GitHub. 2. Remplis : - **Nom d'utilisateur** : ton identifiant GitHub, par exemple `octocat`. Astrolabe te reconnaît par lui dans les événements GitHub. - **Jeton** : un jeton de ton propre compte GitHub. Voir [Créer un jeton GitHub](create-a-token.md). 3. Clique sur **Tester la connexion**. Le formulaire dit **La connexion fonctionne : l'outil a accepté votre jeton.** 4. Clique sur **Enregistrer**. La fenêtre se ferme et **toutes les cartes GitHub** de ton tableau de bord se relisent : elles montrent ce que voit ton compte GitHub. Ton jeton est aussi listé dans **Mon compte › Mes comptes**, où tu le changes ou le retires. ✅ C'est tout ! ## Ce que montre chaque carte Chaque ligne a un point de couleur pour son statut ; en haut à droite, la carte nomme les statuts qu'elle contient. La flèche au bout d'une ligne ouvre l'élément sur GitHub. ### Workflows | Colonne | Ce qu'elle contient | | --- | --- | | **Ressource** | Le dépôt | | **Titre** | Le workflow | | **Auteur** | Qui a lancé le run | | **Date** | Quand le run a été mis à jour pour la dernière fois | Une ligne par workflow de chaque dépôt : son dernier run, gardé seulement s'il a tourné dans les deux dernières heures ou s'il a échoué dans la dernière journée. Une carte sans run de ce genre dit **Rien à afficher** et la phrase ci-dessus. ### Workflows détaillés | Colonne | Ce qu'elle contient | | --- | --- | | **Ressource** | Le dépôt | | **Titre** | Le job | | **Clé** | Le numéro du run, comme `#1` | | **Date** | Quand le run a été mis à jour pour la dernière fois | | **Durée** | La durée du job, `-` tant qu'il n'est pas fini | | **Statut** | `queued`, `success`, etc. | | **Étapes** | Les étapes du job | Les mêmes runs que **Workflows**, une ligne par job. ### Pull requests | Colonne | Ce qu'elle contient | | --- | --- | | **Ressource** | Le dépôt | | **Clé** | Le numéro de la pull request, comme `#44` | | **Titre** | La pull request | | **Auteur** | Qui l'a ouverte | | **Assignés** | À qui elle est assignée, `-` si personne | | **Relecteurs** | Qui doit la relire, `-` si personne | | **Mon rôle** | Ce que tu es dessus : **Auteur**, **Relecture demandée**, **Assigné** ou **Aucun** | | **Date** | La date de la pull request | Les pull requests de **chaque dépôt du catalogue que ton jeton peut lire**, quel qu'en soit l'auteur : les ouvertes, et celles fermées dans les 7 derniers jours. Le haut à droite de la carte nomme les états présents, **open** et **closed**. Le tableau montre 5 lignes par page ; **Afficher 10 résultats** en affiche 10, et le compte (par exemple **1-5 sur 83**) suit le filtre. Si GitHub contient trop de pull requests pour toutes les lire, la carte dit **Liste tronquée : trop d'éléments à lire, seuls les plus récents sont affichés.** au-dessus du tableau. #### Ne garder que tes pull requests La carte liste tout ce que ton jeton lit. Pour garder les tiennes, filtre la colonne **Mon rôle** et enregistre le filtre avec la carte : 1. Sur **Mes tableaux de bord**, ouvre l'onglet du tableau. 2. Sur la carte, clique sur **more**, puis sur **Modifier**, puis ouvre l'onglet **Filtres**. 3. Sous **mon rôle**, clique sur la croix de **Aucun** (**Retirer le filtre Aucun**). Il ne reste que les pull requests où tu es impliqué : ici **Auteur**. 4. Clique sur **Enregistrer** dans la fenêtre. Le filtre est enregistré avec la carte. Pour tout revoir, ouvre l'onglet **Filtres** et clique sur **Réinitialiser** sous **mon rôle**. Voir aussi [Modifier ou retirer une carte](../../../../developer-dashboard/my-dashboard/change-or-remove-a-card.md#-ne-garder-que-tes-lignes). ### Releases | Colonne | Ce qu'elle contient | | --- | --- | | **Ressource** | Le dépôt | | **Clé** | Le tag de la release | | **Date** | Quand elle a été publiée | La dernière release publiée de chaque dépôt. Un dépôt sans aucune release n'a pas de ligne. ### Quels dépôts ? Les cartes ne montrent que les dépôts **que nomme un composant du catalogue** avec `github.com/project-slug`. Un dépôt que le catalogue ne connaît pas n'apparaît jamais. Le champ **organizations** (« GitHub organizations to show, comma-separated (e.g. acme). Empty: the ones the catalog imports. ») choisit les organisations. Laissé vide, la carte couvre les organisations du fournisseur de catalogue GitHub. Pour montrer un composant enregistré à la main depuis une autre organisation, écris cette organisation dans le champ, par exemple `acme`. ## Les états dans Mon compte › Mes comptes | État | Ce que ça veut dire | | --- | --- | | **Connectée** | Ton jeton marche | | **Non connectée** | Tu n'as pas enregistré de jeton | | **Jeton refusé** | GitHub refuse le jeton enregistré. Survole les mots pour la raison, ou clique sur **Configurer**. | | **Non vérifiée** | GitHub n'a pas pu être joint pour vérifier | ## 🔔 Notifications Tu choisis ce que tu reçois dans **Mon compte › Notifications**. Sous **GitHub**, l'écran liste **When a workflow fails** (marqué **CRITIQUE**), **When a PR is opened**, **When a PR is closed**, **When a PR is edited**, **When a PR review is requested**, **When a PR is approved**, **When changes are requested on a PR**, **When a PR is reviewed with comments** et **When a workflow is cancelled**. Pour que GitHub les envoie, l'administrateur pose un secret dans **Administration › Connexions de l'entreprise › Webhooks › GitHub › Configurer** (**Secret du webhook**, puis **Enregistrer**). Cette étape, et l'arrivée des notifications, n'ont pas été vérifiées sur une instance. La suite : [FAQ GitHub](faq.md). --- # Ajouter l'intégration GitHub L'intégration donne à Astrolabe l'hôte de ton GitHub et le jeton de l'administrateur. L'onglet **GitHub**, le catalogue et les cartes du tableau de bord en ont besoin. Tu le fais une fois, en administrateur. ## Avant de commencer Il te faut un jeton avec `repo`, `read:org` et `read:user` : voir [Créer un jeton GitHub](create-a-token.md). ## 🔧 Ajouter l'intégration 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Connexions de l'entreprise**. 3. Sur la carte **GitHub**, clique sur **Configurer**. La carte dit **Non configurée**. 4. En haut à droite, clique sur **Ajouter un jeton**. 5. Remplis le formulaire. Chaque **?** à côté d'un libellé explique le champ. | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **Nom** | Un nom de ton choix, unique dans la liste. Prérempli avec `GitHub`. | `GitHub` | | **Hôte** | Le nom de domaine seul, sans chemin. Prérempli avec `github.com`. Pour GitHub Enterprise, son propre nom de domaine, exactement celui auquel le serveur répond. | `github.com` | | **Jeton** | Le jeton de l'administrateur | `ghp_…` | | **Réglages facultatifs › URL de base de l'API** | Laisse vide : github.com n'en a pas besoin, et pour GitHub Enterprise `https:///api/v3` est rempli à l'enregistrement. | | | **Réglages facultatifs › URL de base du contenu brut** | Laisse vide : pour GitHub Enterprise `https:///raw` est rempli à l'enregistrement. | | 6. Clique sur **Tester la connexion**. Le formulaire dit **La connexion fonctionne : la source a accepté les identifiants.** 7. Clique sur **Ajouter**. L'instance redémarre. Environ 25 secondes plus tard, ton jeton est dans la liste, avec la provenance **Administration** et l'état **Connectée**. :::warning Le même hôte que le catalogue L'hôte (**Hôte**) du fournisseur de catalogue GitHub (**Administration › Catalogue › GitHub**) doit être celui écrit ici. ::: ✅ C'est tout ! La suite : [Afficher l'onglet GitHub sur un composant](show-the-tab.md). --- # Créer un jeton GitHub Astrolabe lit GitHub avec **un jeton d'accès personnel classique**. Il en faut un pour l'administrateur, et chacun crée le sien pour ses cartes du tableau de bord. ## Deux jetons, deux usages | Jeton | Saisi dans | Lit GitHub pour | | --- | --- | --- | | Celui de l'**administrateur** | **Administration › Connexions de l'entreprise** | L'onglet **GitHub**, la carte **Releases GitHub** et le catalogue, le même pour tout le monde | | **Le tien** | **Mon compte › Mes comptes** | **Tes** cartes du tableau de bord. Le jeton de l'administrateur ne sert jamais pour elles. | ## 🔑 Créer le jeton 1. Dans GitHub, ouvre **Settings › Developer settings › Personal access tokens**, puis **Tokens (classic)**, et génère un nouveau jeton. 2. Coche **`repo`**, **`read:org`** et, sous **`user`**, **`read:user`**. Choisis une date d'expiration et génère le jeton. Sans `read:user`, l'import des membres et des équipes de l'organisation échoue. 3. Copie le jeton **tel quel** : une chaîne qui commence par `ghp_`, sans `Bearer ` devant. :::tip Un compte dédié pour le jeton de l'administrateur Tous les utilisateurs lisent l'onglet **GitHub** avec lui, et il ne voit que les dépôts de son compte. Prends un compte dédié à Astrolabe plutôt que celui d'une personne. ::: ✅ C'est tout ! La suite : [Ajouter l'intégration GitHub](add-the-integration.md). --- # FAQ GitHub ## Pourquoi n'y a-t-il pas d'onglet GitHub sur mon composant ? Parce que le plugin GitHub est éteint, ou que le composant n'a pas d'annotation `github.com/project-slug`. Allume le plugin dans **Administration › Plugins**, et ajoute l'annotation. Voir [Afficher l'onglet GitHub](show-the-tab.md). ## Les cartes du tableau de bord montrent-elles mes propres pull requests ? **Oui**, parmi d'autres : la carte **Pull requests** montre toutes les pull requests des dépôts du catalogue que ton jeton lit, et sa colonne **Mon rôle** dit lesquelles sont à toi. Filtre dessus pour les garder : voir [Ne garder que tes pull requests](add-the-dashboard-cards.md#ne-garder-que-tes-pull-requests). Ton propre jeton doit être enregistré dans **Mon compte › Mes comptes** : chacun voit ce que voit son propre compte GitHub. Sans lui, les cartes affichent **Votre compte GitHub n'est pas connecté.** ## Un product owner peut-il voir toutes les pull requests de l'équipe ? **Oui.** Ajoute la carte **Pull requests** : elle liste toutes les pull requests des dépôts du catalogue que le jeton du product owner peut lire, quel qu'en soit l'auteur. Rien à filtrer, rien à configurer. Pour suivre une personne ou un état, filtre les colonnes **Auteur** ou **statut** dans la carte : voir [Modifier ou retirer une carte](../../../../developer-dashboard/my-dashboard/change-or-remove-a-card.md#-ne-garder-que-tes-lignes). ## Quels droits faut-il au jeton ? Un jeton classique. Celui de l'administrateur a besoin de `repo`, `read:org` et `read:user` (`read:user` pour importer les membres et les équipes de l'organisation). Le tien a besoin de `repo` et `read:org`. Astrolabe ne fait que lire GitHub. ## Pourquoi un dépôt manque-t-il sur mes cartes ? Parce qu'aucun composant du catalogue ne le nomme avec `github.com/project-slug`, ou qu'il appartient à une organisation que la carte ne couvre pas. Écris cette organisation dans le champ **organizations** de la carte. Voir [Quels dépôts ?](add-the-dashboard-cards.md#quels-dépôts-). ## Pourquoi la carte Workflows dit « Rien à afficher » alors que mes workflows ont tourné ? Parce qu'elle ne garde un workflow que si son dernier run date des deux dernières heures, ou a échoué dans la dernière journée. Un workflow réussi hier n'est pas listé. ## La carte montre-t-elle une ligne par run ? Non. **Workflows** montre une ligne par workflow, son dernier run. **Workflows détaillés** montre une ligne par job de ces runs. --- # Recevoir les notifications GitHub Astrolabe te parle de GitHub dans la cloche en haut à droite : un workflow qui échoue, une pull request à relire. Tu choisis les événements. ## Avant de commencer Ton administrateur a configuré le webhook GitHub (voir plus bas). ## 🔔 Choisir tes événements GitHub 1. En haut à droite, clique sur ton avatar, puis sur **Mon compte**. 2. Ouvre l'onglet **Notifications**. 3. Dans la carte **Que voulez-vous recevoir ?**, trouve la section **GitHub**. Chaque événement a deux interrupteurs : **Dans Astrolabe** (la cloche) et **Sur ce navigateur** : | Événement | | | --- | --- | | **Quand un workflow échoue** | Marqué **CRITIQUE** | | **Quand une PR est ouverte** | | | **Quand une PR est fermée** | | | **Quand une PR est modifiée** | | | **Quand une relecture de PR est demandée** | | | **Quand une PR est approuvée** | | | **Quand des changements sont demandés sur une PR** | | | **Quand une PR est relue avec des commentaires** | | | **Quand un workflow est annulé** | | 4. Éteins ou allume un événement. C'est enregistré tout de suite. Pour la colonne du navigateur, voir [Choisir tes notifications](../../../../developer-dashboard/notifications/choose-your-notifications.md). ✅ C'est tout ! ## 🔗 Pour l'administrateur : configurer le webhook GitHub envoie ses événements à Astrolabe par un webhook. 1. Dans la barre latérale à gauche, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Connexions de l'entreprise**, puis ouvre l'onglet **Webhooks**. 3. Sur la carte **GitHub**, clique sur **Configurer**. 4. Dans la fenêtre, à côté de **Adresse du webhook**, clique sur **Copier l'adresse**. Le bouton dit **Copié**. 5. Dans **Secret du webhook**, saisis un secret de ton choix, puis clique sur **Enregistrer**. 6. Dans ton dépôt GitHub, ajoute un webhook : colle l'adresse comme URL, et utilise le même secret. *Cette étape n'a pas été vérifiée sur une instance, ni l'arrivée des notifications.* --- # Afficher l'onglet GitHub sur un composant Chaque composant annoté reçoit un onglet **GitHub** et une carte **Releases GitHub** sur sa **Vue d'ensemble**. Deux étapes : allumer le plugin, annoter le composant. ## Ce que ça affiche, et pour qui | Où | Quoi | | --- | --- | | Onglet **GitHub** | Trois sous-onglets avec leur compte : **Pipelines** (Workflow, Branche, Résultat, Lancé par, Lancé le), **Pull requests** (Pull request, Auteur, Branche, Mise à jour), **Branches** (celle par défaut marquée `par défaut`, les protégées `protégée`) | | Carte **Releases GitHub** de la **Vue d'ensemble** | Les dernières releases du dépôt, avec leur tag, leur titre et leur date | Le sous-onglet **Pipelines** liste les derniers runs de workflow, quel que soit celui qui les a lancés. Toute personne qui peut ouvrir le composant voit tout cela. Astrolabe lit GitHub avec **le jeton de l'administrateur**, le même pour tout le monde. ## 1. 🔌 Allumer le plugin 1. Dans **Administration**, sous **PLATEFORME**, clique sur **Plugins**. 2. Sur la carte **GitHub**, clique sur l'interrupteur **en haut à droite de la carte** (nommé « Activer GitHub »). Il s'allume aussitôt, sans confirmation. ## 2. 🏷️ Annoter le composant Dans le `catalog-info.yaml` du composant, nomme son dépôt sous la forme `/` : ```yaml apiVersion: backstage.io/v1alpha1 kind: Component metadata: name: shop-api annotations: github.com/project-slug: acme/shop-api # / sur GitHub spec: type: service lifecycle: production owner: group:default/plateforme ``` ## 3. 📥 Mettre le composant au catalogue - **Un composant** : dans la barre latérale, clique sur **Catalogue**, puis sur **Enregistrer un composant existant** en haut à droite. Colle l'adresse du fichier `catalog-info.yaml` sur GitHub (par exemple `https://github.com/acme/shop-api/blob/main/catalog-info.yaml`), clique sur **Analyser**, puis **Importer**, puis **Voir le composant**. - **Toute une organisation** : utilise le fournisseur de catalogue GitHub. Voir [Importer tes dépôts GitHub](../../Catalogue/github/import-repositories.md). ## ✅ Vérifier Ouvre le composant. L'onglet **GitHub** est après **Documentation**. La **Vue d'ensemble** affiche une carte **Releases GitHub**. ✅ C'est tout ! La suite : [Ajouter les cartes GitHub à ton tableau de bord](add-the-dashboard-cards.md). --- # Problèmes courants avec GitHub ## Quand tu ajoutes l'intégration | Ce que tu vois | Quoi faire | | --- | --- | | Sous le champ **Jeton** : `Le champ « Jeton » est obligatoire.` | Le champ est vide ; rien n'a été envoyé à GitHub. Colle le jeton. | | `api.github.com a refusé les identifiants (401). Vérifie le jeton, et qu'il n'a pas expiré. Corrige le champ, ou enregistre quand même si la source n'est que momentanément injoignable.` | Le jeton est faux, révoqué ou expiré. Colle le jeton seul (il commence par `ghp_`), ou [crées-en un nouveau](create-a-token.md). | | `Aucun serveur ne répond au nom . Vérifie l'orthographe avec l'adresse que tu ouvres dans ton navigateur. Si elle est juste, Astrolabe ne voit pas ce serveur : préviens l'administrateur d'Astrolabe de votre entreprise. Corrige le champ, ou enregistre quand même si la source n'est que momentanément injoignable.` | Recopie le nom de domaine depuis la barre d'adresse de ton GitHub, sans `https://` ni chemin. S'il est juste, le serveur n'est pas joignable depuis Astrolabe. | | La carte dit **Définie par app-config.local.yaml** (ou un autre nom de fichier), et la page dit `Cette connexion est définie par le fichier de configuration app-config.local.yaml : un jeton ajouté ici serait ignoré. Changez-la dans ce fichier, ou demandez à qui gère les fichiers de l'instance.` **Ajouter un jeton** est grisé. | Un fichier de configuration de l'instance déclare GitHub, et un fichier l'emporte toujours sur l'administration. Change le jeton dans ce fichier, ou demande à qui gère les fichiers de l'instance d'en retirer GitHub : l'administration reprend alors la main. | ## Sur la page du composant | Ce que tu vois | Quoi faire | | --- | --- | | Pas d'onglet **GitHub** | Ajoute l'annotation `github.com/project-slug` ([Afficher l'onglet GitHub](show-the-tab.md)), et vérifie que **GitHub** est allumé dans **Administration › Plugins**. | | Dans l'onglet ou la carte **Releases GitHub** : `Le dépôt / n'est pas joignable avec votre jeton GitHub : vérifiez l'annotation github.com/project-slug, ou les accès du jeton.` | Aucun dépôt ne porte ce nom, **ou** le compte du jeton ne le voit pas. Compare l'annotation à l'adresse du dépôt sur GitHub, puis vérifie que le compte du jeton y a accès. | ## Sur ton tableau de bord | Ce que tu vois | Quoi faire | | --- | --- | | La source **github** manque dans **Ajouter une carte** | L'intégration GitHub n'est pas configurée. [Ajoute-la](add-the-integration.md). | | `Votre compte GitHub n'est pas connecté.` | Clique sur **Connecter mon compte GitHub** dans la carte. Voir [Connecter ton compte GitHub](add-the-dashboard-cards.md#-connecter-ton-compte-github). | | **Rien à afficher** et `Aucune pull request ouverte dans les dépôts GitHub nommés par les composants du catalogue (annotation github.com/project-slug) que votre jeton peut lire.` | Vérifie que le dépôt est nommé par un composant du catalogue (`github.com/project-slug`), que ton jeton peut le lire, et le champ **organizations** de la carte. | | La carte **Pull requests** est vide après avoir retiré des valeurs dans **Filtres** | Le filtre ne garde aucune ligne. Ouvre **Modifier** sur la carte, puis **Filtres**, et clique sur **Réinitialiser** sous la colonne. | | `Liste tronquée : trop d'éléments à lire, seuls les plus récents sont affichés.` au-dessus du tableau | GitHub contient plus que ce que la carte peut lire : les lignes montrées sont les plus récentes. | | **Rien à afficher** et `Aucune exécution de workflow récente dans les dépôts GitHub des composants dont vous êtes propriétaire (annotation github.com/project-slug).` | Vérifie que tu es propriétaire du composant du dépôt et qu'il porte l'annotation `github.com/project-slug`. | | **Rien à afficher** et `Aucune version publiée dans les dépôts GitHub nommés par les composants du catalogue (annotation github.com/project-slug) que votre jeton peut lire.` | Vérifie que le dépôt est nommé par un composant (`github.com/project-slug`) et que ton jeton peut le lire. | | `GitHub a refusé le jeton. Le jeton a peut-être expiré ou été révoqué : remplacez-le dans Administration › Connexions de l'entreprise › GitHub (ou dans Mon compte › Mes comptes si c'est le vôtre).` | Ton jeton est révoqué, expiré ou faux. Clique sur **Ouvrir l'intégration GitHub**, ou va dans **Mon compte › Mes comptes**, clique sur **Configurer**, puis sur **Remplacer** à côté de **Jeton**, colle un nouveau jeton, **Enregistrer**. | | Dans **Mon compte › Mes comptes**, la carte **GitHub** affiche **Jeton refusé** | GitHub refuse ton jeton : révoqué, expiré ou sans les droits. Clique sur **Configurer** : le formulaire dit pourquoi. Clique sur **Remplacer** à côté de **Jeton**, colle un nouveau jeton, **Enregistrer**. | | **Tester la connexion** dans **Connecter mon compte GitHub** affiche `api.github.com a refusé votre jeton (401). Vérifiez-le, et qu'il n'a pas expiré.` | Ton jeton est faux, révoqué ou expiré. Colle un jeton valide de ton propre compte GitHub. | ## Quand l'onglet dit qu'un module manque | Ce que tu vois | Que faire | | --- | --- | | `Astrolabe ne propose pas cette fonction GitHub sur cette instance.` et `Un module manque à cette installation d'Astrolabe. Prévenez votre administrateur d'Astrolabe.` | L'intégration peut être connectée et le plugin allumé, mais cette installation d'Astrolabe n'a pas le module qui sert GitHub. Préviens ton administrateur d'Astrolabe. Rien à changer sur le composant. | *Non vérifié sur une instance : ce message demande une installation à laquelle le module manque.* :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec le nom du composant et de son dépôt GitHub. ::: --- # Ajouter les cartes GitLab à ton tableau de bord Les cartes GitLab de **Mes tableaux de bord** montrent ce que voit **ton propre compte GitLab**. Tu ajoutes une carte, puis tu connectes ton compte depuis la carte elle-même, une fois. ## Avant de commencer - Ton administrateur a [ajouté l'intégration GitLab](add-the-integration.md). Sans elle, la source `gitlab` n'est pas dans la liste. - Tu as [un jeton GitLab à toi](create-a-token.md). ## ➕ 1. Ajouter une carte 1. Dans la barre latérale, clique sur **Tableau de bord**, puis sur l'onglet du tableau voulu. 2. Clique sur **Ajouter une carte**, en haut de la page. 3. Dans **Ajouter une carte**, ouvre la liste **Source** (elle montre `astrolabe`) et choisis `gitlab`. La **Clé** **Merge requests** est choisie : change-la si tu veux une autre carte. Sous le champ, une ligne en anglais décrit la clé : | Clé | Ce qu'elle montre | | --- | --- | | **Pipelines** | Le dernier pipeline de chaque branche de tes projets actifs, quand il a échoué ou tourné récemment | | **Pipelines détaillés** | Les jobs de tes derniers pipelines, avec statut et durée | | **Merge requests** | Les merge requests de chaque projet GitLab du catalogue que votre jeton lit, avec le statut et votre rôle (filtrez dessus pour les vôtres) | | **Releases** | La dernière release publiée de chaque projet GitLab du catalogue que ton jeton peut lire | | **À faire** | Tes to-dos GitLab en attente : relectures demandées, assignations, mentions, builds cassés | 4. Saisis un **Nom de la carte**, puis clique sur **Ajouter**. ## 🔑 2. Connecter ton compte GitLab, dans la carte La première fois, la carte affiche **Votre compte GitLab n'est pas connecté.** 1. Dans la carte, clique sur **Connecter mon compte GitLab**. La fenêtre **Connecter mon compte GitLab** s'ouvre. Elle dit où créer le jeton et avec quels droits (`read_api` et `read_repository`), et mène à la page des jetons de ton GitLab. 2. Remplis : | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **Nom d'utilisateur** | Ton nom d'utilisateur GitLab, celui qui suit le `@` sur ton profil GitLab. Astrolabe te reconnaît par lui dans les événements GitLab. | `jdupont` | | **Jeton** | Le jeton de ton propre compte GitLab, collé tel quel | `glpat-…` | 3. Clique sur **Tester la connexion**. La fenêtre affiche **La connexion fonctionne : l'outil a accepté votre jeton.** 4. Clique sur **Enregistrer**. La fenêtre se ferme et **toutes les cartes GitLab** de ton tableau de bord se relisent. ✅ C'est tout ! :::tip Changer ou retirer ton jeton Ton compte GitLab est listé dans **Mon compte › Mes comptes** (ton avatar en haut à droite, puis **Mon compte**, puis l'onglet **Mes comptes**). Clique sur **Configurer** sur la carte **GitLab** pour remplacer le jeton, ou sur **Supprimer** pour le retirer. ::: ## Les états dans Mon compte › Mes comptes | État | Ce que ça veut dire | | --- | --- | | **Connectée** | Tu as enregistré un jeton | | **Non connectée** | Tu n'as pas enregistré de jeton | | **Jeton refusé** | GitLab refuse le jeton enregistré. Clique sur **Configurer** : la fenêtre dit pourquoi. | La suite : [Ce que montre chaque carte GitLab](what-the-cards-show.md). --- # Ajouter l'intégration GitLab L'intégration donne à Astrolabe l'hôte de ton GitLab et le jeton de l'administrateur. L'onglet **GitLab**, le catalogue et les cartes du tableau de bord en ont besoin. Tu le fais une fois, en administrateur. ## Avant de commencer Il te faut un jeton avec `read_api` et `read_repository` : voir [Créer un jeton GitLab](create-a-token.md). ## 🔧 Ajouter l'intégration 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Connexions de l'entreprise**. 3. Sur la carte **GitLab**, clique sur **Configurer**. La carte dit **Non configurée**. 4. En haut à droite, clique sur **Ajouter un jeton**. 5. Remplis le formulaire. Chaque **?** à côté d'un libellé explique le champ. | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **Nom** | Un nom de ton choix. Prérempli avec `GitLab`. | `GitLab` | | **Hôte de l'instance GitLab** | Le nom de domaine seul, sans chemin. Prérempli avec `gitlab.com`. Pour un GitLab auto-hébergé, exactement le nom de domaine auquel le serveur répond. | `gitlab.com` | | **Jeton GitLab** | Le jeton de l'administrateur | `glpat-…` | | **Réglages facultatifs › URL de base de l'API** | Laisse vide : `https:///api/v4` est rempli à l'enregistrement. | | | **Réglages facultatifs › URL de base** | Laisse vide : c'est `https://`. | | 6. Clique sur **Tester la connexion**. Le formulaire dit **La connexion fonctionne : la source a accepté les identifiants.** 7. Clique sur **Ajouter**. Un bandeau annonce **La configuration a changé ; le serveur redémarre.** Environ 25 secondes plus tard, ton jeton est dans la liste, avec la provenance **Administration** et l'état **Connectée**. :::warning Le même hôte que le catalogue L'hôte du fournisseur de catalogue GitLab (**Administration › Catalogue › GitLab**) doit être exactement celui-ci. ::: ✅ C'est tout ! La suite : [Afficher l'onglet GitLab sur un composant](show-the-tab.md). --- # Créer un jeton GitLab Astrolabe lit GitLab avec **un jeton d'accès personnel**. Il en faut un pour l'administrateur, et chacun crée le sien pour ses cartes du tableau de bord. ## Deux jetons, deux usages | Jeton | Saisi dans | Lit GitLab pour | | --- | --- | --- | | Celui de l'**administrateur** | **Administration › Connexions de l'entreprise** | L'onglet **GitLab**, la carte **Releases GitLab** et le catalogue, le même pour tout le monde | | **Le tien** | **Mon compte › Mes comptes** | **Tes** cartes du tableau de bord. Le jeton de l'administrateur ne sert jamais pour elles. | ## 🔑 Créer le jeton 1. Dans GitLab, ouvre tes préférences d'utilisateur, puis **Access tokens**, et ajoute un jeton. 2. Coche **`read_api`** et **`read_repository`**, choisis une date d'expiration, et crée le jeton. 3. Copie le jeton **tel quel** : une chaîne qui commence par `glpat-`. :::tip Un compte dédié pour le jeton de l'administrateur Tous les utilisateurs lisent l'onglet **GitLab** avec lui, et il ne voit que les projets de son compte. Prends un compte dédié à Astrolabe plutôt que celui d'une personne. ::: ✅ C'est tout ! La suite : [Ajouter l'intégration GitLab](add-the-integration.md). --- # FAQ GitLab ## Pourquoi n'y a-t-il pas d'onglet GitLab sur mon composant ? Parce qu'il n'a pas d'annotation `gitlab.com/project-slug`, ou que le plugin GitLab est éteint. Astrolabe ne déduit pas le projet de l'endroit d'où le composant a été enregistré : ajoute l'annotation. Voir [Afficher l'onglet GitLab](show-the-tab.md). ## Les cartes du tableau de bord montrent-elles mes propres merge requests ? **Oui**, parmi d'autres : la carte **Merge requests** montre toutes les merge requests des projets du catalogue que ton jeton lit, et sa colonne **Mon rôle** dit lesquelles sont à toi. Filtre dessus pour les garder : voir [Ce que montre chaque carte GitLab](what-the-cards-show.md#merge-requests). Ton propre jeton doit être enregistré dans **Mon compte › Mes comptes** : chacun voit ce que voit son propre compte GitLab. Sans lui, les cartes affichent **Votre compte GitLab n'est pas connecté.** ## Un product owner peut-il voir toutes les merge requests de l'équipe ? **Oui.** Ajoute la carte **Merge requests** : elle liste toutes les merge requests des projets du catalogue que le jeton du product owner peut lire, quel qu'en soit l'auteur. *Non vérifié sur une instance (aucun GitLab connecté).* ## Quels droits faut-il au jeton ? `read_api` et `read_repository`, pour le jeton de l'administrateur comme pour le tien. Astrolabe ne fait que lire GitLab. ## Pourquoi une carte est-elle vide alors que j'ai des projets sur GitLab ? Parce qu'une carte lit **les projets des composants de ton catalogue** qui portent l'annotation `gitlab.com/project-slug`, et seulement ce qui est récent : le dernier pipeline de chaque branche quand il a échoué ou tourné récemment, les merge requests des projets du catalogue, la dernière release. Ajoute l'annotation au composant : voir [Afficher l'onglet GitLab](show-the-tab.md). La carte vide dit quelle condition manque, dans la phrase sous **Rien à afficher** : voir [Ce que montre chaque carte GitLab](what-the-cards-show.md#quand-il-ny-a-rien-à-montrer). ## Les cartes montrent-elles tous les projets de mon GitLab ? **Non**, seulement les projets des composants de ton catalogue qui nomment leur projet avec l'annotation, et que ton jeton peut lire. ## Que montre la carte To-Do List ? Les to-dos en attente de ton propre compte GitLab : relectures demandées, assignations, mentions, builds cassés. Sans aucun, elle affiche **Aucune tâche en attente sur GitLab**. *Une carte avec des to-dos n'a pas été vérifiée sur une instance.* ## Qui est prévenu quand un pipeline échoue ? Tu choisis dans **Mon compte › Notifications** : voir [Recevoir les notifications GitLab](get-notifications.md). --- # Recevoir les notifications GitLab Astrolabe te parle de GitLab dans la cloche en haut à droite : un pipeline qui échoue, une merge request à relire. Tu choisis les événements. ## Avant de commencer Ton administrateur a configuré le webhook GitLab (voir plus bas). ## 🔔 Choisir tes événements GitLab 1. En haut à droite, clique sur ton avatar, puis sur **Mon compte**. 2. Ouvre l'onglet **Notifications**. 3. Dans la carte **Que voulez-vous recevoir ?**, trouve la section **GitLab**. Chaque événement a deux interrupteurs : **Dans Astrolabe** (la cloche) et **Sur ce navigateur** : | Événement | | | --- | --- | | **Quand un pipeline échoue** | Marqué **CRITIQUE** | | **Quand une MR est ouverte** | | | **Quand une MR est fermée** | | | **Quand une MR est modifiée** | | | **Quand une relecture de MR est demandée** | | | **Quand une MR est approuvée** | | | **Quand des changements sont demandés sur une MR** | | | **Quand une MR est relue avec des commentaires** | | | **Quand un pipeline est annulé** | | | **Quand une tâche s'ajoute à votre liste GitLab** | | 4. Éteins ou allume un événement. C'est enregistré tout de suite. Les démarrages et les réussites de pipeline sont sous **Démarrages et réussites**, en bas de la section **GitLab** : **Quand un pipeline démarre** et **Quand un pipeline réussit**. Ils sont éteints. Un pipeline qui échoue t'arrive sous la forme, par exemple, **Pipeline failed for shop-api (main)**, avec `acme/shop-api #9 - By jdupont` dessous. Pour être prévenu de tous les pipelines d'un composant, voir [Surveiller un composant](../../../../developer-dashboard/notifications/watch-a-component.md). Pour la colonne du navigateur, voir [Choisir tes notifications](../../../../developer-dashboard/notifications/choose-your-notifications.md). ✅ C'est tout ! ## 🔕 Ne plus recevoir les réussites des composants que tu surveilles Tu surveilles un composant ? Tout ce qui lui arrive te parvient, réussites comprises : la section **Composants surveillés** de la même carte est allumée par défaut. 1. Dans la section **Composants surveillés**, clique sur **Démarrages et réussites**. 2. Sur la ligne **GitLab — Quand un pipeline réussit**, éteins **Dans Astrolabe**. Les échecs continuent d'arriver : **GitLab — Quand un pipeline échoue** reste allumé. ✅ C'est tout ! ## 🔗 Pour l'administrateur : configurer le webhook GitLab envoie ses événements à Astrolabe par un webhook. 1. Dans la barre latérale à gauche, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Connexions de l'entreprise**, puis ouvre l'onglet **Webhooks**. 3. Sur la carte **GitLab**, clique sur **Configurer**. 4. Dans la fenêtre, à côté de **Adresse du webhook**, clique sur **Copier l'adresse**. Le bouton dit **Copié**. 5. Dans **Secret du webhook**, saisis un secret de ton choix, puis clique sur **Enregistrer**. 6. Dans ton projet GitLab, ajoute un webhook : colle l'adresse comme URL, et le même secret comme jeton. *Cette étape n'a pas été vérifiée sur une instance.* Chaque fois que GitLab appelle Astrolabe avec le bon secret, la carte **GitLab** de l'onglet **Webhooks** affiche **Dernier appel accepté le** suivi de la date, et son bouton devient **Gérer**. --- # Afficher l'onglet GitLab sur un composant Chaque composant annoté reçoit un onglet **GitLab** et une carte **Releases GitLab** sur sa **Vue d'ensemble**. Deux étapes : allumer le plugin, annoter le composant. ## Ce que ça affiche, et pour qui | Où | Quoi | | --- | --- | | Onglet **GitLab** | Trois sous-onglets avec leur compte : **Pipelines** (Pipeline, Branche, Résultat, Déclencheur, Lancé le), **Merge requests** (celles ouvertes : Merge request, Auteur, Branche, Mise à jour), **Branches** (celle par défaut marquée `par défaut`, les protégées `protégée`) | | Carte **Releases GitLab** de la **Vue d'ensemble** | Les releases du projet, avec leur tag et leur date. **Aucune release pour l'instant.** s'il n'y en a pas. | Toute personne qui peut ouvrir le composant les voit. Astrolabe lit GitLab avec **le jeton de l'administrateur**, le même pour tout le monde. ## 1. 🔌 Allumer le plugin 1. Dans **Administration**, sous **PLATEFORME**, clique sur **Plugins**. 2. Sur la carte **GitLab**, clique sur l'interrupteur **en haut à droite de la carte** (nommé « Activer GitLab »). Il s'allume aussitôt, sans confirmation. Si la carte dit **Configurez d'abord l'intégration GitLab**, clique dessus : l'intégration s'ouvre dans **Connexions de l'entreprise**. Ajoute-la ([Ajouter l'intégration GitLab](add-the-integration.md)). Le plugin s'allume tout seul quand tu enregistres l'intégration : passe à l'étape 2. ## 2. 🏷️ Annoter le composant Dans le `catalog-info.yaml` du composant, nomme son projet sous la forme `/`, sous-groupes compris (par exemple `mon-groupe/sous-groupe/shop-api`) : ```yaml apiVersion: backstage.io/v1alpha1 kind: Component metadata: name: shop-api annotations: gitlab.com/project-slug: mon-groupe/shop-api # / sur GitLab spec: type: service lifecycle: production owner: group:default/plateforme ``` :::warning L'annotation est la seule source Astrolabe ne devine jamais le projet à partir de l'adresse d'où le composant a été enregistré. Un composant sans l'annotation n'a pas d'onglet **GitLab**. ::: ## 3. 📥 Mettre le composant au catalogue - **Un composant** : dans la barre latérale, clique sur **Catalogue**, puis sur **Enregistrer un composant existant** en haut à droite. Colle l'adresse du fichier `catalog-info.yaml` sur GitLab (par exemple `https://gitlab.com/mon-groupe/shop-api/-/blob/main/catalog-info.yaml`), clique sur **Analyser**, puis **Importer**, puis **Voir le composant**. - **Tout un groupe** : utilise le fournisseur de catalogue GitLab. Voir [Importer tes projets GitLab](../../Catalogue/gitlab/import-projects.md). ## ✅ Vérifier Ouvre le composant. L'onglet **GitLab** est après **Documentation**. La **Vue d'ensemble** affiche une carte **Releases GitLab**. ✅ C'est tout ! La suite : [Ajouter les cartes GitLab à ton tableau de bord](add-the-dashboard-cards.md). --- # Problèmes courants avec GitLab ## Quand tu ajoutes l'intégration | Ce que tu vois | Quoi faire | | --- | --- | | Sous le champ **Jeton GitLab** : `Le champ « Jeton GitLab » est obligatoire.` | Le champ est vide ; rien n'a été envoyé à GitLab. Colle le jeton. | | `gitlab.com a refusé les identifiants (401). Vérifie le jeton, et qu'il n'a pas expiré. Corrige le champ, ou enregistre quand même si la source n'est que momentanément injoignable.` | Le jeton est faux, révoqué ou expiré. Colle le jeton seul (il commence par `glpat-`), ou [crées-en un nouveau](create-a-token.md). | | `Aucun serveur ne répond au nom . Vérifie l'orthographe avec l'adresse que tu ouvres dans ton navigateur. Si elle est juste, Astrolabe ne voit pas ce serveur : préviens l'administrateur d'Astrolabe de votre entreprise. Corrige le champ, ou enregistre quand même si la source n'est que momentanément injoignable.` | Recopie le nom de domaine depuis la barre d'adresse de ton GitLab, sans `https://` ni chemin. S'il est juste, le serveur n'est pas joignable depuis Astrolabe. | ## Sur la page du composant | Ce que tu vois | Quoi faire | | --- | --- | | Pas d'onglet **GitLab** | Ajoute l'annotation `gitlab.com/project-slug` ([Afficher l'onglet GitLab](show-the-tab.md)), et vérifie que **GitLab** est allumé dans **Administration › Plugins**. | | Dans l'onglet ou la carte **Releases GitLab** : `Le projet / n'est pas joignable avec votre jeton GitLab : vérifiez l'annotation gitlab.com/project-slug, ou les accès du jeton.` | Aucun projet ne porte ce chemin, **ou** le compte du jeton ne le voit pas. Compare l'annotation à l'adresse du projet sur GitLab, puis vérifie que le compte du jeton est membre du projet. | ## Sur ton tableau de bord | Ce que tu vois | Quoi faire | | --- | --- | | La source **gitlab** manque dans **Ajouter une carte** | L'intégration GitLab n'est pas configurée. [Ajoute-la](add-the-integration.md). | | `Votre compte GitLab n'est pas connecté.` | Clique sur **Connecter mon compte GitLab** dans la carte. Voir [Ajouter les cartes GitLab à ton tableau de bord](add-the-dashboard-cards.md). | | `GitLab a refusé le jeton. Le jeton a peut-être expiré ou été révoqué : remplacez-le dans Administration › Connexions de l'entreprise › GitLab (ou dans Mon compte › Mes comptes si c'est le vôtre).` | Les cartes lisent avec ton propre jeton : c'est donc le tien que GitLab refuse (révoqué, expiré ou sans les droits). Dans **Mon compte › Mes comptes**, clique sur **Configurer** sur la carte **GitLab**, clique sur **Remplacer** à côté de **Jeton**, colle un nouveau jeton, clique sur **Enregistrer**. | | **Rien à afficher** et `Aucune merge request ouverte dans les projets GitLab nommés par les composants du catalogue (annotation gitlab.com/project-slug) que votre jeton peut lire.` | Aucune merge request n'est ouverte dans un projet du catalogue que ton jeton lit. Si tu en attendais une, vérifie que le composant du projet porte l'annotation `gitlab.com/project-slug` ([Afficher l'onglet GitLab](show-the-tab.md)) et que le compte de ton jeton peut lire le projet. | | `Liste tronquée : trop d'éléments à lire, seuls les plus récents sont affichés.` au-dessus du tableau d'une carte GitLab | GitLab contient plus que ce que la carte peut lire : les lignes montrées sont les plus récentes. | | **Rien à afficher** et `Aucun pipeline en échec ou récent dans les projets GitLab que votre jeton lit et qu'un composant du catalogue nomme (annotation gitlab.com/project-slug).` | Ajoute l'annotation `gitlab.com/project-slug` au composant du projet ([Afficher l'onglet GitLab](show-the-tab.md)), et vérifie que le compte de ton jeton est membre du projet. | | **Rien à afficher** et `Aucune version publiée dans les projets GitLab nommés par les composants du catalogue (annotation gitlab.com/project-slug) que votre jeton peut lire.` | Ajoute l'annotation `gitlab.com/project-slug` au composant du projet, et vérifie que le compte de ton jeton peut lire le projet. | | **Aucune tâche en attente sur GitLab** et `GitLab ne liste aucune tâche en attente pour votre compte : ni relecture demandée, ni assignation, ni mention, ni build cassé.` | Rien à corriger : la carte se remplit dès que GitLab a une tâche pour toi. | | **Tester la connexion** dans **Connecter mon compte GitLab** affiche `gitlab.com a refusé votre jeton (401). Vérifiez-le, et qu'il n'a pas expiré.` | Ton jeton est faux, révoqué ou expiré. Colle un jeton valide de ton propre compte GitLab. | | Dans **Mon compte › Mes comptes**, la carte **GitLab** affiche **Jeton refusé** | Pareil : clique sur **Configurer**, puis sur **Remplacer**. | ## Notifications | Ce que tu vois | Quoi faire | | --- | --- | | Pas de section **GitLab** dans **Mon compte › Notifications** | GitLab n'est pas connecté : demande à ton administrateur d'Astrolabe d'[ajouter l'intégration GitLab](add-the-integration.md). | | Un pipeline en échec ne fait pas sonner la cloche | Vérifie que **When a pipeline fails** est allumé dans **Mon compte › Notifications**, et demande à ton administrateur si le webhook GitLab est configuré (voir [Recevoir les notifications GitLab](get-notifications.md)). | ## Quand l'onglet dit qu'un module manque | Ce que tu vois | Que faire | | --- | --- | | `Astrolabe ne propose pas cette fonction GitLab sur cette instance.` et `Un module manque à cette installation d'Astrolabe. Prévenez votre administrateur d'Astrolabe.` | L'intégration peut être connectée et le plugin allumé, mais cette installation d'Astrolabe n'a pas le module qui sert GitLab. Préviens ton administrateur d'Astrolabe. Rien à changer sur le composant. | *Non vérifié sur une instance : ce message demande une installation à laquelle le module manque.* :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec le nom du composant et de son projet GitLab. ::: --- # Ce que montre chaque carte GitLab Tu as [ajouté une carte GitLab](add-the-dashboard-cards.md). Voici ce qu'elle liste, et pour quels projets. Les en-têtes de colonnes s'affichent en anglais. ## Quels projets une carte lit Une carte lit les projets GitLab des **composants de ton catalogue** qui nomment leur projet avec l'annotation `gitlab.com/project-slug`, avec **ton propre jeton**. Un composant sans l'annotation n'est pas lu. Pour l'annotation, voir [Afficher l'onglet GitLab sur un composant](show-the-tab.md). ```yaml metadata: annotations: gitlab.com/project-slug: acme/shop-api # / sur GitLab ``` Chaque ligne se termine par une flèche : clique dessus pour ouvrir le pipeline, le job, la merge request ou la release dans GitLab. ## Pipelines Le dernier pipeline de chaque branche, quand il a échoué ou tourné récemment. | Colonne | Ce qu'elle montre | | --- | --- | | **Ressource** | Le projet, avec un point de couleur pour le statut du pipeline | | **Titre** | La branche | | **Auteur** | Le nom d'utilisateur GitLab de la personne qui l'a déclenché | | **Date** | Quand il a tourné, le plus récent d'abord | Les statuts présents sont écrits en haut à droite de la carte, avec leur couleur : par exemple **running**, **success**. ## Pipelines détaillés Les jobs de tes derniers pipelines. Une ligne par job. | Colonne | Ce qu'elle montre | | --- | --- | | **Ressource** | Le projet | | **Titre** | Le nom du job | | **Date** | Quand il a tourné | | **Durée** | Sa durée, par exemple `27s` | | **Statut** | `running`, `success`, … | | **Étapes** | Le statut de l'étape du job, sous forme de marque colorée | ## Merge requests Les merge requests de **chaque projet GitLab du catalogue que ton jeton peut lire**, quel qu'en soit l'auteur : les ouvertes, et celles fermées dans les 7 derniers jours. | Colonne | Ce qu'elle montre | | --- | --- | | **Ressource** | Le projet, avec un point de couleur pour l'état de la merge request | | **Titre** | Le titre de la merge request | | **Auteur** | Le nom d'utilisateur GitLab de son auteur | | **Mon rôle** | Ce que tu es dessus : **Auteur**, **Relecture demandée**, **Assigné** ou **Aucun** | | **Date** | Sa dernière mise à jour | Les états présents sont écrits en haut à droite de la carte, par exemple **open**. Pour ne garder que les tiennes, filtre la colonne **Mon rôle** et enregistre le filtre avec la carte : retire **Aucun** dans l'onglet **Filtres** de la carte, comme pour la carte **Pull requests** de GitHub, voir [Modifier ou retirer une carte](../../../../developer-dashboard/my-dashboard/change-or-remove-a-card.md#-ne-garder-que-tes-lignes). Si GitLab contient trop de merge requests pour toutes les lire, la carte dit **Liste tronquée : trop d'éléments à lire, seuls les plus récents sont affichés.** au-dessus du tableau. *Une carte qui contient des merge requests n'a pas été vérifiée sur une instance (aucun GitLab connecté) ; elle fonctionne comme la carte **Pull requests** de GitHub.* ## Releases La dernière release publiée de chaque projet GitLab de ton catalogue que ton jeton peut lire. | Colonne | Ce qu'elle montre | | --- | --- | | **Ressource** | Le projet | | **Clé** | Le tag de la release, par exemple `v1.2.0` | | **Date** | La date de la release | ## À faire Tes to-dos GitLab en attente : relectures demandées, assignations, mentions, builds cassés. Quand tu n'en as aucun, la carte affiche **Aucune tâche en attente sur GitLab**. *Une carte avec des to-dos n'a pas été vérifiée sur une instance.* ## Quand il n'y a rien à montrer Une carte sans ligne affiche **Rien à afficher** et, dessous, ce qui la remplirait. Clique sur **En savoir plus** sous la phrase pour revenir à cette page. | Carte | Ce qu'elle dit | | --- | --- | | **Merge requests** | Aucune merge request ouverte dans les projets GitLab nommés par les composants du catalogue (annotation gitlab.com/project-slug) que votre jeton peut lire. | | **Pipelines** et **Pipelines détaillés** | Aucun pipeline en échec ou récent dans les projets GitLab que votre jeton lit et qu'un composant du catalogue nomme (annotation gitlab.com/project-slug). | | **Releases** | Aucune version publiée dans les projets GitLab nommés par les composants du catalogue (annotation gitlab.com/project-slug) que votre jeton peut lire. | | **À faire** | **Aucune tâche en attente sur GitLab**, puis : GitLab ne liste aucune tâche en attente pour votre compte : ni relecture demandée, ni assignation, ni mention, ni build cassé. | ## Changer ce que montre une carte 1. Sur **Mes tableaux de bord**, ouvre l'onglet du tableau. 2. En haut à droite de la carte, clique sur le bouton **more**, puis sur **Modifier**. La fenêtre **Modifier la carte** a trois onglets : | Onglet | Ce que tu fais | | --- | --- | | **Général** | Renommer la carte ou changer son icône | | **Colonnes** | Éteindre une colonne | | **Filtres** | Retirer une valeur d'une colonne, pour que ses lignes disparaissent | 3. Clique sur **Enregistrer**. Le même menu propose **Actualiser**, pour relire GitLab tout de suite, et **Supprimer**. ✅ C'est tout ! La suite : [Recevoir les notifications GitLab](get-notifications.md). --- # Ajouter la carte Alertes en défaut à ton tableau de bord La carte **Alertes en défaut** liste les règles d'alerte Grafana qui **se déclenchent**, sont **en erreur** ou **ne reçoivent pas de données**, les plus anciennes d'abord, sur ton **Tableau de bord**. ## Avant de commencer [L'intégration Grafana](add-the-integration.md) est ajoutée : la carte lit Grafana avec son jeton. Ta licence couvre Grafana (Premium) : voir [Ce que débloque une licence](../../../../administration/licensing/what-a-license-unlocks.md). Sans elle, **Ajouter une carte** dit **Grafana demande la licence Premium**, avec un lien **Ouvrir la licence**. ## ➕ Ajouter la carte 1. Dans la barre latérale, clique sur **Tableau de bord**, puis sur l'onglet du tableau voulu. 2. Clique sur **Ajouter une carte**, en haut de la page. 3. Dans **Ajouter une carte**, choisis **Source** `grafana`. **Clé** affiche **Alertes en défaut**, avec le texte **Grafana alert rules that fire, are in error or get no data, the oldest first**. 4. Écris un **Nom de la carte**, par exemple `Alertes`, puis clique sur **Ajouter**. La carte affiche son nom, puis **Aucune alerte en difficulté** quand toutes les règles vont bien, avec la phrase « Aucune règle d'alerte n'est déclenchée, en erreur ou sans données pour les composants du catalogue (annotation grafana/alert-label-selector). » ## Ce qu'elle liste Les règles d'alerte désignées par l'annotation `grafana/alert-label-selector` de **chaque composant du catalogue**, quel qu'en soit le propriétaire, et seulement celles qui se déclenchent, sont en erreur ou ne reçoivent aucune donnée. Un composant sans l'annotation n'ajoute rien. Deux colonnes, **Owner** et **Mine**, disent qui possède le composant et s'il est à toi (**À moi** ou **Autres**) : pour ne garder que tes alertes, filtre sur **Mine** et enregistre le filtre avec la carte, voir [Ne garder que tes lignes](../../../../developer-dashboard/my-dashboard/change-or-remove-a-card.md#-ne-garder-que-tes-lignes). *Une carte qui contient des alertes n'a pas été vérifiée sur une instance : aucune alerte ne se déclenchait.* ## 🔔 Être prévenu quand une alerte se déclenche **Mon compte › Notifications** a une ligne **Grafana — When an alert is triggered**, marquée **CRITIQUE**. Voir [Choisir tes notifications](../../../../developer-dashboard/notifications/choose-your-notifications.md). ✅ C'est tout ! Quelque chose ne va pas ? Voir [Problèmes courants avec Grafana](troubleshooting.md). --- # Ajouter l'intégration Grafana L'intégration donne à Astrolabe l'adresse de ton Grafana et un jeton pour le lire. Elle nourrit l'onglet **Monitoring** de tes composants et la carte **Alertes en défaut** du **Tableau de bord**. Tu le fais une fois, en administrateur. Le même jeton sert l'onglet et la carte : il n'y a rien d'autre à saisir. ## Avant de commencer Il te faut l'adresse de ton Grafana et un jeton de compte de service : voir [Créer un jeton de compte de service Grafana](create-a-token.md). ## 🔧 Ajouter l'intégration 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Connexions de l'entreprise**. 3. Sur la carte **Grafana**, clique sur **Configurer**. 4. En haut à droite, clique sur **Ajouter un jeton**. 5. Remplis le formulaire : | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **Nom** | Un nom pour toi | `Grafana` | | **Adresse de Grafana** | L'adresse web de Grafana, **avec** `https://` | `https://grafana.exemple.com` | | **Jeton de compte de service** | Le jeton que tu as créé | | 6. Clique sur **Tester la connexion**. Le formulaire dit **La connexion fonctionne : la source a accepté les identifiants.** 7. Clique sur **Ajouter**. Le formulaire prévient : **L'instance redémarrera après confirmation.** Attends quelques secondes. Le jeton est dans la liste, avec **État** sur **Connectée**. Dans **Connexions de l'entreprise**, la carte **Grafana** dit désormais **Connectée** et son bouton devient **Gérer**. ✅ C'est tout ! La suite : [Afficher l'onglet Monitoring sur un composant](show-the-monitoring-tab.md). --- # Créer un jeton de compte de service Grafana Astrolabe lit Grafana avec **un jeton de compte de service**. Le rôle **Viewer** suffit : Astrolabe ne fait que lire tes alertes et tes tableaux de bord, il ne change jamais rien dans Grafana. Tu crées le jeton une fois, dans Grafana. :::tip Prends un compte de service dédié Crée un compte de service pour Astrolabe, par exemple `astrolabe`. Un compte de service n'appartient à personne : le jeton continue de marcher quand quelqu'un part. ::: ## 🔑 Créer le jeton 1. Dans Grafana, ouvre le menu, puis **Administration**, puis **Users and access**, puis **Service accounts**. 2. Clique sur **Add service account**. 3. Dans **Display name**, écris `astrolabe`. Dans **Role**, choisis `Viewer`. 4. Clique sur **Create**. 5. Clique sur **Add service account token**, puis sur **Generate token**. 6. **Copie le jeton maintenant.** Grafana ne l'affiche plus jamais. Ces étapes se font dans Grafana. Elles n'ont pas été vérifiées sur une instance. ✅ C'est tout ! La suite : [Ajouter l'intégration Grafana](add-the-integration.md). --- # FAQ Grafana ## Grafana demande-t-il une licence ? Oui, la licence Premium. Sans licence qui le couvre, l'onglet **Monitoring** n'est pas sur les composants et la carte **Alertes en défaut** est fermée : voir [Problèmes courants avec Grafana](troubleshooting.md). ## Quel jeton ? Un **jeton de compte de service** Grafana au rôle **Viewer**. Voir [Créer un jeton de compte de service Grafana](create-a-token.md). ## Astrolabe change-t-il quelque chose dans Grafana ? Non. Astrolabe ne fait que lire : les alertes et les tableaux de bord. ## Dois-je saisir Grafana deux fois ? Non. La carte du plugin **Grafana** n'a pas de réglages. L'adresse et le jeton se saisissent une seule fois, dans **Administration › Connexions de l'entreprise**, et servent l'onglet comme la carte. ## Qui voit l'onglet Monitoring ? Toute personne qui peut ouvrir le composant. Astrolabe lit Grafana avec le jeton de l'intégration, le même pour tous les lecteurs. ## L'onglet manque sur un composant. Pourquoi ? L'onglet n'existe que sur un composant annoté `grafana/dashboard` ou `grafana/alert-label-selector`, quand le plugin **Grafana** est allumé. Voir [Afficher l'onglet Monitoring](show-the-monitoring-tab.md). ## Faut-il un tableau de bord pour voir des alertes ? Non. `grafana/alert-label-selector` seule affiche l'onglet avec ses alertes. ## La carte montre-t-elle seulement mes composants ? Non : elle liste les alertes de **chaque composant du catalogue** qui porte l'annotation `grafana/alert-label-selector`. Filtre la colonne **Mine** pour garder les tiennes : voir [Ne garder que tes lignes](../../../../developer-dashboard/my-dashboard/change-or-remove-a-card.md#-ne-garder-que-tes-lignes). --- # Afficher l'onglet Monitoring sur un composant Chaque composant annoté reçoit un onglet **Monitoring** : les alertes Grafana qui le concernent et les panneaux de son tableau de bord Grafana, dessinés par Astrolabe. Deux étapes : allumer le plugin, annoter le composant. ## Ce que l'onglet affiche, et pour qui En haut, quatre boutons de période : **1 h**, **6 h**, **24 h** et **7 j**. **24 h** est choisi quand tu ouvres l'onglet. Sous **Alertes**, un tableau avec une ligne par règle d'alerte : | Colonne | Quoi | | --- | --- | | **État** | L'état de la règle | | **Règle** | Le nom de la règle | | **Gravité** | Sa gravité | | **Résumé** | Son résumé | Dessous, les panneaux du tableau de bord nommé par le composant. Toute personne qui peut ouvrir le composant voit l'onglet. Astrolabe lit Grafana avec **le jeton de l'intégration**, le même pour tout le monde. ## 1. 🔌 Allumer le plugin 1. Dans **Administration**, sous **PLATEFORME**, clique sur **Plugins**. 2. Sur la carte **Grafana**, allume l'interrupteur en haut à droite. Si la carte dit **Nécessite la licence Premium**, l'interrupteur est grisé : Grafana fait partie de la licence Premium. Clique sur la ligne, [ajoute une licence](../../../../administration/licensing/add-your-license.md) qui le couvre, puis reviens à cette étape. Si la carte dit **Configurez d'abord l'intégration Grafana**, clique dessus : l'intégration s'ouvre dans **Connexions de l'entreprise**. Ajoute-la ([Ajouter l'intégration Grafana](add-the-integration.md)). Le plugin s'allume tout seul quand tu enregistres l'intégration : passe à l'étape 2. La carte n'a pas de réglages : Grafana se saisit une seule fois, dans [l'intégration](add-the-integration.md). ## 2. 🏷️ Annoter le composant Dans le fichier `catalog-info.yaml` du composant, ajoute l'une de ces annotations, ou les deux. **Une seule suffit** pour afficher l'onglet. ```yaml apiVersion: backstage.io/v1alpha1 kind: Component metadata: name: shop-api annotations: grafana/dashboard: shop-api-overview grafana/alert-label-selector: service=shop-api spec: type: service lifecycle: production owner: team-a ``` | Annotation | Quoi écrire | Exemple | | --- | --- | --- | | `grafana/dashboard` | L'UID du tableau de bord : dans Grafana, la partie après `/d/` dans son adresse | `shop-api-overview` | | `grafana/alert-label-selector` | Une étiquette de tes règles d'alerte, sous la forme `nom=valeur` | `service=shop-api` | | `grafana/panels` | Facultatif. Les identifiants des panneaux à dessiner, séparés par des virgules. Sans elle, tous les panneaux sont dessinés | `2,4` | | `grafana/variables` | Facultatif. Les valeurs des variables du tableau de bord, sous la forme `nom=valeur`, séparées par des virgules | `env=prod` | Le dessin des panneaux n'a pas été vérifié sur une instance. ## ✅ Vérifier Ouvre le composant dans **Catalogue**. Un onglet **Monitoring** est dans la barre d'onglets, à côté de **Vue d'ensemble**. Clique dessus : le tableau des alertes et les boutons de période sont là. ✅ C'est tout ! Quelque chose ne va pas ? Voir [Problèmes courants avec Grafana](troubleshooting.md). --- # Problèmes courants avec Grafana ## Quand tu ajoutes l'intégration | Ce que tu vois | Quoi faire | | --- | --- | | `grafana.exemple.com a refusé les identifiants (401). Vérifie le jeton, et qu'il n'a pas expiré. Corrige le champ, ou enregistre quand même si la source n'est que momentanément injoignable.` | Le jeton est faux, expiré ou supprimé. Crée-en un nouveau : voir [Créer un jeton de compte de service Grafana](create-a-token.md). | | `Aucun serveur ne répond au nom grafana.exemple.com. Vérifie l'orthographe avec l'adresse que tu ouvres dans ton navigateur. Si elle est juste, Astrolabe ne voit pas ce serveur : préviens l'administrateur d'Astrolabe de votre entreprise. Corrige le champ, ou enregistre quand même si la source n'est que momentanément injoignable.` | Vérifie **Adresse de Grafana** : l'adresse que tu ouvres dans ton navigateur, avec `https://`. Si elle est juste, ton Grafana n'est pas joignable depuis Astrolabe. | ## Dans Administration | Ce que tu vois | Quoi faire | | --- | --- | | Dans **Connexions de l'entreprise › Grafana**, **État** dit `grafana.exemple.com a refusé les identifiants (401). Vérifie le jeton, et qu'il n'a pas expiré.` | Clique sur l'icône **Modifier le jeton**, clique sur **Remplacer**, colle un nouveau jeton, clique sur **Tester la connexion**, puis sur **Enregistrer**. | | Dans **Problèmes** : `grafana.exemple.com refuse les identifiants (401). Le jeton est peut-être faux ou expiré.` | Clique sur **Corriger** pour ouvrir l'intégration, remplace le jeton, puis clique sur **Revérifier**. | ## Quand la licence ne couvre pas Grafana | Ce que tu vois | Que faire | | --- | --- | | Dans **Administration › Plugins**, la carte **Grafana** dit **Nécessite la licence Premium**, et l'interrupteur est grisé | Ta licence ne couvre pas Grafana. [Ajoute une licence](../../../../administration/licensing/add-your-license.md) qui le couvre, puis allume le plugin. | | Dans **Administration › Plugins**, la carte **Grafana** dit **Non licencié**, et **Problèmes** affiche **Allumé, mais la licence ne le couvre pas.** | Clique sur **Corriger** : l'écran de la licence s'ouvre. [Ajoute une licence](../../../../administration/licensing/add-your-license.md) qui couvre Grafana. | | Sur la carte, `Votre licence ne couvre pas Grafana.` `Grafana relève d'une licence supérieure : ses données restent fermées tant que la licence ne le couvre pas. Un administrateur lit laquelle dans Administration › Licence.` et un lien **Ouvrir la licence** | Clique sur **Ouvrir la licence** : **Administration › Licences** s'ouvre. [Ajoute une licence](../../../../administration/licensing/add-your-license.md) qui couvre Grafana. | | Sur la carte, le même texte avec `Seul un administrateur d'Astrolabe peut corriger cela : transmettez-lui ce message.` et sans lien | Tu n'es pas administrateur. Envoie ce message au tien. | | Dans **Ajouter une carte**, le titre `Grafana demande la licence Premium`, puis `Ses cartes restent fermées tant que la licence ne le couvre pas. Un administrateur lit la licence qu'il faut dans Administration › Licences.` et un lien **Ouvrir la licence** | Même cause. Clique sur **Ouvrir la licence**, puis [ajoute une licence](../../../../administration/licensing/add-your-license.md) qui couvre Grafana. | | Sur la carte **Grafana** de **Connexions de l'entreprise › Webhooks**, `1 événements n'ont atteint personne : la licence ne couvre pas cette source, ses événements sont abandonnés. Voir Administration › Licences.` | Grafana a appelé Astrolabe, et Astrolabe a abandonné l'alerte. [Ajoute une licence](../../../../administration/licensing/add-your-license.md) qui couvre Grafana. | | Sur l'onglet **Monitoring**, `Votre licence ne couvre pas Grafana.` ou `La licence n'a pas pu être vérifiée.` | L'onglet dit la même chose que la carte : ajoute une licence qui couvre Grafana, ou réessaie dans une minute. *Pas encore vérifié sur une instance : l'onglet n'est plus affiché quand la licence ne couvre plus Grafana.* | ## Sur l'onglet Monitoring d'un composant | Ce que tu vois | Quoi faire | | --- | --- | | Pas d'onglet **Monitoring** | Ajoute l'annotation `grafana/dashboard` ou `grafana/alert-label-selector` au composant, et allume le plugin **Grafana** dans **Administration › Plugins**. | | `Grafana a refusé le jeton. Le jeton a peut-être expiré ou été révoqué : remplacez-le dans Administration › Connexions de l'entreprise › Grafana (ou dans Mon compte › Mes comptes si c'est le vôtre).` et un lien **Ouvrir l'intégration Grafana** | Clique sur le lien et remplace le jeton. | | `Aucune règle d'alerte ne porte les étiquettes service=shop-api.` | Aucune règle d'alerte de Grafana n'a cette étiquette. Compare `grafana/alert-label-selector` aux étiquettes de tes règles dans Grafana. | | `Le tableau de bord shop-api-overview ou l'un de ses panneaux n'existe pas, ou le jeton n'y a pas accès : vérifier les annotations grafana/dashboard et grafana/panels.` | Vérifie l'UID de `grafana/dashboard` et les identifiants de `grafana/panels`, et que le compte de service voit le tableau de bord. | ## Sur la carte | Ce que tu vois | Quoi faire | | --- | --- | | `Grafana a refusé le jeton. Le jeton a peut-être expiré ou été révoqué : remplacez-le dans Administration › Connexions de l'entreprise › Grafana (ou dans Mon compte › Mes comptes si c'est le vôtre).` | Clique sur **Ouvrir l'intégration Grafana** et remplace le jeton. | | **Aucune alerte en difficulté** | Rien à corriger : aucune règle ne se déclenche, n'échoue ou ne manque de données. | ## Quand l'onglet dit qu'un module manque | Ce que tu vois | Que faire | | --- | --- | | `Astrolabe ne propose pas cette fonction Grafana sur cette instance.` et `Un module manque à cette installation d'Astrolabe. Prévenez votre administrateur d'Astrolabe.` | L'intégration peut être connectée et le plugin allumé, mais cette installation d'Astrolabe n'a pas le module qui sert Grafana. Préviens ton administrateur d'Astrolabe. Rien à changer sur le composant. | *Non vérifié sur une instance : ce message demande une installation à laquelle le module manque.* :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec le nom du composant et son tableau de bord Grafana. ::: --- # Brancher tes outils Une intégration donne à Astrolabe l'adresse et le jeton d'un de tes outils. L'administrateur l'ajoute une fois, dans **Administration › Connexions de l'entreprise**. L'outil apparaît ensuite là où tes équipes regardent : sur la page de chaque composant, sur leur tableau de bord, dans le catalogue. ## 🧰 Les outils | Outil | Ce qu'il apporte | Par où commencer | | --- | --- | --- | | **GitHub** | Les pipelines, pull requests, branches et releases d'un composant ; des cartes du tableau de bord | [Ajouter l'intégration](github/add-the-integration.md) | | **GitLab** | Les pipelines, merge requests, branches et releases d'un composant ; des cartes du tableau de bord | [Ajouter l'intégration](gitlab/add-the-integration.md) | | **Jira** | Les tickets ouverts du projet d'un composant, dans un onglet ; des cartes du tableau de bord | [Connecter Jira Cloud](jira/connect-jira-cloud.md) | | **Argo CD** | L'application Argo CD d'un composant, sa santé et ses déploiements | [Ajouter l'intégration](argocd/add-the-integration.md) | | **Jenkins** | Les builds d'un composant ; des cartes du tableau de bord | [Ajouter l'intégration](jenkins/add-the-integration.md) | | **SonarQube** | La qualité du code d'un composant | [Ajouter l'intégration](sonarqube/add-the-integration.md) | | **Codacy** | La note Codacy d'un composant, et ses problèmes dans un onglet | [Ajouter l'intégration](codacy/add-the-integration.md) | | **Grafana** | Les alertes et tableaux de bord Grafana d'un composant, dans son onglet Monitoring | [Ajouter l'intégration](grafana/add-the-integration.md) | | **Terraform Cloud** | Les workspaces d'un composant et leurs dernières exécutions | [Ajouter l'intégration](terraform/add-the-integration.md) | | **LaunchDarkly** | Les feature flags d'un composant | [Ajouter l'intégration](launchdarkly/add-the-integration.md) | | **Azure DevOps** | Pipelines, pull requests et work items sur ton tableau de bord | [Ajouter l'intégration](azure-devops/add-the-integration.md) | | **Azure Cloud** | Les ressources Azure d'un composant et ce qu'elles coûtent | [Ajouter l'intégration](azure-cloud/add-the-integration.md) | | **Bitbucket Server**, **Bitbucket Cloud** | Tes dépôts dans le catalogue | [Bitbucket Server](bitbucket-server/add-the-integration.md), [Bitbucket Cloud](bitbucket-cloud/add-the-integration.md) | | **Confluence** | Les pages de ton Confluence, trouvées par la recherche | [Ajouter l'intégration](confluence/add-the-integration.md) | | **AWS** | Une clé d'accès AWS | [Ajouter l'intégration](aws/add-the-integration.md) | ## 🔢 Les étapes, pour chaque outil 1. **Crée un jeton** dans l'outil. Chaque page dit de quels droits il a besoin. 2. **Ajoute l'intégration** dans **Administration › Connexions de l'entreprise**, et clique sur **Tester la connexion**. 3. **Active son plugin**, s'il en a un, dans **Administration › Plugins** : voir [Activer un plugin](../../../administration/plugins/turn-on-a-plugin.md). 4. **Annote tes composants** dans leur `catalog-info.yaml`, pour que leur onglet apparaisse. La page de chaque outil donne son annotation. ## 🔑 Deux jetons : celui de l'entreprise, et le tien GitHub, GitLab, Jira et Azure DevOps lisent avec **le jeton de l'entreprise** pour les onglets des composants, le catalogue et Compass, et avec **ton propre compte** pour tes cartes du tableau de bord. Voir [Le jeton de l'entreprise et ton propre compte](company-token-and-my-account.md). :::tip Quelque chose ne marche pas ? Chaque outil a sa page **Problèmes courants**. Pour toute l'instance, commence par [Trouver et corriger un problème](../../../administration/problems/find-and-fix-a-problem.md). ::: --- # Ajouter les cartes Jenkins à ton tableau de bord Les cartes Jenkins de **Mes tableaux de bord** montrent les builds des **composants du catalogue** : tu vois d'un coup d'œil ce qui a tourné et ce qui a échoué, sans ouvrir Jenkins. ## Avant de commencer - Ton administrateur a [ajouté l'intégration Jenkins](add-the-integration.md). Les cartes ne te demandent rien : pas de jeton à saisir, Astrolabe lit Jenkins avec l'intégration. - Tes composants sont annotés `jenkins.io/job-full-name`. Voir [Afficher l'onglet Jenkins sur un composant](show-the-tab.md). ## Les cartes | Clé | Ce qu'elle montre | | --- | --- | | **Builds** | Les builds du job Jenkins de chaque composant du catalogue, avec leur statut et leur date | | **Builds détaillés** | Les mêmes builds, avec leur durée et les étapes de chaque build | Les clés et leur description s'affichent en anglais. Les deux cartes listent **tous les composants du catalogue** qui portent l'annotation `jenkins.io/job-full-name`, quel qu'en soit le propriétaire. Un composant sans l'annotation n'apparaît pas. Les deux cartes montrent cinq lignes à la fois, le build le plus récent de chaque job en premier. Pour ne garder que tes composants, filtre la colonne **Mine** (**À moi** ou **Autres**) et enregistre le filtre avec la carte : voir [Ne garder que tes lignes](../../../../developer-dashboard/my-dashboard/change-or-remove-a-card.md#-ne-garder-que-tes-lignes). *Une carte qui contient des builds n'a pas été vérifiée sur une instance : aucun Jenkins n'était connecté.* ### Les colonnes Les titres des colonnes s'affichent en anglais. | Colonne | Ce qu'elle dit | Cartes | | --- | --- | --- | | **Ressource** | Le nom complet du job Jenkins, par exemple `catalog-api` ou `shop/shop-api` | Les deux | | **Titre** | Le build, par exemple `catalog-api #3` sur **Builds**, et le nom du job sur **Builds détaillés** | Les deux | | **Clé** | Le numéro du build, par exemple `#3` | Les deux | | **Owner** | Le propriétaire du composant | Les deux | | **Mine** | **À moi** quand le composant est à toi (toi ou l'un de tes groupes le possède), **Autres** sinon | Les deux | | **Statut** | `success`, `failed` ou un autre mot de Jenkins, dans une pastille colorée | Les deux | | **Date** | Le jour du build | Les deux | | **Durée** | La durée du build | **Builds détaillés** | | **Étapes** | Les étapes du build, chacune avec son statut | **Builds détaillés** | | Dernière colonne | Un lien qui ouvre le build dans Jenkins | Les deux | Un job rangé dans un dossier s'affiche avec son chemin complet dans **Resource**, par exemple `shop/shop-api`. Un job qui n'est pas un pipeline n'a pas d'étapes : le build est sur les deux cartes, et **Stages** affiche `-`. ## ➕ Ajouter une carte 1. Dans la barre latérale, clique sur **Tableau de bord**, puis sur l'onglet du tableau voulu. 2. Clique sur **Ajouter une carte**, en haut de la page. 3. Dans **Ajouter une carte**, choisis la **Source** `jenkins`, puis une **Clé** : **Builds** ou **Builds détaillés**. La description sous la clé dit ce que la carte montre. 4. Saisis un **Nom de la carte**, puis clique sur **Ajouter**. La carte se remplit en quelques secondes. ✅ C'est tout ! ## Ce que dit la carte quand quelque chose ne va pas | Ce que dit la carte | Ce que ça veut dire | | --- | --- | | **Rien à afficher** et « Aucun build à montrer : aucun composant du catalogue n'a d'annotation jenkins.io/job-full-name, ou son job n'a pas encore de build. » | Aucun composant du catalogue n'a l'annotation `jenkins.io/job-full-name`, ou son job n'a pas encore de build | | **Jenkins a refusé le jeton.** et « Le jeton a peut-être expiré ou été révoqué : remplacez-le dans Administration › Connexions de l'entreprise › Jenkins (ou dans Mon compte › Mes comptes si c'est le vôtre). » | Jenkins n'accepte plus le jeton de l'intégration. Le bouton **Ouvrir l'intégration Jenkins** t'emmène à l'écran où on le remplace. Voir [Problèmes courants avec Jenkins](troubleshooting.md#sur-mon-tableau-de-bord). | | **Jenkins refuse la connexion.** et « Vérifiez l'hôte et le port dans Administration › Connexions de l'entreprise › Jenkins, et que le service tourne. » | Astrolabe n'arrive pas à joindre Jenkins. Le bouton **Ouvrir l'intégration Jenkins** ouvre l'intégration. | | **Jenkins ne connaît pas ce qui est demandé.** et « Vérifiez le nom dans l'annotation du composant, et que le jeton peut le voir. » | Jenkins ne connaît aucun des jobs écrits dans tes composants. Vérifie les noms. Voir [Problèmes courants avec Jenkins](troubleshooting.md#sur-mon-tableau-de-bord). | Un job que Jenkins ne connaît pas est laissé de côté, les autres s'affichent quand même. ## Notifications Cette étape n'a pas été vérifiée sur une instance. Tu choisis ce que tu reçois dans **Mon compte › Notifications**. La suite : [FAQ Jenkins](faq.md). --- # Ajouter l'intégration Jenkins L'intégration donne à Astrolabe l'adresse de ton Jenkins, son utilisateur et son jeton. Tu le fais une fois, en administrateur. C'est le seul endroit où tu saisis Jenkins, et elle nourrit aussi les cartes Jenkins du **Tableau de bord**. **Avant de commencer** : un utilisateur Jenkins et son jeton d'API, voir [Créer un jeton d'API Jenkins](create-a-token.md). ## Comment faire ### 1. Ouvre l'intégration Jenkins 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Connexions de l'entreprise**. 3. Sur la carte **Jenkins**, clique sur **Configurer**. 4. En haut à droite, clique sur **Ajouter un jeton**. ### 2. Remplis le formulaire | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **Nom** | Un nom de ton choix | `Jenkins` | | **URL de l'instance Jenkins** | L'adresse de Jenkins, sans `https://` | `jenkins.exemple.com` | | **Utilisateur Jenkins** | L'utilisateur du jeton | `astrolabe` | | **Jeton Jenkins** | Le jeton d'API que tu as créé | | ### 3. Teste et enregistre 1. Clique sur **Tester la connexion**. Le formulaire dit **La connexion fonctionne : la source a accepté les identifiants.** 2. Clique sur **Ajouter**. Astrolabe redémarre tout seul, en quelques secondes. Le jeton est dans la liste, avec **État** à **Connectée**. ✅ C'est fait. La suite : [Afficher l'onglet Jenkins sur un composant](show-the-tab.md). ## Tu as plusieurs Jenkins Ajoute une intégration par Jenkins, et donne à chacune une **clé d'instance**. 1. Sur la carte **Jenkins**, clique sur **Gérer**, puis sur **Ajouter un jeton** pour chaque Jenkins. 2. Dans le formulaire, ouvre **Réglages facultatifs** et remplis **Clé de l'instance Jenkins** avec un nom court : lettres, chiffres, `.`, `_` et `-`. | Jenkins | Name | Jenkins instance key | | --- | --- | --- | | Production | `Jenkins prod` | `prod` | | Autres environnements | `Jenkins dev` | `dev` | Un composant choisit alors son Jenkins dans son annotation : voir [Afficher l'onglet Jenkins sur un composant](show-the-tab.md#tu-as-plusieurs-jenkins). :::tip Le Jenkins par défaut Un nom de job sans clé d'instance est lu dans l'intégration dont la clé d'instance est `default`, sinon dans la première de la liste. ::: ## Remplacer un jeton Quand un jeton a expiré ou a été révoqué : 1. Sur la carte **Jenkins**, clique sur **Gérer**. 2. Sur la ligne du jeton, clique sur **Modifier le jeton**. 3. À côté de **Jeton Jenkins**, clique sur **Remplacer**, puis colle le nouveau jeton. 4. Clique sur **Tester la connexion**, puis sur **Enregistrer**. Astrolabe redémarre tout seul, en quelques secondes. --- # Créer un jeton d'API Jenkins Astrolabe lit Jenkins avec **un utilisateur Jenkins et son jeton d'API**. Tu crées le jeton une fois, dans Jenkins. ## Choisir l'utilisateur Jenkins Le jeton a **les droits de son utilisateur**. Astrolabe ne voit que les jobs que cet utilisateur voit. :::tip Prends un utilisateur dédié Crée un utilisateur Jenkins pour Astrolabe, par exemple `astrolabe`, qui peut lire les jobs de tes équipes. Ton propre compte marche aussi, mais Astrolabe s'arrête le jour où tu pars. ::: ## 🔑 Créer le jeton 1. Connecte-toi à Jenkins avec cet utilisateur. 2. En haut à droite, clique sur le nom de l'utilisateur. 3. Dans le menu de gauche, clique sur **Security**. 4. Sous **API Token**, clique sur **Add new token**. 5. Dans **Nom**, écris `Astrolabe`, puis clique sur **Generate**. 6. **Copie le jeton tout de suite.** Jenkins dit : **Copy this token now, because it cannot be recovered in the future.** Puis clique sur **Done**. ✅ C'est tout ! La suite : [Ajouter l'intégration Jenkins](add-the-integration.md). --- # FAQ Jenkins ## Où saisir mon Jenkins ? Seulement dans l'intégration : **Administration › Connexions de l'entreprise › Jenkins**. Voir [Ajouter l'intégration Jenkins](add-the-integration.md). ## Quel jeton ? Un **jeton d'API** Jenkins d'un utilisateur qui peut lire tes jobs. Voir [Créer un jeton d'API Jenkins](create-a-token.md). Pas le mot de passe de l'utilisateur. ## Qui voit les builds ? Toute personne qui peut ouvrir le composant. Astrolabe lit Jenkins avec l'utilisateur et le jeton de l'intégration, les mêmes pour tout le monde. ## L'onglet manque sur un composant. Pourquoi ? L'onglet n'existe que sur un composant annoté `jenkins.io/job-full-name`, quand le plugin **Jenkins** est allumé. Voir [Afficher l'onglet Jenkins](show-the-tab.md). ## J'ai plusieurs Jenkins. Comment un composant en choisit-il un ? Par le début de son annotation : `jenkins.io/job-full-name: prod:shop-api` lit le job `shop-api` dans l'intégration dont la **Clé de l'instance Jenkins** est `prod`. Voir [Afficher l'onglet Jenkins](show-the-tab.md#tu-as-plusieurs-jenkins). ## Un composant peut-il montrer plusieurs jobs ? Oui : écris leurs noms complets séparés par une virgule, sur le même Jenkins. Voir [Afficher l'onglet Jenkins](show-the-tab.md#plusieurs-jobs-sur-un-composant). ## Quels composants une carte montre-t-elle ? Tous les composants du catalogue qui portent l'annotation `jenkins.io/job-full-name`, quel qu'en soit le propriétaire. Filtre la colonne **Mine** pour garder les tiens. Voir [Ajouter les cartes Jenkins à ton tableau de bord](add-the-dashboard-cards.md). ## Ai-je besoin de mon propre jeton pour les cartes ? Non. Les cartes lisent Jenkins avec l'utilisateur et le jeton de l'intégration, comme l'onglet. ## Puis-je afficher un job qui est dans un dossier ? Oui : écris les dossiers et le job séparés par `/`, par exemple `shop/shop-api`. --- # Afficher l'onglet Jenkins sur un composant Chaque composant annoté reçoit un onglet **Jenkins** avec ses builds, et une carte **Latest master build** sur sa **Vue d'ensemble**. ## Comment faire ### 1. Allume le plugin 1. Dans **Administration**, sous **PLATEFORME**, clique sur **Plugins**. 2. Sur la carte **Jenkins**, allume l'interrupteur **Activer Jenkins**. Si la carte dit **Configurez d'abord l'intégration Jenkins**, clique dessus : l'intégration s'ouvre dans **Connexions de l'entreprise**. Ajoute-la ([Ajouter l'intégration Jenkins](add-the-integration.md)). Le plugin s'allume tout seul quand tu enregistres l'intégration : passe à l'étape 2. ### 2. Annote le composant Dans le `catalog-info.yaml` du composant, ajoute le nom complet de son job Jenkins : ```yaml apiVersion: backstage.io/v1alpha1 kind: Component metadata: name: shop-api annotations: jenkins.io/job-full-name: shop-api spec: type: service lifecycle: production owner: team-a ``` :::tip Où est le nom complet ? C'est le chemin du job dans la barre d'adresse de Jenkins, sans `job/`. Le job `https://jenkins.exemple.com/job/shop/job/shop-api/` s'écrit `shop/shop-api`. ::: ### 3. Vérifie Ouvre le composant dans **Catalogue**. Un onglet **Jenkins** est à côté de **Vue d'ensemble**. Clique dessus : le job est listé avec son dernier build. ✅ C'est fait. ## Ce que ça affiche, et pour qui Les libellés de l'onglet et de la carte restent en anglais, même quand Astrolabe est en français. | Colonne | Quoi | | --- | --- | | **Build** | Le nom du job, avec un lien. Un dossier de branches donne une ligne par branche, par exemple `shop » master` | | **Tests** | Les résultats des tests, ou `n/a` | | **Status** | Par exemple **Completed** | | **Last Run Duration** | Par exemple `0.1 s` | | **Actions** | **View build** ouvre le build dans Jenkins | Sur **Vue d'ensemble**, la carte **Latest master build** montre le **Status**, le **Build**, le **Latest Run** et la **Duration** du dernier build du job `master`, avec un lien **See more on Jenkins**. Elle lit le job nommé `master` dans ton job : utilise un job qui a une branche `master`. Toute personne qui peut ouvrir le composant voit l'onglet et la carte. Astrolabe lit Jenkins avec l'utilisateur et le jeton de l'intégration, les mêmes pour tout le monde. ## Plusieurs jobs sur un composant Écris les noms complets séparés par une virgule. Ils doivent être sur le même Jenkins. ```yaml metadata: annotations: jenkins.io/job-full-name: shop-api,shop/shop-api-tests ``` L'onglet liste les builds de chaque job. ## Tu as plusieurs Jenkins Commence l'annotation par la **clé d'instance** de l'intégration, puis `:`, puis le nom du job : ```yaml metadata: annotations: jenkins.io/job-full-name: prod:shop-api ``` Ici, `prod` est la **Clé de l'instance Jenkins** de l'intégration du Jenkins de production. La suite : [Ajouter les cartes Jenkins à ton tableau de bord](add-the-dashboard-cards.md). Un souci ? Voir [Problèmes courants avec Jenkins](troubleshooting.md). --- # Problèmes courants avec Jenkins ## Quand tu ajoutes l'intégration | Ce que tu vois | Quoi faire | | --- | --- | | `jenkins.exemple.com a refusé les identifiants (401). Vérifie le jeton, et qu'il n'a pas expiré. Corrige le champ, ou enregistre quand même si la source n'est que momentanément injoignable.` | L'utilisateur ou le jeton est faux. Vérifie **Utilisateur Jenkins**, puis crée un nouveau jeton : voir [Créer un jeton d'API Jenkins](create-a-token.md). | | `Aucun serveur ne répond au nom jenkins.exemple.com. Vérifie l'orthographe avec l'adresse que tu ouvres dans ton navigateur. Si elle est juste, Astrolabe ne voit pas ce serveur : préviens l'administrateur d'Astrolabe de votre entreprise. Corrige le champ, ou enregistre quand même si la source n'est que momentanément injoignable.` | Vérifie **URL de l'instance Jenkins** : l'adresse que tu ouvres dans ton navigateur, sans `https://`. Si elle est juste, ton Jenkins n'est pas joignable depuis Astrolabe. | ## Sur l'écran Plugins | Ce que tu vois | Quoi faire | | --- | --- | | **Configurez d'abord l'intégration Jenkins** à la place d'un interrupteur sur la carte **Jenkins** | [Ajoute l'intégration Jenkins](add-the-integration.md). L'interrupteur apparaît une fois qu'elle est ajoutée. | ## Sur la page du composant | Ce que tu vois | Quoi faire | | --- | --- | | Pas d'onglet **Jenkins** | Ajoute l'annotation `jenkins.io/job-full-name` au composant, et allume **Activer Jenkins** dans **Administration › Plugins**. | | **No records to display** dans l'onglet **Jenkins** | Vérifie l'annotation : le nom complet du job doit être le chemin du job dans Jenkins, par exemple `shop/shop-api`. S'il commence par un préfixe, comme dans `prod:shop-api`, `prod` doit être la **Clé de l'instance Jenkins** d'une de tes intégrations, ou retire `prod:` pour lire le Jenkins par défaut. | | **No records to display**, et l'annotation est juste | Le jeton a peut-être expiré ou été révoqué. Dans **Administration › Connexions de l'entreprise**, sur la carte **Jenkins** clique sur **Gérer**, puis sur **Modifier le jeton**, et clique sur **Tester la connexion**. Si elle dit que les identifiants sont refusés, [remplace le jeton](add-the-integration.md#remplacer-un-jeton). | | La carte **Latest master build** de la **Vue d'ensemble** affiche `Jenkins n'a aucun build pour la branche « master » du job de ce composant. La carte cherche cette branche : vérifiez le nom du job dans l'annotation jenkins.io/job-full-name, et que le job construit une branche « master ».` | La carte lit la branche `master` de ton job. Vérifie le nom du job dans l'annotation, et utilise un job qui construit une branche `master`. | | La même carte affiche `Jenkins n'a pas répondu pour la branche « master » (HTTP 500).` | Même vérification, puis la connexion Jenkins dans **Administration › Connexions de l'entreprise › Jenkins**. Les mots entre parenthèses disent ce que Jenkins a répondu (`aucune réponse` ou `HTTP` et un numéro). | | La même carte affiche `Jenkins n'a pas répondu (aucune réponse).` | Vérifie la connexion Jenkins dans **Administration › Connexions de l'entreprise › Jenkins**. | ## Sur Mon tableau de bord | Ce que tu vois | Quoi faire | | --- | --- | | **Rien à afficher** et `Aucun build à montrer : aucun composant du catalogue n'a d'annotation jenkins.io/job-full-name, ou son job n'a pas encore de build.` sur une carte Jenkins | La carte liste les composants **du catalogue**. Vérifie que l'un d'eux a l'annotation `jenkins.io/job-full-name` : voir [Afficher l'onglet Jenkins sur un composant](show-the-tab.md). | | **Jenkins a refusé le jeton.** | Le jeton de l'intégration a expiré ou a été révoqué. Clique sur **Ouvrir l'intégration Jenkins**, puis [remplace le jeton](add-the-integration.md#remplacer-un-jeton). Pour créer un jeton, voir [Créer un jeton d'API Jenkins](create-a-token.md). | | **Jenkins refuse la connexion.** | Astrolabe n'arrive pas à joindre Jenkins. Clique sur **Ouvrir l'intégration Jenkins** et vérifie l'adresse de l'instance : l'hôte et le port, sans `https://`. Vérifie que Jenkins tourne. | | **Jenkins ne connaît pas ce qui est demandé.** | Jenkins ne connaît aucun des jobs écrits dans tes composants. Compare chaque nom au chemin du job dans Jenkins, par exemple `shop/shop-api` pour le job `shop-api` du dossier `shop`. | | Les builds d'un composant manquent, ceux des autres s'affichent | L'annotation de ce composant nomme un job que Jenkins ne connaît pas. Vérifie le nom, comme ci-dessus. | | La colonne **Stages** affiche `-` | Le job n'est pas un pipeline, il n'a donc pas d'étapes. Le build s'affiche avec son statut et sa durée. | *Non vérifié sur une instance : les trois messages de la carte **Latest master build**, aucun Jenkins n'est connecté à l'instance de test.* :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec le nom du composant et de son job Jenkins. ::: --- # Suivre tes tickets Jira sur ton tableau de bord Les cartes Jira de **Mes tableaux de bord** montrent ce que voit **ton propre** compte Jira. Tu ajoutes une carte, puis tu connectes ton compte depuis la carte elle-même, une fois. ## Avant de commencer Ton administrateur a connecté Jira ([Data Center](connect-jira-data-center.md) ou [Cloud](connect-jira-cloud.md)). Sans cela, la source `jira` n'est pas dans la liste. ## ➕ 1. Ajouter une carte 1. Dans la barre latérale, clique sur **Tableau de bord**, puis sur l'onglet du tableau voulu. 2. Clique sur **Ajouter une carte**, en haut de la page. 3. Dans **Ajouter une carte**, choisis la **Source** `jira`, puis une **Clé**. Les clés et leur description s'affichent en français : | Clé | Ce qu'elle liste | | --- | --- | | **Mes tickets ouverts** | Les tickets Jira ouverts qui te sont assignés, le plus récemment modifié d'abord | | **Mon sprint** | Les tickets Jira qui te sont assignés dans le sprint en cours, avec le nom du sprint | | **À relire** | Les tickets Jira où tu es relecteur ou mentionné | | **Requête JQL** | Les tickets d'une requête JQL que tu écris dans le champ **Requête JQL** | 4. Pour **Requête JQL**, remplis **Requête JQL** avec une recherche Jira, comme tu l'écrirais dans la recherche avancée de Jira. Par exemple : | Tu veux | **Requête JQL** | | --- | --- | | Tous les tickets d'un projet | `project = SHOP ORDER BY updated DESC` (remplace `SHOP` par la clé de ton projet) | | Les tickets ouverts d'un projet | `project = SHOP AND statusCategory != Done ORDER BY updated DESC` | | Les tickets non résolus créés cette semaine | `resolution = Unresolved AND created >= startOfWeek() ORDER BY created DESC` | 5. Saisis un **Nom de la carte**, puis clique sur **Ajouter**. ## 🔑 2. Connecter ton compte Jira, dans la carte La première fois, la carte affiche **Votre compte Jira n'est pas connecté.** 1. Dans la carte, clique sur **Connecter mon compte Jira**. La fenêtre **Connecter mon compte Jira** s'ouvre. Elle dit où créer ton jeton, et mène à la page qui le crée. 2. Crée le jeton sur cette page : - Jira Cloud (`.atlassian.net`) : un **jeton d'API** (`id.atlassian.com` › **Sécurité** › **Créer et gérer des jetons d'API**) ; - le Jira de ton entreprise (Data Center) : un **jeton d'accès personnel** (ton avatar › **Profil** › **Jetons d'accès personnels** › **Créer un jeton**). Aucun droit d'administrateur Jira n'est nécessaire. 3. De retour dans la fenêtre, remplis : | Champ | Jira Cloud | Le Jira de ton entreprise (Data Center) | | --- | --- | --- | | **Nom d'utilisateur** | L'e-mail de ton compte Atlassian | Ton nom d'utilisateur Jira | | **Jeton** | Ton jeton d'API, collé tel quel | Ton jeton d'accès personnel, collé tel quel | 4. Clique sur **Tester la connexion**. La fenêtre affiche **La connexion fonctionne : l'outil a accepté votre jeton.** 5. Clique sur **Enregistrer**. La fenêtre se ferme et toutes les cartes Jira de ton tableau de bord se relisent. ✅ C'est tout ! :::tip Changer ou retirer ton jeton Ton compte Jira est listé dans **Mon compte › Mes comptes** (ton avatar en haut à droite, puis **Mon compte**, puis l'onglet **Mes comptes**). Clique sur **Configurer** sur la carte **Jira** pour changer ou supprimer le jeton. ::: La suite : [Ce que montre chaque carte Jira](what-the-cards-show.md). --- # Connecter Jira Cloud L'adresse de ton Jira finit par `.atlassian.net`. Astrolabe le lit avec **l'e-mail et un jeton d'API** d'un compte Atlassian. Tu le fais une fois, en administrateur d'Astrolabe. Ton adresse est autre, comme `https://jira.exemple.com` ? Va sur [Connecter le Jira de ton entreprise (Data Center)](connect-jira-data-center.md). ## 🔑 1. Créer un jeton d'API chez Atlassian Aucun droit d'administrateur Jira n'est nécessaire : le jeton lit ce que son propriétaire voit dans Jira. 1. Connecte-toi à `id.atlassian.com` avec le compte qu'Astrolabe utilisera. 2. Ouvre **Security** (**Sécurité**), puis **Create and manage API tokens**. 3. Clique sur **Create API token**, donne-lui un nom (`Astrolabe`), puis **Create**. 4. Copie le jeton **tel quel**. ## 🔌 2. Ajouter l'intégration Jira Cloud 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Connexions de l'entreprise**. 3. Sur la carte **Jira Cloud**, clique sur **Configurer**. 4. En haut à droite, clique sur **Ajouter un jeton**. 5. Remplis le formulaire : | Champ | Ce que tu saisis | Exemple | | --- | --- | --- | | **Nom** | Un nom de ton choix | `Jira Cloud` | | **URL de Jira Cloud** | L'adresse de ton site Jira, avec `https://` | `https://exemple.atlassian.net` | | **E-mail** | L'e-mail du compte Atlassian à qui appartient le jeton | `astrolabe@exemple.com` | | **Jeton d'API** | Le jeton de l'étape 1, collé tel quel | | 6. Clique sur **Tester la connexion**. Le formulaire affiche **La connexion fonctionne : la source a accepté les identifiants.** 7. Clique sur **Ajouter**. Astrolabe redémarre tout seul, en quelques secondes. Le jeton est dans la liste, avec l'état **Connectée**. ✅ C'est tout ! Suite : [Afficher l'onglet Jira sur un composant](show-the-tab.md). --- # Connecter le Jira de ton entreprise (Data Center) Ton entreprise a son propre Jira, à une adresse comme `https://jira.exemple.com`. Astrolabe le lit avec **un jeton d'accès personnel**. Tu le fais une fois, en administrateur d'Astrolabe. :::tip Mon Jira est-il un Jira Data Center ? Regarde l'adresse que tu ouvres dans ton navigateur. Elle finit par `.atlassian.net` ? C'est Jira Cloud : va sur [Connecter Jira Cloud](connect-jira-cloud.md). Toute autre adresse est le Jira de ton entreprise : tu es sur la bonne page. ::: ## 🔑 1. Créer un jeton d'accès personnel dans Jira Aucun droit d'administrateur Jira n'est nécessaire : le jeton lit ce que son propriétaire voit dans Jira. 1. Connecte-toi à Jira avec le compte qu'Astrolabe utilisera. 2. En haut à droite, clique sur ton avatar, puis sur **Profile** (**Profil**). 3. Dans le menu de gauche, clique sur **Personal Access Tokens** (**Jetons d'accès personnels**). 4. Clique sur **Create token**, donne-lui un nom (`Astrolabe`), choisis une date d'expiration, puis clique sur **Create**. 5. Copie le jeton **tel quel** : Jira ne le montre qu'une fois. :::tip Utilise un compte dédié Tous les utilisateurs d'Astrolabe lisent l'onglet **Jira** d'un composant avec ce jeton. Demande un compte Jira nommé `astrolabe`, avec accès aux projets de tes équipes : Astrolabe continue de marcher quand quelqu'un s'en va. ::: ## 🔌 2. Ajouter l'intégration Jira Data Center 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Connexions de l'entreprise**. 3. Sur la carte **Jira Data Center**, clique sur **Configurer**. 4. En haut à droite, clique sur **Ajouter un jeton**. 5. Remplis le formulaire : | Champ | Ce que tu saisis | Exemple | | --- | --- | --- | | **Nom** | Un nom de ton choix | `Jira Data Center` | | **URL de Jira** | L'adresse de ton Jira, avec `https://`, celle que tu ouvres dans ton navigateur | `https://jira.exemple.com` | | **Jeton d'accès personnel** | Le jeton de l'étape 1, collé tel quel | | Tu ne saisis pas ton nom d'utilisateur : le jeton suffit. 6. Clique sur **Tester la connexion**. Le formulaire affiche **La connexion fonctionne : la source a accepté les identifiants.** *Cette étape n'a pas été vérifiée sur une instance.* 7. Clique sur **Ajouter**. Astrolabe redémarre tout seul, en quelques secondes. Le jeton est dans la liste, avec l'état **Connectée**. ✅ C'est tout ! Suite : [Afficher l'onglet Jira sur un composant](show-the-tab.md). --- # FAQ Jira ## Jira Cloud ou Jira Data Center : lequel est le mien ? Regarde l'adresse de ton Jira. Elle finit par `.atlassian.net` : Jira Cloud. Toute autre adresse, comme `https://jira.exemple.com` : le Jira de ton entreprise, à connecter en **Jira Data Center**. ## Faut-il être administrateur Jira ? Non. Un jeton d'accès personnel (Data Center) ou un jeton d'API (Cloud) suffit : il lit ce que son propriétaire voit dans Jira. ## Pourquoi deux jetons, un dans l'administration et un dans Mon compte ? Le jeton de l'administration lit l'onglet **Jira** de chaque composant, le même pour tout le monde. Ton propre jeton lit **tes** cartes du tableau de bord : tes tickets, tels que ton compte Jira les voit. Tu le connectes depuis la carte elle-même. Voir [Le jeton de l'entreprise et ton propre compte](../company-token-and-my-account.md). ## Je saisis mon nom d'utilisateur pour Jira Data Center ? Pas dans l'administration : le jeton d'accès personnel suffit. Quand tu connectes ton propre compte (depuis une carte, ou **Mon compte › Mes comptes**), saisis ton nom d'utilisateur Jira : le formulaire le demande. ## Peut-on connecter deux Jira ? Oui : un Jira Cloud et un Jira Data Center, chacun sur sa carte. ## Que liste la carte To Review ? Les tickets Jira où tu es relecteur ou mentionné, comme le dit sa description. Sans aucun, elle affiche **Rien à afficher** et **Aucun ticket Jira n'attend votre approbation.** Voir [Ce que montre chaque carte Jira](what-the-cards-show.md). ## Un product owner peut-il voir tous les tickets d'un projet ? **Oui.** Ajoute la carte **Requête JQL** et écris `project = SHOP ORDER BY updated DESC` dans son champ **Requête JQL** (remplace `SHOP` par la clé du projet) : la carte liste tous les tickets du projet que le compte Jira du product owner peut voir, quel qu'en soit l'assigné. Au-delà de 1000 tickets, la carte le dit. *Non vérifié sur une instance : aucun compte Jira n'était connecté.* ## Puis-je écrire ma propre requête ? **Oui**, avec la carte **Requête JQL** : tu écris la requête dans son champ **Requête JQL** quand tu ajoutes la carte, et tu la changes plus tard dans le menu **⋮** de la carte › **Modifier**. Voir [Ce que montre chaque carte Jira](what-the-cards-show.md). ## De quels événements Jira Astrolabe me prévient-il ? Des commentaires et des changements de statut de tes tickets, et de ton assignation ou désassignation : tu choisis dans **Mon compte › Notifications**. Voir [Recevoir les notifications Jira](get-notifications.md). --- # Recevoir les notifications Jira Astrolabe te parle de tes tickets Jira dans la cloche en haut à droite : un commentaire, un nouveau statut, une assignation. Tu choisis les événements. ## Avant de commencer Ton administrateur a configuré le webhook Jira (voir plus bas). ## 🔔 Choisir tes événements Jira 1. En haut à droite, clique sur ton avatar, puis sur **Mon compte**. 2. Ouvre l'onglet **Notifications**. 3. Dans la carte **Que voulez-vous recevoir ?**, trouve la section **Jira**. Chaque événement a deux interrupteurs : **Dans Astrolabe** (la cloche) et **Sur ce navigateur** : | Événement | | --- | | **Commentaires sur vos tickets** | | **Changements de statut de vos tickets** | | **Quand un ticket vous est attribué ou retiré** | | **Quand un ticket qui vous est attribué est créé** | 4. Éteins ou allume un événement. C'est enregistré tout de suite. Pour la colonne du navigateur, voir [Choisir tes notifications](../../../../developer-dashboard/notifications/choose-your-notifications.md). ✅ C'est tout ! ## 🔗 Pour l'administrateur : configurer le webhook Jira envoie ses événements à Astrolabe par un webhook. 1. Dans la barre latérale à gauche, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Connexions de l'entreprise**, puis ouvre l'onglet **Webhooks**. 3. Sur la carte **Jira Cloud**, clique sur **Configurer**. 4. Dans la fenêtre, à côté de **Adresse du webhook**, clique sur **Copier l'adresse**. Le bouton dit **Copié**. 5. Dans **Secret du webhook**, saisis un secret de ton choix, puis clique sur **Enregistrer**. 6. Dans Jira, ajoute un webhook : colle l'adresse comme URL, et utilise le même secret. *Cette étape n'a pas été vérifiée sur une instance, ni l'arrivée des notifications.* --- # Afficher l'onglet Jira sur un composant Chaque composant annoté a un onglet **Jira** : les tickets ouverts de son projet Jira, les plus récemment modifiés d'abord. **Avant de commencer** : une intégration Jira est ajoutée, [Data Center](connect-jira-data-center.md) ou [Cloud](connect-jira-cloud.md). ## 🔛 1. Allumer le plugin 1. Dans **Administration**, sous **PLATEFORME**, clique sur **Plugins**. 2. Sur la carte **Jira**, allume l'interrupteur **Activer Jira**. ## 🏷️ 2. Annoter le composant Dans le `catalog-info.yaml` du composant, ajoute la **clé** de son projet Jira : le préfixe de ses tickets, `SHOP` pour `SHOP-42`. ```yaml apiVersion: backstage.io/v1alpha1 kind: Component metadata: name: shop-api annotations: jira/project-key: SHOP spec: type: service lifecycle: production owner: group:default/platform-team ``` ## 👀 3. Vérifier Ouvre le composant dans **Catalogue** : l'onglet **Jira** liste **Issue**, **Summary**, **Status** et **Updated**. ✅ C'est tout ! ## Ce que ça montre, et à qui Toute personne qui peut ouvrir le composant voit son onglet. Astrolabe lit Jira avec le jeton de l'intégration, le même pour tout le monde. Un souci ? Va sur [Problèmes courants avec Jira](troubleshooting.md). --- # Problèmes courants avec Jira ## Quand tu ajoutes l'intégration | Ce que tu vois | Quoi faire | | --- | --- | | `jira.exemple.com a refusé les identifiants (401). Vérifie le jeton, et qu'il n'a pas expiré.` | Crée un nouveau jeton ([Data Center](connect-jira-data-center.md), [Cloud](connect-jira-cloud.md)) et colle-le tel quel. Pour Jira Cloud, vérifie l'**E-mail** : celui du compte à qui appartient le jeton. | | `jira.exemple.com accepte le jeton mais refuse l'accès (403). Donne au jeton les droits décrits dans le « ? » du champ.` | Le compte du jeton ne peut pas utiliser Jira. Connecte-toi à Jira avec ce compte : il doit voir tes projets. | | `This address is a Jira Cloud one (.atlassian.net). Use the Jira Cloud integration for it.` | Ton Jira est un Jira Cloud : utilise la carte [Jira Cloud](connect-jira-cloud.md). | | `This address is not a Jira Cloud one (they end in .atlassian.net). For your company's own Jira, use the Jira Data Center integration.` | Ton Jira est celui de ton entreprise : utilise la carte [Jira Data Center](connect-jira-data-center.md). | | `Aucun serveur ne répond au nom jira.exemple.com. Vérifie l'orthographe avec l'adresse que tu ouvres dans ton navigateur. Si elle est juste, Astrolabe ne voit pas ce serveur : préviens l'administrateur d'Astrolabe de votre entreprise.` | Copie l'adresse de ton navigateur dans le champ d'URL, sans chemin. | ## Dans Mon compte, ou quand tu connectes ton compte dans une carte | Ce que tu vois | Quoi faire | | --- | --- | | `example.atlassian.net a refusé votre jeton (401). Vérifiez-le, et qu'il n'a pas expiré.` | Crée un nouveau jeton à toi et colle-le tel quel : va sur [Suivre tes tickets Jira](add-the-dashboard-cards.md). | ## Sur un composant ou ton tableau de bord | Ce que tu vois | Quoi faire | | --- | --- | | Pas d'onglet **Jira** sur un composant | Ajoute l'annotation `jira/project-key`, et allume **Activer Jira** dans **Administration › Plugins** : va sur [Afficher l'onglet Jira](show-the-tab.md). | | L'onglet affiche `Le projet SHOP n'existe pas, ou le compte du jeton ne le voit pas. Vérifiez l'annotation jira/project-key du composant.` | La clé écrite dans `jira/project-key` n'est pas un projet Jira, ou le compte du jeton ne peut pas l'ouvrir. Compare l'annotation avec la clé du projet dans Jira, puis vérifie que le compte du jeton peut ouvrir le projet. | | L'onglet affiche `No open issue in SHOP.` alors que le projet a des tickets ouverts | Compare l'annotation avec le préfixe des tickets du projet, puis vérifie que le compte du jeton peut ouvrir le projet dans Jira. | | Une carte affiche `Votre compte Jira n'est pas connecté.` | Clique sur **Connecter mon compte Jira** dans la carte : va sur [Connecter ton compte Jira](add-the-dashboard-cards.md). | | La source **jira** manque dans **Ajouter une carte** | Jira n'est pas encore connecté : demande à ton administrateur d'Astrolabe. | | **Rien à afficher** et `Aucun ticket Jira ouvert ne vous est assigné.` sur **Mes tickets ouverts** | Ton compte Jira n'a aucun ticket ouvert qui lui soit assigné. Rien à corriger : la carte se remplit dès qu'il y en a un. | | **Rien à afficher** et `Aucun ticket Jira n'attend votre approbation.` sur **À relire** | Rien à corriger : la carte se remplit dès qu'un ticket attend ton approbation. | | **Rien à afficher** et `Votre requête JQL ne renvoie aucun ticket. Vérifiez la requête.` sur **Requête JQL** | Ouvre le menu de la carte, clique sur **Modifier**, et corrige la requête dans le champ **Requête JQL**. | | `Les 1000 premiers tickets seulement : Jira en contient davantage. Affinez la requête pour voir le reste.` au-dessus du tableau d'une carte Jira | La requête correspond à plus de 1000 tickets. Affine-la dans le champ **Requête JQL** : ajoute une condition, par exemple `AND statusCategory != Done`. | | Une carte **Requête JQL** affiche `Jira a répondu par une erreur qu'il n'explique pas. Vérifiez l'hôte et l'adresse d'API dans Administration › Connexions de l'entreprise › Jira. S'ils sont justes, c'est Jira qui va mal : réessayez plus tard.` | Vérifie d'abord la requête : sur **Mes tableaux de bord**, ouvre le menu **more** de la carte, **Modifier**, et relis le champ **Requête JQL**. Essaie la même requête dans la recherche de tickets de Jira : elle doit y marcher. | *Non vérifié sur une instance : le message du projet qui n'existe pas, aucun Jira n'est connecté à l'instance de test.* ## Quand l'onglet dit qu'un module manque | Ce que tu vois | Que faire | | --- | --- | | `Astrolabe ne propose pas cette fonction Jira sur cette instance.` et `Un module manque à cette installation d'Astrolabe. Prévenez votre administrateur d'Astrolabe.` | L'intégration peut être connectée et le plugin allumé, mais cette installation d'Astrolabe n'a pas le module qui sert Jira. Préviens ton administrateur d'Astrolabe. Rien à changer sur le composant. | *Non vérifié sur une instance : ce message demande une installation à laquelle le module manque.* :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec le nom du composant et le message que tu vois. ::: --- # Ce que montre chaque carte Jira Tu as [ajouté une carte Jira](add-the-dashboard-cards.md). Voici ce qu'elle liste. Les quatre cartes lisent Jira avec **ton propre jeton** : elles montrent ce que voit ton compte Jira. Toutes quatre ont le même tableau. | Colonne | Ce qu'elle montre | Affichée au départ | | --- | --- | --- | | **Clé** | Le numéro du ticket, par exemple `SHOP-42` | Oui | | **Type** | Le type du ticket tel que ton Jira le nomme, par exemple `Epic`, `Story`, `Bug` | Oui | | **Ressource** | Le projet Jira | Oui | | **Titre** | Le résumé du ticket | Oui | | **Priorité** | Sa priorité dans Jira, par exemple `Highest`, `High`, `Medium`, `Low`, `Lowest` | Oui | | **Statut** | Son statut dans Jira, par exemple `to do`, `in progress`, `done` | Non | | **Estimation** | Ses points de story, ou à défaut son estimation d'origine en temps. Un tiret (`-`) quand le ticket n'en a pas. | Non | | **Sprint** | Le sprint auquel appartient le ticket. Un tiret (`-`) quand il n'en a aucun. | Non | | **Date** | Sa dernière mise à jour | Oui | - Les statuts présents sont écrits en haut à droite de la carte, par exemple **to do**, **in progress**. - Chaque ligne se termine par une flèche : clique dessus pour ouvrir le ticket dans Jira. - Sous le tableau, **Afficher 5 résultats** te laisse choisir 5, 10, 25 ou 50 lignes par page : voir [Choisir combien de résultats une carte montre](../../../../developer-dashboard/my-dashboard/choose-how-many-results.md). Le compte (par exemple **1-5 sur 120**) et les flèches **Previous table page** et **Next table page** font défiler les pages. Les cartes lisent **toutes les pages** de la réponse de Jira, jusqu'à 1000 tickets. Au-delà, la carte dit **Les 1000 premiers tickets seulement : Jira en contient davantage. Affinez la requête pour voir le reste.** au-dessus du tableau. *La colonne **Estimation** a été vérifiée sur un ticket sans estimation (un tiret). Les points de story et l'estimation en temps n'ont pas été vérifiés sur une instance.* ## 🧩 Afficher ou cacher une colonne 1. Sur **Mes tableaux de bord**, ouvre l'onglet du tableau. 2. En haut à droite de la carte, clique sur le bouton **Plus**, puis sur **Modifier**. La fenêtre **Modifier la carte** s'ouvre. 3. Ouvre l'onglet **Colonnes**. Sous **Sélectionner les colonnes à afficher**, tu lis les neuf colonnes : `clé`, `type`, `ressource`, `titre`, `priorité`, `statut`, `estimation`, `sprint`, `date`. 4. Coche **statut**, **estimation** ou **sprint** pour afficher la colonne. Décoche une colonne pour la cacher. 5. Clique sur **Enregistrer**. Le tableau a maintenant les colonnes que tu as cochées, dans l'ordre ci-dessus. ## ↕️ Trier par statut 1. Dans l'en-tête du tableau, clique sur **Statut**. Les tickets sont triés par statut, ceux qui sont `done` d'abord. 2. Clique de nouveau sur **Statut**. L'ordre s'inverse : les tickets `to do` viennent d'abord. Le tri porte sur tous les tickets que la carte a lus, pas seulement sur la page que tu vois. Si **Statut** n'est pas dans le tableau, affiche-la d'abord : voir [Afficher ou cacher une colonne](#-afficher-ou-cacher-une-colonne). ## ↕️ Trier par priorité 1. Dans l'en-tête du tableau, clique sur **Priorité**. Les tickets sont triés dans l'ordre de Jira : `Highest`, `High`, `Medium`, `Low`, `Lowest`. 2. Clique de nouveau sur **Priorité**. L'ordre s'inverse : les tickets `Lowest` viennent d'abord. Une priorité créée par ton administrateur Jira vient après `Lowest`. Un ticket sans priorité vient en dernier. Le tri porte sur tous les tickets que la carte a lus, pas seulement sur la page que tu vois. ## Mes tickets ouverts Les tickets ouverts qui te sont assignés, le plus récemment modifié d'abord. ## Mon sprint Les tickets Jira qui te sont assignés dans le sprint en cours, avec le nom du sprint dans la colonne **Sprint**. Quand ton Jira n'a aucun sprint en cours (un projet Kanban n'en a pas), la carte dit : `Aucun sprint n'est en cours : votre Jira n'a pas de sprint actif (un projet Kanban n'en a pas). Utilisez « Mes tickets ouverts » pour voir votre travail.` Ajoute alors une carte **Mes tickets ouverts** pour voir ton travail. *La liste d'un sprint en cours n'a pas été vérifiée sur une instance : le Jira utilisé pour cette page n'avait aucun sprint en cours.* ## À relire Les tickets où tu es relecteur ou mentionné. Sans aucun, la carte affiche **Rien à afficher** et **Aucun ticket Jira n'attend votre approbation.** ## Requête JQL Les tickets que renvoie la requête JQL écrite dans le champ **Requête JQL** quand tu as ajouté la carte. Quelques exemples à copier : | Tu veux | Requête JQL | | --- | --- | | Tous les tickets d'un projet, quel qu'en soit l'assigné | `project = SHOP ORDER BY updated DESC` | | Les tickets ouverts d'un projet | `project = SHOP AND statusCategory != Done ORDER BY updated DESC` | | Ce qui t'est assigné | `assignee = currentUser() ORDER BY created DESC` | Pour changer la requête plus tard, voir ci-dessous. ## Changer ce que montre une carte 1. Sur **Mes tableaux de bord**, ouvre l'onglet du tableau. 2. En haut à droite de la carte, clique sur le bouton **Plus**, puis sur **Modifier**. La fenêtre **Modifier la carte** a trois onglets : | Onglet | Ce que tu fais | | --- | --- | | **Général** | Renommer la carte, changer son icône, et pour **Requête JQL** changer le champ **Requête JQL** | | **Colonnes** | Afficher ou cacher une colonne | | **Filtres** | Retirer un statut ou un projet de la liste, pour que ses lignes disparaissent | 3. Clique sur **Enregistrer**. Le même menu propose **Actualiser**, pour relire Jira tout de suite (voir [Relire la source d'une carte](../../../../developer-dashboard/my-dashboard/refresh-a-card.md)), et **Supprimer**. ✅ C'est tout ! La suite : [Recevoir les notifications Jira](get-notifications.md). --- # Ajouter l'intégration LaunchDarkly L'intégration donne à Astrolabe l'adresse de l'API LaunchDarkly et un jeton d'accès. La carte de **Administration › Connexions de l'entreprise** la décrit ainsi : **Les feature flags d'une entité, depuis LaunchDarkly.** Tu le fais une fois, en administrateur. ## Avant de commencer Il te faut un jeton d'accès à l'API LaunchDarkly avec le rôle **reader**. Dans LaunchDarkly, tu le crées sous **Organization settings › Authorization**. Cette étape n'a pas été vérifiée sur une instance. ## 🔧 Ajouter l'intégration 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Connexions de l'entreprise**. 3. Sur la carte **LaunchDarkly**, clique sur **Configurer**. 4. En haut à droite, clique sur **Ajouter un jeton**. 5. Dans **API URL**, garde `https://app.launchdarkly.com/api`. Le champ est déjà rempli. 6. Dans **Jeton LaunchDarkly**, colle le jeton d'accès. 7. Clique sur **Tester la connexion**. Le formulaire répond : **La connexion fonctionne : la source a accepté les identifiants.** 8. Clique sur **Ajouter**. Le formulaire prévient : **L'instance redémarrera après confirmation.** Attends quelques secondes. Le jeton est dans la liste, avec **Administration** dans la colonne **Provenance**. ✅ C'est tout ! La suite : [Afficher l'onglet LaunchDarkly sur un composant](show-on-a-component.md). --- # Afficher l'onglet LaunchDarkly sur un composant Les composants ont un onglet **LaunchDarkly** : leurs feature flags. La carte de **Administration › Plugins** dit : **Les feature flags d'un composant, lus par le proxy.** Trois étapes : allumer le plugin, lui donner l'adresse et la clé de LaunchDarkly, annoter le composant. ## 1. 🔌 Allumer le plugin 1. Dans **Administration**, sous **PLATEFORME**, clique sur **Plugins**. 2. Sur la carte **LaunchDarkly**, clique sur l'interrupteur **Activer LaunchDarkly**. ## 2. 🔧 Donner au plugin l'adresse et la clé 1. Sur la carte **LaunchDarkly**, clique sur **Configurer**. La page **Réglages** du plugin s'ouvre. 2. Remplis le formulaire : | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **URL de l'API** | La racine de l'API LaunchDarkly, avec `https://` | `https://app.launchdarkly.com/api` | | **Clé d'API** | La clé d'API qu'attend LaunchDarkly. Elle reste côté serveur : le navigateur ne parle jamais à LaunchDarkly. | | 3. Clique sur **Enregistrer**. Le message **Réglages enregistrés.** apparaît en bas à gauche de l'écran et disparaît tout seul. La page dit **La configuration a changé.** 4. Clique sur **Recharger**. L'instance redémarre ; attends quelques secondes. Les champs restent remplis, et la clé d'API s'affiche en `XXXXXXXXXXXX`. ## 3. 🏷️ Annoter le composant Dans le `catalog-info.yaml` du composant, nomme le projet LaunchDarkly : ```yaml apiVersion: backstage.io/v1alpha1 kind: Component metadata: name: shop-api annotations: launchdarkly.com/project-key: shop-api # la clé du projet dans LaunchDarkly spec: type: service lifecycle: production owner: group:default/platform-team ``` ## ✅ Vérifier Ouvre le composant depuis **Catalogue** : l'onglet **LaunchDarkly** est après **Documentation**. Une fois les réglages enregistrés, l'onglet ne dit plus **LaunchDarkly n'est pas encore configuré** ; il demande les flags à LaunchDarkly. Ce que l'onglet montre quand LaunchDarkly accepte la clé n'a pas été vérifié sur une instance. ✅ C'est tout ! --- # Problèmes courants avec LaunchDarkly ## Quand tu ajoutes l'intégration | Ce que tu vois | Quoi faire | | --- | --- | | `Le champ « API URL » est obligatoire.` | Saisis `https://app.launchdarkly.com/api` dans **API URL**. | | `API URL must be a full address starting with https://, for example https://app.launchdarkly.com/api.` | Il manque `https://` à l'adresse. Saisis `https://app.launchdarkly.com/api` dans **API URL**. | | `Le champ « Jeton LaunchDarkly » est obligatoire.` | Colle le jeton d'accès dans **Jeton LaunchDarkly**. | | `app.launchdarkly.com a refusé les identifiants (401). Vérifie le jeton, et qu'il n'a pas expiré. Corrige le champ, ou enregistre quand même si la source n'est que momentanément injoignable.` | Le jeton est faux ou expiré. Crée un nouveau jeton avec le rôle **reader** dans LaunchDarkly et colle-le. | ## Quand la licence ne couvre pas LaunchDarkly | Ce que tu vois | Que faire | | --- | --- | | Dans **Administration › Plugins**, la carte **LaunchDarkly** dit **Nécessite la licence Premium**, et **Configurer** est grisé | LaunchDarkly fait partie de la licence Premium. Clique sur la ligne, [ajoute une licence](../../../../administration/licensing/add-your-license.md) qui le couvre, puis allume le plugin. | | Sur l'onglet **LaunchDarkly** d'un composant, `Votre licence ne couvre pas LaunchDarkly.` ou `La licence n'a pas pu être vérifiée.` | Ajoute une licence qui couvre LaunchDarkly dans **Administration › Licences**, ou réessaie dans une minute. *Pas encore vérifié sur une instance : l'onglet n'est plus affiché quand la licence ne couvre plus LaunchDarkly.* | ## Sur l'onglet LaunchDarkly d'un composant | Ce que tu vois | Quoi faire | | --- | --- | | `LaunchDarkly n'est pas encore configuré` `Ce plugin fonctionne, mais il n'a rien à afficher tant qu'il n'est pas configuré depuis l'administration.` `Manquant ou invalide : URL de l'API, Clé d'API` | Clique sur **Ouvrir les réglages de LaunchDarkly**, remplis **URL de l'API** et **Clé d'API**, clique sur **Enregistrer**, puis sur **Recharger**. | | `LaunchDarkly a refusé la clé d'API.` `La clé a peut-être expiré, été révoquée ou n'a pas le droit de lecture : saisissez-en une valide dans les réglages de LaunchDarkly.` | Clique sur **Ouvrir les réglages de LaunchDarkly**, colle une **Clé d'API** valide, clique sur **Enregistrer**, puis sur **Recharger**. Vérifie ensuite que le composant a son annotation `launchdarkly.com/project-key`. | ## Après l'ajout de l'intégration | Ce que tu vois | Quoi faire | | --- | --- | | Sur la carte **LaunchDarkly** de **Connexions de l'entreprise**, **Ne fonctionne pas** | Clique sur **Gérer**. La colonne **État** dit pourquoi : par exemple `app.launchdarkly.com a refusé les identifiants (401). Vérifie le jeton, et qu'il n'a pas expiré.` Clique sur **Modifier le jeton** et colle un nouveau jeton. | | Dans **Administration › Problèmes**, une ligne **Connexion de l'entreprise** **LaunchDarkly** : `app.launchdarkly.com refuse les identifiants (401). Le jeton est peut-être faux ou expiré.` | Clique sur **Corriger** : l'intégration s'ouvre. Colle un nouveau jeton. | :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec le nom du composant et le message que tu vois. ::: --- # Ajoute l'intégration SonarQube L'intégration donne à Astrolabe l'adresse de ton SonarQube et son jeton. Tu le fais une fois, en administrateur. **Avant de commencer** : un jeton utilisateur SonarQube, voir [Créer un jeton SonarQube](create-a-token.md). ## Comment faire ### 1. Ouvre l'intégration SonarQube 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Connexions de l'entreprise**. 3. Sur la carte **SonarQube**, clique sur **Configurer**. 4. En haut à droite, clique sur **Ajouter un jeton**. ### 2. Remplis le formulaire | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **Nom** | Un nom de ton choix | `SonarQube` | | **URL de base de SonarQube** | L'adresse de SonarQube, avec `https://` | `https://sonar.exemple.com` | | **Clé d'API SonarQube** | Le jeton que tu as créé | | ### 3. Teste et enregistre 1. Clique sur **Tester la connexion**. Le formulaire dit **La connexion fonctionne : la source a accepté les identifiants.** 2. Clique sur **Ajouter**. Astrolabe redémarre tout seul, en quelques secondes. Le jeton est dans la liste, avec **État** à **Connectée**. ✅ C'est fait. La suite : [Afficher SonarQube sur un composant](show-on-a-component.md). ## Tu as plusieurs SonarQube Ajoute une intégration par SonarQube, et donne à chacune une **clé d'instance**. 1. Refais les étapes ci-dessus pour chaque SonarQube. 2. Dans le formulaire, ouvre **Réglages facultatifs** et remplis **Clé de l'instance SonarQube** avec un nom court : lettres, chiffres, `.`, `_` et `-`. | SonarQube | Name | SonarQube instance key | | --- | --- | --- | | Production | `SonarQube prod` | `prod` | | Autres environnements | `SonarQube dev` | `dev` | Un composant choisit alors son SonarQube dans son annotation : voir [Afficher SonarQube sur un composant](show-on-a-component.md#tu-as-plusieurs-sonarqube). :::tip Le SonarQube par défaut Une clé de projet sans clé d'instance est lue dans l'intégration dont la clé d'instance est `default`, sinon dans la première de la liste. ::: --- # Crée ton jeton SonarQube en 2 minutes Astrolabe lit SonarQube avec un jeton utilisateur. Tu le crées une fois, dans SonarQube. ## Comment faire ### 1. Connecte-toi avec le bon utilisateur Connecte-toi à SonarQube avec l'utilisateur avec lequel Astrolabe lira. Astrolabe voit exactement les projets que cet utilisateur peut parcourir. :::tip Prends un utilisateur dédié Crée un utilisateur SonarQube `astrolabe`, avec la permission **Browse** sur les projets de tes équipes. Astrolabe continue de marcher quand les gens partent. ::: ### 2. Génère le jeton 1. En haut à droite, clique sur ton avatar, puis sur **My Account**. 2. Ouvre l'onglet **Security**. 3. Sous **Generate Tokens**, remplis : - **Nom** : `Astrolabe` - **Type** : **User Token** - **Expires in** : la date de ton choix 4. Clique sur **Generate**. ### 3. Copie le jeton Copie le jeton tout de suite : SonarQube ne le montre qu'une fois. :::tip Note la date d'expiration Mets-la dans ton agenda. Ce jour-là, génère un nouveau jeton et colle-le dans l'intégration. ::: ✅ C'est fait. La suite : [Ajouter l'intégration SonarQube](add-the-integration.md). --- # FAQ SonarQube ## Quel jeton ? Un **User Token** SonarQube, d'un utilisateur qui a la permission **Browse** sur tes projets. Voir [Créer un jeton SonarQube](create-a-token.md). ## Qui voit la qualité du code ? Toute personne qui peut ouvrir le composant. Astrolabe lit SonarQube avec le jeton de l'intégration, le même pour tout le monde. ## J'ai plusieurs SonarQube. Comment un composant choisit le sien ? Par le début de son annotation : `sonarqube.org/project-key: prod/acme-shop-api` lit le projet `acme-shop-api` dans l'intégration dont la **Clé de l'instance SonarQube** est `prod`. Voir [Afficher SonarQube sur un composant](show-on-a-component.md#tu-as-plusieurs-sonarqube). ## Ça marche avec SonarQube Cloud ? Oui : écris `https://sonarcloud.io` dans **URL de base de SonarQube**. ## Compass utilise-t-il la même intégration ? Oui. Compass lit les mêmes intégrations et la même annotation. --- # Affiche SonarQube sur un composant Chaque composant annoté montre la qualité de son code : une carte **Qualité du code** sur sa **Vue d'ensemble**, et un onglet **SonarQube**. ## Comment faire ### 1. Allume le plugin 1. Dans **Administration**, sous **PLATEFORME**, clique sur **Plugins**. 2. Sur la carte **SonarQube**, allume l'interrupteur **Activer SonarQube**. Si la carte dit **Configurez d'abord l'intégration SonarQube**, clique dessus : l'intégration s'ouvre dans **Connexions de l'entreprise**. Ajoute-la ([Ajouter l'intégration SonarQube](add-the-integration.md)). Le plugin s'allume tout seul quand tu enregistres l'intégration : passe à l'étape 2. ### 2. Annote le composant Dans le `catalog-info.yaml` du composant, ajoute la clé de son projet SonarQube : ```yaml apiVersion: backstage.io/v1alpha1 kind: Component metadata: name: shop-api annotations: sonarqube.org/project-key: acme-shop-api spec: type: service lifecycle: production owner: team-a ``` :::tip Où trouver la clé du projet ? Dans SonarQube, ouvre le projet, puis **Project Information** : c'est la **Project Key**. ::: ### 3. Vérifie Ouvre le composant dans **Catalogue** : - sur la **Vue d'ensemble**, la carte **Qualité du code** montre la quality gate, **Bugs**, **Vulnérabilités**, **Code smells**, **Hotspots revus**, **Couverture** et **Duplications** ; - l'onglet **SonarQube** montre les mêmes chiffres. ✅ C'est fait. ## Tu as plusieurs SonarQube Commence l'annotation par la **clé d'instance** de l'intégration, puis `/`, puis la clé du projet : ```yaml metadata: annotations: sonarqube.org/project-key: prod/acme-shop-api ``` Ici, `prod` est la **Clé de l'instance SonarQube** de l'intégration du SonarQube de production. ## Ce que ça affiche, et pour qui Toute personne qui peut ouvrir le composant voit la qualité de son code. Astrolabe lit SonarQube avec le jeton de l'intégration, le même pour tout le monde. Un souci ? Voir [Problèmes courants avec SonarQube](troubleshooting.md). --- # Problèmes courants avec SonarQube ## Quand tu ajoutes l'intégration | Ce que tu vois | Quoi faire | | --- | --- | | `sonar.exemple.com a refusé les identifiants (401). Vérifie le jeton, et qu'il n'a pas expiré.` | Crée un nouveau **User Token** : voir [Créer un jeton SonarQube](create-a-token.md). | | `Aucun serveur ne répond au nom sonar.exemple.com. Vérifie l'orthographe avec l'adresse que tu ouvres dans ton navigateur. Si elle est juste, Astrolabe ne voit pas ce serveur : préviens l'administrateur d'Astrolabe de votre entreprise.` | Copie l'adresse de ton navigateur dans **URL de base de SonarQube**. | ## Sur la page du composant | Ce que tu vois | Quoi faire | | --- | --- | | Pas d'onglet **SonarQube**, pas de carte **Qualité du code** | Ajoute l'annotation `sonarqube.org/project-key` au composant, et allume **Activer SonarQube** dans **Administration › Plugins**. | | `SonarQube n'est pas encore configuré. Ajoutez une intégration SonarQube dans Administration › Connexions de l'entreprise › SonarQube, puis allumez le plugin SonarQube dans Administration › Plugins.` | Fais ce que dit le message : [ajoute l'intégration](add-the-integration.md). | | `Le SonarQube par défaut n'a aucun projet de clé « acme-shop-api ». Vérifiez l'annotation sonarqube.org/project-key de ce composant.` | Copie la **Project Key** de SonarQube, **Project Information**, dans l'annotation. | | `Le SonarQube par défaut a refusé le jeton de son intégration. Remplacez le jeton dans Administration › Connexions de l'entreprise › SonarQube.` | Le jeton a expiré ou a été révoqué : [crée-en un nouveau](create-a-token.md) et colle-le dans l'intégration. | | `Le SonarQube « prod » refuse de montrer le projet « acme-shop-api » au jeton de son intégration. Dans SonarQube, donnez à l'utilisateur de ce jeton la permission Browse sur le projet.` | Dans SonarQube, donne la permission **Browse** sur le projet à l'utilisateur du jeton. | | `Aucune intégration SonarQube n'a la clé d'instance « prod » par laquelle commence l'annotation sonarqube.org/project-key de ce composant. Utilisez la clé d'instance d'une de vos intégrations SonarQube (Administration › Connexions de l'entreprise › SonarQube), ou retirez « prod/ » pour lire le SonarQube par défaut.` | Écris dans l'annotation la **Clé de l'instance SonarQube** d'une de tes intégrations, ou retire `prod/`. | | `Le SonarQube par défaut n'a pas encore d'analyse du projet « acme-shop-api ». Lancez une analyse, puis rechargez la page.` | Lance une analyse du projet dans ta CI, puis recharge la page. | | `Le SonarQube par défaut n'a pas pu être lu (aucune réponse). Vérifiez l'adresse SonarQube dans Administration › Connexions de l'entreprise › SonarQube.` | Vérifie **URL de base de SonarQube** dans l'intégration, puis **Tester la connexion**. | :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec le nom du composant et le message que tu vois. ::: --- # Ajouter l'intégration Terraform Cloud L'intégration donne à Astrolabe l'adresse de Terraform Cloud (ou de ton Terraform Enterprise) et un jeton pour le lire. Elle nourrit l'onglet **Terraform** de tes composants. Tu le fais une fois, en administrateur. ## Avant de commencer Il te faut un jeton d'API : voir [Créer un jeton d'API Terraform Cloud](create-a-token.md). ## 🔧 Ajouter l'intégration 1. Dans la barre latérale, en bas, clique sur **Administration**. 2. Sous **PLATEFORME**, clique sur **Connexions de l'entreprise**. 3. Sur la carte **Terraform Cloud**, clique sur **Configurer**. 4. En haut à droite, clique sur **Ajouter un jeton**. 5. Remplis le formulaire : | Champ | Quoi écrire | Exemple | | --- | --- | --- | | **Nom** | Un nom pour toi | `Terraform Cloud` | | **Adresse de Terraform Cloud** | L'adresse web, **avec** `https://`. Elle indique déjà `https://app.terraform.io` : ne la change que pour ton propre Terraform Enterprise | `https://app.terraform.io` | | **Jeton d'API (utilisateur ou équipe)** | Le jeton d'API | | 6. Clique sur **Tester la connexion**. Le formulaire dit **La connexion fonctionne : la source a accepté les identifiants.** 7. Clique sur **Ajouter**. Le formulaire prévient : **L'instance redémarrera après confirmation.** Attends quelques secondes. Le jeton est dans la liste, avec **État** sur **Connectée**. Dans **Connexions de l'entreprise**, la carte **Terraform Cloud** dit **Connectée** et son bouton devient **Gérer**. ✅ C'est tout ! La suite : [Afficher l'onglet Terraform sur un composant](show-the-tab.md). --- # Créer un jeton d'API Terraform Cloud Astrolabe lit Terraform Cloud avec **un jeton d'API**. Le jeton a **les droits de son propriétaire** : Astrolabe ne voit que les workspaces que ce propriétaire voit, et il ne fait que les lire. Tu crées le jeton une fois, dans Terraform Cloud. :::tip Prends un utilisateur dédié Crée un utilisateur Terraform Cloud pour Astrolabe et donne-lui l'accès en lecture aux workspaces que tes composants nomment. Ton propre jeton marche aussi, mais Astrolabe s'arrête le jour où ton accès s'arrête. ::: ## 🔑 Créer le jeton 1. Dans Terraform Cloud, connecte-toi avec cet utilisateur. 2. Ouvre **User settings**, puis **Tokens**. 3. Clique sur **Create an API token**. 4. Donne-lui une description, par exemple `Astrolabe`, puis confirme. 5. **Copie le jeton maintenant.** Terraform Cloud ne l'affiche plus jamais. Ces étapes se font dans Terraform Cloud. Elles n'ont pas été vérifiées sur une instance. ✅ C'est tout ! La suite : [Ajouter l'intégration Terraform Cloud](add-the-integration.md). --- # FAQ Terraform Cloud ## Quel jeton ? Un **jeton d'API** Terraform Cloud, d'utilisateur ou d'équipe. Voir [Créer un jeton d'API Terraform Cloud](create-a-token.md). ## Est-ce que ça marche avec Terraform Enterprise ? Oui, l'adresse est un champ du formulaire : saisis l'adresse de ton Terraform Enterprise dans **Terraform Cloud address**. *Pas encore vérifié sur une instance.* ## Dois-je saisir Terraform Cloud deux fois ? Non. La carte du plugin **Terraform** n'a pas de réglages. L'adresse et le jeton se saisissent une seule fois, dans **Administration › Connexions de l'entreprise**. ## Qui voit l'onglet Terraform ? Toute personne qui peut ouvrir le composant. Astrolabe lit Terraform Cloud avec le jeton de l'intégration, le même pour tous les lecteurs. ## L'onglet manque sur un composant. Pourquoi ? L'onglet n'existe que sur un composant qui porte **les deux** annotations `terraform/organization` et `terraform/workspaces`, quand le plugin **Terraform** est allumé. Voir [Afficher l'onglet Terraform](show-the-tab.md). ## Un composant peut-il montrer plusieurs workspaces ? Oui : sépare leurs noms par des virgules dans `terraform/workspaces`. ## Y a-t-il une carte pour le Tableau de bord ? Non. Terraform Cloud ne nourrit que l'onglet. --- # Afficher l'onglet Terraform sur un composant Chaque composant annoté reçoit un onglet **Terraform** : les workspaces Terraform Cloud qu'il nomme, et leurs dernières exécutions. Deux étapes : allumer le plugin, annoter le composant. ## Ce que l'onglet affiche, et pour qui Les workspaces Terraform Cloud nommés par le composant, chacun avec ses dernières exécutions. Toute personne qui peut ouvrir le composant voit l'onglet. Astrolabe lit Terraform Cloud avec **le jeton de l'intégration**, le même pour tout le monde. ## 1. 🔌 Allumer le plugin 1. Dans **Administration**, sous **PLATEFORME**, clique sur **Plugins**. 2. Sur la carte **Terraform**, allume l'interrupteur en haut à droite. Si la carte dit **Configurez d'abord l'intégration Terraform**, clique dessus : l'intégration s'ouvre dans **Connexions de l'entreprise**. Ajoute-la ([Ajouter l'intégration Terraform](add-the-integration.md)). Le plugin s'allume tout seul quand tu enregistres l'intégration : passe à l'étape 2. La carte n'a pas de réglages : Terraform Cloud se saisit une seule fois, dans [l'intégration](add-the-integration.md). ## 2. 🏷️ Annoter le composant Dans le fichier `catalog-info.yaml` du composant, ajoute **les deux** annotations : ```yaml apiVersion: backstage.io/v1alpha1 kind: Component metadata: name: shop-api annotations: terraform/organization: acme terraform/workspaces: shop-api,shop-api-staging spec: type: service lifecycle: production owner: team-a ``` | Annotation | Quoi écrire | Exemple | | --- | --- | --- | | `terraform/organization` | Le nom de ton organisation Terraform Cloud | `acme` | | `terraform/workspaces` | Les noms des workspaces, séparés par des virgules | `shop-api,shop-api-staging` | ## ✅ Vérifier Ouvre le composant dans **Catalogue**. Un onglet **Terraform** est dans la barre d'onglets, à côté de **Vue d'ensemble**. Clique dessus : chaque workspace est listé avec ses dernières exécutions. La liste des exécutions n'a pas été vérifiée sur une instance. ✅ C'est tout ! Quelque chose ne va pas ? Voir [Problèmes courants avec Terraform Cloud](troubleshooting.md). --- # Problèmes courants avec Terraform Cloud ## Quand tu ajoutes l'intégration | Ce que tu vois | Quoi faire | | --- | --- | | `app.terraform.io a refusé les identifiants (401). Vérifie le jeton, et qu'il n'a pas expiré. Corrige le champ, ou enregistre quand même si la source n'est que momentanément injoignable.` | Le jeton est faux, expiré ou supprimé. Crée-en un nouveau : voir [Créer un jeton d'API Terraform Cloud](create-a-token.md). | ## Sur l'onglet Terraform d'un composant | Ce que tu vois | Quoi faire | | --- | --- | | Pas d'onglet **Terraform** | Ajoute **les deux** annotations `terraform/organization` et `terraform/workspaces` au composant, et allume le plugin **Terraform** dans **Administration › Plugins**. | | `Le workspace acme/shop-api n'est pas joignable avec le jeton Terraform : vérifiez les annotations terraform/organization et terraform/workspaces, ou les accès du jeton.` | Vérifie l'organisation et les noms de workspaces dans les annotations, et que le propriétaire du jeton peut lire ce workspace dans Terraform Cloud. | ## Quand l'onglet dit qu'un module manque | Ce que tu vois | Que faire | | --- | --- | | `Astrolabe ne propose pas cette fonction Terraform sur cette instance.` et `Un module manque à cette installation d'Astrolabe. Prévenez votre administrateur d'Astrolabe.` | L'intégration peut être connectée et le plugin allumé, mais cette installation d'Astrolabe n'a pas le module qui sert Terraform. Préviens ton administrateur d'Astrolabe. Rien à changer sur le composant. | *Non vérifié sur une instance : ce message demande une installation à laquelle le module manque.* :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec le nom du composant et son workspace Terraform Cloud. ::: --- # Configurer Astrolabe Ton Astrolabe est installé et neuf. (Pas encore installé ? Voir [Installer Astrolabe](install-astrolabe.md).) Suis ces étapes dans l'ordre, en administrateur : à la fin, tes équipes se connectent, trouvent leurs composants et voient leurs outils. ## Avant de commencer Il te faut l'adresse de ton Astrolabe, et l'identifiant et le mot de passe de l'administrateur. ## 🚀 Les étapes 1. **Connecte-toi en administrateur.** Voir [Se connecter avec ton compte Astrolabe](Configuration/Authentication/astrolabe-account/sign-in.md). 2. **Ajoute ta licence**, dans **Administration › Licences**. Voir [Ajouter ta licence](../administration/licensing/add-your-license.md). 3. **Choisis comment les gens se connectent**, dans **Administration › Authentification**. Voir [Choisir comment les gens se connectent](Configuration/Authentication/authentification.md). 4. **Branche tes outils** (GitHub, GitLab, Jira, Argo CD…), dans **Administration › Connexions de l'entreprise**. Voir [Intégrations](Configuration/Integration/integration.md). 5. **Remplis le catalogue**, dans **Administration › Catalogue**. Voir [Choisir ce que le catalogue importe](../administration/catalog/choose-what-the-catalog-imports.md). 6. **Active les plugins** dont tes équipes se servent, dans **Administration › Plugins**. Voir [Activer un plugin](../administration/plugins/turn-on-a-plugin.md). 7. **Vérifie que rien ne cloche**, dans **Administration › Problèmes**. Voir [Trouver et corriger un problème](../administration/problems/find-and-fix-a-problem.md). ✅ C'est tout ! Tes équipes peuvent se connecter. La suite, pour tout le monde : [Parcourir le catalogue](../core-features/catalog/browse-the-catalog.md). --- # Installer Astrolabe Il y a deux façons d'avoir Astrolabe. Choisis-en une, puis [configure-le](configure-astrolabe.md). | | **SaaS** | **On-prem** | | --- | --- | --- | | Qui le fait tourner | ForgeIT l'héberge pour toi | Tu le fais tourner dans ton infrastructure | | Ce que tu reçois | Une adresse et un compte administrateur | L'image d'Astrolabe et les fichiers ci-dessous | | Tes données | Hébergées par ForgeIT | Restent dans ton PostgreSQL | ## ☁️ SaaS : on l'héberge pour toi 1. Demande ton instance sur le site de ForgeIT : [www.forgeit.fr](https://www.forgeit.fr). 2. Tu reçois l'adresse de ton Astrolabe, l'identifiant et le mot de passe de l'administrateur. ✅ C'est fait ! Passe à [Configurer Astrolabe](configure-astrolabe.md). ## 🏢 On-prem : dans ton infrastructure Il te faut Docker démarré sur la machine, avec 8 Go de mémoire donnés à Docker, et le nom de l'image d'Astrolabe, que ForgeIT te donne avec ta licence. Voir [Nous contacter](#-nous-contacter). 1. Crée un dossier vide et enregistre-y ce fichier sous le nom `docker-compose.hub.yml`. ```yaml name: astrolabe-hub services: postgres: image: postgres:14-alpine command: postgres -c max_connections=300 environment: POSTGRES_USER: ${POSTGRES_USER:-backstage} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-backstage} volumes: - astrolabe-postgres:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-backstage}"] interval: 5s timeout: 5s retries: 10 astrolabe: image: ${ASTROLABE_IMAGE:?set ASTROLABE_IMAGE} container_name: astrolabe-hub depends_on: postgres: condition: service_healthy ports: - "${ASTROLABE_PORT:-7007}:7007" environment: ENVIRONMENT: production FRONTEND_BASE_URL: http://127.0.0.1:${ASTROLABE_PORT:-7007} BACKEND_BASE_URL: http://127.0.0.1:${ASTROLABE_PORT:-7007} POSTGRES_HOST: postgres POSTGRES_PORT: 5432 POSTGRES_USER: ${POSTGRES_USER:-backstage} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-backstage} ADMIN_USERNAME: ${ADMIN_USERNAME:-administrator} ADMIN_EMAIL: ${ADMIN_EMAIL:-admin@astrolabe.local} ADMIN_PASSWORD: ${ADMIN_PASSWORD:-astrolabe} BACKEND_SECRET: ${BACKEND_SECRET:-local-only-change-me-before-sharing} ORGANIZATION_NAME: ${ORGANIZATION_NAME:-Astrolabe} volumes: astrolabe-postgres: ``` 2. Dans un terminal ouvert dans ce dossier, donne le nom de l'image et démarre Astrolabe. Remplace la valeur par le nom que tu as reçu. ```bash export ASTROLABE_IMAGE= docker compose -f docker-compose.hub.yml up -d ``` Le premier démarrage télécharge l'image, puis prépare la base : compte deux à trois minutes. 3. Ouvre `http://127.0.0.1:7007`. Utilise cette adresse, pas `localhost` : la connexion compare l'adresse que tu ouvres à celle du fichier. 4. Connecte-toi avec l'identifiant `administrator` et le mot de passe `astrolabe`. 5. Avant de partager cet Astrolabe, change le mot de passe et le secret. Mets-les dans un fichier `.env` à côté de `docker-compose.hub.yml`, puis redémarre avec la même commande qu'à l'étape 2. ```text ADMIN_PASSWORD= BACKEND_SECRET= ``` :::tip Choisis `BACKEND_SECRET` avant de configurer quoi que ce soit. Il chiffre les secrets saisis dans l'Administration : le changer ensuite les rend illisibles. ::: ✅ C'est fait ! Passe à [Configurer Astrolabe](configure-astrolabe.md). Pour arrêter Astrolabe, lance `docker compose -f docker-compose.hub.yml down`. Tes données restent. Pour le redémarrer, lance la commande de l'étape 2. ## 🧪 L'essayer en une commande Pour jeter un œil avant de décider, démarre une démo sur des données d'exemple, sans PostgreSQL : ```bash docker run --rm -p 7007:7007 --tmpfs /run/astrolabe-db -e DEMO_MODE=true -e ASTROLABE_DEMO_OPEN=true "$ASTROLABE_IMAGE" ``` Ouvre `http://localhost:7007` et clique sur **Démarrer en tant qu'invité**. La démo est en lecture seule et tout disparaît quand tu arrêtes le conteneur. La démo publique de ForgeIT fonctionne autrement : tu demandes d'abord l'accès. Voir [Demander l'accès à la démo](request-demo-access.md). ## 📞 Nous contacter - **Demander une démo ou une instance :** [www.forgeit.fr](https://www.forgeit.fr) - **Parler à l'équipe commerciale :** [www.forgeit.fr](https://www.forgeit.fr) - **Déjà client, tu as besoin d'aide :** écris à **support@forgeit.fr**. ## ➡️ La suite [Configurer Astrolabe](configure-astrolabe.md) : connexion, licence, outils et catalogue. --- # Demander l'accès à la démo La démo publique d'Astrolabe s'ouvre sur invitation. Tu donnes ton adresse, ForgeIT l'approuve, et tu entres avec un code ou avec le bouton d'un e-mail. Cette page t'accompagne de la page de connexion jusqu'à la démo. ## 🙋 Demander l'accès 1. Ouvre l'adresse de la démo. 2. Sur la page de connexion, clique sur **Démarrer en tant qu'invité**. 3. Dans **E-mail**, saisis ton adresse, puis clique sur **Accéder à la démo**. Si ton adresse est déjà approuvée, va à [Entrer dans la démo](#-entrer-dans-la-démo). 4. La page affiche **Cette adresse n'est pas encore autorisée dans la démo. Faites une demande d'accès : nous répondons par e-mail.** Remplis **Prénom** et **Nom**. **Entreprise (facultatif)** peut rester vide. 5. Coche la case **J'accepte que ma visite soit enregistrée et qu'on me recontacte. Données gardées 12 mois.** 6. Clique sur **Recevoir un code**. 7. Ouvre l'e-mail **Confirmez votre demande d'accès** reçu dans ta boîte. Copie le code à 6 chiffres. 8. Sur la page, saisis le code dans **Code**, puis clique sur **Confirmer ma demande**. La page affiche **Votre demande est envoyée. Vous recevrez un e-mail dès qu’elle sera acceptée.** ✅ C'est tout ! Quand ForgeIT approuve ta demande, tu reçois l'e-mail **Votre accès à la démo Astrolabe est ouvert**. ## 🚪 Entrer dans la démo Depuis l'e-mail d'approbation : 1. Dans l'e-mail **Votre accès à la démo Astrolabe est ouvert**, clique sur **Entrer dans la démo**. Tu arrives sur **Mes tableaux de bord**, connecté en invité avec ton adresse. Le bouton sert une fois, pendant 7 jours. Depuis la page de connexion, quand le bouton a servi ou a expiré : 1. Ouvre l'adresse de la démo, puis clique sur **Démarrer en tant qu'invité**. 2. Dans **E-mail**, saisis ton adresse approuvée, puis clique sur **Accéder à la démo**. 3. Ouvre l'e-mail **Votre code de connexion à la démo Astrolabe**. Clique sur **Entrer dans la démo**, ou copie le code à 6 chiffres. 4. Si tu as copié le code, saisis-le dans **Code**, puis clique sur **Entrer dans la démo**. Le code et le bouton de cet e-mail sont valables 10 minutes. ## ❓ Questions fréquentes ### Qui voit mon adresse ? ForgeIT. Ta visite de la démo est enregistrée et rattachée à ton adresse, pour adapter une démonstration et te recontacter. Elle est conservée 12 mois après ta dernière visite et effacée sur demande : écris à **support@forgeit.fr**. ### Puis-je modifier ce que je vois dans la démo ? Non. La démo est une session d'invité en lecture seule, sur des données d'exemple. ### Comment essayer Astrolabe sur ma machine ? Voir [Essayer en une commande](install-astrolabe.md#-lessayer-en-une-commande). ## 🛠️ Dépannage | Ce que tu vois | Que faire | | --- | --- | | **Cette adresse n'est pas encore autorisée dans la démo. Faites une demande d'accès : nous répondons par e-mail.** | Ton adresse n'est pas approuvée. [Demande l'accès](#-demander-laccès), puis attends l'e-mail d'approbation. | | **Ce code n'est pas le bon. Vérifiez-le et réessayez.** | Saisis le code du dernier e-mail, six chiffres, sans espace. | | **Ce code a expiré. Revenez en arrière et demandez-en un nouveau.** | Clique sur **Revenir à la connexion**, puis recommence depuis **Démarrer en tant qu'invité**. Le code est valable 10 minutes. | | **Un code vient de partir. Attendez une minute avant d'en demander un autre.** | Attends une minute, puis clique de nouveau. Utilise le code du premier e-mail s'il est arrivé. | | **La démo ne peut pas vérifier les accès pour le moment. Réessayez dans quelques minutes.** | Ton adresse n'est pas en cause. Réessaie dans quelques minutes. Si ça dure, écris à **support@forgeit.fr**. | | **Ce lien a déjà servi. Saisissez votre adresse : nous vous envoyons un code.** | Le bouton d'un e-mail sert une seule fois. Saisis ton adresse et utilise le code. | | **Ce lien a expiré. Saisissez votre adresse : nous vous envoyons un nouveau code.** | Saisis ton adresse : un nouveau code arrive. | | **La vérification anti-robot a échoué. Rechargez la page et réessayez.** | Recharge la page, puis recommence. | | **L'e-mail n'a pas pu partir. Réessayez dans quelques minutes.** | Réessaie dans quelques minutes. | | Aucun e-mail n'arrive | Cherche dans tes courriers indésirables un message de **Astrolabe by Forge IT**. Vérifie l'orthographe de l'adresse saisie, puis redemande un code après une minute. | :::tip Toujours bloqué ? Écris à **support@forgeit.fr** avec l'adresse saisie et ce que dit l'écran. ::: ## ➡️ Ensuite Les personnes qui approuvent les demandes suivent [Gérer les accès à la démo](../administration/demo-access/manage-demo-access.md). --- # Bienvenue dans le centre d'aide d'Astrolabe Astrolabe rassemble tes composants, leurs outils et le travail de ton équipe au même endroit. Tu trouveras ici, tâche par tâche, comment l'installer et comment t'en servir. ## Par où commencer ? **Tu installes Astrolabe pour ton entreprise** Connecte-toi en administrateur, choisis comment les gens se connectent, branche tes outils et remplis le catalogue. ➡️ [Installer Astrolabe](getting-started/install-astrolabe.md), puis [Configurer Astrolabe](getting-started/configure-astrolabe.md) **Tu utilises Astrolabe tous les jours** Trouve un composant, suis ton travail sur ton tableau de bord, et choisis ce qu'Astrolabe te signale. - [Parcourir le catalogue](core-features/catalog/browse-the-catalog.md) - [Ajouter une carte à ton tableau de bord](developer-dashboard/my-dashboard/add-a-card.md) - [Choisir tes notifications](developer-dashboard/notifications/choose-your-notifications.md) - [Connecter tes propres comptes](core-features/my-account/connect-my-accounts.md) - [Passer Astrolabe en français](core-features/my-account/choose-language-and-theme.md) **Quelque chose ne marche pas** Chaque sujet a sa page **Problèmes courants** : cherche le message que tu vois à l'écran, et ce qu'il faut faire. En administrateur, commence par [Trouver et corriger un problème](administration/problems/find-and-fix-a-problem.md). **Tu travailles avec un assistant IA** [Utiliser cette documentation avec ton assistant IA](use-with-an-ai-assistant.md). :::tip Depuis Astrolabe Le **?** à côté du nom d'un plugin, d'une intégration ou d'une carte du tableau de bord ouvre sa page ici. ::: :::tip Toujours bloqué ? Écris à **support@forgeit.fr**. ::: --- # Utiliser cette documentation avec ton assistant IA Ton assistant (Claude Code, Cursor, Codex…) peut configurer Astrolabe avec toi, écrire le `catalog-info.yaml` d'un composant et t'expliquer un message de l'écran. Il lit cette documentation, pas ce qu'il croit savoir. ## 🤖 Installer les skills d'Astrolabe 1. Ouvre un terminal dans le dépôt sur lequel tu travailles. 2. Lance la commande de ton assistant. Avec **Claude Code** : Avec **Cursor** : La commande finit par **Done!** et liste les trois skills qu'elle a installés : | Skill | Ce que ton assistant en fait | | --- | --- | | **astrolabe-configure** | Brancher un outil, une source de catalogue ou un fournisseur de connexion, pas à pas | | **astrolabe-annotate** | Écrire les annotations qui font apparaître un onglet sur un composant | | **astrolabe-troubleshoot** | Retrouver la cause d'un message que tu vois à l'écran, et la solution | ✅ C'est tout ! ## 📄 Donner une page à ton assistant Chaque page de cette documentation existe aussi en Markdown brut : ajoute `.md` à la fin de son adresse. Le plan de toutes les pages est , et toutes les pages en un seul fichier sont dans . :::tip Demande d'abord à ton assistant de lire la page : « Lis les pages Argo CD de la documentation d'Astrolabe, puis ajoute l'intégration avec moi. » :::