Skip to content

fix: testing

fix: testing #6

Workflow file for this run

name: Test and Deploy to VPS # Nom de l'action
on:
pull_request:
branches: ['master', 'main'] # Déclenche lors de pull requests vers "master" ou "main"
paths-ignore: ['docs/**'] # Ignore les changements dans "docs"
push:
branches: ['master', 'main'] # Déclenche lors des pushs vers "master" ou "main"
paths-ignore: ['docs/**'] # Ignore les changements dans "docs"
concurrency:
group: ${{ github.head_ref || github.run_id }} # Gère la concurrence pour éviter les doublons
cancel-in-progress: true # Annule les jobs en cours si un nouveau est déclenché
jobs:
build:
runs-on: ubuntu-latest # Exécution sur Ubuntu
strategy:
max-parallel: 2 # Limite à 2 jobs en parallèle
matrix:
python-version: [3.9, 3.11] # Test sur Python 3.9, 3.11
steps:
- name: Checkout Code Repository # Étape pour récupérer le code du dépôt
uses: actions/checkout@v4
- name: Set up Python Version ${{ matrix.python-version }} # Configure la version Python à tester
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }} # Utilise les versions Python du matrix
- name: Install Dependencies # Installe les dépendances Python
run: |
python -m pip install --upgrade pip # Met à jour pip
pip install -r requirements.txt # Installe les paquets à partir du fichier requirements.txt
- name: Run Tests # Exécute les tests unitaires
run: |
python manage.py test # Exécute les tests unitaires
deploy:
runs-on: ubuntu-latest # Exécute sur Ubuntu
needs: build # Le déploiement ne s'exécute que si tous les tests de build sont réussis
steps:
- name: Checkout Code Repository # Récupère à nouveau le code source
uses: actions/checkout@v4
- name: Install SSH Client # Installe le client SSH
run: sudo apt-get install -y sshpass
- name: Copy files to VPS # Copie les fichiers du projet vers le VPS
env:
SSH_PASS: ${{ secrets.VPS_SSH_PASS }} # Mot de passe SSH depuis les secrets
run: |
sshpass -p "$SSH_PASS" scp -o StrictHostKeyChecking=no -r ./* root@${{ secrets.VPS_IP }}:/var/www/invoice/ # Copie tous les fichiers sur le VPS
- name: Run deployment script on VPS # Exécute le script de déploiement sur le VPS
env:
SSH_PASS: ${{ secrets.VPS_SSH_PASS }} # Mot de passe SSH depuis les secrets
run: |
sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no root@${{ secrets.VPS_IP }} 'bash -s' < ./deploy.sh # Exécute le script "deploy.sh" sur le VPS