10.03 — Workflows ocarina-example#
Voir aussi
../07-ocarina-example/11-ci.md
Vue d’ensemble#
| Workflow | Trigger | OS | Effet | Note |
|---|---|---|---|---|
main_ci.yml | push/PR main, dispatch | ubuntu + windows × py 3.14 | make check-coding-style (mypy + ruff). | Gate PR rapide |
dev_ci.yml | push dev, dispatch | ubuntu × py 3.14 | Idem | Pour branches dev |
e2e.yml | workflow_dispatch (env OC) | ubuntu + service Redis + Firefox + geckodriver 0.35.0 | Run complet de la suite + upload .screenshots/ .ocarina_logs/ .reports/ | Manuel uniquement |
vs ocarina/main_ci.yml#
| Aspect | ocarina/main_ci.yml | ocarina-example/main_ci.yml |
|---|---|---|
| Tests unitaires | Oui (pytest + cram) | Non |
| Allure history | Oui | Non |
| GitHub Pages deploy | Oui (Allure report) | Non |
| Matrice OS | Oui (ubuntu + windows) | Oui (idem) |
| Matrice Python | Optionnel (3.14 ou 3.14+3.15) | Non (3.14 seul) |
→ ocarina se teste (tests unitaires) en CI. ocarina-example n’est soumis qu’à des tests statiques en CI ; ses tests dynamiques (e2e) sont déclenchés à la demande via e2e.yml.
Le service Redis sidecar#
services:
redis:
image: redis:8.8.0
ports: [6379:6379]
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5GitHub Actions “spins” un container Redis en parallèle du job. Accessible sur localhost:6379. Healthcheck redis-cli ping.
Les tests peuvent donc utiliser Redis pour les locks distribués (OTP_SEND_LOCK_KEY) sans avoir à provisionner un Redis externe.
environment: OC#
e2e:
runs-on: ubuntu-latest
environment: OC- Contient les
secrets:IGOR_API_KEY,DASH_USERNAME,DASH_PASSWORD. - Peut requérir une approbation manuelle avant de lancer (utile si on consomme du quota).
L’utilisateur qui dispatch le workflow doit avoir accès à l’environment OC.
Artefacts#
- name: Upload artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: e2e-traces
path: |
.screenshots/
.ocarina_logs/
.reports/if: always() : upload même si le run fail. Pour pouvoir inspecter pourquoi ça a fail.
.screenshots/: toutes les captures d’écran..ocarina_logs/: arbre de logscycle/campaign/suite/test.log..reports/: sorties des plugins (DOCX + JSON).
cache venv hashé sur pyproject#
- uses: actions/cache@v5
with:
path: .venv
key: venv-${{ runner.os }}-py-${{ hashFiles('pyproject.toml') }}hashFiles('pyproject.toml') : si pyproject.toml change (nouvelle dep, version bumpée), la cache key change → cache miss → réinstall propre.
Setup Firefox#
- name: Setup Firefox
uses: browser-actions/setup-firefox@<commit-sha>Action publique qui installe Firefox version matching le geckodriver téléchargé.
Le version pinning par SHA est utilisé partout pour toutes actions non-officielles (non préfixées par actions/) pour mitiger les risques de Supply Chain Attack.