Use the bunny.net deploy action to publish an Edge Script from a GitHub repository whenever your code changes.
The BunnyWay/actions/deploy-script action uploads a script to Edge Scripting as part of a GitHub workflow, so a push to the branch you choose publishes the script without anyone having to upload it by hand.
script_id (required): the ID of the script you want to deploy. Store it as a GitHub secret (SCRIPT_ID).
deploy_key (required): the key that authorizes the deployment. Store it as a GitHub secret (DEPLOY_KEY).
file (required): the path of the script file to deploy. The file has to exist in your repository, or an earlier step in the workflow has to generate it.
The script ID and deploy key are available in the dashboard under Script -> Deployments -> Settings.Place the workflow file in the .github/workflows folder in your repository, and adjust it to fit your own build and deployment pipeline. The official GitHub documentation covers workflow syntax in full.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"bunny.net Documentation","colors":{"primary":"#EF6126","light":"#EF6126","dark":"#EF6126"},"logo":{"light":"https://mintcdn.com/bunnynet-cb9733c2/54-4KCQKoNVNuoyW/logo/bunny-logo-dark.svg?fit=max\u0026auto=format\u0026n=54-4KCQKoNVNuoyW\u0026q=85\u0026s=62c091ea1aaea93d0a981902b7783e37","dark":"https://mintcdn.com/bunnynet-cb9733c2/54-4KCQKoNVNuoyW/logo/bunny-logo-light.svg?fit=max\u0026auto=format\u0026n=54-4KCQKoNVNuoyW\u0026q=85\u0026s=3610e32d68a9fa458b0116ac58ca812a"},"favicon":"https://mintcdn.com/bunnynet-cb9733c2/1bTPx1eyQm8EK8W3/favicon.png?fit=max\u0026auto=format\u0026n=1bTPx1eyQm8EK8W3\u0026q=85\u0026s=85267b63e804fac7a4dd94599bb8c6e8","navbar":{"links":[{"href":"https://bunny.net/docs/api-reference","label":"API Reference"},{"href":"https://github.com/BunnyWay","label":"GitHub"}],"primary":{"type":"button","label":"Get Started","href":"https://dash.bunny.net/auth/register"}},"footer":{"socials":{"discord":"https://discord.gg/bunnynet","github":"https://github.com/BunnyWay","x":"https://x.com/BunnyCDN","bluesky":"https://bsky.app/profile/bunny.net","linkedin":"https://www.linkedin.com/company/bunnynet","facebook":"https://www.facebook.com/bunnycdn"}},"icons":{"library":"lucide"},"contextual":{"options":["copy","claude","chatgpt","cursor","view","vscode"],"display":"header"},"interaction":{"drilldown":false},"metadata":{"timestamp":true},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"bunnynet-cb9733c2","hasAudioNarration":false,"actualSubdomain":"bunnynet-cb9733c2","customDomains":["bunny.net"],"gitSource":{"type":"github","owner":"bunnyway","repo":"documentation","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae49f2d21d44d6b52dcfe35","collectionId":"5e262b87-ade9-45d8-9b63-06888c8d59a3","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae49f2d21d44d6b52dcfe35"},"feedback":{"thumbs":true,"contextualFeedback":{"allowEmail":true},"agentFeedback":true,"edits":true,"issues":false},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae534f2b9a26f131eb41834","clientVersion":"0.0.4043","searchFilterCounts":[{"language":"default","tag":"Documentation","count":752},{"language":"default","tag":"API Reference","count":318},{"language":"default","tag":"Core Platform API","count":109},{"language":"default","tag":"CDN","count":82},{"language":"default","tag":"Shield API","count":66},{"language":"default","tag":"Stream","count":66},{"language":"default","tag":"Magic Containers API","count":56},{"language":"default","tag":"Storage","count":54},{"language":"default","tag":"Guides","count":54},{"language":"default","tag":"Reference","count":52}],"searchSettings":{"isFiltersEnabled":true}},"assistantConfig":{"enableStarterQuestions":false,"deflection":{"enabled":true,"type":"link","email":"support@bunny.net","url":"https://bunny.net/contact","showHelpButton":true}},"basePath":"/docs","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"privacy":{"consentBanner":{"enabled":true}},"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".dark img[src*=\"/logo/frameworks/angular.svg\"],.dark img[src*=\"/logo/frameworks/eleventy.svg\"],.dark img[src*=\"/logo/frameworks/express.svg\"],.dark img[src*=\"/logo/frameworks/mariadb.svg\"],.dark img[src*=\"/logo/frameworks/nextjs.svg\"],.dark img[src*=\"/logo/frameworks/sphinx.svg\"]{filter:invert(1)}html:not(.dark) img[src*=\"/logo/frameworks/zola.svg\"]{filter:invert(1)}"}],"page":{"pagePath":"scripting/github-actions","slug":"/scripting/github-actions","pageMetadata":{"title":"Deploying your scripts with GitHub Actions","description":"Use the bunny.net deploy action to publish an Edge Script from a GitHub repository whenever your code changes.","href":"/scripting/github-actions"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Use the bunny.net deploy action to publish an Edge Script from a GitHub repository whenever your code changes.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,OptimizedImage}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`BunnyWay/actions/deploy-script`}),` action uploads a script to Edge Scripting as part of a GitHub workflow, so a push to the branch you choose publishes the script without anyone having to upload it by hand.`]}),`\n`,_jsx(Heading,{level:`2`,id:`example-usage`,children:`Example usage`}),`\n`,_jsx(_components.p,{children:`This workflow deploys a script whenever something is pushed to the main branch:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`23`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`23`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`Deploy when pushing on main`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`on`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` push`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` branches`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"main\"`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`jobs`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` publish`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` runs-on`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`ubuntu-latest`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Upload script\"`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` steps`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`Checkout repository`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` uses`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`actions/checkout@v4`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`Deploy Script to Bunny Edge Scripting`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` uses`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`BunnyWay/actions/deploy-script@main`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` with`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` script_id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"${{ secrets.SCRIPT_ID }}\"})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` deploy_key`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"${{ secrets.DEPLOY_KEY }}\"})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` file`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"script.ts\"`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`inputs`,children:`Inputs`}),`\n`,_jsx(_components.p,{children:`The action takes three inputs:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`script_id`}),` (required): the ID of the script you want to deploy. Store it as a GitHub secret (`,_jsx(_components.code,{children:`SCRIPT_ID`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`deploy_key`}),` (required): the key that authorizes the deployment. Store it as a GitHub secret (`,_jsx(_components.code,{children:`DEPLOY_KEY`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`file`}),` (required): the path of the script file to deploy. The file has to exist in your repository, or an earlier step in the workflow has to generate it.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`The script ID and deploy key are available in the dashboard under `,_jsx(_components.strong,{children:`Script`}),` -> `,_jsx(_components.strong,{children:`Deployments`}),` -> `,_jsx(_components.strong,{children:`Settings`}),`.`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/bunnynet-cb9733c2/L57MhyfuZyBVCcmn/images/docs/c72efa4529d3fef3f23326fb60487c15a77e88928abc317bf8e6c719acf5a8e4-image.png?fit=max\u0026auto=format\u0026n=L57MhyfuZyBVCcmn\u0026q=85\u0026s=215f2eeaf30b83a01366c263bd57f1ab`,alt:``,\"data-og-width\":`1396`,width:`1396`,\"data-og-height\":`678`,height:`678`,\"data-path\":`images/docs/c72efa4529d3fef3f23326fb60487c15a77e88928abc317bf8e6c719acf5a8e4-image.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/bunnynet-cb9733c2/L57MhyfuZyBVCcmn/images/docs/c72efa4529d3fef3f23326fb60487c15a77e88928abc317bf8e6c719acf5a8e4-image.png?w=280\u0026fit=max\u0026auto=format\u0026n=L57MhyfuZyBVCcmn\u0026q=85\u0026s=6472dc55f15a76dbb36ed9db7700fde5 280w, https://mintcdn.com/bunnynet-cb9733c2/L57MhyfuZyBVCcmn/images/docs/c72efa4529d3fef3f23326fb60487c15a77e88928abc317bf8e6c719acf5a8e4-image.png?w=560\u0026fit=max\u0026auto=format\u0026n=L57MhyfuZyBVCcmn\u0026q=85\u0026s=c564666b4d074c0279cb627cbe7c50fe 560w, https://mintcdn.com/bunnynet-cb9733c2/L57MhyfuZyBVCcmn/images/docs/c72efa4529d3fef3f23326fb60487c15a77e88928abc317bf8e6c719acf5a8e4-image.png?w=840\u0026fit=max\u0026auto=format\u0026n=L57MhyfuZyBVCcmn\u0026q=85\u0026s=23d696220d7fc8545d2918c61a77ee23 840w, https://mintcdn.com/bunnynet-cb9733c2/L57MhyfuZyBVCcmn/images/docs/c72efa4529d3fef3f23326fb60487c15a77e88928abc317bf8e6c719acf5a8e4-image.png?w=1100\u0026fit=max\u0026auto=format\u0026n=L57MhyfuZyBVCcmn\u0026q=85\u0026s=51d1ed7dd890e90682089d5c502a58f0 1100w, https://mintcdn.com/bunnynet-cb9733c2/L57MhyfuZyBVCcmn/images/docs/c72efa4529d3fef3f23326fb60487c15a77e88928abc317bf8e6c719acf5a8e4-image.png?w=1650\u0026fit=max\u0026auto=format\u0026n=L57MhyfuZyBVCcmn\u0026q=85\u0026s=faea70b8ce793c4b9da0d7d249e8b70b 1650w, https://mintcdn.com/bunnynet-cb9733c2/L57MhyfuZyBVCcmn/images/docs/c72efa4529d3fef3f23326fb60487c15a77e88928abc317bf8e6c719acf5a8e4-image.png?w=2500\u0026fit=max\u0026auto=format\u0026n=L57MhyfuZyBVCcmn\u0026q=85\u0026s=137050ae9def562fcea873fb49047680 2500w`}),`\n`,_jsxs(_components.p,{children:[`Place the workflow file in the `,_jsx(_components.code,{children:`.github/workflows`}),` folder in your repository, and adjust it to fit your own build and deployment pipeline. The `,_jsx(_components.a,{href:`https://docs.github.com/en/actions/writing-workflows`,children:`official GitHub documentation`}),` covers workflow syntax in full.`]}),`\n`,_jsx(Heading,{level:`2`,id:`setting-up-secrets`,children:`Setting up secrets`}),`\n`,_jsxs(_components.p,{children:[`To store the `,_jsx(_components.code,{children:`script_id`}),` and `,_jsx(_components.code,{children:`deploy_key`}),` as secrets in your GitHub repository:`]}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Navigate to your GitHub repository.`}),`\n`,_jsxs(_components.li,{children:[`Click on `,_jsx(_components.strong,{children:`Settings`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Select `,_jsx(_components.strong,{children:`Secrets and variables`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Choose `,_jsx(_components.strong,{children:`Actions`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`New repository secret`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Add `,_jsx(_components.code,{children:`SCRIPT_ID`}),` and `,_jsx(_components.code,{children:`DEPLOY_KEY`}),` as the names of the secrets and provide their respective values.`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Deploying your scripts with GitHub Actions","description":"Use the bunny.net deploy action to publish an Edge Script from a GitHub repository whenever your code changes.","href":"/scripting/github-actions"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Example usage","slug":"example-usage","depth":2,"children":[]},{"title":"Inputs","slug":"inputs","depth":2,"children":[]},{"title":"Setting up secrets","slug":"setting-up-secrets","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"bunnynet-cb9733c2","siteName":"bunny.net Documentation","title":"Deploying your scripts with GitHub Actions - bunny.net Documentation","relatedPagesConfig":{"enabled":false,"limit":5,"mode":"automatic"},"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-08-17T08:21:48.762Z","gitLastModified":"2026-08-17T08:21:13.000Z","originalFileLocation":"scripting/github-actions.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Use the bunny.net deploy action to publish an Edge Script from a GitHub repository whenever your code changes.\">\u003cmeta data-mint-head name=\"application-name\" content=\"bunny.net Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/bunnynet-cb9733c2/Zv4NOenQlgPS3TXm/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/docs/mintlify-assets/_mintlify/favicons/bunnynet-cb9733c2/Zv4NOenQlgPS3TXm/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/bunnynet-cb9733c2/Zv4NOenQlgPS3TXm/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/bunnynet-cb9733c2/Zv4NOenQlgPS3TXm/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/bunnynet-cb9733c2/Zv4NOenQlgPS3TXm/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/bunnynet-cb9733c2/Zv4NOenQlgPS3TXm/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/bunnynet-cb9733c2/Zv4NOenQlgPS3TXm/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/bunnynet-cb9733c2/Zv4NOenQlgPS3TXm/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/bunnynet-cb9733c2/Zv4NOenQlgPS3TXm/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Deploying your scripts with GitHub Actions - bunny.net Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Use the bunny.net deploy action to publish an Edge Script from a GitHub repository whenever your code changes.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"bunny.net Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://bunny.net/docs/scripting/github-actions\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://bunnynet-cb9733c2.mintlify.app/_mintlify/api/og/v2?division=Deployment\u0026amp;title=Deploying+your+scripts+with+GitHub+Actions\u0026amp;description=Use+the+bunny.net+deploy+action+to+publish+an+Edge+Script+from+a+GitHub+repository+whenever+your+code+changes.\u0026amp;theme=3e3fa11ba94222b95e7f52d5\u0026amp;signature=ff38b81b467da7610e1acbaa89b486c846ee7b26e32932798df2fe3c68b2deb7\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Deploying your scripts with GitHub Actions - bunny.net Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Use the bunny.net deploy action to publish an Edge Script from a GitHub repository whenever your code changes.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://bunnynet-cb9733c2.mintlify.app/_mintlify/api/og/v2?division=Deployment\u0026amp;title=Deploying+your+scripts+with+GitHub+Actions\u0026amp;description=Use+the+bunny.net+deploy+action+to+publish+an+Edge+Script+from+a+GitHub+repository+whenever+your+code+changes.\u0026amp;theme=3e3fa11ba94222b95e7f52d5\u0026amp;signature=ff38b81b467da7610e1acbaa89b486c846ee7b26e32932798df2fe3c68b2deb7\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/docs/mintlify-assets/_mintlify/favicons/bunnynet-cb9733c2/Zv4NOenQlgPS3TXm/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"bunny.net Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#EF6126\">\u003clink data-mint-head rel=\"canonical\" href=\"https://bunny.net/docs/scripting/github-actions\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/scripting/github-actions.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://bunny.net/#organization\",\"name\":\"bunny.net Documentation\",\"url\":\"https://bunny.net\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/bunnynet-cb9733c2/54-4KCQKoNVNuoyW/logo/bunny-logo-dark.svg?fit=max\u0026auto=format\u0026n=54-4KCQKoNVNuoyW\u0026q=85\u0026s=62c091ea1aaea93d0a981902b7783e37\"}},{\"@type\":\"WebSite\",\"@id\":\"https://bunny.net/docs#website\",\"name\":\"bunny.net Documentation\",\"url\":\"https://bunny.net/docs\",\"publisher\":{\"@id\":\"https://bunny.net/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://bunny.net/docs/scripting/github-actions#webpage\",\"url\":\"https://bunny.net/docs/scripting/github-actions\",\"name\":\"Deploying your scripts with GitHub Actions\",\"description\":\"Use the bunny.net deploy action to publish an Edge Script from a GitHub repository whenever your code changes.\",\"dateModified\":\"2026-08-17T08:21:13.000Z\",\"isPartOf\":{\"@id\":\"https://bunny.net/docs#website\"},\"breadcrumb\":{\"@id\":\"https://bunny.net/docs/scripting/github-actions#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://bunny.net/docs/scripting/github-actions#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Deployment\",\"item\":\"https://bunny.net/docs/scripting/deployments\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Deploying your scripts with GitHub Actions\",\"item\":\"https://bunny.net/docs/scripting/github-actions\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://bunny.net/docs/scripting/github-actions#article\",\"headline\":\"Deploying your scripts with GitHub Actions\",\"name\":\"Deploying your scripts with GitHub Actions\",\"description\":\"Use the bunny.net deploy action to publish an Edge Script from a GitHub repository whenever your code changes.\",\"url\":\"https://bunny.net/docs/scripting/github-actions\",\"mainEntityOfPage\":{\"@id\":\"https://bunny.net/docs/scripting/github-actions#webpage\"},\"dateModified\":\"2026-08-17T08:21:13.000Z\",\"publisher\":{\"@id\":\"https://bunny.net/#organization\"},\"isPartOf\":{\"@id\":\"https://bunny.net/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"bunny.net Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"bunny.net Documentation","nav":{"global":null,"products":[{"product":"Home","icon":"book-open","pages":[{"title":"Home","href":""}]},{"product":"CDN","icon":"zap","description":"Accelerate and protect your content globally","pages":[{"title":"CDN","href":"/cdn"}]},{"product":"Magic Containers","icon":"box","description":"Deploy any app anywhere with Docker","pages":[{"title":"Magic Containers","href":"/magic-containers"}]},{"product":"Edge Scripting","icon":"code","description":"Deploy serverless code at the edge","tabs":[{"tab":"Documentation","groups":[{"group":"Documentation","pages":[{"title":"Bunny Edge Scripting","sidebarTitle":"Introduction","mode":"wide","href":"/scripting"},{"title":"Quickstart","href":"/scripting/quickstart"},{"title":"Pricing","href":"/scripting/pricing"},{"title":"Bunny Edge Scripting Changelog","sidebarTitle":"Changelog","url":"/changelog?tags=Edge%20Scripting","href":"/scripting/changelog"}]},{"group":"Script Types","pages":[{"group":"Standalone","pages":[{"title":"Standalone scripts","sidebarTitle":"Introduction","href":"/scripting/standalone/overview"},{"group":"Examples","pages":[{"title":"Fetch url","href":"/scripting/standalone/examples/fetch-url"},{"title":"Return JSON","href":"/scripting/standalone/examples/return-json"},{"title":"Return HTML","href":"/scripting/standalone/examples/return-html"},{"title":"Send an email","href":"/scripting/standalone/examples/send-email"},{"title":"Redirect to another domain","href":"/scripting/standalone/examples/redirect-domain"},{"title":"Weighted traffic splitting","href":"/scripting/standalone/examples/weighted-routing"},{"title":"Route by country","href":"/scripting/standalone/examples/geo-routing"}]}]},{"group":"Middleware","pages":[{"title":"Middleware scripts","sidebarTitle":"Introduction","href":"/scripting/middleware/overview"},{"group":"Examples","pages":[{"title":"Modify HTTP headers","href":"/scripting/middleware/examples/modify-headers"},{"title":"Modify response body (Middleware)","href":"/scripting/middleware/examples/modify-body"},{"title":"Protect cached content with middleware","sidebarTitle":"Protect cached content","href":"/scripting/middleware/examples/protect-cached-content"}]}]}]},{"group":"Deployment","pages":[{"title":"Deployments","description":"Track the published versions of your script and roll back to an earlier one when you need to.","href":"/scripting/deployments"},{"title":"Deploying your scripts with GitHub Actions","href":"/scripting/github-actions"},{"title":"GitHub Integration","description":"Keep your Edge Script code in a GitHub repository and deploy it with GitHub Actions.","href":"/scripting/github-integration"},{"title":"Environment Variables","href":"/scripting/environment-variables"},{"title":"Secrets","href":"/scripting/secrets"}]},{"group":"Observability","pages":[{"title":"Statistics","href":"/scripting/statistics"},{"title":"Logs","href":"/scripting/logs"}]},{"group":"APIs","pages":[{"title":"Runtime","href":"/scripting/runtime"},{"group":"Cache API","pages":[{"title":"Cache API","sidebarTitle":"Overview","href":"/scripting/cache/index"},{"title":"Managing caches","sidebarTitle":"Managing caches","href":"/scripting/cache/managing-caches"},{"title":"Reading \u0026 writing","sidebarTitle":"Reading \u0026 writing","href":"/scripting/cache/reading-writing"},{"title":"Cache examples","sidebarTitle":"Examples","href":"/scripting/cache/examples"}]},{"title":"HTMLRewriter","sidebarTitle":"HTMLRewriter","href":"/scripting/html-rewriter"},{"title":"Node:FS","sidebarTitle":"node:fs","href":"/scripting/node-fs"},{"title":"Node:TLS","sidebarTitle":"node:tls","href":"/scripting/node-tls"},{"title":"WebSockets","href":"/scripting/websockets"},{"title":"Server-Sent Events","href":"/scripting/server-sent-events"}]},{"group":"Reference","pages":[{"title":"Limits","href":"/scripting/limits"},{"title":"Edge Scripting Regions","sidebarTitle":"Regions and PoPs","href":"/scripting/regions"},{"title":"HTTPS \u0026 SSL Certificates","href":"/scripting/https-ssl-certificates"},{"title":"Before cache execution","sidebarTitle":"Before cache execution","href":"/scripting/before-cache"},{"title":"API Reference","url":"/api-reference/scripting","href":"/scripting/api-reference"}]}]}]},{"product":"Stream","icon":"video","description":"Video streaming and delivery platform","pages":[{"title":"Stream","href":"/stream"}]},{"product":"Storage","icon":"hard-drive","description":"Global object storage","pages":[{"title":"Storage","href":"/storage"}]},{"product":"Shield","icon":"shield","description":"Stay protected and online no matter what","pages":[{"title":"Shield","href":"/shield"}]},{"product":"Optimizer","icon":"sparkles","description":"Automatic image and web optimization.","pages":[{"title":"Optimizer","href":"/optimizer"}]},{"product":"DNS","icon":"globe","description":"Unlock the true power of DNS with an ultra-fast scriptable platform","pages":[{"title":"DNS","href":"/dns"}]},{"product":"Database","icon":"database","description":"Serverless SQLite over HTTP","pages":[{"title":"Database","href":"/database"}]},{"product":"Integrations","icon":"puzzle","description":"Official and third-party plugins and integrations","pages":[{"title":"Integrations","href":"/integrations/wordpress"}]},{"product":"CLI","icon":"terminal","description":"Manage bunny.net from your terminal","pages":[{"title":"CLI","href":"/cli"}]},{"product":"API Reference","icon":"square-terminal","description":"Build \u0026 Integrate with the Platform API","pages":[{"title":"API Reference","href":"/api-reference"}]},{"product":"Partners","icon":"handshake","description":"Manage customers, pricing, and billing as a bunny.net partner","pages":[{"title":"Partners","href":"/partners"}]}]},"basePath":"","title":"Deploying your scripts with GitHub Actions - bunny.net Documentation","buildId":"dpl_4RHMRqtvdHvKgaEfTTjFqjzja3B6","deploymentId":"dpl_4RHMRqtvdHvKgaEfTTjFqjzja3B6","dynamics":["a74be98ba7"],"chunks":["zoom-image-lightbox-CZTaVDTN.js","lightbox-handle-r17bVUz3.js"]}