Utiliser git sur Simple Hosting

Vous pouvez utiliser le service git de Simple Hosting pour télécharger votre code source et déployer votre application, y compris l’installation des dépendances, sur votre instance Simple Hosting.

Le Panneau de contrôle de votre instance dispose également d’une interface graphique basée sur le Web pour parcourir votre dépôt git.

Apprenez tout sur l’utilisation du service git sur Simple Hosting dans cet article.

Conditions préalables

  • Vous aurez besoin de git et d’un client SSH installé sur votre ordinateur pour utiliser le service git.

Aperçu

Le service git de Simple Hosting héberge des dépôts git distants pour vous. De plus, il vous permet de construire et de déployer votre application sur votre instance, en installant toutes les dépendances que vous avez déclarées.

Sur les instances PHP, chaque Site possède son propre dépôt git indépendant, nommé d’après le domaine qui correspond au site (ex : example.com.git). Sur les instances Node.js, Python et Ruby, il n’y a qu’un seul dépôt git nommé default.git.

Après avoir ajouté le dépôt en tant que git remote à votre répertoire de projet, vous pourrez pousser votre code vers le service git. Par défaut, le service s’attendra à ce que vous utilisiez la branche « master », mais vous pouvez pousser la branche ou le tag que vous souhaitez.

Vous pouvez aussi git clone un dépôt de notre service git et utiliser toutes les autres fonctionnalités que vous attendez d’un serveur git distant. Vous pouvez vraiment l’utiliser comme système de contrôle de version.

Une fois que les fichiers ont été poussés vers le service, ils deviennent disponibles pour le déploiement avec la commande deploy {repository}.git, qui est exécutable via SSH à la même adresse que le service git.

La commande deploy construira votre application et copiera les fichiers d’application dans votre instance. Les dépendances applicatives peuvent être déclarées à l’aide des gestionnaires de paquets pris en charge pour chaque type d’instance et seront installées dans le cadre du processus de déploiement : Composer pour PHP, NPM pour Node.js, pip pour Python and Bundler pour Ruby.

Toutes ces étapes sont détaillées dans les sections ci-dessous.

Adresse service git

Dans les exemples qui suivent, l’URL du service git est représentée par une variable de base $GIT_URL. Vous trouverez votre url dans votre page de gestion d’instance.

Sur les instances PHP, vous le trouverez dans la section Sites de la page de chaque Site.

Sur les autre types d’instances, vous le trouverez dans la section Deploy de la page de gestion de votre instance.

Le format de l’URL du service git est toujours le suivant :

GIT_URL="ssh+git://{instance_id}@git.{datacenter_id}.gpaas.net"

Authentification

Vous pouvez vous authentifier sur le service git en utilisant le mot de passe de votre instance (comportement par défaut) ou bien avec des clés publiques SSH.

Si vous choisissez d’utiliser le mot de passe de votre instance, vous devrez fournir votre mot de passe chaque fois que vous interagissez avec le service git distant, par exemple pour exécuter les commandes git clone, git push ou deploy.

Lorsque vous utilisez l’authentification par clé SSH, votre système devrait être capable de fournir la bonne clé publique au service git chaque fois que cela est nécessaire. C’est le moyen recommandé pour s’authentifier, car il est pratique, sécurisé et vous permet d’écrire des scripts automatisés.

Créer un dépôt

Voici quelques exemples pour créer votre dépôt pour tous les types d’instance : Les instances PHP, où chaque site a son propre dépôt, et les autres instances, où il n’existe qu’un dépôt par défaut.

Une fois le dépôt créé, vous pourrez le voir dans le Panneau de contrôle de votre instance en utilisant gitweb, une interface utilisateur graphique web open source (vous devrez redémarrer votre instance après avoir créé un référentiel pour la première fois sur votre instance).

Exemple pour une instance PHP

Cet exemple vous montre comment créer un dépôt localement pour télécharger du code vers une instance PHP. Il utilise un Site appelé example.com. Vous pouvez simplement remplacer le domaine du Site par un de vos domaines, y compris le domaine de test qui a été automatiquement créé pour vous.

$ mkdir example.com
$ cd example.com
$ git init
$ git remote add gandi $GIT_URL/example.com.git
$ mkdir htdocs
$ echo "Hello world" > htdocs/index.html
$ git add htdocs
$ git commit -m "Première version de index.html"
$ git push gandi master

Sur les instances PHP, la racine de votre dépôt n’est pas le répertoire utilisé par le serveur web Apache pour servir les fichiers aux visiteurs web. Par conséquent, pour que vos fichiers soient accessibles via le web, vous devez les placer dans le répertoire htdocs/, à créer à la racine de votre dépôt.

Exemple pour d’autres type d’instances

Cet exemple vous montre comment créer un référentiel sur une instance Node.js, Python ou Ruby en utilisant un fichier texte fictif. Veuillez vous référer à leurs pages de documentation respectives pour apprendre à structurer vos fichiers de projet.

$ mkdir monapp
$ cd monapp
$ git init
$ git remote add gandi $GIT_URL/default.git
$ echo "Creating my repository" > test.txt
$ git add test.txt
$ git commit -m "Ajout d'un fichier texte"
$ git push gandi master

Cloner un dépôt

Copiez un dépôt distant sur votre ordinateur à l’aide de la commande git clone :

$ git clone $GIT_URL/{repository}.git

Par défaut, la commande git clone créera un répertoire portant le même nom (ex : example.com ou default) et y copiera les fichiers. Si vous voulez spécifier un autre nom pour le répertoire local, sans interférer avec les paramètres de git, ajoutez-le simplement à la commande :

$ git clone $GIT_URL/{repository}.git mon_app

Déployer votre code

Cette commande effectuera un git checkout dans le répertoire cible de votre instance. Il installera également toutes les dépendances en utilisant le gestionnaire de paquetages : Composer pour PHP, NPM pour Node.js, pip pour Python et Bundler pour Ruby.

$ ssh {instance_id}@git.{datacenter_id}.gpaas.net 'deploy {repository}.git'

Rappelez-vous que le conteneur {repository} correspond à l’adresse d’un Site sur les instances PHP (ex : example.com), mais est toujours par défaut sur les autres types d’instances.

La commande deploy suppose que vous voulez déployer le code vérifié dans la branche master de votre dépôt. Si vous souhaitez déployer une autre branche ou balise, par exemple une branche production, vous pouvez l’ajouter à la fin de la commande :

$ ssh {instance_id}@git.{datacenter_id}.gpaas.net 'deploy {repository}.git production'

Note

L’utilisation des sous-modules Git n’est pas prise en charge pour le moment.

Traitement des dossiers existants

Tous les répertoires déjà présents dans le répertoire de déploiement cible doivent avoir au moins le même accès en écriture de l’utilisateur, afin que les fichiers puissent être remplacés pendant le déploiement (c’est-à-dire chmod 644). Cette action doit être exécutée si vous rencontrez une erreur comme :

error: unable to unlink old 'htdocs/sites/default/settings.php' (Permission denied)

De plus, vous pouvez vouloir nettoyer votre répertoire cible. La commande suivante exécutera une opération git clean sur votre répertoire et supprimera tous les fichiers qui ne sont pas suivis par git ou qui ne sont pas répertoriés dans le fichier .gitignore de votre dépot :

$ ssh {instance_id}@git.{datacenter_id}.gpaas.net 'clean {repository}.git'

Avertissement

Gardez à l’esprit que si votre application web a des répertoires de téléchargement d’utilisateurs, des fichiers cachés ou des fichiers de configuration non tracés que vous voulez garder sur le serveur (ex. configurations spécifiques à l’environnement / clés secrètes), ceux-ci doivent être ajoutés au fichier .gitignore de votre dépôt avant d’exécuter la commande clean.

Supprimer un dépôt

Pour supprimer complètement un référentiel de votre instance, supprimez son répertoire via sFTP ou la console d’urgence.

Le chemin du répertoire via sFTP ressemble à ceci :

/lamp0/vcs/git/{repository}.git

Via la console :

/srv/data/vcs/git/{repository}.git

Utilisateurs Windows

Les utilisateurs de Windows peuvent utiliser le client git msysgit, pour lequel un tutoriel tiers est disponible sur http://guides.beanstalkapp.com/version-control/git-on-windows.html

===== SSH Key Fingerprint =====

L’empreinte de la clé SSH pour le git endpoint est :

35:e0:5a:a9:54:12:55:6b:ce:41:8c:c1:9e:35:1d:f6

===== Ressources =====