···11---
22date: 2025-12-19
33+lastmod: 2025-12-20
34language: fr
45title: Adieu `direnv`, Bonjour `mise`
56tags:
···386387```
387388388389C'est plutôt pratique de pouvoir avoir quelques scripts packagés avec cet outil. Ça permet surtout de ne pas avoir à installer d'autres outils comme `task` ou `just` sur mes machines.
390390+391391+## Déployer sur Clever Cloud avec `mise`
392392+393393+Maintenant qu'on a vu comment fonctionnait `mise`, j'ai envie d'implémenter un cas concret supplémentaire.
394394+395395+Le site que vous lisez est hébergé sur Clever Cloud. J'ai donc sur mon poste des variables d'environenment `CLEVER_TOKEN` et `CLEVER_SECRET` qui traînent, un fichier `.clever.json` avec les liens vers mes apps, ainsi qu'un runtime node avec le CLI `clever-tools`.
396396+397397+Est-ce qu'il est facile de migrer tout ça vers `mise` ?
398398+399399+### L'installation du CLI `clever-tools`
400400+401401+Installer le CLI de Clever Cloud avec `mise` se fait en une commande : `mise use npm:clever-tools`.
402402+Le préfixe `npm:` permet d'indiquer à `mise` où aller chercher le package, cela ouvre tout un tas de cas d'usages intéressants. Fini les `npm install -g` (ou pire `sudo npm install -g`) dans tous les sens, on installe juste l'outil au bon endroit, et la dépendance devient même explicite.
403403+404404+```shell
405405+$ mise use npm:clever-tools
406406+mise ~/workspaces/codekaio/codeka.io/mise.toml tools: npm:clever-tools@4.4.1
407407+```
408408+409409+Une fois la commande exécutée, `clever-tools` apparaît dans le fichier `mise.toml`, dans le bloc `[tools]` :
410410+411411+```toml
412412+[tools]
413413+"npm:clever-tools" = "latest"
414414+```
415415+416416+### `CLEVER_TOKEN` et `CLEVER_SECRET`
417417+418418+419419+Pour s'authentifier aux API, le CLI `clever-tools` utilise 2 variables d'environnement `CLEVER_TOKEN` et `CLEVER_SECRET`, qu'on peut récupérer en exécutant la commande `clever login` :
420420+421421+```shell
422422+$ clever login
423423+Opening https://console.clever-cloud.com/cli-oauth?cli_version=4.4.1 in your browser to log you in…
424424+Login successful as Julien WITTOUCK <julien@codeka.io>
425425+```
426426+427427+Les variables sont alors récupérables depuis la fenêtre de navigateur qui sert à l'authentification, et sont déposées dans le fichier `.config/clever-tools/config.json` :
428428+429429+```json
430430+{"token":"081e54b8-853b-4e8f-a000-8f314238c5c3","secret":"6834da77-9edb-4e4a-bde8-9a6109934311","expirationDate":"2026-12-21T11:35:15.291Z"}
431431+````
432432+433433+Pour stocker les variables d'environnement de manière sécurisée avec `mise`, c'est plutôt facile, j'utilise la commande `mise set` avec les valeurs que je récupère directement depuis le fichier `.config/clever-tools/config.json`:
434434+435435+```shell
436436+$ jq -r '.token' ~/.config/clever-cloud/clever-tools.json | mise set --raw --age-encrypt --prompt CLEVER_TOKEN
437437+$ jq -r '.secret' ~/.config/clever-cloud/clever-tools.json | mise set --raw --age-encrypt --prompt CLEVER_SECRET
438438+```
439439+440440+Les deux variables apparaissent bien dans mon `mise.toml` :
441441+442442+```toml
443443+[env]
444444+CLEVER_TOKEN = { age = "XXX" }
445445+CLEVER_SECRET = { age = "YYY" }
446446+```
447447+448448+J'ai fait la même chose avec mon `APP_ID` afin de pouvoir également le stocker sans souci sur git :
449449+450450+```shell
451451+$ mise set --raw --age-encrypt --prompt PROD_APP_ID
452452+Enter value for PROD_APP_ID ************
453453+```
454454+455455+### La tasks
456456+457457+Écrire les tasks pour `mise` est alors plutôt facile, il suffit d'enchaîner les deux commandes `clever link` et `clever deploy` dans un seul script :
458458+459459+```toml
460460+[tasks."clever:deploy"]
461461+description = "Déploie sur l'alias Clever Cloud de production"
462462+run = '''
463463+clever link $PROD_APP_ID --alias codeka.io
464464+clever deploy --alias codeka.io
465465+'''
466466+```
467467+468468+Il suffit alors ensuite de lancer la commande `mise clever:deploy` et mon site est en production :
469469+470470+```shell
471471+mise clever:deploy
472472+[clever:deploy] $ clever link $PROD_APP_ID --alias codeka.io
473473+✓ Application [redacted] has been successfully linked to local alias codeka.io!
474474+🚀 Deploying codeka.io
475475+ Application ID [redacted]
476476+ Organisation ID [redacted]
477477+478478+🔀 Git information
479479+ Remote head 366fb84818efb3c9e67a758a99c7fa5c53466b3b (refs/heads/main)
480480+ Deployed commit 366fb84818efb3c9e67a758a99c7fa5c53466b3b
481481+ Local commit 4cf8d3a5d18ea0d12411fc16e362a47224fb57b8 [will be deployed]
482482+483483+🔄 Deployment progress
484484+ → Pushing source code to Clever Cloud…
485485+ ✓ Code pushed to Clever Cloud
486486+ → Waiting for deployment to start…
487487+```
389488390489## Conclusion
391490