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
| Commande | Rôle |
|---|---|
ota publish | Produit un export Expo, l'archive et le publie sur une branche. |
ota rollback | Publie un rollback vers le bundle embarqué. |
ota channel | Pointe un canal vers une branche (promotion staging → prod). |
ota ls / ota apps | Inventaire des apps, branches, canaux, updates. |
login / whoami | Gè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.