Premiers pas avec AWS CodeBuild et GitHub

Dans ce tutoriel, nous allons suivre un scénario simple mais très courant dans le monde DevOps :
👉 Nous allons créer un projet que nous hébergerons sur GitHub.
👉 Ensuite, nous utiliserons AWS CodeBuild pour construire automatiquement le projet et générer un artifact (un fichier résultant du processus de build).
👉 Enfin, cet artifact sera stocké dans un bucket S3, le service de stockage proposé par AWS.
🗂️ AWS S3 (Simple Storage Service) est un service de stockage d’objets dans le cloud. Il permet de conserver des fichiers de tout type (code, images, vidéos, documents, archives, etc.) de manière sécurisée et accessible à tout moment.
Pour réaliser ce build, il est nécessaire d’avoir un fichier nommé buildspec.yaml
.
Ce fichier comprend plusieurs sections essentielles :
la version YAML
la phase d’installation (
install
)la phase préparatoire avant la construction (
pre_build
)la phase de construction (
build
)la phase finale (
post_build
) qui génère l’artifact.
Passons à la réalisation du projet
🔧 Étape 1 – Préparer le projet sur GitHub
Créez un nouveau dépôt GitHub pour votre projet.
Si vous n'avez pas encore de compte GitHub, créez-en un sur github.com.
On ajoutera un README et aussi pour le .gitignore on précisera le langage utilisé (Python) dans notre cas
On clique sur Create Repository
Une fois le dépôt GitHub créé, ajoutez-y votre code source. Il peut s’agir d’un projet simple comme un site web statique, une application Python, Node.js, etc.
Dans notre exemple, nous allons partir sur un petit projet en Python.
Habituellement, c’est le développeur qui fournit le code, mais dans le cadre de notre lab d’apprentissage, nous allons tenter l’exercice nous-mêmes !
Pas besoin d’être expert : vous pouvez tout à fait copier-coller un exemple de code simple.
Je vais cloner le dépôt sur ma machine locale à l’aide de l’URL web fournie par GitHub. Ainsi je pourrai écrire le code avec Visual Code .
Ensuite, j’ouvre mon invite de commande et j’exécute la commande pour cloner le dépôt. Une fois le clonage terminé, je me déplace dans le dossier du projet pour commencer à travailler.
Je peux ouvrir ce répertoire dans mon éditeur de texte. J’utilise Visual Studio Code et le raccourci pour l’ouvrir en ligne de commande c’est : code .
Nous voilà donc dans Vscode
Ici Je crée un fichier app.py, là où je mettrai mon code source
def say_hello(name):
return f"Hello, {name}"
if __name__ == "__main__":
print(say_hello("world"))
Quand le developpeur a fait ça, il va maintenant écrire ses tests unitaires. Nous allons créer un fichier test_app.py qui va tester la fonctionnalité developpée
import unittest
from app import say_hello
class TestApp(unittest.TestCase):
def test_say_hello(self):
self.assertEqual(say_hello("AWS"), "Hello, AWS")
if __name__== "__main__":
unittest.main()
Nous allons maintenant pusher ce code
git add .
git commit -m "feat: implementation de la feature say hello"
git push
Maintenant nous allons écrire notre fichier buildspec.yml
à la racine du projet à la racine du projet qui sera ensuite poussé
version: 0.2
phases:
install:
runtime-versions:
python: 3.8 # Specify the Python version
commands:
- echo Installing dependencies...
- pip install -r requirements.txt
pre_build:
commands:
- echo start prebuild and end it
build:
commands:
- echo Running unit tests with pytest...
- pytest --junitxml=reports/results.xml --tb=short # Generate test report in JUnit format
post_build:
commands:
- echo Build completed successfully.
artifacts:
files:
- "**/*"
base-directory: . # Specify where artifacts are stored
reports:
pytest_reports:
files:
- "reports/results.xml"
discard-paths: yes
git add .
git commit -m "feat: create and config the buildspect yml file"
git push
Notre application a été préparée pour le build.
Edit: Il faut aussi créer un fichier requirements.txt avec le contenu suivant
pytest
pytest-cov # pour generer les rapports
☁️ Étape 2 – Créer un bucket S3 pour stocker les artifacts
Connectez-vous à votre console AWS.
Dans la barre de recherche en haut, tapez “S3” et cliquez sur le service qui apparaît.
Une fois dans S3, cliquez sur “Créer un compartiment” (ou “Create bucket” si votre console est en anglais).
Donnez un nom unique à votre compartiment, par exemple :
mon-projet-build-artifacts
.Choisissez la région AWS où vous souhaitez stocker vos fichiers.
Laissez les options par défaut ou ajustez-les selon vos besoins.
Cliquez sur "Créer un bucket".
🔨 Étape 3 – Créer un projet AWS CodeBuild
Toujours sur AWS, allez dans le service CodeBuild.
Cliquez sur "Créer un projet de construction".
🧾 Configuration de base :
Nom du projet : nom compréhensible (ex.
build-mon-projet
)Description (facultatif) : "Projet de build automatique avec GitHub"
🛠️ Source :
Fournisseur : GitHub (version classique)
Connexion à votre compte GitHub (optionnelle mais recommandée)
Lorsque vous sélectionnez l’option “Repository in my GitHub Account” (ou “Référentiel dans mon compte GitHub”), AWS vous demandera d’autoriser l’accès à votre compte GitHub.
Une fois connecté, vous pourrez choisir n’importe lequel de vos dépôts, y compris les dépôts privés, directement depuis l’interface CodeBuild.
Dans le cadre de notre exercice, nous utilisons un dépôt GitHub public.
👉 Cela signifie qu’il n’est pas nécessaire de connecter votre compte GitHub à AWS.
Il suffit de :
Sélectionner “Public Repository” ou “Référentiel public” dans la configuration.
Copier l’URL du dépôt GitHub dans le champ “Repository URL” ou “URL du référentiel”.
🧪 Cette approche est simple et rapide, parfaite pour un environnement de test ou un projet d’apprentissage.
Le format de l’URL est précisé
🔄 Environnement de build :
Système d'exploitation(Operating System) : Amazon Linux
environnement (runtime) : Standard
Image : standard:5:0
Version de l'image (Image) : Toujours choisir la plus récente
🍽️Fichier Buildspec :
- Type de buildspec : utilisez un fichier
buildspec.yml
dans votre code source
📦 Artefacts (Artifacts) :
Type : Amazon S3
Nom du bucket : sélectionnez le bucket S3 que vous avez créé à l’étape 2
Nom du fichier de sortie (facultatif) : ex.
artifact.zip
Emballage des artefacts: zip
Laissez les autres options par défaut si vous débutez.
- Cliquez sur "Créer le projet de génération"
A la fin, on devrait avoir ceci:
🧪 Étape 4 – Lancer un build
Depuis la page du projet, cliquez sur "Démarrer la génération".
Vérifiez les paramètres et cliquez sur "Démarrer la build".
Suivez les logs en temps réel : vous verrez les phases
install
,pre_build
,build
,post_build
.
Si tout se passe bien ✅, un fichier (votre artifact) sera généré et automatiquement envoyé dans le bucket S3.
À la fin du processus, vous avez :
Un projet hébergé sur GitHub
Un pipeline de build automatique avec CodeBuild
Un fichier artifact envoyé dans un bucket S3
Sur CodeBuild
sur S3, dans le bucket
Subscribe to my newsletter
Read articles from Mario Fadegnon directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
