Déployer une application Python à l'aide d'un pipeline CI/CD
Dans cet article, nous allons voir comment déployer une application en utilisant un pipeline CI/CD impliquant git, GitHub, Jenkins, Docker et DockerHub. Le principe de base est que lorsqu’une mise à jour de code est poussée sur git, elle est mise à jour sur GitHub. Jenkins récupère alors cette mise à jour, construit l’image Docker à partir d’un fichier Dockerfile et d’une configuration Jenkinsfile, la pousse vers Docker Hub en tant que registre, puis la récupère et l’exécute en tant que conteneur pour déployer notre application.
Nous allons d’abord vérifier si Java est installé et quelle est sa version.
java -version
Comme vous pouvez le voir, Java n’est pas installé.
Puisque Jenkins nécessite Java 11, nous allons l’installer en utilisant la documentation officielle de Jenkins.
sudo apt-get install -y openjdk-11-jre
Une fois l’installation terminée, vous pouvez à nouveau vérifier la version de Java.
java -version
Comme nous pouvons le voir, Java est maintenant installé avec succès avec la version 11.0.17.
Maintenant, installons Git.
Git nous aidera à maintenir et à versionner notre code de manière efficace.
Tout d’abord, vérifions si Git est déjà disponible dans notre système ou non.
git --version
Comme nous pouvons le voir, Git était déjà installé sur le système avec la version 2.17.1. Si vous ne l’avez pas encore installé, vous pouvez le faire en utilisant cette commande :
sudo apt-get install -y git
Créons d’abord un dossier pour notre projet. Nous travaillerons dans ce dossier tout au long du tutoriel.
mkdir pythonapp
Nous allons initialiser notre dépôt Git local dans ce dossier.
cd pythonapp
Mais avant d’initialiser notre dépôt local, nous devons apporter quelques modifications à la configuration par défaut de Git.
git config --global init.defaultBranch main
Par défaut, Git utilise ‘master’ comme branche par défaut. Cependant, GitHub et la plupart des développeurs préfèrent utiliser « main » comme branche par défaut.
Par ailleurs, nous allons également configurer notre nom et notre adresse électronique pour Git.
git config --global user.name "your_name"
git config --global user.email "[email protected]"
Pour vérifier les modifications apportées à la configuration de Git, vous pouvez utiliser cette commande :
git config --list
Il est maintenant temps d’initialiser notre dépôt local.
git init
Cela créera un dépôt vide dans le dossier. Vous pouvez également créer un dépôt sur GitHub puis le cloner sur votre système local.
Notre dépôt Git local n’est pas configuré et initialisé. Nous allons maintenant créer un dépôt distant sur GitHub pour le synchroniser avec le dépôt local.
Connectez-vous à votre compte GitHub et cliquez sur votre image de profil. Cliquez sur ‘Your Repositories’.
Sur la page qui s’ouvre, cliquez sur le bouton vert ‘New’.
Nommons notre dépôt ‘pythonapp’ pour qu’il soit identique au nom de notre dossier. Ce n’est pas nécessaire mais cela simplifiera les choses.
Gardez le dépôt comme ‘Public’ et cliquez sur ‘Créer un dépôt’
Pour ce tutoriel, nous utiliserons SSH pour connecter le dépôt local à notre dépôt distant. Veuillez noter que GitHub n’autorise plus les combinaisons nom d’utilisateur/mot de passe pour les connexions. Si vous souhaitez utiliser https à la place, vous pouvez consulter le tutoriel this pour vous connecter en utilisant des jetons d’accès personnels.
Tout d’abord, nous allons créer une clé SSH dans notre système Ubuntu.
ssh-keygen
Appuyez trois fois sur la touche « Entrée » sans rien saisir.
Cela créera une clé SSH dans votre système. Nous utiliserons cette clé dans notre compte GitHub. Pour accéder à la clé, utilisez la commande suivante
cat ~/.ssh/id_rsa.pub
Copiez la clé entière.
Sur GitHub, allez dans votre dépôt et cliquez sur « Settings ».
Sur la gauche, dans la section ‘Security’, cliquez sur ‘Deploy Keys’.
Donnez à la clé le nom que vous souhaitez. Collez la clé que vous avez copiée depuis le terminal dans la case « Clé ». Veillez à cocher la case « Autoriser l’accès en écriture ».
Cliquez maintenant sur ‘Add Key’. Nous avons maintenant accès au push de notre repo distant en utilisant SSH.
Nous allons maintenant ajouter le remote qui nous permettra d’effectuer des opérations sur le repo distant.
git remote add origin [email protected]:nyukeit/pythonapp.git
Pour vérifier votre télécommande
git remote
Pour vérifier et connecter notre configuration, nous ferons
ssh -T [email protected]
Lorsque l’on vous le demande, tapez ‘yes’. Vous devriez voir apparaître un message disant « Vous vous êtes authentifié avec succès, mais GitHub ne fournit pas d’accès shell ».
Créons une application Python qui affichera Hello World ! dans le navigateur lorsqu’elle sera exécutée.
Dans votre terminal, assurez-vous d’être dans le dossier du projet. Créez un dossier nommé ‘src’ et créez un fichier nommé ‘helloworld.py’ à l’intérieur de ce dossier comme ceci :
mkdir src
cd src
sudo nano helloworld.py
Maintenant, écrivons un script Python ! Dans l’éditeur nano, tapez ceci :
from flask import Flask, request
from flask_restful import Resource, Api
app = Flask(__name__)
api = Api(app)
class Greeting (Resource):
def get(self):
return 'Hello World!'
api.add_resource(Greeting, '/') # Route_1
if __name__ == '__main__':
app.run('0.0.0.0','3333')
Appuyez sur ctrl + x + y pour sauvegarder le fichier.
Rendez-vous à la Partie 2 où nous verrons l’installation et la configuration de Jenkins, Docker et la création des scripts pour terminer notre pipeline.