CodeBuild est un service de génération géré, similaire en fonction à Jenkins mais axé spécifiquement sur l'automatisation de la construction et des tests. Il peut être utilisé en conjonction avec CodePipeline pour créer un pipeline CI / CD entièrement automatisé.
Configurer un projet de construction
Si vous utilisez CodePipeline, vous devez créer votre projet CodeBuild à partir de la boîte de dialogue pendant "Ajouter une étape de construction". Cela le configurera pour utiliser CodePipeline comme source. Si vous n'utilisez pas CodePipeline, vous pouvez créer votre projet de build à partir du Console de gestion CodeBuildet entrez manuellement les détails de votre contrôle de source.
Quoi qu'il en soit, la première chose que vous configurerez est l'environnement dans lequel votre code sera intégré. Cela ne devrait pas avoir d'importance pour la plupart des projets, mais pour ceux qui le font, vous pouvez spécifier des images Docker personnalisées pour avoir un contrôle total sur celui-ci. Sinon, les paramètres par défaut d'Amazon Linux 2 et les environnements d'exécution standard devraient convenir.
Sous "Paramètres avancés" pour l'environnement, vous trouverez les paramètres pour modifier les paramètres de calcul, pour sélectionner un autre type de serveur. Vous pouvez également modifier les variables d'environnement à partir d'ici.
Pour les paramètres VPC, il est préférable de laisser cela de côté, sauf si vous avez une raison de faire autrement. Les paramètres par défaut (vides) sont probablement corrects.
Ensuite, vous devrez configurer CodeBuild avec un fichier Buildspec. Il s'agit d'un modèle YAML qui définit les commandes que CodeBuild exécutera réellement. Vous pouvez utiliser un fichier réel, stocké à la racine de votre projet comme buildspec.yml
, ou vous pouvez saisir manuellement quelques commandes de construction, si votre configuration n’est pas extrêmement complexe.
Quoi qu'il en soit, vous devrez probablement prendre un certain temps pour comprendre votre fichier Buildspec. Cela dépendra fortement du type d'application que vous exécutez et de ce qui est nécessaire pour créer et tester.
Par exemple, la configuration suivante installera les modules nécessaires à un projet TypeScript, compilez avec npm run build
, et courir test npm
. Le fichier buildspec comporte quelques phases distinctes, que vous pouvez utiliser pour exécuter des commandes à des moments différents.
version: 0.2 phases: installer: versions d'exécution: nodejs: 10 commandes: - npm install -g typescript - npm installer pre_build: commandes: - phase de pré-construction d'écho construire: commandes: - echo Build a commencé le `date` - npm run build - test npm post_build: commandes: - Echo Build terminé le `date` cache: chemins: - 'node_modules / ** / *' artefacts: des dossiers: - «** / *» nom: yourBuildName - $ (date +% Y-% m-% d)
Vous pouvez consulter Référence Buildspec d'AWS pour plus d'informations sur le fonctionnement de tout.
Une fois que vous avez un fichier qui vous convient, vous pouvez choisir d'activer les journaux CloudWatch ou de vous connecter à S3 à la place.
Cliquez sur "Créer un projet de construction" et votre configuration devrait être terminée.
Tester votre build
CodeBuild est généralement exécuté dans le cadre de CodePipeline. Si vous utilisez CodePipeline, vous devrez terminer la configuration de la phase de déploiement et créer votre pipeline. Il devrait s'exécuter automatiquement et envoyer votre source à CodeBuild. Sinon, vous pouvez démarrer la compilation manuellement à partir de la console ou à l'aide de l'AWS CLI:
aws codebuild start-build --nom du projet
Cette commande a un beaucoup de dérogations aussi.
Vous pourrez afficher la sortie de votre build en cliquant sur le build dans la console de gestion. Cela vous montrera les journaux du processus de construction, ce qui peut être crucial pour traquer les erreurs.
Si une commande échoue, la compilation entière échouera probablement, vous voudrez donc vous assurer que tout est correct. Si vous utilisez CodePipeline, les modifications apportées à votre buildspec.yml
déclenchera de nouvelles mises à jour de pipeline et de nouvelles versions.