[{"data":1,"prerenderedAt":314},["ShallowReactive",2],{"navigation":3,"page-\u002Fdeployments\u002Fredeploy-and-rollback":105,"surround-\u002Fdeployments\u002Fredeploy-and-rollback":309},[4,17,25,48,63,74,86],{"title":5,"path":6,"stem":7,"children":8,"icon":16,"exact":11},"Getting started","\u002Fgetting-started","1.getting-started\u002F1.index",[9,12],{"title":10,"path":6,"stem":7,"exact":11,"children":-1},"Introduction",true,{"title":13,"path":14,"stem":15,"exact":11,"children":-1},"Quickstart","\u002Fgetting-started\u002Fquickstart","1.getting-started\u002F2.quickstart","i-lucide-rocket",{"title":18,"path":19,"stem":20,"children":21,"icon":24,"exact":11},"Concepts","\u002Fconcepts","2.concepts\u002F1.index",[22],{"title":23,"path":19,"stem":20,"exact":11,"children":-1},"The Kuppit model","i-lucide-shapes",{"title":26,"path":27,"stem":28,"children":29,"icon":47,"exact":11},"Deployments","\u002Fdeployments","3.deployments\u002F1.index",[30,31,35,39,43],{"title":26,"path":27,"stem":28,"exact":11,"children":-1},{"title":32,"path":33,"stem":34,"exact":11,"children":-1},"Builds","\u002Fdeployments\u002Fbuilds","3.deployments\u002F2.builds",{"title":36,"path":37,"stem":38,"exact":11,"children":-1},"Redeploy and roll back","\u002Fdeployments\u002Fredeploy-and-rollback","3.deployments\u002F3.redeploy-and-rollback",{"title":40,"path":41,"stem":42,"exact":11,"children":-1},"Logs","\u002Fdeployments\u002Flogs","3.deployments\u002F4.logs",{"title":44,"path":45,"stem":46,"exact":11,"children":-1},"When a deployment fails","\u002Fdeployments\u002Fwhen-a-deployment-fails","3.deployments\u002F5.when-a-deployment-fails","i-lucide-cloud-upload",{"title":49,"path":50,"stem":51,"children":52,"icon":62,"exact":11},"Resources","\u002Fresources","4.resources\u002F1.index",[53,54,58],{"title":49,"path":50,"stem":51,"exact":11,"children":-1},{"title":55,"path":56,"stem":57,"exact":11,"children":-1},"Web services","\u002Fresources\u002Fweb-services","4.resources\u002F2.web-services",{"title":59,"path":60,"stem":61,"exact":11,"children":-1},"PostgreSQL","\u002Fresources\u002Fpostgresql","4.resources\u002F3.postgresql","i-lucide-boxes",{"title":64,"icon":65,"path":66,"stem":67,"children":68,"page":73,"exact":11},"Configuration","i-lucide-sliders-horizontal","\u002Fconfiguration","5.configuration",[69],{"title":70,"path":71,"stem":72,"exact":11,"children":-1},"Environment variables","\u002Fconfiguration\u002Fvariables","5.configuration\u002F1.variables",false,{"title":75,"path":76,"stem":77,"children":78,"icon":85,"exact":11},"Domains","\u002Fdomains","7.domains\u002F1.index",[79,81],{"title":80,"path":76,"stem":77,"exact":11,"children":-1},"Hostnames",{"title":82,"path":83,"stem":84,"exact":11,"children":-1},"Custom domains","\u002Fdomains\u002Fcustom-domains","7.domains\u002F2.custom-domains","i-lucide-globe",{"title":87,"path":88,"stem":89,"children":90,"icon":104,"exact":11},"Environments","\u002Fenvironments","8.environments\u002F1.index",[91,92,96,100],{"title":87,"path":88,"stem":89,"exact":11,"children":-1},{"title":93,"path":94,"stem":95,"exact":11,"children":-1},"Preview environments","\u002Fenvironments\u002Fpreview-environments","8.environments\u002F2.preview-environments",{"title":97,"path":98,"stem":99,"exact":11,"children":-1},"Named environments","\u002Fenvironments\u002Fnamed-environments","8.environments\u002F3.named-environments",{"title":101,"path":102,"stem":103,"exact":11,"children":-1},"Deleting an environment","\u002Fenvironments\u002Fdeleting-an-environment","8.environments\u002F4.deleting-an-environment","i-lucide-git-branch",{"id":106,"title":36,"badge":107,"body":108,"category":107,"description":303,"draft":73,"extension":304,"links":107,"meta":305,"navigation":11,"path":37,"seo":306,"sitemap":307,"stem":38,"__hash__":308},"docs\u002F3.deployments\u002F3.redeploy-and-rollback.md",null,{"type":109,"value":110,"toc":294},"minimark",[111,115,200,205,211,225,232,236,241,244,250,254,265,268,272],[112,113,114],"p",{},"Both actions live in a deployment's menu, and both create a new deployment rather than changing the one you chose. The difference is what they carry forward.",[116,117,118,138],"table",{},[119,120,121],"thead",{},[122,123,124,127,133],"tr",{},[125,126],"th",{},[125,128,129],{},[130,131,132],"strong",{},"Redeploy this commit",[125,134,135],{},[130,136,137],{},"Roll back to this deployment",[139,140,141,157,167,178,189],"tbody",{},[122,142,143,147,150],{},[144,145,146],"td",{},"Available on",[144,148,149],{},"Any settled deployment.",[144,151,152,153,156],{},"A ",[130,154,155],{},"Previous"," deployment that went live, while its image is still available.",[122,158,159,162,165],{},[144,160,161],{},"Commit",[144,163,164],{},"The deployment's commit.",[144,166,164],{},[122,168,169,172,175],{},[144,170,171],{},"Image",[144,173,174],{},"Built again.",[144,176,177],{},"The image it already built. No rebuild.",[122,179,180,183,186],{},[144,181,182],{},"Variables",[144,184,185],{},"The service's variables as they are now.",[144,187,188],{},"The variables that deployment ran with.",[122,190,191,194,197],{},[144,192,193],{},"Build settings",[144,195,196],{},"The service's settings as they are now.",[144,198,199],{},"The settings that deployment ran with.",[201,202,204],"h2",{"id":203},"redeploy","Redeploy",[112,206,207,208,210],{},"Choose ",[130,209,132],{}," to build the deployment's commit again using the service's current settings and variables, then move production traffic to it. This is not a rollback: anything you have changed since is picked up.",[112,212,213,214,217,218,220,221,224],{},"It is the answer to ",[130,215,216],{},"Runtime configuration has changed"," on the service's ",[130,219,182],{}," tab, where the same action is offered as ",[130,222,223],{},"Redeploy now",". It is also how a build that failed for a transient reason is tried again.",[112,226,227,228,231],{},"A redeploy deploys the deployment's commit, not the head of the branch. To deploy the newest commit, push, or choose ",[130,229,230],{},"Deploy"," on the service.",[201,233,235],{"id":234},"roll-back","Roll back",[112,237,207,238,240],{},[130,239,137],{}," to deploy that release again using the image it already built, and move production traffic to it once it is healthy. Your current deployment keeps serving until then.",[112,242,243],{},"A rollback restores the release as it was: the image, the build configuration and the variables it was prepared with. That last part is the one to remember. Rolling back past a changed secret restores the old value, because the previous deployment's snapshot is what runs.",[112,245,246,247,249],{},"Kuppit keeps the image of every deployment that went live, so any ",[130,248,155],{}," deployment can be rolled back to. A deployment that never went live, or whose image is no longer available, cannot.",[201,251,253],{"id":252},"while-a-deployment-is-in-flight","While a deployment is in flight",[112,255,256,257,260,261,264],{},"A service runs one deployment at a time, and rollback gets no exemption. If a deployment is in progress, redeploy and rollback are refused with ",[130,258,259],{},"Cancel the deployment in progress before redeploying"," or ",[130,262,263],{},"before rolling back",". Cancel it, wait for it to settle, then roll back. Two steps, each of which visibly finishes, rather than a rollback racing the deployment it is trying to undo.",[112,266,267],{},"A deployment that has already started moving traffic cannot be cancelled; roll back once it has settled.",[201,269,271],{"id":270},"what-each-one-records","What each one records",[112,273,274,275,278,279,278,282,278,285,260,287,290,291,293],{},"Every deployment shows its trigger, so the history reads honestly: ",[130,276,277],{},"Git push",", ",[130,280,281],{},"Pull request",[130,283,284],{},"Manual",[130,286,204],{},[130,288,289],{},"Rollback",". A rollback appears as the newest deployment of an old commit. Nothing about the deployment you rolled back from changes: it becomes ",[130,292,155],{}," and can itself be rolled back to.",{"title":295,"searchDepth":296,"depth":296,"links":297},"",3,[298,300,301,302],{"id":203,"depth":299,"text":204},2,{"id":234,"depth":299,"text":235},{"id":252,"depth":299,"text":253},{"id":270,"depth":299,"text":271},"Deploy a commit again with today's configuration, or return to a previous deployment exactly as it ran.","md",{},{"title":36,"description":303},{"loc":37},"Jt6vMQZ4ECSH-y5N9aufLGEhbW-aud0g1jk_WU22eGs",[310,312],{"title":32,"path":33,"stem":34,"description":311,"children":-1},"How Kuppit turns a commit into a container image, what it detects from the repository, and every build setting you can change.",{"title":40,"path":41,"stem":42,"description":313,"children":-1},"Build logs and runtime logs, where each lives, how to filter them, and what Kuppit does to them before you see them.",1788534986690]