Développement et bases de données
Cloner et déployer depuis un dépôt distant privé
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
- Déploiement automatique depuis GitHub vers cPanel avec Git et .cpanel.yml (exemple avec Laravel) Pas à pas pour cloner un dépôt GitHub privé dans cPanel, définir les tâches de déploiement dans .cpa...
- Déployer WordPress et Laravel sur cPanel avec Deployer Configurez Deployer 8 pour publier WordPress ou Laravel sur votre hébergement cPanel en SSH, avec de...
- Git Version Control de cPanel : cloner des dépôts, voir l'historique et déployer Utilisez Git Version Control de cPanel pour cloner un dépôt GitHub ou GitLab ou en créer un vide, ch...
- Héberger React, Vue et des sites statiques connectés à des API externes Vérifiez si votre frontend JavaScript convient à un hébergement mutualisé, connectez-le à Supabase,...
Quelque chose cloche ou a changé ? Racontez-nous et nous le vérifions.