Files
cesizen-individuel/.gitea/workflows/ci.yml
T
Azmog d41d725246
CI / Backend · PHPUnit + Pint (push) Successful in 1m35s
CI / Frontend · ESLint + Vitest (push) Successful in 9m43s
CI / Mobile · Jest (push) Successful in 9m33s
CI / Déploiement · Coolify (push) Successful in 1s
chore: fix curl method to POST for coolify api
2026-09-03 23:05:18 +02:00

114 lines
3.9 KiB
YAML

# ─────────────────────────────────────────────────────────────────────────
# Intégration continue CESIZen — Gitea Actions
# Déclenchée à chaque push et pull request. Lance les 29 tests automatisés
# (backend PHPUnit + frontend Vitest + mobile Jest) et le lint.
# Un déploiement Coolify est déclenché par webhook après un merge sur main
# (voir docker-compose.prod.yaml + MIGRATION_GITEA.md).
# ─────────────────────────────────────────────────────────────────────────
name: CI
on:
push:
branches: [main, develop]
pull_request:
branches: [main, develop]
jobs:
# ── Backend Laravel : PHPUnit sur base SQLite en mémoire (cf. backend/phpunit.xml) ──
backend:
name: Backend · PHPUnit + Pint
runs-on: ubuntu-latest
defaults:
run:
working-directory: backend
steps:
- uses: actions/checkout@v4
- name: Installer PHP 8.4
uses: shivammathur/setup-php@v2
with:
php-version: "8.4"
extensions: pdo, pdo_sqlite, bcmath, mbstring
coverage: none
- name: Cache des dépendances Composer
uses: actions/cache@v4
with:
path: backend/vendor
key: composer-${{ hashFiles('backend/composer.lock') }}
- name: Installer les dépendances
run: composer install --no-interaction --prefer-dist --no-progress
- name: Vérifier le style (Laravel Pint, PSR-12)
run: vendor/bin/pint --test
- name: Préparer l'environnement (clés)
run: |
cp .env.example .env
php artisan key:generate --force
php artisan jwt:secret --force
- name: Lancer les tests (Unit + Feature)
run: php artisan test
# ── Frontend web Next.js : ESLint + Vitest ──
frontend:
name: Frontend · ESLint + Vitest
runs-on: ubuntu-latest
defaults:
run:
working-directory: frontend
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: "20"
cache: npm
cache-dependency-path: frontend/package-lock.json
- run: npm ci
- name: Lint
run: npm run lint
- name: Tests unitaires
run: npm test
# ── Mobile Expo / React Native : Jest ──
mobile:
name: Mobile · Jest
runs-on: ubuntu-latest
defaults:
run:
working-directory: mobile
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: "20"
cache: npm
cache-dependency-path: mobile/package-lock.json
- run: npm ci --legacy-peer-deps
- name: Tests unitaires
run: npm test
# ── Déploiement Continu : Déclenché uniquement si les tests passent ──
deploy:
name: Déploiement · Coolify
needs: [backend, frontend, mobile]
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
steps:
- name: Lancer le déploiement sur Coolify
run: |
echo "Les tests sont verts, on déploie sur Coolify..."
RESPONSE=$(curl -sS -w "\nHTTP_STATUS:%{http_code}" -X POST -H "Authorization: Bearer ${{ secrets.COOLIFY_TOKEN }}" "https://panel.cleanows.fr/api/v1/deploy?uuid=ak9cfyikwrdezkxcnm8gd89x&force=false")
echo "Réponse de Coolify :"
echo "$RESPONSE"
# Vérifier si on a un code HTTP 200 (Succès)
if echo "$RESPONSE" | grep -q "HTTP_STATUS:200"; then
echo "Déploiement déclenché avec succès !"
else
echo "Erreur lors du déclenchement du déploiement."
exit 1
fi