Source code of my website
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

✨ : update with clever-cloud use-case

+99
+99
content/posts/2025-12-19-mise-en-place/index.md
··· 1 1 --- 2 2 date: 2025-12-19 3 + lastmod: 2025-12-20 3 4 language: fr 4 5 title: Adieu `direnv`, Bonjour `mise` 5 6 tags: ··· 386 387 ``` 387 388 388 389 C'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. 390 + 391 + ## Déployer sur Clever Cloud avec `mise` 392 + 393 + Maintenant qu'on a vu comment fonctionnait `mise`, j'ai envie d'implémenter un cas concret supplémentaire. 394 + 395 + 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`. 396 + 397 + Est-ce qu'il est facile de migrer tout ça vers `mise` ? 398 + 399 + ### L'installation du CLI `clever-tools` 400 + 401 + Installer le CLI de Clever Cloud avec `mise` se fait en une commande : `mise use npm:clever-tools`. 402 + 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. 403 + 404 + ```shell 405 + $ mise use npm:clever-tools 406 + mise ~/workspaces/codekaio/codeka.io/mise.toml tools: npm:clever-tools@4.4.1 407 + ``` 408 + 409 + Une fois la commande exécutée, `clever-tools` apparaît dans le fichier `mise.toml`, dans le bloc `[tools]` : 410 + 411 + ```toml 412 + [tools] 413 + "npm:clever-tools" = "latest" 414 + ``` 415 + 416 + ### `CLEVER_TOKEN` et `CLEVER_SECRET` 417 + 418 + 419 + 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` : 420 + 421 + ```shell 422 + $ clever login 423 + Opening https://console.clever-cloud.com/cli-oauth?cli_version=4.4.1 in your browser to log you in… 424 + Login successful as Julien WITTOUCK <julien@codeka.io> 425 + ``` 426 + 427 + 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` : 428 + 429 + ```json 430 + {"token":"081e54b8-853b-4e8f-a000-8f314238c5c3","secret":"6834da77-9edb-4e4a-bde8-9a6109934311","expirationDate":"2026-12-21T11:35:15.291Z"} 431 + ```` 432 + 433 + 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`: 434 + 435 + ```shell 436 + $ jq -r '.token' ~/.config/clever-cloud/clever-tools.json | mise set --raw --age-encrypt --prompt CLEVER_TOKEN 437 + $ jq -r '.secret' ~/.config/clever-cloud/clever-tools.json | mise set --raw --age-encrypt --prompt CLEVER_SECRET 438 + ``` 439 + 440 + Les deux variables apparaissent bien dans mon `mise.toml` : 441 + 442 + ```toml 443 + [env] 444 + CLEVER_TOKEN = { age = "XXX" } 445 + CLEVER_SECRET = { age = "YYY" } 446 + ``` 447 + 448 + J'ai fait la même chose avec mon `APP_ID` afin de pouvoir également le stocker sans souci sur git : 449 + 450 + ```shell 451 + $ mise set --raw --age-encrypt --prompt PROD_APP_ID 452 + Enter value for PROD_APP_ID ************ 453 + ``` 454 + 455 + ### La tasks 456 + 457 + É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 : 458 + 459 + ```toml 460 + [tasks."clever:deploy"] 461 + description = "Déploie sur l'alias Clever Cloud de production" 462 + run = ''' 463 + clever link $PROD_APP_ID --alias codeka.io 464 + clever deploy --alias codeka.io 465 + ''' 466 + ``` 467 + 468 + Il suffit alors ensuite de lancer la commande `mise clever:deploy` et mon site est en production : 469 + 470 + ```shell 471 + mise clever:deploy 472 + [clever:deploy] $ clever link $PROD_APP_ID --alias codeka.io 473 + ✓ Application [redacted] has been successfully linked to local alias codeka.io! 474 + 🚀 Deploying codeka.io 475 + Application ID [redacted] 476 + Organisation ID [redacted] 477 + 478 + 🔀 Git information 479 + Remote head 366fb84818efb3c9e67a758a99c7fa5c53466b3b (refs/heads/main) 480 + Deployed commit 366fb84818efb3c9e67a758a99c7fa5c53466b3b 481 + Local commit 4cf8d3a5d18ea0d12411fc16e362a47224fb57b8 [will be deployed] 482 + 483 + 🔄 Deployment progress 484 + → Pushing source code to Clever Cloud… 485 + ✓ Code pushed to Clever Cloud 486 + → Waiting for deployment to start… 487 + ``` 389 488 390 489 ## Conclusion 391 490