tuto5: add part on renovate
This commit is contained in:
parent
4259fa785c
commit
75c35a36d1
12 changed files with 181 additions and 61 deletions
|
|
@ -1,4 +1,5 @@
|
|||
## Intégration continue
|
||||
Intégration continue
|
||||
--------------------
|
||||
|
||||
Une fois Gitea et Drone installés et configurés, nous allons pouvoir rentrer
|
||||
dans le vif du sujet : faire de l'intégration continue sur notre premier projet !
|
||||
|
|
|
|||
23
tutorial/devops/renovate-ansible.md
Normal file
23
tutorial/devops/renovate-ansible.md
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
Voici à quoi pourrait ressembler le playbook Ansible démarrant notre conteneur
|
||||
Renovatebot :
|
||||
|
||||
<div lang="en-US">
|
||||
```yaml
|
||||
- name: Launch renovate container
|
||||
docker_container:
|
||||
name: renovate
|
||||
image: renovate/renovate
|
||||
state: started
|
||||
restart_policy: no
|
||||
memory: 2G
|
||||
networks:
|
||||
- name: gitea
|
||||
env:
|
||||
RENOVATE_ENDPOINT: "http://gitea:3000/api/v1/"
|
||||
RENOVATE_PLATFORM: "gitea"
|
||||
RENOVATE_TOKEN: "{{ renovate_token }}"
|
||||
RENOVATE_GIT_AUTHOR: "Renovatebot <renovate@gitea.sample>"
|
||||
RENOVATE_AUTODISCOVER: "true"
|
||||
RENOVATE_LOG_LEVEL: "info"
|
||||
```
|
||||
</div>
|
||||
78
tutorial/devops/renovate-end.md
Normal file
78
tutorial/devops/renovate-end.md
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
Dès que le conteneur sera lancé, nous devrions voir apparaître une ou plusieurs
|
||||
*pull-requests* pour le projet `youp0m`. Si votre CI est configurée
|
||||
correctement, des tests automatiques seront lancés.
|
||||
|
||||
Le conteneur s'arrête dès qu'il a terminé d'analysé tous les dépôts. Vous
|
||||
devrez le relancer si vous attendez une nouvelle action de la part de
|
||||
Renovatebot. Il est courant de le lancer entre chaque heure et 2 ou 4 fois par
|
||||
jour.
|
||||
|
||||
De très nombreuses options permettent d'adapter le comportement de Renovatebot
|
||||
aux besoins de chaque projet. La configuration se fait au travers d'un fichier
|
||||
`renovate.json` qui se trouve généralement à la racine du dépôt.
|
||||
|
||||
Pour avoir un aperçu de toutes les possibilités offertes par renovatebot,
|
||||
consultez la liste des éléments de configuration :
|
||||
<https://docs.renovatebot.com/configuration-options/>
|
||||
\
|
||||
|
||||
Ne soyez pas effrayé par la liste interminable d'options. Il est vrai que la
|
||||
première fois, on peut se sentir submergé de possibilités, mais il faut noter
|
||||
que le projet arriver avec des options par défaut plutôt correctes, et que l'on
|
||||
peut facilement avoir une configuration commune pour tous nos dépôts, à travers
|
||||
les *presets*.
|
||||
|
||||
Un certain nombre de *presets* sont distribués par défaut, voici la liste
|
||||
(humainement lisible cette fois) :
|
||||
<https://docs.renovatebot.com/presets-default/>
|
||||
|
||||
Voici un exemple de configuration que vous pouvez utilisé comme base de tous
|
||||
vos projets :
|
||||
|
||||
<div lang="en-US">
|
||||
```json
|
||||
{
|
||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||
"extends": [
|
||||
"local>renovate/renovate-config"
|
||||
]
|
||||
}
|
||||
```
|
||||
</div>
|
||||
|
||||
Ceci ira chercher une configuration dans le fichier `default.json` du dépôt
|
||||
`renovate/renovate-config`. À condition que votre utilisateur Renovatebot
|
||||
s'appelle effectivement `renovate`.
|
||||
|
||||
Voici un exemple de fichier `default.json` que vous pourriez vouloir utiliser :
|
||||
|
||||
```json
|
||||
{
|
||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||
"packageRules": [
|
||||
{
|
||||
"description": "Opt-out minimum Go version updates",
|
||||
"matchManagers": ["gomod"],
|
||||
"matchDepTypes": ["golang"],
|
||||
"enabled": false
|
||||
}
|
||||
],
|
||||
"extends": [
|
||||
"config:base",
|
||||
":dependencyDashboard",
|
||||
":enableVulnerabilityAlertsWithLabel('security')",
|
||||
"group:recommended"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Attention, on ne le répétera jamais assez, mais Renovatebot peut vite devenir
|
||||
infernal, car il va créer de nombreuses *pull-requests*, inlassablement. Il
|
||||
convient de rapidement activer la fusion automatique des mises à jour pour
|
||||
lesquelles vous avez confiances et pour lesquelles vous ne feriez qu'appuyer
|
||||
sur le bouton de fusion, sans même tester vous-même. La fonctionnalité est
|
||||
décrite en détail dans la documentation[^RENOVATE_AUTOMERGE] et explique les
|
||||
différentes stratégies. Néanmoins, il est nécessaire d'avoir une bonne suite de
|
||||
tests avant d'envisager d'utiliser une telle fonctionnalité.
|
||||
|
||||
[^RENOVATE_AUTOMERGE]: <https://docs.renovatebot.com/key-concepts/automerge/>
|
||||
60
tutorial/devops/renovate.md
Normal file
60
tutorial/devops/renovate.md
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
Autres outils indispensables
|
||||
----------------------------
|
||||
|
||||
### Maintient à jour des dépendances
|
||||
|
||||
Une opération fastidieuse, souvent oubliée sitôt le projet envoyé en
|
||||
production, c'est la mise à jour des dépendances applicatives. Fastidieux car
|
||||
il faut d'une part être informé qu'une mise à jour est disponible, c'est-à-dire
|
||||
qu'il faut suivre les mails, parfois nombreux, informant des nouvelles
|
||||
*releases*, parfois il s'agir de newslettre, ou encore parfois aucune
|
||||
notification ne peut être programmée, il faut se rendre régulièrement sur un
|
||||
site pour savoir si oui ou non une mise à jour est disponible.
|
||||
|
||||
Et ce n'est pas tout puisqu'une fois la nouvelle version identifiée, il faut la
|
||||
récupérer, vérifier que tout compile et que les tests passent... On peut vite
|
||||
comprendre que personne ne veut avoir cette tâche.
|
||||
|
||||
Heureusement pour nous, des outils existent pour faire tout cela ! Dependabot
|
||||
et Renovatebot sont deux projets qui vont nous aider à maintenir nos
|
||||
projets. Que ce soit pour corriger une vulnérabilité dans un module NodeJS, un
|
||||
nouvelle version d'un conteneur Docker ou une évolution majeure d'un framework,
|
||||
nous serons alerté et pourrons agir en conséquence, en sachant si les tests
|
||||
passent ou pas, avec l'aide de notre système d'intégration continue.
|
||||
|
||||
Pour la suite de notre expérience, nous allons prendre en main Renovatebot qui
|
||||
semble aujourd'hui la solution la plus aboutie des deux.
|
||||
|
||||
{height=10cm}
|
||||
|
||||
|
||||
### Installation de Renovatebot
|
||||
|
||||
Une fois de plus, nous allons déployer ... un conteneur Docker ! Mais avant
|
||||
cela, il va falloir créer un utilisateur dédié à Renovatebot dans notre forge.
|
||||
Cet utilisateur sera utilisé par le *bot* pour participer à vos projets : il va
|
||||
régulièrement cloner vos dépôts, rechercher les dépendances pour les outils
|
||||
qu'il maîtrise, puis préparer des *pull-requests* dès qu'il détectera une
|
||||
nouvelle version d'une dépendance.
|
||||
|
||||
Dès lors que vous aurez créé le nouvel utilisateur dans Gitea, il faudra
|
||||
générer un jeton d'accès, car aussi doué soit Renovatebot, il préfère utiliser
|
||||
l'API HTTP plutôt que de cliquer sur les boutons. Dans les paramètres de
|
||||
l'utilisateur que vous aurez créé, sous l'onglet « Applications », vous
|
||||
trouverez un encadré « Gérer les jetons d'accès ». Contrairement à DroneCI pour
|
||||
lequel il fallait créer une application OAuth2, ici il s'agit bien du formulaire en
|
||||
haut de la page.
|
||||
|
||||
::::: {.warning}
|
||||
|
||||
Il est bien question de créer un jeton d'accès pour l'utilisateur renovatebot
|
||||
que vous avez créé, et non pas pour votre compte utilisateur.
|
||||
|
||||
Bien que cela fonctionnerait parfaitement, le bot parlerait en votre nom, il
|
||||
serait alors difficile de suivre les requêtes.
|
||||
|
||||
:::::
|
||||
|
||||
Juste avant de lancer le conteneur, assurez-vous que votre utilisateur
|
||||
Renovatebot a bien accès en écriture aux dépôts que vous souhaitez qu'il
|
||||
surveille. Sans quoi il ne sera pas en mesure de vous aider.
|
||||
BIN
tutorial/devops/renovatebot-pr.png
Normal file
BIN
tutorial/devops/renovatebot-pr.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 161 KiB |
Loading…
Add table
Add a link
Reference in a new issue