Dev zone/Create devserver access/fr: Difference between revisions

From Nasqueron Agora
Ptdradmin (talk | contribs)
No edit summary
Ptdradmin (talk | contribs)
Correction : clé de groupe manquante (nasqueron), clarification indentation YAML, remplacement de l'identité personnelle par un exemple générique, avertissement .arclint renforcé
 
Line 62: Line 62:
git switch feature/add-gui-user
git switch feature/add-gui-user
</syntaxhighlight>
</syntaxhighlight>


----
----
Line 85: Line 84:
</syntaxhighlight>
</syntaxhighlight>


Ajoutez votre utilisateur dans la section <code>shellusers:</code> par ordre alphabétique :
Ajoutez votre utilisateur dans la section <code>shellusers:</code> par ordre alphabétique.
 
Important|'''L'indentation est significative en YAML.''' <code>fullname</code>, <code>ssh_keys</code> et <code>uid</code> doivent être indentés (2 espaces) sous votre nom d'utilisateur, lui-même indenté (2 espaces) sous <code>shellusers:</code>. Une indentation incorrecte produit un fichier invalide qui sera rejeté en revue.


<syntaxhighlight lang="yaml">
<syntaxhighlight lang="yaml">
ptdradmin:
shellusers:
   fullname: Doba Gui
   ...
  ssh_keys:
  votrelogin:
    - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAFtlR4OeXNHfJXNrvrLeU9nGu7ufcxc38xUGqlwiY5L doba.guimartinien@gmail.com
    fullname: Prénom Nom
  uid: 1001
    ssh_keys:
      - ssh-ed25519 AAAA... votre.email@example.com
    uid: 1002
  ...
</syntaxhighlight>
</syntaxhighlight>
Important|Remplacez <code>votrelogin</code>, <code>Prénom Nom</code>, l'adresse e-mail et la clé SSH par '''vos propres informations''' (n'utilisez jamais l'identité d'un autre contributeur comme copié-collé). Pour <code>uid</code>, repérez le plus grand uid déjà présent dans le fichier et choisissez le nombre suivant : ne réutilisez jamais un uid déjà attribué à quelqu'un d'autre.


=== 4.3 Ajout de votre compte dans groups.sls ===
=== 4.3 Ajout de votre compte dans groups.sls ===
Line 102: Line 108:
</syntaxhighlight>
</syntaxhighlight>


Ajoutez-vous dans le groupe <code>nasqueron</code> :
Le fichier contient déjà plusieurs groupes existants sous forme de clés de premier niveau. Ajoutez votre nom d'utilisateur dans la liste <code>Members:</code> de chacun des groupes suivants : <code>nasqueron</code>, <code>nasqueron-dev-docker</code> et <code>nasquenautes</code>. Ne créez pas de nouvelles clés : insérez simplement une ligne dans la liste <code>Members:</code> existante de chaque groupe, en respectant l'indentation déjà présente dans le fichier.


<syntaxhighlight lang="yaml">
<syntaxhighlight lang="yaml">
shellgroups:
nasqueron:
   Members:
   Members:
     - ptdradmin
     - ...
    - votrelogin
</syntaxhighlight>
</syntaxhighlight>
<syntaxhighlight lang="yaml">
<syntaxhighlight lang="yaml">
nasqueron-dev-docker:
nasqueron-dev-docker:
   Members:
   Members:
     - ptdradmin
     - ...
    - votrelogin
</syntaxhighlight>
</syntaxhighlight>
<syntaxhighlight lang="yaml">
<syntaxhighlight lang="yaml">
nasquenautes:
nasquenautes:
   Members:
   Members:
     - ptdradmin
     - ...
    - votrelogin
</syntaxhighlight>
</syntaxhighlight>
Important|Remplacez <code>votrelogin</code> par votre propre nom d'utilisateur dans les trois blocs. Vérifiez bien que <code>Members:</code> est indenté sous le nom du groupe, et que chaque membre est indenté sous <code>Members:</code>.
----
----


Line 140: Line 154:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git commit -m "Create new account for Doba Gui"
git commit -m "Create new account for Prénom Nom"
</syntaxhighlight>
</syntaxhighlight>


Line 334: Line 348:
<syntaxhighlight lang="json">
<syntaxhighlight lang="json">
"shell": {
"shell": {
  "type": "shellcheck",
"type": "shellcheck",
  "include": ["(\\.sh$)"]
"include": ["(\\.sh$)"]
}
}
</syntaxhighlight>
</syntaxhighlight>
Line 342: Line 356:
<syntaxhighlight lang="json">
<syntaxhighlight lang="json">
"shell": {
"shell": {
  "type": "text",
"type": "text",
  "include": ["(\\.sh$)"]
"include": ["(\\.sh$)"]
}
}
</syntaxhighlight>
</syntaxhighlight>


Avertissement|Ne pas commiter ce changement, c'est juste pour que ça fonctionne localement.
Avertissement|Ce changement est '''temporaire et local''' : il ne doit '''jamais''' être commité. Avant votre commit final, vérifiez avec <code>git status</code> ou <code>git diff --stat</code> que <code>.arclint</code> n'apparaît pas parmi les fichiers modifiés. S'il y apparaît, annulez la modification avec <code>git checkout -- .arclint</code> avant de continuer.


'''Alternative :''' Bypass des tests si nécessaire :
'''Alternative :''' Bypass des tests si nécessaire :
Line 409: Line 423:


<syntaxhighlight>
<syntaxhighlight>
Summary: Ajout de Doba Gui comme user et dans le groupe core
Summary: Ajout de Prénom Nom comme user et dans le groupe core
Test Plan: Vérification de la syntaxe YAML et des informations utilisateur
Test Plan: Vérification de la syntaxe YAML et des informations utilisateur
Reviewers: dereckson
Reviewers: dereckson
Line 459: Line 473:
{| class="wikitable"
{| class="wikitable"
! Problème !! Solution
! Problème !! Solution
|-
| Indentation YAML incorrecte dans users.sls/groups.sls || Respecter l'indentation existante du fichier (2 espaces par niveau)
|-
|-
| Fichiers vides dans operations/ || <code>rm -rf operations/</code> puis travailler dans <code>pillar/core/</code>
| Fichiers vides dans operations/ || <code>rm -rf operations/</code> puis travailler dans <code>pillar/core/</code>
Line 468: Line 484:
| Bibliothèque shellcheck-linter manquante || Cloner dans <code>~/phabricator/</code>
| Bibliothèque shellcheck-linter manquante || Cloner dans <code>~/phabricator/</code>
|-
|-
| Erreur linter shellcheck || Changer <code>"type": "shellcheck"</code> en <code>"type": "text"</code> dans <code>.arclint</code>
| Erreur linter shellcheck || Changer <code>"type": "shellcheck"</code> en <code>"type": "text"</code> dans <code>.arclint</code> (localement, sans commit)
|-
|-
| Problème CRLF/LF || <code>git config --global core.autocrlf input</code> puis <code>git restore .</code>
| Problème CRLF/LF || <code>git config --global core.autocrlf input</code> puis <code>git restore .</code>
Line 479: Line 495:
Avertissement|
Avertissement|
* '''Toutes les commandes Git et Arcanist doivent être exécutées dans <code>/mnt/c/STAGE\ 2025/operations</code>, et non dans <code>~/phabricator</code>.'''
* '''Toutes les commandes Git et Arcanist doivent être exécutées dans <code>/mnt/c/STAGE\ 2025/operations</code>, et non dans <code>~/phabricator</code>.'''
* '''L'indentation YAML est significative : respectez celle déjà présente dans <code>users.sls</code> et <code>groups.sls</code>, n'ajoutez jamais de texte non indenté.'''
* '''Remplacez toujours les exemples (nom d'utilisateur, nom complet, e-mail, clé SSH, uid) par vos propres informations : ne recopiez jamais l'identité d'un autre contributeur.'''
* '''Ne pas commiter les modifications du fichier <code>.arclint</code> (changement de shellcheck en text).'''
* '''Ne pas commiter les modifications du fichier <code>.arclint</code> (changement de shellcheck en text).'''
* '''Les vrais fichiers sont dans <code>pillar/core/</code>, pas dans <code>operations/pillar/core/</code>.'''
* '''Les vrais fichiers sont dans <code>pillar/core/</code>, pas dans <code>operations/pillar/core/</code>.'''

Latest revision as of 13:41, 19 July 2026

Guide complet : Configuration de l'accès devserver avec Git et Arcanist

Ce guide explique comment configurer votre environnement de développement pour contribuer au projet Operations.

1. Création du dossier de travail

Créez un dossier sur votre PC Windows pour organiser tous les fichiers du projet :

C:\STAGE 2025

C'est dans ce dossier que vous allez ranger tout ce qui concerne le projet Operations.


2. Récupération et clonage du dépôt Operations

2.1 Récupération de l'URL du dépôt

Rendez-vous sur la page du dépôt :

Copiez l'URL Git pour pouvoir cloner le projet.

2.2 Clonage du dépôt

Ouvrez PowerShell et placez-vous dans votre dossier :

cd "C:\STAGE 2025"
git clone https://devcentral.nasqueron.org/source/operations.git

Git crée un dossier operations avec tous les fichiers du projet.


3. Gestion de Git et création de branche dans WSL

3.1 Se placer dans le dossier du projet

Depuis WSL (Ubuntu), placez-vous dans le dossier du projet :

cd /mnt/c/STAGE\ 2025/operations

3.2 Création d'une nouvelle branche

Créez une nouvelle branche pour vos modifications :

git switch -c feature/add-gui-user

Avertissement|Si la branche existe déjà, Git affichera : fatal: a branch named 'feature/add-gui-user' already exists

Dans ce cas, basculez simplement sur la branche existante :

git switch feature/add-gui-user

4. Modifications dans les fichiers du dépôt

4.1 Vérification de l'emplacement des fichiers

Vérifiez où se trouvent les vrais fichiers users.sls et groups.sls :

ls -la pillar/core/

Important|Les vrais fichiers sont dans pillar/core/, pas dans operations/pillar/core/.

4.2 Ajout de votre utilisateur dans users.sls

Ouvrez le fichier avec VS Code :

pillar/core/users.sls

Ajoutez votre utilisateur dans la section shellusers: par ordre alphabétique.

Important|L'indentation est significative en YAML. fullname, ssh_keys et uid doivent être indentés (2 espaces) sous votre nom d'utilisateur, lui-même indenté (2 espaces) sous shellusers:. Une indentation incorrecte produit un fichier invalide qui sera rejeté en revue.

shellusers:
  ...
  votrelogin:
    fullname: Prénom Nom
    ssh_keys:
      - ssh-ed25519 AAAA... votre.email@example.com
    uid: 1002
  ...

Important|Remplacez votrelogin, Prénom Nom, l'adresse e-mail et la clé SSH par vos propres informations (n'utilisez jamais l'identité d'un autre contributeur comme copié-collé). Pour uid, repérez le plus grand uid déjà présent dans le fichier et choisissez le nombre suivant : ne réutilisez jamais un uid déjà attribué à quelqu'un d'autre.

4.3 Ajout de votre compte dans groups.sls

Ouvrez également le fichier :

pillar/core/groups.sls

Le fichier contient déjà plusieurs groupes existants sous forme de clés de premier niveau. Ajoutez votre nom d'utilisateur dans la liste Members: de chacun des groupes suivants : nasqueron, nasqueron-dev-docker et nasquenautes. Ne créez pas de nouvelles clés : insérez simplement une ligne dans la liste Members: existante de chaque groupe, en respectant l'indentation déjà présente dans le fichier.

nasqueron:
  Members:
    - ...
    - votrelogin
nasqueron-dev-docker:
  Members:
    - ...
    - votrelogin
nasquenautes:
  Members:
    - ...
    - votrelogin

Important|Remplacez votrelogin par votre propre nom d'utilisateur dans les trois blocs. Vérifiez bien que Members: est indenté sous le nom du groupe, et que chaque membre est indenté sous Members:.


5. Commit des modifications

5.1 Suppression des fichiers créés par erreur

Si vous avez créé des fichiers vides dans operations/ :

rm -rf operations/

5.2 Ajout des bons fichiers

git add pillar/core/users.sls pillar/core/groups.sls

5.3 Commit des changements

git commit -m "Create new account for Prénom Nom"

5.4 Vérification du commit

git show HEAD

Vérifiez que vous voyez seulement les lignes que vous avez vraiment modifiées.

5.5 Modification du dernier commit (si nécessaire)

Si vous avez corrigé des fichiers après le commit :

git commit --amend

6. Premier essai de arc diff (échec - arc n'existe pas)

Essayez de lancer :

arc diff

Erreur attendue :

arc: command not found

Il faut installer Arcanist.


7. Installation d'Arcanist avec WSL

Pourquoi installer Arcanist ?

Arcanist (ou arc) est l'outil officiel de ligne de commande pour interagir avec Phabricator, le système de revue de code utilisé par le projet Operations.

  • Il permet de créer, mettre à jour et soumettre des révisions (arc diff) directement depuis votre environnement local
  • Il gère les linters et les tests automatiques configurés par le projet avant l'envoi de modifications
  • Sans Arcanist, vous ne pouvez pas soumettre vos changements pour revue ni intégrer les vérifications automatiques du projet

7.1 Mise à jour d'Ubuntu

Avant d'installer quoi que ce soit :

sudo apt update
sudo apt upgrade -y

7.2 Installation des dépendances

Arcanist a besoin de PHP et Git :

sudo apt install -y php-cli php-curl php-xml php-mbstring git curl unzip

7.3 Téléchargement d'Arcanist

Création d'un dossier pour Arcanist :

mkdir -p ~/phabricator
cd ~/phabricator

Téléchargement des fichiers :

git clone https://github.com/phacility/arcanist.git
git clone https://github.com/phacility/libphutil.git

7.4 Rendre arc accessible partout

Pour ne pas devoir écrire tout le chemin :

sudo ln -s ~/phabricator/arcanist/bin/arc /usr/local/bin/arc

Si le cache Bash ne reconnaît pas la commande :

hash -r

7.5 Vérification de l'installation

Test de la commande :

arc version

Note|Une erreur sur shellcheck-linter peut apparaître, mais la version devrait s'afficher. Répondre "y" pour continuer.


8. Deuxième essai de arc diff (échec - authentification requise)

Retournez dans le projet :

cd /mnt/c/STAGE\ 2025/operations
arc diff

Erreur attendue :

YOU NEED TO AUTHENTICATE TO CONTINUE

Il faut installer le certificat.


9. Authentification Arcanist

Pourquoi exécuter arc install-certificate ?

Cette commande permet d'associer votre environnement local à votre compte Phabricator via un token sécurisé.

  • Elle est nécessaire pour que Arcanist puisse créer, mettre à jour et soumettre vos révisions (arc diff) sur le serveur Phabricator
  • Sans ce certificat, Arcanist ne peut pas authentifier vos commandes et toutes les opérations de soumission de code échoueront
  • Le token est spécifique à votre compte et doit être généré depuis l'interface web de Phabricator

9.1 Installation du certificat

arc install-certificate

Suivez le lien fourni, récupérez le token API et collez-le dans le terminal. Arcanist est maintenant connecté à votre compte.


10. Troisième essai de arc diff (échec - shellcheck-linter manquant)

arc diff

Arc vous demande de choisir la branche de référence, choisissez origin/main.

Nouvelle erreur :

Failed to load library at location "shellcheck-linter"

11. Installation de shellcheck-linter

cd ~/phabricator
git clone https://github.com/pinterest/arcanist-linters.git shellcheck-linter

12. Quatrième essai de arc diff (échec - linter invalide)

Retournez dans le projet :

cd /mnt/c/STAGE\ 2025/operations
arc diff

Nouvelle erreur :

Linter 'shell' specifies invalid type 'shellcheck'

Le type shellcheck n'est pas reconnu.


13. Correction du linter shellcheck

Ouvrez .arclint avec VS Code et modifiez :

Avant :

"shell": {
"type": "shellcheck",
"include": ["(\\.sh$)"]
}

Après :

"shell": {
"type": "text",
"include": ["(\\.sh$)"]
}

Avertissement|Ce changement est temporaire et local : il ne doit jamais être commité. Avant votre commit final, vérifiez avec git status ou git diff --stat que .arclint n'apparaît pas parmi les fichiers modifiés. S'il y apparaît, annulez la modification avec git checkout -- .arclint avant de continuer.

Alternative : Bypass des tests si nécessaire :

arc diff --nolint

14. Cinquième essai de arc diff (échec - problème CRLF)

arc diff

Arc détecte 1,011 fichiers modifiés. C'est un problème de fins de ligne Windows/Linux.

14.1 Correction des problèmes de fins de ligne

git config --global core.autocrlf input
git restore .

Avertissement|Assurez-vous d'être bien dans /mnt/c/STAGE\ 2025/operations avant d'exécuter ces commandes.


15. Sixième essai de arc diff (succès !)

15.1 Vérification de l'état de Git

Pour vous assurer qu'il n'y a pas de fichiers non suivis :

git status

Résultat attendu : Aucun fichier non commité ne doit apparaître.

15.2 Lancement d'Arcanist

arc diff

Arc vous demande si vous voulez amend les changements dans .arclint :

Do you want to amend these 1 change(s) to the current commit? [y/N] y

Puis il vous demande si vous voulez utiliser le message sauvegardé :

Do you want to use this message? [Y/n] Y

15.3 Remplissage des informations de révision

L'éditeur (nano) s'ouvre avec les informations à remplir :

Summary: Ajout de Prénom Nom comme user et dans le groupe core
Test Plan: Vérification de la syntaxe YAML et des informations utilisateur
Reviewers: dereckson
Subscribers:

15.4 Sauvegarde dans nano

  1. Sauvegarder le fichier :
    • Appuyez sur Ctrl + O (la lettre O, pas zéro)
    • Nano vous demandera le nom du fichier → appuyez sur Entrée pour garder le même
  2. Quitter nano :
    • Appuyez sur Ctrl + X

Après ça, vous retournez dans votre terminal et arc diff continuera le processus.

15.5 Pour mettre à jour une révision existante

Si vous voulez mettre à jour une révision existante (ex. : D3888) :

arc diff --update D3888

16. Vérification finale

Vérifiez que tout est propre :

git status

Aucun fichier ne doit rester non commité.

Assurez-vous que votre révision contient bien vos modifications :

arc diff

Succès|À ce stade, votre révision est prête à être relue par votre reviewer.


Résumé des problèmes rencontrés

Problème Solution
Indentation YAML incorrecte dans users.sls/groups.sls Respecter l'indentation existante du fichier (2 espaces par niveau)
Fichiers vides dans operations/ rm -rf operations/ puis travailler dans pillar/core/
Cache Bash pour arc hash -r
Authentification manquante arc install-certificate
Bibliothèque shellcheck-linter manquante Cloner dans ~/phabricator/
Erreur linter shellcheck Changer "type": "shellcheck" en "type": "text" dans .arclint (localement, sans commit)
Problème CRLF/LF git config --global core.autocrlf input puis git restore .

Points importants à retenir

Avertissement|

  • Toutes les commandes Git et Arcanist doivent être exécutées dans /mnt/c/STAGE\ 2025/operations, et non dans ~/phabricator.
  • L'indentation YAML est significative : respectez celle déjà présente dans users.sls et groups.sls, n'ajoutez jamais de texte non indenté.
  • Remplacez toujours les exemples (nom d'utilisateur, nom complet, e-mail, clé SSH, uid) par vos propres informations : ne recopiez jamais l'identité d'un autre contributeur.
  • Ne pas commiter les modifications du fichier .arclint (changement de shellcheck en text).
  • Les vrais fichiers sont dans pillar/core/, pas dans operations/pillar/core/.