[{"data":1,"prerenderedAt":371},["ShallowReactive",2],{"navigation":3,"page-\u002Fenvironments":105,"surround-\u002Fenvironments":366},[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":87,"badge":107,"body":108,"category":107,"description":360,"draft":73,"extension":361,"links":107,"meta":362,"navigation":11,"path":88,"seo":363,"sitemap":364,"stem":89,"__hash__":365},"docs\u002F8.environments\u002F1.index.md",null,{"type":109,"value":110,"toc":351},"minimark",[111,120,198,213,218,221,254,257,261,272,318,327,331,334,341,345,348],[112,113,114,115,119],"p",{},"An environment is one complete instance of your application: its own resources, its own variables, its own hostnames, deploying its own branch. Every project has a ",[116,117,118],"strong",{},"Production"," environment, and the dashboard's environment selector, in the project's navigation bar, switches between all of them.",[121,122,123,142],"table",{},[124,125,126],"thead",{},[127,128,129,133,136,139],"tr",{},[130,131,132],"th",{},"Type",[130,134,135],{},"How it starts",[130,137,138],{},"How it ends",[130,140,141],{},"Deploys",[143,144,145,161,182],"tbody",{},[127,146,147,152,155,158],{},[148,149,150],"td",{},[116,151,118],{},[148,153,154],{},"With the project.",[148,156,157],{},"With the project. It cannot be deleted on its own.",[148,159,160],{},"The production branch.",[127,162,163,168,176,179],{},[148,164,165],{},[116,166,167],{},"Preview",[148,169,170,171,175],{},"Automatically, when a pull request opens. Named ",[172,173,174],"code",{},"PR #42",".",[148,177,178],{},"Automatically, when the pull request closes.",[148,180,181],{},"The pull request's branch.",[127,183,184,189,192,195],{},[148,185,186],{},[116,187,188],{},"Named",[148,190,191],{},"By you, from an existing environment, for staging, QA or anything long-lived.",[148,193,194],{},"By you.",[148,196,197],{},"A branch you choose.",[112,199,200,201,205,206,209,210,175],{},"Each is described on its own page: ",[202,203,204],"a",{"href":94},"preview environments",", ",[202,207,208],{"href":98},"named environments",", and ",[202,211,212],{"href":102},"deleting an environment",[214,215,217],"h2",{"id":216},"what-every-environment-has","What every environment has",[112,219,220],{},"Whatever its type, an environment gets the full project view:",[222,223,224,231,237,248],"ul",{},[225,226,227,230],"li",{},[116,228,229],{},"Overview"," draws its resources and the connections between them, and says in one line which of the project's components it deliberately does not have.",[225,232,233,236],{},[116,234,235],{},"Activity"," lists its deployments and events.",[225,238,239,242,243,247],{},[116,240,241],{},"Variables"," holds the ",[202,244,246],{"href":245},"\u002Fconfiguration\u002Fvariables#where-variables-live","environment variables"," every service in it inherits.",[225,249,250,253],{},[116,251,252],{},"Settings"," for what can be changed after creation.",[112,255,256],{},"A resource page opened from an environment stays in that environment's scope, so its siblings and its parent link are the right ones.",[214,258,260],{"id":259},"components-and-instances","Components and instances",[112,262,263,264,267,268,271],{},"A project is made of components: the ",[172,265,266],{},"web"," service, the ",[172,269,270],{},"database"," database. An environment decides, for each component, what it has:",[121,273,274,284],{},[124,275,276],{},[127,277,278,281],{},[130,279,280],{},"Decision",[130,282,283],{},"The environment gets",[143,285,286,294,302,310],{},[127,287,288,291],{},[148,289,290],{},"Create new",[148,292,293],{},"Its own instance of the component, empty.",[127,295,296,299],{},[148,297,298],{},"Share",[148,300,301],{},"Another environment's instance, used in place. No new infrastructure.",[127,303,304,307],{},[148,305,306],{},"Clone",[148,308,309],{},"Its own instance, seeded from a copy of another environment's data.",[127,311,312,315],{},[148,313,314],{},"Don't include",[148,316,317],{},"Nothing. The component is deliberately absent.",[112,319,320,321,323,324,175],{},"The decision is recorded even for ",[116,322,314],{},", so an environment created without a worker stays distinguishable from one created before the worker existed. Which decisions are available depends on the component: a web service is always its own or absent, a database can be any of the four. The full table of options, with what each costs, is on ",[202,325,208],{"href":326},"\u002Fenvironments\u002Fnamed-environments#deciding-each-component",[214,328,330],{"id":329},"isolation","Isolation",[112,332,333],{},"Environments are isolated by default. A service references only resources beside it in the same environment, a variable set in one environment does not exist in another, and a preview never receives a database.",[112,335,336,337,340],{},"Sharing is the one decision that crosses the line. A shared database appears in both environments, marked ",[116,338,339],{},"Shared from"," its owner wherever it is drawn, and its page says in amber that writes from here change the owner's data. Kuppit does not copy or isolate it. If that is not what you want, clone instead.",[214,342,344],{"id":343},"branches","Branches",[112,346,347],{},"Production deploys the project's production branch. A preview deploys its pull request's branch and is updated on every push to it. A named environment deploys the branch you gave it when you created it, on every push.",[112,349,350],{},"Environments do not promote into each other: there is no button that turns staging into production. Merging the branch is the promotion.",{"title":352,"searchDepth":353,"depth":353,"links":354},"",3,[355,357,358,359],{"id":216,"depth":356,"text":217},2,{"id":259,"depth":356,"text":260},{"id":329,"depth":356,"text":330},{"id":343,"depth":356,"text":344},"Production, preview and named environments, what each one contains, and how they stay isolated from each other.","md",{},{"title":87,"description":360},{"loc":88},"KW8_fntEGbSnRhNZ2xBLh4YHGnNmDmMxT11Bnluj0Qc",[367,369],{"title":82,"path":83,"stem":84,"description":368,"children":-1},"Point your own domain at a web service, the two DNS records it takes, and what each status on the way to Active means.",{"title":93,"path":94,"stem":95,"description":370,"children":-1},"Every pull request gets its own environment and URL, updated on each push and removed when the pull request closes.",1788534986362]