Tutoriel : Créer un Pipeline CI/CD avec GitHub Actions¶
Dans ce tutoriel, nous allons mettre en place un pipeline CI/CD (Intégration Continue / Déploiement Continu) pour votre projet utilisant GitHub Actions. Ce pipeline automatisera les tests, la vérification du code et le déploiement de votre application.
Étape 1 : Créer le fichier de workflow¶
- Dans votre dépôt GitHub, créez un dossier
.github/workflowss'il n'existe pas déjà. - Dans ce dossier, créez un nouveau fichier nommé
ci-cd.yml.
Étape 2 : Configurer le workflow¶
Copiez le code suivant dans votre fichier ci-cd.yml :
name: Pipeline CI/CD
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Configurer Python
uses: actions/setup-python@v2
with:
python-version: '3.x'
- name: Installer les dépendances
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Exécuter les tests
run: python -m unittest discover tests
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Configurer Python
uses: actions/setup-python@v2
with:
python-version: '3.x'
- name: Installer les dépendances
run: |
python -m pip install --upgrade pip
pip install flake8
- name: Exécuter le linter
run: flake8 .
deploy:
needs: [test, lint]
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
steps:
- uses: actions/checkout@v2
- name: Déployer sur le serveur
env:
PRIVATE_KEY: ${{ secrets.SERVER_SSH_KEY }}
HOST: ${{ secrets.SERVER_HOST }}
USER: ${{ secrets.SERVER_USER }}
run: |
echo "$PRIVATE_KEY" > private_key && chmod 600 private_key
ssh -o StrictHostKeyChecking=no -i private_key ${USER}@${HOST} '
cd /chemin/vers/votre/projet &&
git pull origin main &&
pip install -r requirements.txt &&
sudo systemctl restart nom-de-votre-service
'
Étape 3 : Comprendre le workflow¶
Ce workflow se compose de trois jobs :
- test : Exécute les tests unitaires de votre application.
- lint : Vérifie la qualité du code avec flake8.
- deploy : Déploie l'application sur votre serveur si les tests et la vérification du code réussissent.
Étape 4 : Configurer les secrets¶
Pour que le déploiement fonctionne, vous devez configurer des secrets dans votre dépôt GitHub :
- Allez dans les paramètres de votre dépôt GitHub.
- Cliquez sur "Secrets" dans le menu de gauche.
- Ajoutez les secrets suivants :
SERVER_SSH_KEY: Votre clé SSH privée pour le serveurSERVER_HOST: L'adresse IP ou le nom d'hôte de votre serveurSERVER_USER: Le nom d'utilisateur pour la connexion SSH
Étape 5 : Personnaliser le déploiement¶
Modifiez la section deploy du workflow pour qu'elle corresponde à votre configuration de serveur :
- Remplacez
/chemin/vers/votre/projetpar le chemin réel de votre projet sur le serveur. - Remplacez
nom-de-votre-servicepar le nom du service que vous devez redémarrer.
Étape 6 : Activer le workflow¶
- Committez le fichier
ci-cd.ymldans votre dépôt. - Poussez les changements sur GitHub.
GitHub Actions détectera automatiquement le nouveau workflow et l'exécutera à chaque push sur la branche principale ou lors de l'ouverture d'une pull request.
Conclusion¶
Vous avez maintenant un pipeline CI/CD fonctionnel pour votre projet ! À chaque push sur la branche principale, vos tests seront exécutés, votre code sera vérifié, et si tout est en ordre, votre application sera automatiquement déployée sur votre serveur.
N'oubliez pas de maintenir vos tests à jour et d'ajouter de nouveaux tests au fur et à mesure que votre projet évolue. Bonne continuation avec votre développement !