Skip to content

Commit

Permalink
docs(Onboarding): mise à jour de la doc de déploiement suite à la mis…
Browse files Browse the repository at this point in the history
…e en place de release-please (#4873)
  • Loading branch information
raphodn authored Jan 13, 2025
1 parent 4d0b877 commit 4b7735d
Showing 1 changed file with 67 additions and 36 deletions.
103 changes: 67 additions & 36 deletions docs/ONBOARDING.md
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,6 @@ npm run serve

> Un bug connu de code legacy avec Webpack sur les versions récentes entraine l'erreur suivante `code: 'ERR_OSSL_EVP_UNSUPPORTED'`. Pour éviter d'avoir à configurer une variable d'environnement en local on peut utiliser le script `npm run serve:ssl-legacy` qui intègre la configuration.

### Terminal Vue3

```
Expand All @@ -239,7 +238,9 @@ le commit est annulé. Il faut donc que toutes les vérifications passent pour q
compte. Si exceptionnellement vous voulez commiter malgré qu'une vérification ne passe pas, c'est possible
avec `git commit -m 'my message' --no-verify`.

## Lancer les tests pour l'application Django
## Lancer les tests

### Django

La commande pour lancer les tests Django est :

Expand All @@ -249,7 +250,7 @@ python manage.py test

Sur VSCode, ces tests peuvent être debuggés avec la configuration "Python: Tests", présente sur le menu "Run".

## Lancer les tests pour l'application Vue2
### Vue2

Il faut d'abord se placer sur "/frontend", ensuite la commande pour lancer les tests VueJS est :

Expand All @@ -267,6 +268,7 @@ python manage.py createsuperuser
```

## Utilisation des magic token

Les `magic token` permettent de se connecter à la place d'un utilisateur à des fins de support. Voici comment les utiliser :
* Générer un token depuis l'interface admin de Django
* Déconnecter-vous ou utiliser une navigation privée (recommandé)
Expand Down Expand Up @@ -313,56 +315,85 @@ Des extensions utiles :
- vuetify-vscode
- Spell Right

## Test déploiement en locale
## Git & Github

Les commandes lancées sur CleverCloud sont listées dans `clevercloud/python.json`.
### Branches

- chaque branche doit partir de `staging`
- `main` sert uniquement pour les déploiements

### Commits

Pas de convention particulière à respecter !
- anglais ou français
- pas besoin de respecter les Conventional Commits (voir ci-dessous)

.env :
### PR

- le nommage des PR doit respecter les [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/)
- pour pouvoir être bien interprété par `release-please`
- au moins 1 review est nécessaire avant de pouvoir merger
- les PR sont **squashées** avant d'être mergées (option "Squash & Merge" sur Github)
- pour avoir un historique simple et clair
- et ainsi plus facilement retrouver la PR qui a effectué un changement donné

### CI

Lorsqu'une PR est ouverte, plusieurs Github Actions vont tourner (tests, sécurité, reviewers...). Elles sont configurées dans le dossier `.github/workflows`.

### Open source

L'ensemble de notre code est ouvert, ne pushez pas de secrets :)

## Déploiement

### Rappels

- sur Clever Cloud, notre app de staging est branchée sur la branche `staging`
- sur Clever Cloud, nos apps de demo et de prod sont branchées sur la branche `main`
- nous utilisons `release-please` (voir #4379) pour automatiser une partie nos déploiements (en particulier le versionnage & la documentation des releases)

### Test déploiement en locale

Les commandes lancées sur CleverCloud sont listées dans `clevercloud/python.json`.

```
// .env
DEBUG=False
DEBUG_FRONT=False
```

Dans le dossier principal, lancez :
`bash ./clevercloud/test-build-with-vue3.sh`
`python manage.py runserver --insecure`
Dans le dossier principal, lancez
```bash
bash ./clevercloud/test-build-with-vue3.sh
python manage.py runserver --insecure
```

En prod, faut ajouter `CC_PRE_BUILD_HOOK=./clevercloud/pre-build-hook.sh`

## Déploiement
### Lancer un déploiement

Vérification pre-déploiment
#### Vérification pre-déploiment

- est-ce que les tests passent sur staging ?
- est-ce que tout va bien côté Clever Cloud ?
- est-ce qu'il y a des cherry-picks sur main qui n'existent pas sur staging ?

Étapes :

- https://github.com/betagouv/ma-cantine/releases > "Draft a new release"
- "Choose a tag" > taper la date d'aujourd'hui en format YYYY-MM-DD > "Create a new tag on publish"
- "Generate release notes"
- Modifier les notes générés (indications ci-dessous)
- "Publish release"
- Si il y a des variables d'environnement à ajouter, ajoutez-les sur prod et demo côté Clever Cloud
- avec staging : `git pull`
- preparer la branche main en locale : `git checkout main` `git rebase staging`
- `git push` (peut-être `git push -f`)
- Le déploiement va commencer automatiquement. Ça prend un moment pour déployer côté Clever Cloud, suivez la progression là-bas.
- Une fois que le déploiement est fait, envoyer un message sur mattermost canal produit pour tenir l'équipe au courant.

### Release notes

Vous pourrez modifier les notes dans un éditeur pour être plus rapide.

- supprimer toutes les lignes dependabot et les remplacer avec une ligne "MAJ dépendances"
- supprimer la partie "by @username in https://..."
- faire n'importe quel autre changement pour rendre la liste facilement comprensible par tout le monde

### Debugging

Si jamais vous doutez/si il y a un problème, parlez avec un.e autre dév.
#### Etapes à suivre

1. grâce à `release-please`, une PR nommée `chore(staging): release YYYY.X.Z` est ouverte, et liste les PR mergées sur `staging` depuis la dernière release
2. il faut merger cette PR. Il se passera alors 2 choses :
- une nouvelle release va être automatiquement crée : voir [la liste des releases](https://github.com/betagouv/ma-cantine/releases)
- optionnel : supprimer toutes les lignes dependabot et les remplacer avec une ligne "MAJ dépendances"
- le CHANGELOG.md sera mis à jour sur `staging`
3. il reste maintenant à déployer (manuellement) en mettant à jour la branche `main`
- si il y a des variables d'environnement à ajouter, ajoutez-les sur prod et demo côté Clever Cloud
- en local, preparer la branche `main` : `git checkout staging && git pull && git checkout main && git rebase staging`
- puis publier les changements : `git push` (peut-être `git push -f`)
4. le déploiement va commencer automatiquement. Ça prend un moment pour déployer côté Clever Cloud... suivez la progression là-bas.
5. une fois le déploiement terminé, envoyer un message sur mattermost (canal produit) pour tenir l'équipe au courant ! (en copiant-collant le contenu de la dernière release)

> Si jamais vous doutez/si il y a un problème, parlez avec un.e autre dév.
## Docker

Expand Down

0 comments on commit 4b7735d

Please sign in to comment.