[{"data":1,"prerenderedAt":368},["ShallowReactive",2],{"deploy-trigger-navigation":3,"deploy-trigger-version":24,"mdc-o8y00b-key":25,"\u002Fdocs\u002Fdeploy-trigger\u002Fplatforms":67,"\u002Fdocs\u002Fdeploy-trigger\u002Fplatforms-surround":365},[4],{"title":5,"path":6,"stem":7,"children":8,"icon":23},"Deploy Trigger","\u002Fdocs\u002Fdeploy-trigger","1.docs\u002F9.deploy-trigger\u002F1.index",[9,11,15,19],{"title":10,"path":6,"stem":7},"Getting Started",{"title":12,"path":13,"stem":14},"Configuration","\u002Fdocs\u002Fdeploy-trigger\u002Fconfiguration","1.docs\u002F9.deploy-trigger\u002F2.configuration",{"title":16,"path":17,"stem":18},"Permissions","\u002Fdocs\u002Fdeploy-trigger\u002Fpermissions","1.docs\u002F9.deploy-trigger\u002F3.permissions",{"title":20,"path":21,"stem":22},"Platforms","\u002Fdocs\u002Fdeploy-trigger\u002Fplatforms","1.docs\u002F9.deploy-trigger\u002F4.platforms","i-ri-rocket-2-line",null,{"data":26,"body":27},{},{"type":28,"children":29},"root",[30],{"type":31,"tag":32,"props":33,"children":34},"element","p",{},[35,38,47,49,56,58,65],{"type":36,"value":37},"text","Kirby Tools is built on ",{"type":31,"tag":39,"props":40,"children":44},"a",{"href":41,"rel":42},"https:\u002F\u002Fgetkirby.com",[43],"nofollow",[45],{"type":36,"value":46},"Kirby",{"type":36,"value":48}," – with gratitude to the team and community who make it. Help me improve the plugins: share feedback in ",{"type":31,"tag":39,"props":50,"children":53},{"href":51,"rel":52},"https:\u002F\u002Fgithub.com\u002Fkirby-tools\u002Fcommunity\u002Fdiscussions",[43],[54],{"type":36,"value":55},"Discussions",{"type":36,"value":57}," or report bugs via ",{"type":31,"tag":39,"props":59,"children":62},{"href":60,"rel":61},"https:\u002F\u002Fgithub.com\u002Fkirby-tools\u002Fcommunity\u002Fissues",[43],[63],{"type":36,"value":64},"Issues",{"type":36,"value":66},".",{"id":68,"title":20,"body":69,"description":359,"extension":360,"meta":361,"navigation":362,"path":21,"seo":363,"stem":22,"__hash__":364},"docs\u002F1.docs\u002F9.deploy-trigger\u002F4.platforms.md",{"type":70,"value":71,"toc":354},"minimark",[72,77,96,100,110,114,125,173,176,187,350],[73,74,76],"h2",{"id":75},"vercel","Vercel",[32,78,79,80,84,85,90,91,95],{},"Create a deploy hook under ",[81,82,83],"strong",{},"Settings → Git → Deploy Hooks"," of your project, as described in ",[39,86,89],{"href":87,"rel":88},"https:\u002F\u002Fvercel.com\u002Fdocs\u002Fdeploy-hooks",[43],"Vercel's deploy hooks guide",", and use its URL as the ",[92,93,94],"code",{},"deployUrl",". The URL needs no token.",[73,97,99],{"id":98},"netlify","Netlify",[32,101,102,103,90,108,95],{},"Create a build hook as described in ",[39,104,107],{"href":105,"rel":106},"https:\u002F\u002Fdocs.netlify.com\u002Fbuild\u002Fconfigure-builds\u002Fbuild-hooks\u002F",[43],"Netlify's build hooks guide",[92,109,94],{},[73,111,113],{"id":112},"github-actions","GitHub Actions",[32,115,116,117,124],{},"A GitHub Actions workflow starts on a ",[39,118,121],{"href":119,"rel":120},"https:\u002F\u002Fdocs.github.com\u002Fen\u002Factions\u002Freference\u002Fworkflows-and-actions\u002Fevents-that-trigger-workflows#repository_dispatch",[43],[92,122,123],{},"repository_dispatch"," event. Add it to the triggers of the workflow that deploys your site:",[126,127,133],"pre",{"className":128,"code":129,"filename":130,"language":131,"meta":132,"style":132},"language-yaml shiki shiki-themes github-light github-light github-dark","on:\n  repository_dispatch:\n    types: [deploy]\n",".github\u002Fworkflows\u002Fdeploy.yml","yaml","",[92,134,135,148,157],{"__ignoreMap":132},[136,137,140,144],"span",{"class":138,"line":139},"line",1,[136,141,143],{"class":142},"sBjJW","on",[136,145,147],{"class":146},"sxrX7",":\n",[136,149,151,155],{"class":138,"line":150},2,[136,152,154],{"class":153},"sovSZ","  repository_dispatch",[136,156,147],{"class":146},[136,158,160,163,166,170],{"class":138,"line":159},3,[136,161,162],{"class":153},"    types",[136,164,165],{"class":146},": [",[136,167,169],{"class":168},"sIIMD","deploy",[136,171,172],{"class":146},"]\n",[32,174,175],{},"The workflow file has to be on the repository's default branch; on any other branch, GitHub accepts the request and starts nothing.",[32,177,178,179,182,183,186],{},"GitHub's API needs a token, a user agent, and a JSON body, so send them through ",[92,180,181],{},"requestOptions",". A fine-grained personal access token needs write access to the repository's ",[81,184,185],{},"Contents",":",[126,188,193],{"className":189,"code":190,"filename":191,"language":192,"meta":132,"style":132},"language-php shiki shiki-themes github-light github-light github-dark","return [\n    'johannschopplich.deploy-trigger' => [\n        'deployUrl' => 'https:\u002F\u002Fapi.github.com\u002Frepos\u002F\u003Cowner>\u002F\u003Crepo>\u002Fdispatches',\n        'requestOptions' => [\n            'agent' => 'kirby-deploy-trigger',\n            'headers' => [\n                'Accept' => 'application\u002Fvnd.github+json',\n                'Authorization' => 'Bearer \u003Ctoken>',\n                'Content-Type' => 'application\u002Fjson'\n            ],\n            'data' => json_encode(['event_type' => 'deploy']) \u002F\u002F matches the workflow's types\n        ]\n    ]\n];\n","site\u002Fconfig\u002Fconfig.php","php",[92,194,195,204,214,227,237,250,260,273,286,297,303,332,338,344],{"__ignoreMap":132},[136,196,197,201],{"class":138,"line":139},[136,198,200],{"class":199},"s8jYJ","return",[136,202,203],{"class":146}," [\n",[136,205,206,209,212],{"class":138,"line":150},[136,207,208],{"class":168},"    'johannschopplich.deploy-trigger'",[136,210,211],{"class":199}," =>",[136,213,203],{"class":146},[136,215,216,219,221,224],{"class":138,"line":159},[136,217,218],{"class":168},"        'deployUrl'",[136,220,211],{"class":199},[136,222,223],{"class":168}," 'https:\u002F\u002Fapi.github.com\u002Frepos\u002F\u003Cowner>\u002F\u003Crepo>\u002Fdispatches'",[136,225,226],{"class":146},",\n",[136,228,230,233,235],{"class":138,"line":229},4,[136,231,232],{"class":168},"        'requestOptions'",[136,234,211],{"class":199},[136,236,203],{"class":146},[136,238,240,243,245,248],{"class":138,"line":239},5,[136,241,242],{"class":168},"            'agent'",[136,244,211],{"class":199},[136,246,247],{"class":168}," 'kirby-deploy-trigger'",[136,249,226],{"class":146},[136,251,253,256,258],{"class":138,"line":252},6,[136,254,255],{"class":168},"            'headers'",[136,257,211],{"class":199},[136,259,203],{"class":146},[136,261,263,266,268,271],{"class":138,"line":262},7,[136,264,265],{"class":168},"                'Accept'",[136,267,211],{"class":199},[136,269,270],{"class":168}," 'application\u002Fvnd.github+json'",[136,272,226],{"class":146},[136,274,276,279,281,284],{"class":138,"line":275},8,[136,277,278],{"class":168},"                'Authorization'",[136,280,211],{"class":199},[136,282,283],{"class":168}," 'Bearer \u003Ctoken>'",[136,285,226],{"class":146},[136,287,289,292,294],{"class":138,"line":288},9,[136,290,291],{"class":168},"                'Content-Type'",[136,293,211],{"class":199},[136,295,296],{"class":168}," 'application\u002Fjson'\n",[136,298,300],{"class":138,"line":299},10,[136,301,302],{"class":146},"            ],\n",[136,304,306,309,311,314,317,320,322,325,328],{"class":138,"line":305},11,[136,307,308],{"class":168},"            'data'",[136,310,211],{"class":199},[136,312,313],{"class":142}," json_encode",[136,315,316],{"class":146},"([",[136,318,319],{"class":168},"'event_type'",[136,321,211],{"class":199},[136,323,324],{"class":168}," 'deploy'",[136,326,327],{"class":146},"]) ",[136,329,331],{"class":330},"sCsY4","\u002F\u002F matches the workflow's types\n",[136,333,335],{"class":138,"line":334},12,[136,336,337],{"class":146},"        ]\n",[136,339,341],{"class":138,"line":340},13,[136,342,343],{"class":146},"    ]\n",[136,345,347],{"class":138,"line":346},14,[136,348,349],{"class":146},"];\n",[351,352,353],"style",{},"html pre.shiki code .sBjJW, html code.shiki .sBjJW{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sxrX7, html code.shiki .sxrX7{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sovSZ, html code.shiki .sovSZ{--shiki-light:#22863A;--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sIIMD, html code.shiki .sIIMD{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s8jYJ, html code.shiki .s8jYJ{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sCsY4, html code.shiki .sCsY4{--shiki-light:#6A737D;--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":132,"searchDepth":150,"depth":150,"links":355},[356,357,358],{"id":75,"depth":150,"text":76},{"id":98,"depth":150,"text":99},{"id":112,"depth":150,"text":113},"Where Vercel, Netlify, and GitHub Actions hand out the deploy hook, and the request options each one needs.","md",{},true,{"title":20,"description":359},"PMvmnFjzNfPN0iTCSXA412VQar2lWiVwk6x0ZE47TNU",[366,24],{"title":16,"path":17,"stem":18,"description":367,"children":-1},"Keep a role from deploying, and let a role whose blueprint switches every permission off deploy anyway.",1793356763901]