Configuration de la communication entre Jenkins et Gitea
Je veux me simplifier la vie.
Mon système de versioning, Gitea, devrait prévenir ma forge logiciel, Jenkins, qu’il a une nouvelle version à peut être devoir faire passer par la forge.
Webhook depuis Gitea vers Jenkins, Jenkins qui filtre correctement la requête pour ne pas tourner quand ce n’est pas nécessaire.
Mon but est d’avoir une gestion automatique de cette structure pour la gestion de mon blog:
Jenkins : Pipeline CD (PROD)
┌──────────────────────────┐
main │ [ Version Production ] │
└─────────────▲────────────┘
│
PR Unique
│
Jenkins : Pipeline CI/CD (STAGING)
┌──────────────────────────┐
develop │ [ Intégration ] │
└──────▲──────▲──────▲─────┘
│ │ │
┌───────────┘ │ └──────────┐
│ PR #1 │ PR #2 │ PR #N
│ │ │
┌──┴───┐ ┌──┴───┐ ┌──┴───┐
Branches PR │ Code │ │ Code │ │ Code │
(0 à N) └──────┘ └──────┘ └──────┘
Jenkins : Pipelines CI (Validation des tests)
La compilation est la même pour toutes les parties, seul la copie finale change pour main et develop.
- main copie le résultat sur le serveur accessible sur internet à tout le monde.
- develop copie le résultat sur le serveur de test qui n’est accessible qu’à certaines personnes.
Gestion SSO dans Yunohost
Configuration de Gitea
Génération d’un token API
Profil → Settings → Applications → Generate Token
Donne-lui les droits repository et issue (pour les PR)
Copie le token
Configuration de Jenkins
- Plugin Jenkins à installer:
- Gitea Configurer: Manage Jenkins → System → Gitea Servers
Name : gitea-local
URL : http://<IP_SERVEUR>:3000 instance Gitea
Token : (credential avec le token API créé ci-dessus)
- SCM Filter Branch PR Plugin. Configurer Filter by name including PRs : Destined for the branch (wildcard or regex) dans la configuration du projet.
Création du pipeline Jenkins
Utiliser Multibranch Pipelines!
TODO: Webhook retester une façon lus propre et rapide d’y arriver