Introduction
Les equipes de developpement logiciel utilisent quotidiennement divers outils dans leur travail. Le code se trouve dans des repositories Git, les specifications dans Confluence, les taches dans Jira, et les echanges quotidiens dans Slack. Chaque outil dispose de sa propre fonction de recherche, mais pour repondre a la question « Ou avait-on discute de cela ? », effectuer des recherches separees dans chaque outil est inefficace.
Dans cet article, nous construisons un hub de connaissances qui centralise dans Fess les informations des outils utilises quotidiennement par l’equipe de developpement et permet une recherche unifiee.
Public cible
Responsables d’equipes de developpement logiciel et administrateurs d’infrastructure
Personnes souhaitant effectuer des recherches transversales sur les outils de developpement
Personnes souhaitant apprendre les bases de l’utilisation des plugins de datastore
Scenario
Nous allons rendre les informations d’une equipe de developpement (20 personnes) accessibles via une recherche unifiee.
Qu’est-ce que le crawl de datastore ?
Le crawl Web et le crawl de fichiers collectent les documents en parcourant les URL ou les chemins de fichiers. En revanche, pour collecter les informations des outils SaaS, on utilise le « crawl de datastore ».
Le crawl de datastore recupere les donnees via l’API de chaque outil et les enregistre dans l’index de Fess. Dans Fess, un plugin de datastore est disponible pour chaque outil.
Installation des plugins
Les plugins de datastore peuvent etre installes depuis l’interface d’administration de Fess.
Selectionnez [Systeme] > [Plugins] dans l’interface d’administration
Consultez la liste des plugins installes
Accedez a l’ecran d’installation via le bouton [Installer], puis installez les plugins necessaires depuis l’onglet [Distant]
Pour le scenario de cet article, nous utilisons les plugins suivants.
fess-ds-git: Crawl de repositories Gitfess-ds-atlassian: Crawl de Confluence / Jirafess-ds-slack: Crawl des messages Slack
Configuration des sources de donnees
Configuration du repository Git
Crawlez le repository Git pour rendre le code et les documents disponibles a la recherche.
[Crawler] > [Datastore] > [Nouveau]
Nom du handler : selectionnez GitDataStore
Configuration des parametres
Exemple de configuration des parametres
uri=https://github.com/example/my-repo.git
username=git-user
password=ghp_xxxxxxxxxxxxxxxxxxxx
include_pattern=.*\.(java|py|js|ts|md|rst|txt)$
max_size=10000000
Exemple de configuration des scripts
url=url
title=name
content=content
mimetype=mimetype
content_length=contentLength
last_modified=timestamp
Specifiez l’URL du repository dans uri, et les informations d’authentification dans username / password. Pour les repositories prives, definissez le jeton d’acces dans password. include_pattern permet de filtrer les extensions de fichiers a crawler a l’aide d’une expression reguliere.
Configuration de Confluence
Rendez les pages et articles de blog Confluence disponibles a la recherche.
[Crawler] > [Datastore] > [Nouveau]
Nom du handler : selectionnez ConfluenceDataStore
Configuration des parametres
Exemple de configuration des parametres
home=https://your-domain.atlassian.net/wiki
auth_type=basic
basic.username=user@example.com
basic.password=your-api-token
Exemple de configuration des scripts
url=content.view_url
title=content.title
content=content.body
last_modified=content.last_modified
Specifiez l’URL de Confluence dans home et choisissez la methode d’authentification avec auth_type. Pour Confluence Cloud, utilisez l’authentification basic et definissez le jeton API dans basic.password.
Configuration de Jira
Rendez les tickets (Issues) Jira disponibles a la recherche.
Le handler JiraDataStore est inclus dans le meme plugin fess-ds-atlassian. Vous pouvez utiliser JQL (Jira Query Language) pour filtrer les tickets a crawler. Par exemple, vous pouvez cibler uniquement les tickets d’un projet specifique ou uniquement les tickets ayant un statut particulier (autre que Closed).
[Crawler] > [Datastore] > [Nouveau]
Nom du handler : selectionnez JiraDataStore
Configuration des parametres
Exemple de configuration des parametres
home=https://your-domain.atlassian.net
auth_type=basic
basic.username=user@example.com
basic.password=your-api-token
issue.jql=project = MYPROJ AND status != Closed
Exemple de configuration des scripts
url=issue.view_url
title=issue.summary
content=issue.description
last_modified=issue.last_modified
Specifiez la requete JQL dans issue.jql pour filtrer les tickets a crawler.
Configuration de Slack
Rendez les messages Slack disponibles a la recherche.
[Crawler] > [Datastore] > [Nouveau]
Nom du handler : selectionnez SlackDataStore
Configuration des parametres
Exemple de configuration des parametres
token=xoxb-xxxxxxxxxxxx-xxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxx
channels=general,engineering,design
include_private=false
Exemple de configuration des scripts
url=message.permalink
title=message.title
content=message.text
last_modified=message.timestamp
Specifiez le jeton OAuth du Bot Slack dans token. Vous pouvez specifier les canaux a crawler avec channels ; pour cibler tous les canaux, definissez *all. Pour inclure les canaux prives, definissez include_private=true et assurez-vous que le Bot a ete invite dans ces canaux.
Utilisation des labels
Differencier les sources d’information avec des labels
En definissant des labels pour chaque source de donnees, vous permettez aux utilisateurs de filtrer par source lors de la recherche.
code: Code provenant des repositories Gitdocs: Documents de Confluencetickets: Tickets de Jiradiscussions: Messages de Slack
Les utilisateurs peuvent effectuer une recherche transversale avec « Tout », puis affiner les resultats par label si necessaire.
Amelioration de la qualite de recherche
Utilisation du boost de documents
Dans un hub de connaissances pour equipe de developpement, tous les documents n’ont pas la meme importance. Par exemple, on peut envisager les priorites suivantes.
Documents Confluence (specifications officielles, procedures)
Tickets Jira (problemes actuels, taches en cours)
Repositories Git (code, README)
Messages Slack (historique des discussions)
Le boost de documents permet d’augmenter le score de recherche des documents correspondant a certains criteres. Depuis l’interface d’administration, sous [Crawler] > [Boost de documents], vous pouvez definir des valeurs de boost basees sur les patterns d’URL ou les labels.
Utilisation du contenu associe
En affichant du « contenu associe » dans les resultats de recherche, vous aidez les utilisateurs a trouver les informations qu’ils recherchent. Par exemple, lors de la recherche d’un document de conception dans Confluence, il est pratique de voir les tickets Jira associes affiches comme « contenu associe ».
Considerations operationnelles
Planification du crawl
Definissez une frequence de crawl appropriee pour chaque source de donnees.
Gestion des limites de debit API
Les API des outils SaaS sont soumises a des limites de debit. Configurez un intervalle de crawl adequat pour ne pas depasser les limites de debit de l’API. L’API Slack en particulier a des limites de debit strictes, il est donc important de prevoir une marge suffisante dans l’intervalle de crawl.
Gestion des jetons d’acces
La configuration des plugins de datastore necessite les jetons d’acces API de chaque outil. Du point de vue de la securite, veuillez tenir compte des points suivants.
Principe du moindre privilege : utilisez des jetons d’acces en lecture seule
Rotation reguliere : renouvelez periodiquement les jetons
Utilisation de comptes dedies : utilisez des comptes de service plutot que des comptes personnels
Conclusion
Dans cet article, nous avons construit un hub de connaissances qui centralise dans Fess les informations des outils utilises quotidiennement par l’equipe de developpement et permet une recherche unifiee.
Collecte des donnees de Git, Confluence, Jira et Slack avec les plugins de datastore
Labels offrant une experience de recherche conviviale pour les developpeurs
Boost de documents pour controler la priorite des informations
Considerations operationnelles telles que les limites de debit API et la gestion des jetons
Avec un hub de connaissances pour l’equipe de developpement, vous pouvez repondre rapidement aux questions telles que « Ou a eu lieu cette discussion ? » ou « Ou est cette specification ? ».
Le prochain article traitera de la recherche transversale dans les services de stockage cloud.