Premiers pas avec AWS CodeBuild et GitHub

Mario FadegnonMario Fadegnon
6 min read

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

  1. Connectez-vous à votre console AWS.

  2. Dans la barre de recherche en haut, tapez “S3” et cliquez sur le service qui apparaît.

  3. Une fois dans S3, cliquez sur “Créer un compartiment” (ou “Create bucket” si votre console est en anglais).

  4. Donnez un nom unique à votre compartiment, par exemple : mon-projet-build-artifacts.

  5. Choisissez la région AWS où vous souhaitez stocker vos fichiers.

  6. Laissez les options par défaut ou ajustez-les selon vos besoins.

  7. Cliquez sur "Créer un bucket".

🔨 Étape 3 – Créer un projet AWS CodeBuild

  1. Toujours sur AWS, allez dans le service CodeBuild.

  2. 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 :

  1. Sélectionner “Public Repository” ou “Référentiel public” dans la configuration.

  2. 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.

  1. Cliquez sur "Créer le projet de génération"

A la fin, on devrait avoir ceci:

🧪 Étape 4 – Lancer un build

  1. Depuis la page du projet, cliquez sur "Démarrer la génération".

  2. Vérifiez les paramètres et cliquez sur "Démarrer la build".

  3. 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

0
Subscribe to my newsletter

Read articles from Mario Fadegnon directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Mario Fadegnon
Mario Fadegnon