Intégration de GitHub
L’intégration GitHub vous permet de gérer votre Adobe Commerce dans les environnements d’infrastructure cloud directement à partir de votre référentiel GitHub. L’intégration gère déjà le contenu dans GitHub et se synchronise avec votre référentiel de code d’infrastructure cloud Adobe Commerce. Par essence, le référentiel de code devient un miroir du référentiel GitHub.
Cette intégration vous permet d’effectuer les opérations suivantes :
- Création d’un environnement lors de la création d’une branche
- Redéployer l’environnement lorsque vous fusionnez une requête de tirage
- Suppression de l’environnement lorsque vous supprimez la branche
Vous devez obtenir un jeton GitHub et un webhook pour continuer le processus.
Conditions préalables
- Accès de l’administrateur au projet d’infrastructure cloud Adobe Commerce
- Référentiel GitHub
- Jeton d’accès personnel GitHub
Génération d’un jeton GitHub
Créez un jeton d’accès personnel classique dans les paramètres du développeur GitHub. Vous devez être membre d’un groupe disposant d’un accès en écriture au référentiel GitHub, de sorte que vous puissiez push vers le référentiel. Incluez les portées suivantes lors de la création de votre jeton :
admin:repo_hook
: créer des hooks webrepo
: intégration à votre référentielread:org
: intégration à votre référentiel d’organisation
Voir GitHub: Create.
Préparation de votre référentiel
Cloner votre projet Adobe Commerce sur un projet d’infrastructure cloud à partir d’un environnement existant et migrer les branches du projet vers un nouveau référentiel GitHub vide, en conservant les mêmes noms de branche. Il est essentiel de conserver un arbre Git identique afin de ne pas perdre d’environnements ou de branches existants dans votre Adobe Commerce sur le projet d’infrastructure cloud.
-
Depuis le terminal, connectez-vous à votre projet d’infrastructure cloud Adobe Commerce.
code language-bash magento-cloud login
-
Répertorier vos projets et copier l’ID de projet.
code language-bash magento-cloud project:list
-
Cloner le projet dans votre environnement local.
code language-bash magento-cloud project:get <project-ID>
-
Ajoutez votre référentiel GitHub en tant que référentiel distant.
code language-bash git remote add origin git@github.com:<user-name>/<repo-name>.git
Le nom par défaut de la connexion distante peut être
origin
oumagento
. Siorigin
existe, vous pouvez choisir un autre nom ou renommer ou supprimer la référence existante. Voir la documentation git-remote. -
Vérifiez que vous avez correctement ajouté la télécommande GitHub.
code language-bash git remote -v
Réponse attendue :
code language-none origin git@github.com:<user-name>/<repo-name>.git (fetch) origin git@github.com:<user-name>/<repo-name>.git (push)
-
Placez les fichiers de projet dans votre nouveau référentiel GitHub. N’oubliez pas de conserver tous les noms de branche identiques.
code language-bash git push -u origin master
Si vous commencez avec un nouveau référentiel GitHub, vous devrez peut-être utiliser l’option
-f
, car le référentiel distant ne correspond pas à votre copie locale. -
Vérifiez que votre référentiel GitHub contient tous vos fichiers de projet.
Activation de l’intégration GitHub
Avant de commencer, le code et les environnements de votre projet doivent se trouver dans le référentiel GitHub. Après avoir activé l’intégration, le référentiel GitHub devient la source de code. Si vous poussez les modifications de code vers le référentiel magento
d’origine, elles sont écrasées par l’intégration lorsque vous poussez les modifications de code vers votre référentiel GitHub.
L’exemple suivant active l’intégration GitHub et fournit une URL de charge utile à utiliser lors de la création d’un webhook.
production
. Cette action se produit instantanément et ne peut pas être annulée. En règle générale, il est important de cloner toutes vos branches à partir de votre Adobe Commerce sur un projet d’infrastructure cloud et de les envoyer vers votre référentiel GitHub avant d’ajouter l’intégration GitHub.Vous pouvez choisir de parcourir les invites d’interface de ligne de commande à l’aide de magento-cloud integration:add
ou de créer la commande d’intégration avec les options suivantes :
--base-url
https://github.com/
ou personnalisée. Omettez cette option si votre référentiel est hébergé avec Github public ou si votre référentiel n’est pas hébergé sur des serveurs privés. Omettez cette option si l’URL de votre référentiel est similaire à https://github.com/{account}/{repository-name}
. Cela peut entraîner des erreurs telles que Unable to connect to GitHub: repository not found
.--token
--repository
owner-or-organisation/repository
--build-pull-requests
true
par défaut).--fetch-branches
true
par défaut).--prune-branches
true
par défaut)Il existe de nombreuses autres options, que vous pouvez voir à l’aide de l’option d’aide :
magento-cloud integration:add --help
Pour activer l’intégration GitHub :
-
Activez l’intégration.
code language-bash magento-cloud integration:add --type=github --project=<project-ID> --token=<your-GitHub-token> {--repository=USER/REPOSITORY | --repository=ORGANIZATION/REPOSITORY} [--build-pull-requests={true|false} --fetch-branches={true|false}
Exemple 1 : activation de l’intégration GitHub pour un référentiel personnel privé :
code language-bash magento-cloud integration:add --type=github --project=ov58dlacU2e --base-url=https://github.com --token=<token> --repository=myUserName/myrepo
Exemple 2 : activation de l’intégration GitHub pour un référentiel d’organisation :
code language-bash magento-cloud integration:add --type=github --project=ov58dlacU2e --base-url=https://github.com --token=<token> --repository=Magento/teamrepo
-
Saisissez les informations requises lorsque vous y êtes invité.
-
Copiez l’ URL de charge utile affiché par la sortie de retour.
code language-none Created integration <integration-ID> (type: github) Repository: myUserName/myrepo Build PRs: yes Fetch branches: yes Payload URL: https://us.magento.cloud/api/projects/<project-id>/integrations/wO8a0eoamxwcg/hook
Ajout du webhook dans GitHub
Pour communiquer des événements (une notification push, par exemple) avec votre serveur Cloud Git, vous devez créer un webhook pour votre référentiel GitHub :
-
Dans votre référentiel GitHub, cliquez sur l’onglet Paramètres .
-
Dans la barre de navigation de gauche, cliquez sur Webhooks.
-
Dans le volet Webhooks, cliquez sur Ajouter webhook.
-
Dans le formulaire Webhooks/Add webhook, modifiez les champs suivants :
- URL de charge utile : entrez l’URL renvoyée lorsque vous avez activé l’intégration GitHub.
- Type de contenu : sélectionnez application/json dans la liste.
- Secret : saisissez un secret de vérification.
- Quels événements souhaitez-vous déclencher ce webhook ? : sélectionnez Tout envoyer.
- Cochez la case Actif .
-
Cliquez sur Ajouter webhook.
Test de l’intégration
Après avoir configuré l’intégration GitHub, vous pouvez vérifier que l’intégration fonctionne à l’aide de l’interface de ligne de commande magento-cloud
:
magento-cloud integration:validate
Vous pouvez également le tester en envoyant une modification simple à votre référentiel GitHub.
-
Créez un fichier de test.
code language-bash touch test.md
-
Validez et envoyez la modification à votre référentiel GitHub.
code language-bash git add . && git commit -m "Testing GitHub integration" && git push
-
Connectez-vous à Cloud Console et vérifiez que votre message de validation s’affiche et que votre projet est en cours de déploiement.
Suppression de l’intégration
Vous pouvez supprimer l’intégration GitHub de votre projet en toute sécurité sans affecter votre code.
Pour supprimer l’intégration GitHub :
-
Depuis le terminal, connectez-vous à votre projet d’infrastructure cloud Adobe Commerce.
-
Liste de vos intégrations. Vous avez besoin de l’identifiant d’intégration GitHub pour terminer l’étape suivante.
code language-bash magento-cloud integration:list
-
Supprimez l’intégration.
code language-bash magento-cloud integration:delete <int-ID>
Vous pouvez également supprimer l’intégration GitHub en vous connectant à votre compte GitHub et en supprimant le crochet web dans l’onglet Webhooks du référentiel Settings.