Aide / Gitsi / Assistant de code

Votre forge Gitsi avec un assistant de code

Pour ceux qui écrivent leur application avec Claude Code ou Codex et ne tapent pas eux-mêmes de commandes Git. Dans les exemples, remplacez societe.gitsi.dev/organisation/mon-appli par l'adresse de votre dépôt.

1

Ce qu'il vous faut

Un assistant qui travaille sur votre poste, dans le dossier de votre projet : Claude Code ou Codex d'OpenAI. Il lance Git à votre place. Git doit donc être installé sur le poste. Vous n'avez pas à connaître ses commandes.

Sur la forge, il vous faut un compte et un dépôt vide pour le projet. Créez-le avec le menu +, Nouveau dépôt, sans cocher Initialiser le dépôt. Notez son adresse, elle finit par .git.

La forge parle Git en HTTPS seulement, sans SSH. Si l'assistant vous propose de créer une clé SSH ou une adresse en git@, répondez-lui d'utiliser l'adresse HTTPS.
2

Confiez le jeton à Git, pas à l'assistant

Créez un jeton comme indiqué à l'étape 3 des premiers pas, avec repository en Lecture et écriture.

L'assistant n'a pas besoin de voir ce jeton. Git le garde dans le gestionnaire d'identifiants du poste et le donne lui-même à la forge. Sur Mac, c'est le trousseau, avec le réglage credential.helper osxkeychain. Sous Windows, c'est Git Credential Manager, proposé à l'installation de Git : gardez ce choix. Vous pouvez demander à l'assistant de vérifier ce réglage, sans lui donner le jeton.

Ne collez jamais le jeton dans la conversation avec l'assistant. Elle part chez l'éditeur de l'outil, et une conversation partagée le montre à tous ceux qui l'ouvrent. Ne le laissez pas non plus écrire dans un fichier du projet ni dans l'adresse du dépôt : il finirait dans l'historique, que Git garde pour toujours.

Si l'assistant veut ranger le jeton dans une variable d'environnement ou un fichier .env pour un script, c'est acceptable sur votre poste, à condition que ce fichier soit exclu du dépôt par .gitignore. Dans un pipeline, le jeton va dans les secrets du dépôt, jamais dans le fichier du pipeline.

Une seule fois, dans un terminal, tapez la commande ci-dessous avec l'adresse de votre dépôt. Git demande un nom d'utilisateur : donnez votre identifiant. Il demande ensuite un mot de passe : collez le jeton. Git s'en souvient ensuite, et l'assistant pousse sans rien vous redemander.

git ls-remote https://societe.gitsi.dev/organisation/mon-appli.git
3

Demandez à l'assistant de pousser le projet

Ouvrez l'assistant dans le dossier du projet et donnez-lui une consigne de ce genre, avec l'adresse de votre dépôt. Elle lui fait vérifier ce qui part avant d'envoyer quoi que ce soit.

Si le projet est déjà sur GitHub, ajoutez : « Le remote origin actuel pointe sur GitHub. Renomme-le en github et ajoute la forge comme origin. »

Je veux mettre ce projet sur ma forge Gitsi. Le dépôt vide existe :
https://societe.gitsi.dev/organisation/mon-appli.git
Ajoute-le comme remote origin, en HTTPS. La forge n'accepte pas SSH.
Avant le premier push, vérifie que .gitignore exclut .env, les fichiers
de secrets et les données locales, puis montre-moi la liste des fichiers
qui vont partir. N'écris aucun jeton ni mot de passe dans le projet.
Quand j'ai validé la liste, pousse la branche main.
4

Faites écrire le pipeline

Le pipeline relance les tests à chaque envoi. Vous voyez ainsi dans la forge, sans rien lancer vous-même, si un changement casse l'application. Il tourne sur le runner fourni avec votre forge.

Dites à l'assistant ce que le runner sait faire. Il a accès à internet mais pas à vos réseaux privés, et il n'a pas Docker. Sans cette précision, l'assistant peut écrire un pipeline qui construit une image, et celui-ci échoue.

Le résultat se lit dans l'onglet Actions du dépôt, comme expliqué à l'étape 6 des premiers pas.

Écris un pipeline Gitea Actions dans .gitea/workflows/tests.yaml qui
lance les tests du projet à chaque push et sur chaque demande d'ajout.
Il tourne avec runs-on: ubuntu-latest, sans Docker et sans accès à un
réseau privé. Aucun secret en clair dans le fichier.
5

Publiez l'image Docker dans le registre

La forge a un registre d'images (étapes 7 et 8 des premiers pas). Le runner fourni n'ayant pas Docker, l'image se construit sur votre poste, où Docker doit être installé.

Créez pour cela un jeton avec package en Lecture et écriture. Connectez Docker à la forge vous-même, une fois, dans un terminal : docker login societe.gitsi.dev, votre identifiant, puis ce jeton comme mot de passe. Docker le garde, comme Git à l'étape 2. Demandez ensuite :

Construis l'image Docker de l'application sur ce poste. Nomme-la
societe.gitsi.dev/organisation/mon-appli avec le numéro de version
comme tag, puis pousse-la dans le registre de la forge.
Je suis déjà connecté avec docker login.
6

Protégez la branche main

La branche main est la version de référence, celle que vous déployez. Une fois le projet poussé, fermez-la aux envois directs : plus personne ne peut y écrire sans passer par une demande que vous relisez. L'assistant non plus.

Dans le dépôt, ouvrez Paramètres, puis Branches et Ajouter une nouvelle règle. Dans Motif de nom de branche protégé, tapez main. Choisissez Désactiver la soumission, puis Enregistrer la règle.

Nous l'avons essayé : un envoi direct sur main est alors refusé, même depuis un compte administrateur. Si vous travaillez seul, n'exigez pas d'approbation : la forge ne vous laisse pas approuver votre propre demande, et vous ne pourriez plus rien fusionner.

Prévenez ensuite l'assistant :

À partir de maintenant, ne pousse jamais sur main. Pour chaque
changement, crée une branche au nom explicite, pousse-la et donne-moi
le lien que la forge affiche pour ouvrir la demande d'ajout.
7

Relisez, puis fusionnez

C'est le moment où vous gardez la main. L'assistant propose, vous validez.

Dans Gitsi, une demande de fusion s'appelle une demande d'ajout. Ouvrez le lien donné par l'assistant. Décrivez en une phrase ce que le changement doit faire, puis cliquez sur Créer une demande d'ajout. Vous la retrouvez ensuite dans l'onglet Demandes d'ajout du dépôt.

L'onglet Fichiers Modifiés montre chaque ligne ajoutée ou retirée. Vous n'avez pas à tout comprendre. Regardez si les fichiers touchés correspondent à ce que vous aviez demandé, et si le pipeline est passé. Pour demander une correction, laissez un commentaire et recopiez-le à l'assistant.

Quand tout vous va, cliquez sur Fusionner. Si votre pipeline déploie l'application, faites-le partir seulement de main : la fusion devient alors le feu vert du déploiement. Le runner ne joint pas vos réseaux privés : un serveur interne doit aller chercher la nouvelle version lui-même.

Claude Code, Codex et ChatGPT

Pour pousser sur votre forge, l'assistant doit travailler sur votre poste, là où sont le projet et Git. Les versions qui tournent dans le navigateur ne le font pas avec Gitsi.

Avec Gitsi
Claude Code dans un terminal, dans l'onglet Code de l'appli Claude, ou dans VS CodeOui
Claude Code sur le web (claude.ai/code)Non, il clone et pousse sur GitHub seulement
Codex en ligne de commande, dans son appli ou dans VS CodeOui
Codex dans ChatGPT, sur le webNon, il travaille sur des dépôts GitHub
Une conversation ChatGPTNon, elle n'a pas accès à la forge

Une conversation ChatGPT peut vous expliquer une erreur ou écrire un bout de code. Mais c'est vous qui le recopiez dans le projet, puis qui l'envoyez.

Les deux assistants demandent votre accord avant certaines commandes, de façon différente. Codex travaille par défaut sans accès au réseau : au moment d'un git push, il vous demande l'autorisation. Lisez la commande avant d'accepter. Claude Code a plusieurs modes. En mode Manual, il demande avant chaque commande. Vous changez de mode avec Maj+Tab dans le terminal, ou avec le sélecteur sous la zone de saisie dans l'appli.

Quel que soit l'outil, la protection de main à l'étape 6 tient même si vous acceptez une commande trop vite.

Si le jeton a fuité

Collé dans une conversation, envoyé dans un fichier du dépôt ou montré à l'écran : considérez-le comme perdu. Dans vos Paramètres, Applications, supprimez-le, puis créez-en un autre et refaites l'étape 2. Retirer le fichier du projet ne suffit pas, l'historique garde l'ancienne version.

Besoin d'aide ?

Notre équipe support peut vous accompagner pour ce réglage. Écrivez-nous à support@aleop.eu.