ProxyAuthK8S

Tâches (Taskfile)

Les commandes de développement, de génération, de test et d'audit

Toutes les commandes passent par Task. task --list affiche la liste complète avec leur description ; cette page regroupe les plus utiles.

Workspace JS

Le front, son client d'API et ce site forment un workspace pnpm de trois paquets (pnpm-workspace.yaml) : @proxy-auth-k8s/front (apps/front), @proxy-auth-k8s/front-api (libs/front/front-api, consommé en source) et @proxy-auth-k8s/docs (docs). Un seul pnpm install à la racine installe les trois, avec un seul lockfile. Chaque paquet expose les mêmes noms de scripts (dev, build, typecheck, test, lint) ; les tâches js:* les lancent partout avec pnpm -r --if-present. Rien n'est hoisté : un paquet doit déclarer ce qu'il importe.

Une version doit être publiée depuis 25 heures pour être installée (minimumReleaseAge), et seuls les paquets listés dans allowBuilds exécutent leurs scripts d'installation.

Après la migration depuis Yarn et NX : supprimez node_modules et docs/node_modules, puis lancez task init.

Lancer le projet

TâcheEffet
task initPrépare le projet (outils mise, plugins Claude, cargo-set-version, cargo-machete, pnpm install)
task serviceDémarre les services de dev en compose (Redis, Authelia/Keycloak, Traefik, OTel...) via Docker ou Podman ; init:service génère leurs clés
task backLance le serveur (back:tls derrière un terminateur TLS)
task front:devLance le dashboard en mode dev (front:dev:tls avec TLS)
task aioBack + front ensemble
task docs:devLance ce site de documentation en local (docs:build le construit)
task cli -- <args>Lance le plugin kubectl (cli:login, cli:get-token)
task tmux:devSession tmux avec tous les logs de dev (tmux:kill pour l'arrêter)

Clusters de test

TâcheEffet
task k3d:createCrée le cluster k3d local (certificats, CRD, kubeconfigs)
task k3d:start / k3d:stopRedémarre / arrête le cluster existant ; k3d:delete le détruit
task k3d:k -- <args>kubectl direct ; k3d:k-proxy via ProxyAuthK8S, k3d:k-oidc en OIDC
task k3d:k9s*k9s direct, via le proxy ou avec un service account
task talos:up / talos:downCluster Talos local (mêmes raccourcis talos:k*, talos:k9s)
task lab:*Raccourcis vers le cluster de lab

Tests

Les couches de test, leurs commandes et leurs règles sont dans Tests : task test:unit (sans Redis), task test:all (avec), task envtest:run, la couverture et les garde-fous.

Contre un vrai cluster (k3d, Dex, chart, images construites depuis l'arbre) : task it:up puis task it:test, voir Suite d'intégration.

Génération

TâcheEffet
task recuLance toutes les générations ci-dessous
task gen:crds-fileRégénère deploy/crds.yaml et le chart des CRD
task gen:swagger-fileRégénère swagger.json (et sa copie dans docs)
task gen:clientRégénère les clients API : TypeScript (front-api) et Rust (client_api)
task docs:apiRégénère les pages de référence API depuis swagger.json
task docs:crdsRégénère la référence CRD depuis deploy/crd/ (weebo-crd-docs)
task gen:api-lintLint du spec OpenAPI avec Spectral
task gen:tls*Certificats auto-signés de dev (mkcert)

Après une modification d'API : task gen:swagger-file && task gen:client && task docs:api.

Qualité, sécurité, dépendances

TâcheEffet
task lintTous les linters : rust:lint (fmt, clippy --all-targets), repo:lint (actionlint, hadolint), lint:helm, js:lint (avec pnpm peers check), fuzz:check
task js:ciTypecheck, tests et build de tous les paquets JS (js:lint, js:test…)
task auditAudit : rust:audit (cargo deny selon deny.toml, trivy fs), audit:fuzz, audit:js (pnpm audit), repo:audit (trivy config sur les Containerfiles)
task audit:imageConstruit les images server et front (IMAGE=server pour une seule) et les scanne avec trivy image (HIGH/CRITICAL avec correctif). Hors de task audit : trop lent pour les hooks
task tool:upgradeMet à jour les dépendances dans les majeures actuelles (Rust, front, docs)
task bumpIncrémente la version (voir Préparer une version)
task rust:doctorVérifie les prérequis envtest (Go, libclang, binaires du control plane)
task template:*Synchronise le projet avec son template (diff, fetch, sync)

Tâches du kit

Une partie des tâches vient de weebo-operator-kit, comme le paquet de ce site (@weebo/operator-docs). Le dépôt est épinglé sur une release du kit : KIT_TAG dans Taskfile.yaml.

Tâche / fichierD'où vient-il
rust:*tasks/rust.yaml du kit, inclus à distance (rust:lint, rust:audit…)
repo:*tasks/repo.yaml du kit, inclus à distance (repo:lint, repo:audit)
kit:*.tasks/kit.yaml, copie de templates/kit.yaml du kit, avec NPM_CLIENT=pnpm
docs/package.json@weebo/operator-docs, tarball de la release du kit, intégrité dans pnpm-lock.yaml

Les includes distants portent un checksum: sha256 : Task refuse de charger un fichier dont le contenu a changé sous le même tag (The checksum of the Taskfile … does not match!), et plus aucune tâche ne se lance. Task garde les fichiers en cache ; task --offline rust:lint fonctionne sans réseau.

Passer à une nouvelle release du kit

task kit-sync TAG=vX.Y.Z

kit-sync lance kit:sync, qui met à jour KIT_TAG, les URLs et les checksums des includes, .tasks/kit.yaml, la tarball de docs/package.json et pnpm-lock.yaml, puis restaure le cog.toml du dépôt et réinstalle les hooks. Ne lancez pas kit:sync ni kit:cog seuls : ils remplacent cog.toml par celui du kit, dont le hook de pré-commit lance task test (Redis requis) et task audit à chaque commit et perd les vérifications de .hooks/pre-commit.sh.

Ensuite : relire le diff (un checksum qui change veut dire que le contenu de rust.yaml ou repo.yaml a changé, à lire avant de commiter), lancer task docs:crds puis task lint et task audit.

Ce qui n'est pas repris du kit

La CI réutilisable checks.yml (pas de Redis : les workflows du dépôt appellent task rust:* et task repo:*), le chart lib et helm:crds, rust:coverage (le gate coverage:ci du dépôt reste), le CrdForm (remplacé par ProxyKubeApiGenerator) et les crates weebo-kit-*. Le détail est dans la RFC 0005.

On this page