Scénarios d'usage

21 méthodes de déploiement, dont 10 embarquent votre code.

Un scénario d'usage sur cette plateforme n'est pas une catégorie marketing, c'est un nom de méthode. config.json déclare exactement 21 méthodes dont le nom commence par deploy_, config_dev.json déclare les 21 mêmes, et chaque forme de déploiement proposée par Xuda correspond à l'une de ces entrées. Dix d'entre elles publient une version de votre projet, et un champ vous indique lesquelles : ce sont les entrées qui prennent data.release_doc_id. Les onze autres provisionnent de l'infrastructure ou écrivent un enregistrement. Ces mêmes dix méthodes définissent toutes req.data.deploy_type et transmettent l'appel à une fonction partagée unique, deploy_app, qui n'est elle-même pas déclarée dans cpi_methods : il n'existe donc pas d'appel de déploiement générique. Vous choisissez une porte d'entrée par son nom, et le code partagé qui se trouve derrière lit le type directement sur la requête. Le plancher de plan est inscrit sur chaque entrée plutôt que sur une page tarifaire : deploy_mini_app est la seule méthode de tout le catalogue de 1010 entrées à porter min_plan free, douze méthodes deploy_ portent min_plan pro, deux portent agency, et six ne portent aucun min_plan, ce qui signifie que tout le monde franchit cette barrière. En ne comptant que la barrière de plan, 7 des 21 sont accessibles en Free, 19 en Pro, 19 en Team et 21 en Agency, pour des prix d'abonnement de 0 $, 49 $, 149 $ et 399 $ par mois. Cette page parcourt les huit scénarios avec lesquels les utilisateurs arrivent réellement, nomme la méthode que chacun résout, et nomme ceux qui ne résolvent rien.

10 prennent un identifiant de version
7 accessibles avec un compte Free
Aucun appel de déploiement générique
21 méthodes de déploiement, dont 10 embarquent votre code.
Huit scénarios, huit portes d'entrée

Le scénario avec lequel vous arrivez, et la méthode qu'il résout.

Personne n'arrive en demandant deploy_spa. Les utilisateurs arrivent avec une idée en tête : une application pour leurs clients, un site sans code derrière, une tâche qui s'exécute à trois heures du matin, une copie pour tester. Chacune de ces idées correspond à une ou deux entrées nommées dans cpi_methods, et cette correspondance est fixée au moment de l'appel plutôt que choisie à l'exécution. Lisez chaque ligne comme une alternative, et les puces qui l'accompagnent comme les appels qu'elle vous coûte réellement.

Deux de ces huit scénarios ne correspondent pas à un appel unique. deploy_static_website publie via deploy_site, et une application à équilibrage de charge nécessite un deploy_spa par copie avant même que deploy_load_balancer n'ait quoi que ce soit à répartir. L'association est déterminée uniquement par le nom vers lequel vous avez envoyé l'appel : puisque deploy_app n'est pas lui-même déclaré dans cpi_methods, il n'existe aucun appel prenant un type de déploiement en argument.
21

Méthodes dont le nom commence par deploy_

7

Parmi elles, accessibles avec un compte Free

12 sur 19

Méthodes soumises à Pro dans le catalogue qui sont des déploiements

0

Méthodes de déploiement soumises à Team

L'anatomie d'un appel

Ce qu'un appel de déploiement vous demande, et ce qu'il en fait.

Les 21 entrées ne partagent pas la même signature, mais quatre champs de la déclaration vous en disent presque tout sur une entrée donnée avant même d'ouvrir son gestionnaire : si elle prend un identifiant de version, si elle prend une région, si elle s'exécute comme une tâche suivie, et quel script cette tâche exécute. Deux champs supplémentaires déterminent qui peut l'appeler. 14 des 21 exigent clearance admin et 7 exigent clearance user, et 20 des 21 portent private: true, l'indicateur qu'aucune clé API externe ne franchit, quel que soit le mode. Le déploiement est une action d'opérateur menée depuis une session connectée, pas quelque chose qu'une intégration déclenche.

  • Un identifiant de version, ou rien. 10 des 21 prennent data.release_doc_id, et ce sont exactement les dix qui publient une version de votre projet. Six d'entre elles se lient à un seul programme Studio via un data.prog_id obligatoire : embed, mini_app, preview, pwa, spa et user_group. deploy_mpa prend data.route_id à la place. Les onze autres méthodes provisionnent de l'infrastructure ou écrivent un enregistrement, sans jamais toucher à une version.
  • Une région, la plupart du temps. 16 des 21 acceptent une région. Les cinq qui n'en acceptent pas sont instance, marketplace, mini_app, site et static_website. Deux d'entre elles écrivent un document dans xuda_master sans provisionner de serveur, deux publient des fichiers vers le stockage, et la cinquième est le déploiement gratuit, qui n'accepte ni région ni aucun champ create_datacenter.
  • Une tâche, la plupart du temps. 14 des 21 s'exécutent comme une tâche suivie avec un job_timeout de 1 800 000 ms, soit 30 minutes, et rapportent leur progression via leurs job_steps déclarés. Les sept autres répondent sans créer de tâche : another, datacenter, instance, marketplace, site, static_website et xucode. Un appel qui répond immédiatement effectue de la paperasse, pas du provisionnement.
  • Un seul script, neuf fois. api, cron, embed, emitter, mpa, preview, pwa, spa et user_group exécutent un script identique en 12 étapes, avec le nom du type substitué : lancement du processus, puis création, pare-feu, plan de sauvegarde, connexion et installation pour le serveur datacenter, puis les cinq mêmes étapes pour le serveur de déploiement, puis activation du serveur. Un seul appel crée donc deux serveurs, pas un, à moins de passer data.app_datacenter pour réutiliser un datacenter déjà existant. Ce champ est optionnel, tout comme les champs create_datacenter qui l'accompagnent.
Les 21, par champ
Prennent data.release_doc_id
10
celles qui publient une version, toutes transmises à deploy_app
Acceptent une région
16
S'exécutent comme une tâche suivie
14
job_timeout 1 800 000 ms, 30 minutes
Partagent un script en 12 étapes
9
deux serveurs par appel, sauf réutilisation d'un datacenter
La barrière de plan

Quatre tarifs, et seuls deux d'entre eux changent ce que vous pouvez déployer.

La barrière de plan tient en quatre lignes de calcul. isValidPlan, dans cpi/http_module/index.mjs aux lignes 542 à 547, lit min_plan sur l'entrée de configuration, renvoie true quand la clé est absente, et compare sinon deux rangs dans PLAN_OBJ : free 0, pro 1, team 2, agency 3. Appliqué aux 21 méthodes deploy_*, voilà tout le tableau. Le catalogue compte 19 méthodes soumises à Pro, et 12 d'entre elles sont des deploy_*, donc un abonnement Pro se dépense en grande partie ici même. Et une seule méthode sur les 1010 entrées porte min_plan free, deploy_mini_app, le seul déploiement qu'un compte gratuit peut lancer. Les prix sont mensuels.

Free, 0 $
Pro, 49 $
Team, 149 $
Agency, 399 $
Méthodes deploy_* franchissant la barrière de plan7 sur 2119 sur 2119 sur 2121 sur 21
Ce que ce palier ajoute par rapport au précédentles 6 méthodes sans aucun min_plan déclaré, plus deploy_mini_app12 : another, api, cron, datacenter, embed, emitter, load_balancer, mpa, preview, pwa, spa, user_grouprien. Aucune méthode deploy_* ne porte min_plan teamdeux : deploy_instance et deploy_marketplace, qui écrivent toutes deux un document dans xuda_master sans provisionner de serveur
Déploiements embarquant une version de votre projet, ceux qui prennent data.release_doc_id1 sur 10, deploy_mini_app10 sur 1010 sur 1010 sur 10
Un lien que vous partagez : spa, pwa, embed, previewnon, les quatre sont en Prooui, une tâche de 12 étapes chacuneles 4 mêmes qu'en Proles 4 mêmes qu'en Pro
Un VPS, un serveur web, ou un VPS full stack avec la CLI xuda dessusoui, les trois ne déclarent aucun min_planouiouioui
haproxy devant vos déploiements de même typenondeploy_load_balancer, 6 étapesouioui
Un second environnement d'une application que vous exploitez déjànondeploy_another, nouveau nom, nouvelle région et nouveau type de serveurouioui
Où atterrit un appel

Un appel de déploiement, trois destinations, et la première construit deux serveurs.

Dix des 21 méthodes déploient une version de votre projet. Ce sont celles qui prennent data.release_doc_id, elles définissent toutes req.data.deploy_type, et elles transmettent toutes l'appel à une fonction partagée unique, deploy_app, dans cpi/deploy_module/index.mjs ligne 116. deploy_app n'est pas elle-même déclarée dans cpi_methods, donc il n'existe pas d'appel de déploiement générique : vous choisissez une porte d'entrée, et la porte d'entrée nomme le type. Les 11 autres provisionnent une machine ou écrivent un enregistrement. Lisez la première branche deux fois, car un simple appel deploy_spa provisionne un serveur datacenter avant de provisionner le vôtre.

14 des 21 déclarent clearance admin et les 7 autres clearance user, et 20 des 21 portent private: true. Le déploiement est conçu comme une action de session tableau de bord : une clé API externe ne franchit pas cet indicateur, quelle que soit la branche visée.
Le faire

Trois étapes, et celle du milieu est une barre de progression que vous regardez.

Pas un assistant guidé. Ce que l'entrée de configuration vous demande de fournir, ce que la tâche rapporte en retour, et ce que vous détenez quand la dernière ligne affiche activation du serveur.

  1. 01

    Choisissez la porte d'entrée, la version et le programme

    Il n'existe aucun appel de déploiement générique. deploy_app est partagée par les 10 méthodes de publication mais n'est pas déclarée dans cpi_methods, donc vous appelez deploy_spa, deploy_pwa, deploy_embed, deploy_preview et ainsi de suite, et ce choix définit deploy_type pour vous. Chacune des 10 prend data.release_doc_id, la version en cours de publication. Six d'entre elles, embed, mini_app, preview, pwa, spa et user_group, prennent aussi un data.prog_id obligatoire nommant le programme Studio unique auquel le déploiement se lie, et deploy_mpa prend data.route_id à la place. La région est un champ sur 16 des 21.

  2. 02

    Suivez le script déclaré s'exécuter

    job_steps n'est pas une machine à états interne, c'est le texte de progression littéral. 14 des 21 enregistrent une tâche suivie avec job_timeout 1 800 000 ms, un plafond de 30 minutes. Un déploiement de type lien rapporte 12 lignes, deploy_mini_app 11, deploy_full_stack_vps 8, deploy_vps et deploy_webserver 7 chacun, deploy_load_balancer 6. Les 7 autres ne déclarent aucune étape et répondent sans créer de tâche : another, datacenter, instance, marketplace, site, static_website et xucode.

  3. 03

    Prenez possession du serveur activé

    La dernière étape de chaque script de provisionnement est l'activation du serveur, et ce que vous détenez après elle est une machine avec la région, le pare-feu et le plan de sauvegarde définis par ce même script. À partir de là, deploy_load_balancer place haproxy devant plusieurs déploiements de même type avec contrôles de santé et basculement, et deploy_another redéploie l'application entière sous un nouveau nom, une nouvelle région et un nouveau type de serveur, avec répercussion sur ses déploiements enfants. Les deux sont en min_plan pro.

Le relevé

Douze lignes, dont six concernent une machine que vous n'avez jamais nommée.

Le tableau job_steps de deploy_spa dans l'ordre, exactement comme config.json le déclare et comme la barre de progression le lit. Les mêmes 12 lignes, avec le nom du type substitué, sont déclarées sur deploy_api, deploy_cron, deploy_embed, deploy_emitter, deploy_mpa, deploy_preview, deploy_pwa et deploy_user_group. Lisez d'abord les lignes 02 à 06 : elles concernent un serveur datacenter.

POST /cpi/deploy_spa job_timeout 1800000 ms
01 lancement du processus
02 création du serveur datacenter
03 configuration du pare-feu datacenter
04 configuration du plan de sauvegarde datacenter
05 connexion au serveur datacenter
06 installation des ressources datacenter
les lignes 02 à 06 correspondent à un second serveur. Passez data.app_datacenter pour en réutiliser un que vous exploitez déjà
07 création du serveur spa
08 configuration du pare-feu spa
09 configuration du plan de sauvegarde spa
10 connexion au serveur spa
11 installation des ressources spa
12 activation du serveur
deploy_mini_app en exécute 11 : aucune étape de création de datacenter, et aucun champ région à définir
Neuf des 21 exécutent exactement ce script. Cinq en exécutent un plus court : mini_app en 11 lignes, et vps, webserver, full_stack_vps et load_balancer entre 6 et 8. Les sept restantes ne déclarent aucune étape et répondent sans créer de tâche.
Limites, en toute franchise

Huit limites, dont trois méthodes déclarées qui refusent toujours de s'exécuter.

  • Router ne se déploie pas. deploy_mpa est déclarée, soumise à Pro, et définit req.data.deploy_type sur mpa, une valeur absente du tableau deploy_type dans config.json, donc deploy_app la refuse avec le code -2 dans cpi/deploy_module/index.mjs aux lignes 139 à 141. config_dev.json liste bien mpa, et la liste aussi comme beta, donc elle est refusée quatre lignes plus loin à la place. Un déploiement de routeur multi-pages n'est pas quelque chose que vous pouvez démarrer aujourd'hui.
  • Emitter est en beta dans la configuration de production. La chaîne emitter figure dans deploy_type_in_beta dans config.json, donc deploy_app renvoie le code -2 dans cpi/deploy_module/index.mjs aux lignes 143 à 144. config_dev.json l'a retirée de cette liste, ce qui signifie que le modèle de flux de changements fonctionne sur dev et est refusé dans la copie du dépôt. La méthode est déclarée et le pipeline de provisionnement derrière elle est le même que celui utilisé par cron. La barrière tient en une seule entrée de tableau.
  • Aucune méthode ne construit de binaire iOS, Android ou macOS. deploy_ios, deploy_android et deploy_macos existent dans cpi/deploy_module/index.mjs aux lignes 1388 à 1405, et aucun des trois n'est déclaré dans cpi_methods, donc rien de ce qui arrive via /cpi ne peut les atteindre. L'ancien modèle d'application mobile est abandonné plutôt que reporté.
  • Il n'existe aucun type de déploiement pour la collaboration en temps réel. Aucune des 21 méthodes ne provisionne de websocket, de canal de présence ou de surface CRDT. Ce qui s'en rapproche le plus dans l'ensemble, deploy_emitter, est un traitement batch côté serveur déclenché par un flux de changements de base de données, et il est refusé en tant que beta de toute façon.
  • MCP Server figure comme type de déploiement dans les deux configurations, se trouve dans deploy_type_in_beta dans les deux, et n'a aucune entrée deploy_mcp dans cpi_methods, donc il n'y a rien à appeler même avant la barrière beta. Un déploiement MCP par projet n'existe pas.
  • Team coûte 149 $ contre 49 $ pour Pro, et n'apporte rien sur cette page. Zéro méthode deploy_ ne porte min_plan team, donc Pro et Team atteignent toutes deux 19 des 21. Agency à 399 $ ajoute exactement deux méthodes de plus, deploy_instance et deploy_marketplace, qui créent toutes deux un document dans xuda_master sans provisionner de serveur.
  • deploy_xucode est la seule entrée deploy_ sans clé de microservice, et http_module renvoie tôt sur un microservice manquant dans cpi/http_module/index.mjs aux lignes 942 à 944, donc l'appel n'atteint jamais son gestionnaire dans cpi/deploy_module/index.mjs ligne 1777. C'est aussi la seule des 21 à omettre private.
  • Un déploiement de site statique n'exécute aucun code. deploy_static_website lit un dossier drive et le transmet à deploy_site, qui envoie les fichiers sur R2 et bascule un pointeur KV de façon atomique. Aucun serveur, aucun cron, aucune API, aucune base de données. Un gestionnaire de formulaire ou une tâche planifiée constitue un second déploiement sur un second serveur.
Avant de choisir un scénario

Ce qui est réellement déployable aujourd'hui

Six réponses tirées directement de config.json et de cpi/deploy_module/index.mjs, plutôt que de l'assistant guidé posé au-dessus.

Observer

Observez un déploiement se dérouler.

Douze étapes, deux serveurs et un identifiant de tâche avec un délai d'expiration de 30 minutes. Le même script exécuté par neuf des 21 méthodes, avec le nom du type substitué.

Lisez la déclaration de la méthode avant de choisir le palier.

Chacune des 21 entrées deploy_ porte son propre contrat dans config.json : les champs typés qu'elle accepte, si elle prend un release_doc_id, les étapes de tâche qu'elle va parcourir et leur délai d'expiration, l'habilitation qu'elle exige, et le plancher min_plan qui la sous-tend. Cette entrée est le contrat, pas l'assistant guidé dessiné par-dessus. Déterminez le scénario que vous déployez réellement, lisez cette seule entrée, puis achetez le palier que son min_plan désigne. Six des 21 ne nomment aucun plan, une nomme free, douze nomment pro, deux nomment agency, et aucun déploiement, où que ce soit, ne nomme team.