✦ Outil interne IT INNOVE

itinnove

Le CLI de la plateforme IT INNOVE. Aujourd'hui la publication OTA des mises à jour mobiles (parité Expo Updates, serveur maison), demain les autres outils, sous la même commande.

Installation

Une commande. Nécessite Node 18 ou plus (le CLI s'appuie sur fetch natif et le tar système).

curl -fsSL https://cli.itinnove.com/install.sh | sh

Installe le binaire itinnove dans ~/.local/bin (surchargeable via ITINNOVE_BIN_DIR). Ajoute ce dossier au PATH s'il n'y est pas déjà.

Depuis le monorepo (développement)

git clone https://git.itinnove.com/itinnove/apps.git
cd apps && yarn && yarn workspace @itinnove/cli build
cd packages/cli && npm link   # expose « itinnove » globalement

Authentification

Le CLI parle à l'API du portail, protégée par un jeton de service (Bearer). Enregistre-le une fois :

itinnove login --token <jeton>
# ou, pour la CI :
export ITINNOVE_OTA_TOKEN=<jeton>

Le jeton est le PORTAL_SERVICE_TOKEN du serveur (demande-le à l'administrateur de la plateforme). Priorité de résolution : option --token > variable d'environnement > fichier ~/.config/itinnove/config.json. Vérifie l'accès avec itinnove whoami.

Publier une mise à jour OTA

Depuis le dossier d'un projet Expo. Le CLI produit l'expo export, l'archive et la publie.

# publier sur une branche
itinnove ota publish --app itinnove-analytics --branch production -m "correctif login"

# publier ET promouvoir un canal dans la foulée
itinnove ota publish --app itinnove-analytics --branch production --channel prod -m "..."

# réutiliser un export déjà généré (saute « expo export »)
itinnove ota publish --app itinnove-analytics --branch production --export-dir ./dist

Le runtimeVersion est auto-détecté (via expo config) ; sinon précise-le avec --runtime. Autres options : --platform all|ios|android, --name (nom affiché à la première publication), --project <dir>, --git <sha>.

Autres commandes

itinnove ota rollback --app itinnove-analytics --branch production --runtime 1.0.0
itinnove ota channel  --app itinnove-analytics --channel prod --branch production
itinnove ota ls       --app itinnove-analytics   # détail d'une app
itinnove ota apps                                 # liste des apps
itinnove whoami                                   # identité reconnue
CommandeRôle
ota publishProduit un export Expo, l'archive et le publie sur une branche.
ota rollbackPublie un rollback vers le bundle embarqué.
ota channelPointe un canal vers une branche (promotion staging → prod).
ota ls / ota appsInventaire des apps, branches, canaux, updates.
login / whoamiGère le jeton et vérifie l'accès au serveur.

Intégration continue

Publier automatiquement à chaque release (exemple GitLab CI) :

publish-ota:
  image: node:22
  script:
    - curl -fsSL https://cli.itinnove.com/install.sh | sh
    - export PATH="$HOME/.local/bin:$PATH"
    - itinnove ota publish --app itinnove-analytics --branch production -m "$CI_COMMIT_TITLE"
  variables:
    ITINNOVE_OTA_TOKEN: $ITINNOVE_OTA_TOKEN   # variable CI protégée

Comment ça marche

Zéro dépendance

Un seul fichier Node. fetch/FormData natifs, tar système, expo via npx. Rien à installer d'autre.

Umbrella

Un binaire, des domaines. ota aujourd'hui ; les prochains outils plateforme viendront sous itinnove <domaine>.

Serveur maison

Publie vers le moteur OTA updates.apps.itinnove.com (parité protocole Expo Updates), stockage objet Scaleway.