rivet-deploy-image

Par rivet-dev · skills

Déployez une image Docker sur un cluster Rivet Cloud via le serveur Rivet MCP, ou effectuez un rollback d'un cluster vers un build antérieur. À utiliser lorsqu'on vous demande de déployer, livrer, publier ou effectuer un rollback d'une application sur un cluster Rivet et qu'un shell avec Docker est disponible.

npx skills add https://github.com/rivet-dev/skills --skill rivet-deploy-image

Déployer une image sur un cluster Rivet

Un deploy est une compilation locale, un upload, et deux opérations Code Mode exécutées via l'outil execute. Il nécessite Docker et un shell. Il n'a besoin ni du CLI Rivet ni d'aucune autre connexion.

Avant de commencer

  1. Confirmez que la session peut déployer. Si search ne liste pas rivet.deploy.prepare, la session est en lecture seule ou est épinglée à un projet ou un namespace, et le deploy ne peut pas s'exécuter d'ici. Dites-le plutôt que de réessayer.
  2. Choisissez le cluster. Exécutez return (await rivet.cloud.v2.clusters.list()).items; dans execute et utilisez le champ cluster de celui à déployer, qui est son nom. Sur une connexion épinglée à un cluster, rivet.context() le rapporte, et cluster est omis de chaque appel ci-dessous.

Étapes

  1. Compilez et mesurez l'image dans le shell. La plateforme doit être linux/amd64.

    docker build --platform linux/amd64 -t app .
    docker image save app -o image.tar
    wc -c < image.tar                        # content_length
    openssl md5 -binary image.tar | base64   # content_md5

    L'archive tar doit faire 5 Gio ou moins. Mesurez le fichier exact qui sera uploadé, car la compilation échoue la vérification si l'une ou l'autre valeur diffère.

  2. Enregistrez la compilation.

    return await rivet.deploy.prepare({
     cluster: "my-cluster",
     image: "app:latest",
     content_length: 48213504,
     content_md5: "1B2M2Y8AsgTpgAmY7PhCfg==",
    });

    content_length est un nombre, pas une chaîne. Passez file si l'archive tar n'est pas nommée image.tar. Conservez le build_id retourné.

  3. Exécutez la commande upload retournée dans le shell, sans modification. C'est une commande curl contre une URL présignée valide pour cette archive tar jusqu'à expires_at, elle ne porte donc aucune credential Rivet.

  4. Lancez le rollout, en répétant jusqu'à ce que done soit true.

    return await rivet.deploy.rollout({ cluster: "my-cluster", build_id: "<build_id>" });

    Chaque appel avance d'une étape et retourne immédiatement, appelez-la à nouveau tant que done est false. Voir references/rollout.md pour chaque étape, les erreurs, et comment revenir en arrière.

  5. Rapportez le build_id et les endpoints du résultat final à l'utilisateur. Le build_id est ce qu'un rollback ultérieur nécessitera.

Règles

  • Ne recompilez jamais ni ne réuploadez pour réessayer un rollout. Appelez rivet.deploy.rollout à nouveau avec le même build_id.
  • Utilisez rivet.deploy.* pour tout le deploy. Ne pilotez pas rivet.cloud.v2.builds.* ou rivet.cloud.v2.runnerPools.upsert à la main, car une upsert remplace les paramètres du pool en bloc et supprimerait sa liste d'autorisation.
  • Ne devinez pas un nom de cluster, region, ou pool. Listez-les d'abord.

Skills similaires