Accès direct au contenu Accès direct à la navigation

Ce document développe nos méthodes de déploiement de paquets, un nouveau tag de version et, plus généralement, comment gérer un paquet GIT en évitant les erreurs communes.

Toutes les procédures décrites ici sont automatisées dans notre outil Dev Tools.

Nettoyer un dépôt

La première chose à faire avant de commiter ou de créer un nouveau tag de version est de s’assurer que tous les fichiers à commiter ou qui seront ajoutés au tag sont souhaités et présentent des droits UNIX corrects.

Pour nettoyer les fichiers des OS ou IDE qui ne sont pas souhaités dans un paquet de sources, vous pouvez utiliser la commande suivante :

  1. CLEANUP_FILES=( .DS_Store .AppleDouble .LSOverride .Spotlight-V100 .Trashes Icon \
  2.     ._* *~ *~lock* Thumbs.db ehthumbs.db Desktop.ini .project .buildpath );
  3. for F in "${CLEANUP_FILES[@]}"; do find . -type f -name $F -exec rm {} \; done

Pour définir les droits sur tous les répertoires à 0755 et sur tous les fichiers à 0644, utilisez la commande :

  1. find . -type d -exec chmod 0755 {} \;
  2. find . -type f -exec chmod 0644 {} \;

Se faisant, gardez à l’esprit que les scripts shells doivent rester exécutables par le système (+x). Utilisez la commande suivante :

  1. find . -type f -name *.sh -exec chmod a+x {} \;

Création d’un nouveau tag de version

Pour créer un nouveau tag de version, commitez toutes vos modifications et utilisez la commande :

  1. git tag -a TAG_NAME -m "My commit message" && git push origin TAG_NAME

Gardez à l’esprit que le TAG_NAME DOIT être construit selon le modèle vX.Y.Z et présenter des numéros de version plus élevés que tout tag existant.

Déployer un projet sur un serveur distant

Identification

Pour déployer un projet sur un serveur distant, vous devez tout d’abord vous assurer qu’il connaît votre clé SSH publique. Pour vous en assurer, utilisez la commande :

  1. ssh-copy-id -i ~/.ssh/id_rsa.pub user@server.example.org

Si cela ne fonctionne pas, essayez plutôt :

  1. scp ~/.ssh/id_rsa.pub user@server.example.org:.ssh/authorized_keys2

Si vous n’avez pas encore de paire de clés SSH publique/privée, utilisez la commande suivante pour en créer :

  1. ssh-keygen -t rsa

Synchronisation

Une fois le serveur mis au courant de votre clé publiques, vous pouvez utiliser les commandes scp ou rsync pour synchroniser votre projet avec la cible distante :

  1. rsync -avrlzh ~/project/path/... -e ssh user@server.example.org:~/www/...

Vous pouvez, dans un premier temps, utiliser l’option --dry-run pour voir ce qui serait synchronisé dans la réalité (la synchronisation n’est pas réellement effectuée).

Pour exclure des fichiers ou répertoires de la synchronisation, vous pouvez utiliser l’option --exclude (vous pouvez l’utiliser autant de fois que nécessaire) :

  1. rsync -avrlzh ~/project/path/... \
  2.     --exclude dir/one --exclude dir/file.txt \
  3.     -e ssh user@server.example.org:~/www/...

Déploiement

Pour déployer certains fichiers spécifiques à un environnement, vous pouvez utiliser la technique des "fichiers suffixés" :

- créez une version du fichier pour chaque environnement, en nommant chaque copie de la même manière et en ajoutant un suffixe comme __ENV__
- une fois la synchronisation des sources terminées, copiez simplement tout fichier portant le suffixe de votre environnement pour remplacer l’original :

  1. suffix="__PROD__" && find . -name "*${suffix}" -exec sh -c 'cp -v "$1" "${1%%$2}"' _ {} "${suffix}" \;