refactor(adr-022): retirer exemples de code et scripts
Suppression de tous les exemples de code pour garder uniquement les descriptions techniques : - Workflows backend/mobile/shared : descriptions textuelles au lieu de blocs YAML complets - Section validation : scénarios décrits au lieu de commandes bash - Conservation de toute l'information technique sans code concret ADR reste technique et complet mais plus concis. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -43,203 +43,64 @@ RoadWave est organisé en monorepo contenant backend Go, mobile Flutter, documen
|
||||
|
||||
#### Workflow Backend (`backend.yml`)
|
||||
|
||||
```yaml
|
||||
name: Backend CI
|
||||
**Déclencheurs** :
|
||||
- Branches : `main`, `develop`
|
||||
- Chemins surveillés :
|
||||
- `backend/**` : Code Go, migrations, configuration
|
||||
- `features/api/**` : Features BDD des tests API
|
||||
- `features/e2e/**` : Features BDD end-to-end impliquant le backend
|
||||
- `.github/workflows/backend.yml` : Modifications du workflow lui-même
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main, develop]
|
||||
paths:
|
||||
- 'backend/**' # Code Go modifié
|
||||
- 'features/api/**' # Tests API modifiés
|
||||
- 'features/e2e/**' # Tests E2E (impliquent backend)
|
||||
- '.github/workflows/backend.yml'
|
||||
pull_request:
|
||||
branches: [main, develop]
|
||||
paths:
|
||||
- 'backend/**'
|
||||
- 'features/api/**'
|
||||
- 'features/e2e/**'
|
||||
**Jobs exécutés** :
|
||||
- **Tests unitaires** : Exécution `go test` sur tous les packages
|
||||
- **Tests d'intégration** : Utilisation de Testcontainers avec PostgreSQL/PostGIS
|
||||
- **Tests BDD** : Exécution Godog sur features `api/` et `e2e/`
|
||||
- **Lint** : Vérification golangci-lint
|
||||
- **Build** : Compilation binaire production (dépend de tous les jobs précédents)
|
||||
|
||||
jobs:
|
||||
test-unit:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: '1.21'
|
||||
- run: cd backend && go test ./...
|
||||
|
||||
test-integration:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: '1.21'
|
||||
- run: cd backend && make test-integration
|
||||
|
||||
test-bdd:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: '1.21'
|
||||
- run: |
|
||||
go install github.com/cucumber/godog/cmd/godog@latest
|
||||
godog run features/api/ features/e2e/
|
||||
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: golangci/golangci-lint-action@v4
|
||||
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [test-unit, test-integration, test-bdd, lint]
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: '1.21'
|
||||
- run: cd backend && make build
|
||||
```
|
||||
|
||||
**Déclenché par** :
|
||||
- Modifications dans `/backend` (code Go, migrations, config)
|
||||
- Nouvelles features API dans `/features/api`
|
||||
- Tests end-to-end dans `/features/e2e` (backend impliqué)
|
||||
**Environnement** : Ubuntu latest, Go 1.21+
|
||||
|
||||
---
|
||||
|
||||
#### Workflow Mobile (`mobile.yml`)
|
||||
|
||||
```yaml
|
||||
name: Mobile CI
|
||||
**Déclencheurs** :
|
||||
- Branches : `main`, `develop`
|
||||
- Chemins surveillés :
|
||||
- `mobile/**` : Code Flutter/Dart, assets, configuration
|
||||
- `features/ui/**` : Features BDD des tests UI
|
||||
- `features/e2e/**` : Features BDD end-to-end impliquant le mobile
|
||||
- `.github/workflows/mobile.yml` : Modifications du workflow lui-même
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main, develop]
|
||||
paths:
|
||||
- 'mobile/**' # Code Flutter modifié
|
||||
- 'features/ui/**' # Tests UI modifiés
|
||||
- 'features/e2e/**' # Tests E2E (impliquent mobile)
|
||||
- '.github/workflows/mobile.yml'
|
||||
pull_request:
|
||||
branches: [main, develop]
|
||||
paths:
|
||||
- 'mobile/**'
|
||||
- 'features/ui/**'
|
||||
- 'features/e2e/**'
|
||||
**Jobs exécutés** :
|
||||
- **Tests unitaires** : Exécution `flutter test` sur widgets et logique métier
|
||||
- **Tests d'intégration** : Tests d'intégration Flutter (interactions UI complexes)
|
||||
- **Lint** : Analyse statique `flutter analyze`
|
||||
- **Build Android** : Compilation APK release (dépend des tests)
|
||||
- **Build iOS** : Compilation IPA release sans codesign (dépend des tests)
|
||||
|
||||
jobs:
|
||||
test-unit:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: subosito/flutter-action@v2
|
||||
with:
|
||||
flutter-version: '3.16.0'
|
||||
- run: cd mobile && flutter test
|
||||
|
||||
test-integration:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: subosito/flutter-action@v2
|
||||
with:
|
||||
flutter-version: '3.16.0'
|
||||
- run: cd mobile && flutter test integration_test/
|
||||
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: subosito/flutter-action@v2
|
||||
with:
|
||||
flutter-version: '3.16.0'
|
||||
- run: cd mobile && flutter analyze
|
||||
|
||||
build-android:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [test-unit, test-integration, lint]
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: subosito/flutter-action@v2
|
||||
with:
|
||||
flutter-version: '3.16.0'
|
||||
- run: cd mobile && flutter build apk --release
|
||||
|
||||
build-ios:
|
||||
runs-on: macos-latest
|
||||
needs: [test-unit, test-integration, lint]
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: subosito/flutter-action@v2
|
||||
with:
|
||||
flutter-version: '3.16.0'
|
||||
- run: cd mobile && flutter build ios --release --no-codesign
|
||||
```
|
||||
|
||||
**Déclenché par** :
|
||||
- Modifications dans `/mobile` (code Flutter/Dart, assets, config)
|
||||
- Nouvelles features UI dans `/features/ui`
|
||||
- Tests end-to-end dans `/features/e2e` (mobile impliqué)
|
||||
**Environnement** :
|
||||
- Tests/Lint/Build Android : Ubuntu latest
|
||||
- Build iOS : macOS latest (requis pour Xcode)
|
||||
- Flutter 3.16.0+
|
||||
|
||||
---
|
||||
|
||||
#### Workflow Shared (`shared.yml`)
|
||||
|
||||
```yaml
|
||||
name: Shared CI
|
||||
**Déclencheurs** :
|
||||
- Branches : `main`, `develop`
|
||||
- Chemins surveillés :
|
||||
- `docs/**` : ADR, règles métier, documentation technique
|
||||
- `shared/**` : Contrats API, types partagés
|
||||
- `.github/workflows/shared.yml` : Modifications du workflow lui-même
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main, develop]
|
||||
paths:
|
||||
- 'docs/**' # Documentation modifiée
|
||||
- 'shared/**' # Code partagé modifié
|
||||
- '.github/workflows/shared.yml'
|
||||
pull_request:
|
||||
branches: [main, develop]
|
||||
paths:
|
||||
- 'docs/**'
|
||||
- 'shared/**'
|
||||
**Jobs exécutés** :
|
||||
- **Validation documentation** : Build MkDocs en mode strict (détecte erreurs markdown)
|
||||
- **Vérification liens** : Validation des liens internes/externes dans documentation
|
||||
- **Tests code partagé** : Exécution tests si du code partagé backend-mobile existe
|
||||
|
||||
jobs:
|
||||
docs-validation:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.11'
|
||||
- run: |
|
||||
pip install mkdocs mkdocs-material
|
||||
mkdocs build --strict
|
||||
|
||||
docs-links:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: lycheeverse/lychee-action@v1
|
||||
with:
|
||||
args: 'docs/**/*.md'
|
||||
|
||||
shared-tests:
|
||||
runs-on: ubuntu-latest
|
||||
if: contains(github.event.head_commit.modified, 'shared/')
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
# Tests pour code partagé si nécessaire
|
||||
```
|
||||
|
||||
**Déclenché par** :
|
||||
- Modifications dans `/docs` (ADR, règles métier, documentation technique)
|
||||
- Modifications dans `/shared` (contrats API, types partagés)
|
||||
**Environnement** : Ubuntu latest, Python 3.11+
|
||||
|
||||
---
|
||||
|
||||
@@ -333,31 +194,15 @@ Les tests end-to-end dans `/features/e2e/` **déclenchent les deux workflows** (
|
||||
|
||||
### Validation
|
||||
|
||||
```bash
|
||||
# Test 1 : Commit backend-only
|
||||
git add backend/
|
||||
git commit -m "test: backend change"
|
||||
git push
|
||||
# → Vérifier que SEULEMENT backend.yml s'exécute
|
||||
**Scénarios de test à valider** :
|
||||
|
||||
# Test 2 : Commit mobile-only
|
||||
git add mobile/
|
||||
git commit -m "test: mobile change"
|
||||
git push
|
||||
# → Vérifier que SEULEMENT mobile.yml s'exécute
|
||||
1. **Commit backend uniquement** : Modifications dans `/backend` → Vérifier exécution isolée de `backend.yml`
|
||||
2. **Commit mobile uniquement** : Modifications dans `/mobile` → Vérifier exécution isolée de `mobile.yml`
|
||||
3. **Commit features E2E** : Modifications dans `/features/e2e` → Vérifier exécution conjointe de `backend.yml` ET `mobile.yml`
|
||||
4. **Commit documentation uniquement** : Modifications dans `/docs` → Vérifier exécution isolée de `shared.yml`
|
||||
5. **Commit mixte** : Modifications backend + mobile + docs → Vérifier exécution des 3 workflows en parallèle
|
||||
|
||||
# Test 3 : Commit E2E
|
||||
git add features/e2e/
|
||||
git commit -m "test: e2e change"
|
||||
git push
|
||||
# → Vérifier que backend.yml ET mobile.yml s'exécutent
|
||||
|
||||
# Test 4 : Commit docs-only
|
||||
git add docs/
|
||||
git commit -m "docs: update ADR"
|
||||
git push
|
||||
# → Vérifier que SEULEMENT shared.yml s'exécute
|
||||
```
|
||||
**Vérifications** : Consulter l'onglet "Actions" de GitHub pour confirmer quels workflows se sont déclenchés.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user