Pipeline CI/CD¶
Le thème Zer0-Mistakes utilise GitHub Actions pour l'intégration et le déploiement continus, en automatisant les tests, la compilation et la publication.
Vue d'ensemble du workflow¶
graph LR
A[Push/PR] --> B[CI Tests]
B --> C{Pass?}
C -->|Yes| D[Version Bump]
C -->|No| E[Fix Issues]
D --> F[Build Gem]
F --> G[Publish Release]
G --> H[Deploy Docs]
Workflows disponibles¶
| Workflow | Déclencheur | Objectif |
|---|---|---|
ci.yml |
Push, PR | Exécuter les tests et validations |
version-bump.yml |
Push sur main, Manuel | Incrémenter la version et taguer |
release.yml |
Push de tag | Compiler et publier le gem |
codeql.yml |
Push, PR, Planifié | Analyse de sécurité |
update-dependencies.yml |
Planifié, Manuel | Mettre à jour les gems Ruby |
convert-notebooks.yml |
Push | Convertir les notebooks Jupyter |
Workflow CI (ci.yml)¶
Déclencheurs¶
Jobs¶
1. Matrice de tests¶
Tests sur plusieurs versions de Ruby :
2. Étapes de compilation¶
steps:
- uses: actions/checkout@v4
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby-version }}
bundler-cache: true
- name: Run tests
run: ./test/test_runner.sh
- name: Build Jekyll site
run: bundle exec jekyll build
- name: Build gem
run: gem build jekyll-theme-zer0.gemspec
Contrôles de qualité¶
- Linting : validation YAML, Markdown
- Build : compilation du site Jekyll
- Tests : exécution de la suite de tests complète
- Gem : vérification de la construction du package
Workflow de publication (release.yml)¶
Déclencheur¶
Étapes de publication¶
- Checkout de la version taguée
- Compilation du package gem
- Test de l'installation du gem
- Publication sur RubyGems.org
- Création d'une GitHub Release
- Téléversement des ressources de la release
Ressources de la release¶
jekyll-theme-zer0-X.Y.Z.gem- Script d'installation
- Notes de version (depuis CHANGELOG)
Variables d'environnement¶
Secrets requis¶
| Secret | Objectif |
|---|---|
RUBYGEMS_API_KEY |
Publication du gem |
GITHUB_TOKEN |
Création de la release (automatique) |
Configuration¶
Protection des branches¶
Règles de la branche main¶
- Exiger des revues de pull request
- Exiger la réussite des contrôles de statut :
test (3.2, ubuntu-latest)buildCodeQL- Exiger un historique linéaire
Contrôles de statut¶
Stratégie de cache¶
Dépendances Ruby¶
Cache de compilation Jekyll¶
{% raw %}
- uses: actions/cache@v4
with:
path: |
.jekyll-cache
_site
key: jekyll-${{ hashFiles('_config.yml') }}
{% endraw %}
Artefacts¶
Résultats des tests¶
Sorties de compilation¶
Notifications¶
Notifications d'échec¶
Configurez les notifications pour les échecs de workflow :
- name: Notify on failure
if: failure()
uses: actions/github-script@v7
with:
script: |
github.rest.issues.createComment({
issue_number: context.issue.number,
body: '❌ CI failed. Please check the logs.'
})
Débogage des workflows¶
Activer la journalisation de débogage¶
Définissez les secrets du dépôt :
ACTIONS_RUNNER_DEBUG:trueACTIONS_STEP_DEBUG:true
Accès SSH¶
Pour déboguer dans le runner :
Bonnes pratiques¶
Gardez des workflows rapides¶
- Mettez les dépendances en cache
- Exécutez les tâches en parallèle
- Ignorez les étapes inutiles
Utilisez des workflows réutilisables¶
Limitez les exécutions simultanées¶
Dépannage¶
Les tests passent en local mais échouent en CI¶
- Vérifiez les différences de version de Ruby
- Vérifiez les variables d'environnement
- Recherchez les tests sensibles au timing
Le workflow ne se déclenche pas¶
- Vérifiez les règles de protection de branche
- Vérifiez les filtres de chemin
- Recherchez les erreurs dans le fichier de workflow
Permission refusée¶
Assurez-vous que le workflow dispose des permissions requises :
Ressources associées¶
Voir aussi¶
- [[Development]]
- [[Testing]]
- [[Release Management]]
- [[Security Scanning]]