Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
37016ba
feat: premier commit - activation de la CI
ororck Jun 4, 2026
51e51a5
test: test activation github action
ororck Jun 4, 2026
949a845
feat: new yml with setup py/instal dependencies/lauch test
ororck Jun 4, 2026
1849f23
test: add new error too much space l1
ororck Jun 4, 2026
4e2297f
Clean: remove erro too much space in app.py
ororck Jun 4, 2026
c3cfeb0
test: add new error l46 in test_app.py
ororck Jun 4, 2026
926bdcb
clean: error l46 in test_app.py
ororck Jun 4, 2026
fef6956
feat: add couverture de test&rapport de couverture& cache dépendances…
ororck Jun 4, 2026
2e79377
feat: add secret in workflow
ororck Jun 4, 2026
f025d88
feat: add secret in workflow correction
ororck Jun 4, 2026
ab270d2
feat: add ability to create new env for staging and production
ororck Jun 4, 2026
ce7b8fe
feat: add Pipeline CI/CD complet
ororck Jun 5, 2026
cdba3ff
clear: correction pb secret key
ororck Jun 5, 2026
0ced62d
Add or update the Azure App Service build and deployment workflow config
ororck Jun 5, 2026
77b41af
mlue
ororck Jun 5, 2026
5b858b4
Merge branch 'main' of https://github.com/ororck/tp-github-CI-CD
ororck Jun 5, 2026
9bceccb
mlue
ororck Jun 5, 2026
20540b2
chore: remove cicd.yml to let only the azure setup
ororck Jun 5, 2026
5ec67a1
feat: remake the complete pipeline with 3jobs
ororck Jun 11, 2026
5709a5a
clear: correct the pipeline with 3jobs
ororck Jun 11, 2026
539dc9b
clear: correct app name
ororck Jun 11, 2026
45a56a5
chore(ci): remove unused workflow file
ororck Jun 11, 2026
162742b
test after rm
ororck Jun 11, 2026
c056857
feat: instal local hook
ororck Jun 11, 2026
984a418
feat: add dependabot
ororck Jun 11, 2026
a081073
feat: add codeowners
ororck Jun 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Syntaxe : <pattern de fichier> <@utilisateur ou @org/équipe>

# Par défaut : tout changement requiert une review de ces personnes
* @<ororck>

# Les workflows CI/CD ne peuvent être modifiés que par le lead DevOps
.github/workflows/ @<ororck>

# Le fichier de dépendances requiert une validation technique
ressources/requirements.txt @<ororck>

# Les fichiers de sécurité requièrent une double validation
.github/dependabot.yml @<ororck>
.github/CODEOWNERS @<ororck>
26 changes: 26 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# .github/dependabot.yml — configuration complète commentée
version: 2

updates:
# GitHub Actions : surveille les "uses: action/nom@version" dans les workflows
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly" # "daily" ou "monthly" aussi possible
labels:
- "dependencies"
- "github-actions"
commit-message:
prefix: "ci" # les commits Dependabot auront le préfixe "ci:"

# pip : surveille requirements.txt dans /ressources
- package-ecosystem: "pip"
directory: "/ressources"
schedule:
interval: "weekly"
labels:
- "dependencies"
- "python"
open-pull-requests-limit: 5
commit-message:
prefix: "chore" # les commits auront le préfixe "chore:"
54 changes: 47 additions & 7 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,18 +1,58 @@
name: CI
name: CI — NexaCloud API

on:
push:
branches: [ "main" ]
branches: [main]
pull_request:
branches: [ "main" ]
branches: [main]

jobs:
build:
test:
runs-on: ubuntu-latest

steps:
- name: Checkout code
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install dependencies
run: pip install -r ressources/requirements.txt
- name: Launch tests
run: pytest ressources/ -v
# Ajouter la couverture de tests
- name: Tests avec couverture
run: pytest ressources/ -v --cov=ressources --cov-report=term-missing
# Uploader le rapport de couverture comme artefact téléchargeable
- name: Générer le rapport HTML
run: pytest ressources/ --cov=ressources --cov-report=html
- name: Upload du rapport
uses: actions/upload-artifact@v4
with:
name: rapport-couverture
path: htmlcov/
# Mettre en cache les dépendances pip (accélère les builds suivants)
- name: Cache pip
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('ressources/requirements.txt') }}

lint:
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.11"

- name: Installer flake8
run: pip install flake8

- name: Example step
run: echo "Add your build/test steps here!"
- name: Lint with flake8
run: flake8 ressources/ --config ressources/.flake8
76 changes: 76 additions & 0 deletions .github/workflows/cicd.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
# Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy
# More GitHub Actions for Azure: https://github.com/Azure/actions
# More info on Python, GitHub Actions, and Azure App Service: https://aka.ms/python-webapps-actions

name: CI/CD — NexaCloud API
on:
push:
branches: [main]
pull_request:
branches: [main]

jobs:
qualite:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- uses: actions/setup-python@v5
with:
python-version: "3.11"

- name: Installer les dépendances
run: pip install -r ressources/requirements.txt

- name: Lint
run: flake8 ressources/ --config ressources/.flake8

- name: Tests avec couverture
run: pytest ressources/ -v --cov=ressources --cov-report=term-missing

staging:
runs-on: ubuntu-latest
needs: qualite
environment: staging
if: github.ref_name == 'main'

steps:
- uses: actions/checkout@v4

- uses: actions/setup-python@v5
with:
python-version: "3.11"

- name: Installer les dépendances
run: pip install -r ressources/requirements.txt

- name: Déployer sur Azure App Service (staging)
uses: azure/webapps-deploy@v3
with:
app-name: "mohamed-saidi-api-16190"
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
package: ressources/

production:
runs-on: ubuntu-latest
needs: staging
environment: production
if: github.ref_name == 'main'

steps:
- uses: actions/checkout@v4

- uses: actions/setup-python@v5
with:
python-version: "3.11"

- name: Installer les dépendances
run: pip install -r ressources/requirements.txt

- name: Déployer sur Azure App Service (production)
uses: azure/webapps-deploy@v3
with:
app-name: "mohamed-saidi-api-16190"
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
package: ressources/
30 changes: 30 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: Deploy

on:
workflow_dispatch:

jobs:
deploy-staging:
runs-on: ubuntu-latest
environment: staging # utilise l'environnement staging

steps:
- name: Checkout
uses: actions/checkout@v4
- name: Déploiement en staging
run: |
echo "✅ Déploiement en staging réussi"
echo "URL : https://staging.nexacloud.example.com"

deploy-production:
runs-on: ubuntu-latest
environment: production
needs: deploy-staging

steps:
- name: Checkout
uses: actions/checkout@v4
- name: Déploiement en production
run: |
echo "🚀 Déploiement en production réussi"
echo "URL : https://production.nexacloud.example.com"
25 changes: 25 additions & 0 deletions .github/workflows/secrets.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: Demo Secrets

on:
workflow_dispatch:

jobs:
demo:
runs-on: ubuntu-latest

env:
API_KEY: ${{ secrets.API_KEY }} # injection du secret comme variable d'environnement

steps:
- name: Vérifier que le secret est défini
run: |
if [ -z "$API_KEY" ]; then
echo "❌ Le secret API_KEY n'est pas défini"
exit 1
fi
echo "✅ Le secret API_KEY est défini (${#API_KEY} caractères)"

- name: Simuler un appel API authentifié
run: |
echo "Appel à l'API avec Authorization: Bearer ***"
# En vrai : curl -H "Authorization: Bearer $API_KEY" https://api.example.com
34 changes: 34 additions & 0 deletions .setup-hooks.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#!/bin/bash
# setup-hooks.sh — Installe les hooks locaux (à lancer une fois par développeur)

set -e

echo "=== Installation des hooks locaux NexaCloud ==="

# 1. Installer pre-commit
if ! command -v pre-commit &>/dev/null; then
echo "Installation de pre-commit..."
pip install pre-commit --quiet
fi

# 2. Activer les hooks pre-commit
pre-commit install
echo "✅ Hooks pre-commit activés"

# 3. Installer le hook pre-push
cat > .git/hooks/pre-push << 'EOF'
#!/bin/bash
echo "[pre-push] Lancement des tests..."
cd ressources && pytest -q
EXIT_CODE=$?
cd ..
[ $EXIT_CODE -ne 0 ] && echo "❌ Tests échoués — push bloqué" && exit 1
echo "✅ Tests passés — push autorisé"
EOF
chmod +x .git/hooks/pre-push
echo "✅ Hook pre-push installé"

echo ""
echo "=== Hooks installés avec succès ==="
echo " pre-commit : flake8 + trailing-whitespace + check-yaml"
echo " pre-push : pytest"
2 changes: 2 additions & 0 deletions notes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Mon TP GitHub Actions
# Test TP GitHub Actions
Binary file added ressources/__pycache__/app.cpython-312.pyc
Binary file not shown.
Binary file not shown.