Développement et bases de données

Cloner et déployer depuis un dépôt distant privé

Vérifié le 7 min de lecture Git GitHub déploiements

Important : vous disposez désormais de l'outil Deploy, un système avancé et simple à utiliser qui s'intègre à votre dépôt GitHub. Pour en savoir plus : Deploy, outil de déploiement automatique depuis GitHub.

Dans d'autres articles, nous avons parlé des stratégies de déploiement, par exemple créer ou cloner un dépôt depuis cPanel, et même appliquer des changements depuis cette interface.

Nous allons voir ici une autre méthode, car l'interface de cPanel n'est généralement pas la meilleure option lorsqu'on travaille avec un dépôt distant privé.

Dans l'exemple suivant, nous allons cloner un dépôt privé hébergé sur GitHub et récupérer ses changements quand c'est nécessaire.

Prérequis

Nous allons travailler dans le terminal : il est donc essentiel que vous ayez des connaissances minimales de son utilisation et que vous activiez l'accès SSH sur votre service d'hébergement.

Une fois connecté, créez une clé Ed25519 dédiée uniquement à ce dépôt. Si le nom du fichier existe déjà, choisissez-en un autre ; n'écrasez pas une identité en cours d'utilisation :

umask 077
mkdir -p ~/.ssh
ssh-keygen -t ed25519 -f ~/.ssh/github_repositorio_deploy -C "déploiement du dépôt cpanel"
chmod 600 ~/.ssh/github_repositorio_deploy
chmod 644 ~/.ssh/github_repositorio_deploy.pub

Utilisez une phrase de passe et un agent SSH lorsque le processus le permet. Si vous devez exécuter un pull sans intervention, la clé peut rester sans phrase de passe, mais elle doit rester en dehors de public_html, avec les permissions 600, sans être réutilisée et avec un accès en lecture seule à un seul dépôt. Affichez la clé publique avec :

cat ~/.ssh/github_repositorio_deploy.pub

Donner les permissions depuis GitHub

Il faut maintenant autoriser l'accès de notre serveur au dépôt privé. Dans le cas de GitHub, ouvrez le dépôt concerné :

  • Cliquez sur Settings dans le dépôt en question.
  • Dans le menu latéral, ouvrez Deploy keys.
  • Cliquez sur Add deploy key, collez la clé publique et donnez-lui un titre reconnaissable.
  • N'activez pas les permissions d'écriture si l'hébergement a seulement besoin de cloner et de mettre à jour le code.

Configurez un alias pour obliger Git à utiliser cette identité :

Host github-repositorio
    HostName github.com
    User git
    IdentityFile ~/.ssh/github_repositorio_deploy
    IdentitiesOnly yes

Enregistrez le bloc dans ~/.ssh/config, appliquez chmod 600 ~/.ssh/config et vérifiez au préalable l'empreinte de GitHub par un canal indépendant.

Pour vérifier que tout est correct, exécutez en SSH dans votre compte :

ssh -T git@github-repositorio

Si vous obtenez une sortie de ce type :

Hi usuario/repositorio! You've successfully authenticated, but GitHub does not provide shell access.

cela signifie que l'authentification est correcte et que vous pouvez poursuivre.

Si au contraire vous obtenez Permission denied (publickey)., vous n'avez pas les permissions : reprenez le processus, car une étape n'a pas été réalisée correctement.

Ces étapes concernent GitHub, mais d'autres plateformes comme Bitbucket suivent un processus similaire d'authentification par clés SSH.

Cloner le dépôt privé

Copiez l'URL du dépôt depuis le bouton Code, onglet SSH, et remplacez github.com par l'alias github-repositorio configuré plus haut.

Clonez le dépôt en dehors du répertoire public :

mkdir -p ~/repositories
git clone git@github-repositorio:usuario/repositorio.git ~/repositories/repositorio

Ne clonez pas directement dans public_html : vous exposeriez le répertoire .git si le serveur web ne le bloque pas. Publiez uniquement les fichiers nécessaires avec l'outil Deploy, .cpanel.yml ou une stratégie de releases et de liens symboliques.

Récupérer les changements

Cloner ou mettre à jour Git n'installe pas les dépendances et ne publie pas automatiquement un site. Pour mettre à jour le clone, vérifiez d'abord son état :

cd "$HOME/repositories/repositorio" || exit 1
git status --short
git branch --show-current

S'il y a des modifications locales ou si la branche n'est pas celle attendue, arrêtez-vous et vérifiez leur origine. Pour la branche main, une mise à jour qui ne crée pas automatiquement de fusion serait :

git pull --ff-only origin main

Adaptez la branche puis exécutez la procédure de déploiement du projet. N'utilisez pas git reset --hard pour masquer une divergence sans vérifier ce que vous perdriez.

La clé en lecture seule de cet exemple ne permet pas de git push. Si vous devez récupérer une modification faite sur l'hébergement, examinez-la et reportez-la dans votre flux de développement, sans élargir par commodité la permission de la clé de déploiement.

Remarques

Git fonctionne sur notre système comme sur votre ordinateur. Si vous voulez vous passer de GitHub, vous pouvez créer un dépôt privé en dehors de public_html et connecter votre ordinateur à ce dépôt distant. Gardez aussi tout clone de travail en dehors du répertoire public et ne publiez dans public_html que les fichiers nécessaires avec Deploy, .cpanel.yml ou une stratégie de releases. L'interface Git de cPanel permet de gérer ce flux.

Le test ssh -T de GitHub peut se terminer avec le code 1 même s'il confirme l'authentification, car il n'offre pas de shell interactif. Vérifiez le message et le dépôt autorisé, pas seulement le code de sortie.

Cela peut aussi vous aider

Quelque chose cloche ou a changé ? Racontez-nous et nous le vérifions.