Comment déplacer votre contrôle de code source vers AWS avec CodeCommit
CodeCommit est la solution de contrôle de source gérée d'AWS. Il s'agit d'un composant crucial du pipeline CodeSuite CI / CD d'AWS, qui facilite l'exécution de créations de code fréquentes et le déploiement de mises à jour d'applications par programmation sur vos serveurs EC2 ou vos fonctions Lambda.
Qu'est-ce que CodeCommit?
Vraiment, CodeCommit en lui-même n’est pas fantastique. Il fonctionne bien en tant que fournisseur de contrôle de source de base, et vous pouvez certainement l'utiliser comme référentiel principal, mais il est un peu en deçà de la concurrence – GitHub, GitLab, BitBucket et autres – dans la vie de tous les jours utilisabilité.
Là où CodeCommit brille, c'est son intégration avec AWS. AWS dispose d'un pipeline complet de développement continu / intégration continue qu'ils appellent CodeSuite. Cela commence par CodeCommit, qui héberge simplement votre code source dans l'écosystème AWS. Chaque fois que vous êtes prêt à mettre à jour, vous pouvez envoyer la source à CodeBuild, qui peut exécuter tous vos tests automatisés et créer votre projet à l'aide de serveurs de génération qu'il se déclenche automatiquement. Si la génération réussit, vous pouvez déployer automatiquement les mises à jour sur un parc de serveurs EC2 ou de fonctions Lambda.
CodeCommit n'est pas obligatoire pour utiliser le pipeline CI / CD d'AWS, car CodeBuild prend en charge le contrôle de code source à partir de GitHub, BitBucket et S3, mais il est si simple d'utiliser Git avec deux télécommandes que nous recommandons la configuration suivante si vous souhaitez utiliser CodePipeline:
- Continuez à utiliser votre contrôle de source principal comme d'habitude, aux côtés de Jira et de tout autre outil tiers que vous utilisez pour rationaliser le développement.
- Sur le plan opérationnel, lorsque vous êtes prêt à publier de nouvelles modifications, demandez au chef de projet (ou à toute autre personne autorisée) d'extraire toutes les modifications du référentiel principal, de basculer la télécommande sur CodeCommit et de pousser tous les nouveaux commits vers AWS.
- Une fois CodeCommit mis à jour, le pipeline peut commencer à partir de là avec tout le nouveau code dans CodeCommit.
De cette façon, CodeCommit contient une copie parfaite de votre projet et de l'historique des validations chaque fois que vous êtes prêt à publier, sans que vous ayez à utiliser réellement CodeCommit comme contrôle de source principal. Cela permet également à CodeCommit d'être essentiellement gratuit, car vous n'utilisez vraiment qu'un seul utilisateur et ne faites pas des milliers de commits par mois. Vous disposez de 50 Go de stockage avant d'être facturé (assez pour la plupart des projets sans gros fichiers binaires) et d'un nombre illimité de référentiels. Les seuls frais sont de 1 USD par mois pour chaque utilisateur actif au-delà des cinq premiers et de 1 USD par mois pour chaque 2000 requêtes Git au-delà des 10000 premiers. Vous êtes également facturé 0,06 USD par Go et par mois au-delà des 50 gratuits.
Si vous utilisez déjà GitHub ou BitBucket, vous pouvez à la place choisir de tirer directement de là avec un peu de configuration. Mais, si vous utilisez GitLab (ou tout autre fournisseur), vous avoir pour utiliser ces deux configurations à distance afin d'utiliser CodePipeline (à moins que vous ne souhaitiez télécharger manuellement du code sur S3, une solution beaucoup plus maladroite).
Configuration d'une télécommande CodeCommit Release supplémentaire
Tout d'abord, vous devez créer le référentiel. Dans la console AWS CodeSuite, accédez à CodeCommit, sélectionnez «Référentiels» dans la barre latérale, puis cliquez sur «Créer un référentiel».
Donnez-lui un nom, une description, les balises que vous voulez et cliquez sur «Créer».
Vous êtes alors amené à l'écran d'accueil du dépôt, et si vous êtes connecté avec un compte root, vous recevrez un gros avertissement vous indiquant que vous ne pouvez pas configurer les connexions SSH pour un compte root et que les connexions HTTPS ne le sont pas. conseillé. Vous souhaiterez configurer toutes les connexions à CodeCommit sur les utilisateurs IAM, probablement le compte existant du chef de projet. Connectez-vous à ce compte ou accédez à la console IAM et créez un nouvel utilisateur spécialement à cette fin (avec accès à la console de gestion):
Vous souhaiterez donner accès à CodeCommit sur l'écran de sélection de rôle.
Gardez la console IAM ouverte, car vous devez ajouter votre clé SSH publique ici. Cliquez sur l'utilisateur qui est utilisé pour l'accès CodeCommit, et sous l'onglet «Informations d'identification de sécurité», recherchez un bouton pour télécharger les clés SSH publiques.
Collez la clé privée de votre machine, que vous pouvez généralement trouver avec:
cat ~/.ssh/id_rsa.pub
Vous pouvez ajouter plusieurs clés ici pour donner à plusieurs machines l'accès à CodeCommit via git. Pour chaque clé, vous recevez un "ID de clé SSH", copiez-le.
S'ouvrir ~/.ssh/config
ou créez-le s'il n’existe pas déjà. Collez la configuration suivante, en remplaçant votre ID de clé:
Host git-codecommit.*.amazonaws.com User IAM-SSH-KEY-ID IdentityFile ~/.ssh/id_rsa
Assurez-vous que les autorisations sont définies sur 600:
chmod 600 ~/.ssh/config
Cela garantit que git établit une connexion correcte à l'aide de l'utilisateur IAM que vous avez configuré.
Une fois que vous avez terminé, vous devriez pouvoir ajouter une nouvelle télécommande normalement. Votre télécommande principale est probablement appelée «origine». Créez-en un nouveau appelé «release», en utilisant l'URL SSH CodeCommit vous donne:
git remote add release ssh://git-codecommit.us-east-1.amazonaws.com/v1/repos/RepoName
Puis, quand tu cours git push
, spécifiez le nom et la branche distante vers lesquels vous poussez:
git push release master
Vous pouvez également configurer une branche distincte pour les déploiements de version, avec la version en amont définie sur la version par défaut, mais cette configuration est la plus simple et devrait fonctionner correctement. L'exécution de la commande précédente met à jour CodeCommit, à condition que votre référentiel local soit à jour avec votre contrôle de source principal lorsque vous l'exécutez.