GitHub Actions templates for deploying to Astro from private networks
Use pre-built Astronomer CI/CD templates to automate deploying Apache Airflow dags to Astro on private networks using GitHub Actions.
The Astro GitHub integration can automatically deploy code from a GitHub repository to Astro without you needing to configure a GitHub action. In addition, the Astro UI shows Git metadata for each deploy on your Deployment information screen. See Deploy code with the Astro GitHub integration for setup steps.
If you don’t have access to the Astronomer deploy action because you can’t access the public internet from your GitHub repository, use one of the following private network templates to deploy to Astro.Read the following sections to choose the right template for your use case. If you have one Deployment and one environment on Astro, use the single branch implementation. If you have multiple Deployments that support development and production environments, use the multiple branch implementation. If your team builds custom Docker images, use the custom image implementation. If you want to deploy a prebuilt image from an artifact registry without rebuilding, use the prebuilt image implementation.You can configure your CI/CD pipelines to deploy a full project image or your dags directory. To learn more about CI/CD on Astro, see Choose a CI/CD strategy.
If you use a self-hosted runner to execute jobs from GitHub Actions, the Astro CLI’s config.yaml file, which stores default deploy details, might be shared across your organization and hence multiple CI/CD pipelines. To reduce the risk of accidentally deploying to the wrong Deployment, ensure the following:
Add ASTRO_API_TOKEN to your repository and include a check in your GitHub workflow to verify that it exists.
Use Deployment API tokens, which are scoped only to one Deployment, instead of Workspace or Organization API tokens.
Specify deployment-id or deployment-name in your action. For example, astro deploy <deployment-id> or astro deploy -n <deployment-name>.
Add the command astro logout at the end of your workflow to ensure that your authentication token is cleared from the config.yaml file.
ASTRO_API_TOKEN: The value for your Workspace or Organization API token.
In your project repository, create a new YAML file in .github/workflows that includes the following configuration. When you make a commit to a specified branch, this workflow sets your Deployment API credentials as environment variables, installs the latest version of the Astro CLI, checks to see if your dags folder has changes, and then either completes a full code deploy or a dag-only code deploy.
name: Astronomer CI - Deploy codeon: push: branches: - mainenv: ## Sets Deployment API credentials as environment variables ASTRO_API_TOKEN: ${{ secrets.ASTRO_API_TOKEN }}jobs: build: runs-on: ubuntu-latest # add the appropriate image steps: # Install the Astro CLI (current version) - name: checkout repo uses: actions/checkout@v3 with: fetch-depth: 2 clean: false - name: Install the CLI run: curl -sSL install.astronomer.io | sudo bash -s # Determine if only dag files have changes - name: Deploy to Astronomer run: | files=$(git diff --name-only $(git rev-parse HEAD~1) -- .) dags_only=1 for file in $files; do if [[ $file != dags/* ]]; then echo "$file is not a dag, triggering a full image build" dags_only=0 break fi done ### If only dags changed deploy only the dags in your 'dags' folder to your Deployment if [ $dags_only == 1 ] then astro deploy --dags fi ### If any other files changed build your Astro project into a Docker image, push the image to your Deployment, and then push and dag changes if [ $dags_only == 0 ] then astro deploy fi
The following setup can be used to create a multiple branch CI/CD pipeline using GitHub Actions to push a full image deploy to Astro. A multiple branch pipeline can be used to test dags in a development Deployment and promote them to a production Deployment.
If your Astro project requires additional build-time arguments to build an image, you need to define these build arguments using Docker’s build-push-action. This template always pushes your entire project as an image to Astro.
name: Astronomer CI - Custom base imageon: push: branches: - mainjobs: build: runs-on: ubuntu-latest env: ASTRO_API_TOKEN: ${{ secrets.ASTRO_API_TOKEN }} steps: - name: Check out the repo uses: actions/checkout@v3 - name: Create image tag id: image_tag run: echo ::set-output name=image_tag::astro-$(date +%Y%m%d%H%M%S) - name: Create SSH Socket uses: webfactory/ssh-agent@v0.5.4 with: # GITHUB_SSH_KEY must be defined as a GitHub secret. ssh-private-key: ${{ secrets.GITHUB_SSH_KEY }} - name: (Optional) Test SSH Connection - Should print hello message. run: (ssh git@github.com) || true - name: Build image uses: docker/build-push-action@v2 with: tags: ${{ steps.image_tag.outputs.image_tag }} load: true ssh: | github=${{ env.SSH_AUTH_SOCK }} - name: Deploy to Astro run: | curl -sSL install.astronomer.io | sudo bash -s astro deploy <your-deployment-id> --image-name ${{ steps.image_tag.outputs.image_tag }}
If you need guidance configuring a CI/CD pipeline for a more complex use case involving custom Runtime images, reach out to Astronomer support.
If your organization builds Astro Runtime images in a separate build pipeline and stores them in an artifact registry, use this template to pull and deploy the prebuilt image without rebuilding it. This template skips the build step entirely and deploys the image directly from your registry to Astro.
A prebuilt Docker image based on Astro Runtime, stored in an artifact registry such as Google Artifact Registry, Amazon ECR, Azure Container Registry, or Docker Hub.
Registry credentials with pull access to the image.
Set DOCKERHUB_USERNAME and DOCKERHUB_TOKEN as GitHub secrets with pull access to the repository.
These workflows authenticate to the registry, pull the prebuilt image, and deploy it to Astro using --image-name. No build step occurs. The image must be based on Astro Runtime.To learn more about deploying prebuilt images, see Deploy a prebuilt Docker image.
Was this page helpful?
⌘I
{"docsConfig":{"theme":"almond","$schema":"https://mintlify.com/docs.json","name":"Astronomer","description":"Documentation for Astro, Astronomer's managed Apache Airflow platform, plus Astro Private Cloud, Astro Runtime, the Astro CLI, the Astro API, and Airflow learning guides.","colors":{"primary":"#6B3aad","light":"#c69dff","dark":"#6B3aad"},"logo":{"light":"https://mintcdn.com/astronomer/U_UZjTkJqgXPi7dz/images/logo-light.svg?fit=max\u0026auto=format\u0026n=U_UZjTkJqgXPi7dz\u0026q=85\u0026s=e0826571e784a49618fef3e33a90cb43","dark":"https://mintcdn.com/astronomer/U_UZjTkJqgXPi7dz/images/logo-dark.svg?fit=max\u0026auto=format\u0026n=U_UZjTkJqgXPi7dz\u0026q=85\u0026s=365121f377a9f6fe6d4fc98a9c049287"},"favicon":"https://mintcdn.com/astronomer/Dj3lmYK-LeP4OB1k/images/favicon.svg?fit=max\u0026auto=format\u0026n=Dj3lmYK-LeP4OB1k\u0026q=85\u0026s=6d7f1fa50a345cb373b918c25b8afff3","api":{"openapi":{"source":"astro/api/v-1/openapi.yaml","directory":"astro/api/v-1/"}},"background":{"color":{"light":"#ffffff","dark":"#131426"}},"navbar":{"links":[{"href":"https://www.astronomer.io/product/","label":"Product"},{"href":"https://www.astronomer.io/customers/","label":"Customers"},{"href":"https://www.astronomer.io/events/webinars/","label":"Webinars"},{"href":"https://www.astronomer.io/pricing/","label":"Pricing"}],"primary":{"type":"button","label":"Get Started Free","href":"https://www.astronomer.io/lp/signup/"}},"footer":{"socials":{"github":"https://github.com/astronomer","linkedin":"https://www.linkedin.com/company/astronomer","youtube":"https://www.youtube.com/c/astronomer","x":"https://x.com/astronomerio"},"links":[{"header":"Product","items":[{"label":"Platform Overview","href":"https://www.astronomer.io/product"},{"label":"Astro Observe","href":"https://www.astronomer.io/product/observe"},{"label":"Astro Private Cloud","href":"https://www.astronomer.io/product/astro-private-cloud"},{"label":"Security \u0026 Trust","href":"https://www.astronomer.io/security"},{"label":"Pricing","href":"https://www.astronomer.io/pricing"},{"label":"Cosmos","href":"https://www.astronomer.io/cosmos"},{"label":"Professional Services","href":"https://www.astronomer.io/professional-services"}]},{"header":"Solutions","items":[{"label":"All Use Cases","href":"https://www.astronomer.io/solutions"},{"label":"AI Ops","href":"https://www.astronomer.io/solutions/ai-ml"},{"label":"Data Observability","href":"https://www.astronomer.io/solutions/data-observability"},{"label":"ETL/ELT","href":"https://www.astronomer.io/solutions/etl-elt"},{"label":"ML Ops","href":"https://www.astronomer.io/solutions/mlops"},{"label":"Financial Services","href":"https://www.astronomer.io/solutions/financial-services"},{"label":"Retail","href":"https://www.astronomer.io/solutions/retail-ecommerce"}]},{"header":"Resources","items":[{"label":"Academy","href":"https://academy.astronomer.io/"},{"label":"Blog","href":"https://www.astronomer.io/blog"},{"label":"Webinars","href":"https://www.astronomer.io/events/webinars"},{"label":"Events","href":"https://www.astronomer.io/events"},{"label":"What is Airflow","href":"https://www.astronomer.io/airflow"},{"label":"Airflow 3.0","href":"https://www.astronomer.io/airflow/3"},{"label":"Airflow 2.x End of Life","href":"https://www.astronomer.io/airflow-2-eol"}]},{"header":"Company","items":[{"label":"Our Story","href":"https://www.astronomer.io/about-us"},{"label":"Careers","href":"https://www.astronomer.io/careers"},{"label":"Contact","href":"https://www.astronomer.io/contact"},{"label":"Support","href":"https://support.astronomer.io/hc/en-us"},{"label":"Legal","href":"https://www.astronomer.io/legal"},{"label":"Privacy","href":"https://www.astronomer.io/privacy"},{"label":"Terms of Service","href":"https://www.astronomer.io/legal/terms-of-service"}]}]},"search":{"prompt":"Search Astronomer docs..."},"seo":{"metatags":{"canonical":"https://www.astronomer.io/docs","og:site_name":"Astronomer Documentation","og:image":"https://www.astronomer.io/docs/images/astronomer-card.png","twitter:card":"summary_large_image","twitter:image":"https://www.astronomer.io/docs/images/astronomer-card.png"}},"fonts":{"heading":{"family":"Albert Sans"},"body":{"family":"Inter"}},"icons":{"library":"fontawesome"},"integrations":{"gtm":{"tagId":"GTM-WCJNSWTS"}},"contextual":{"options":["copy","chatgpt","claude","mcp"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"astronomer","hasAudioNarration":false,"actualSubdomain":"astronomer","customDomains":["astronomer.io"],"gitSource":{"type":"github","owner":"astronomer","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae4f44dbdfe8f05dd544b09","collectionId":"f208d87d-9ab0-4592-b8b5-5d8d7a27797c","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae4f44dbdfe8f05dd544b09"},"feedback":{"thumbs":true,"agentFeedback":false},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae4f44dbdfe8f05dd544b09","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"Astro CLI","count":1561},{"language":"default","tag":"Overview","count":1381},{"language":"default","tag":"CLI reference","count":1346},{"language":"default","tag":"Astro Private Cloud","count":507},{"language":"default","tag":"astro deployment","count":406},{"language":"default","tag":"Astro","count":269},{"language":"default","tag":"Airflow","count":253},{"language":"default","tag":"Astro API","count":252},{"language":"default","tag":"astro workspace","count":210},{"language":"default","tag":"astro organization","count":180}],"searchSettings":{"maxResults":20,"isFiltersEnabled":true,"showContentSnippets":true}},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":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},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"privacy":{"consentBanner":{"enabled":false}},"googleFontsInlined":true},"customCss":[{"filePath":"custom/footer.css","content":"main{overflow-x:clip!important;border-radius:0!important}#footer{border-top:none!important;margin-left:calc(-1*var(--main-padding-x, 0px))!important;margin-right:calc(-1*var(--main-padding-x, 0px))!important}#footer a.select-none{display:none!important}#footer h2,#footer h3,#footer h4,#footer p.font-semibold,#footer p.text-sm.font-semibold{font-family:var(--theme-font-family-mono,\n \"Roboto Mono\",\n monospace\n )!important;font-size:12px!important;font-weight:700!important;letter-spacing:1px!important;text-transform:uppercase!important}"},{"filePath":"custom/header.css","content":":root{--mintlify-slot-header-height:70px}@media (max-width:1023px){:root{--mintlify-slot-header-height:120px}}#navbar{background-color:var(--new-moon-90, #1d1d2c)!important;border:0!important}#navbar,#navbar .h-14{height:70px!important}@media (max-width:1023px){#navbar,#navbar .h-14{height:60px!important}}#navbar .nav-logo[alt=\"light logo\"]{display:none!important}#navbar .nav-logo[alt=\"dark logo\"]{display:block!important;height:18px!important;width:auto!important}#navbar [data-component-part=products-selector-trigger],#navbar [data-component-part=products-selector-trigger] span{color:var(--new-moon-10, #f0ece5)!important}#navbar [data-component-part=products-selector-trigger] svg[style*=mask-image]{background-color:var(--new-moon-10, #f0ece5)!important}#navbar [data-component-part=products-selector-trigger] svg:not([style*=mask-image]){color:var(--new-moon-50, #969194)!important}#navbar [data-component-part=products-selector-trigger]:focus-visible,#navbar [data-component-part=products-selector-trigger]:hover,#navbar [data-component-part=products-selector-trigger][aria-expanded=true]{background-color:var(--new-moon-80, #343247)!important;color:var(--new-moon-10, #f0ece5)!important}#navbar li.navbar-link{border:0!important;background:0 0!important;padding:0!important;border-radius:5px!important;display:inline-flex!important}#navbar li.navbar-link a{color:var(--new-moon-10, #f0ece5)!important;font-size:14px!important;font-weight:500!important;padding:4px 12px!important;border-radius:5px!important;transition:background-color .2s ease!important;text-decoration:none!important;opacity:1!important}#navbar li.navbar-link a:focus,#navbar li.navbar-link a:hover,#navbar li.navbar-link:hover{background-color:var(--new-moon-80, #343247)!important;opacity:1!important}#topbar-cta-button{display:inline-flex!important}#topbar-cta-button a,#topbar-cta-button a span{color:var(--new-moon-90, #1d1d2c)!important;font-weight:600!important;font-size:14px!important;opacity:1!important}#topbar-cta-button a{background-color:var(--gold-40, #ffb32d)!important;border-radius:5px!important;padding:8px 20px!important;transition:background-color .2s ease!important}#topbar-cta-button a span{line-height:2.14}#topbar-cta-button a:hover{background-color:var(--new-moon-20)!important;opacity:1!important}#search-bar-entry{padding-right:.875rem;padding-left:.65rem;padding-block:0}#search-bar-entry .truncate{font-size:12px}@media screen and (min-width:1023px){a.select-none+div>button[type=button]{color:#fff!important}}#navbar.is-filled{box-shadow:0 2px 16px rgba(0,0,0,.4)}button.logout-link{color:var(--new-moon-10);margin-inline:.5rem 1rem}@media screen and (max-width:1023px){button.flex.items-center.h-14.py-4.px-5.lg\\:hidden.focus\\:outline-0.w-full.text-left{background:#f7f7f7}html.dark button.flex.items-center.h-14.py-4.px-5.lg\\:hidden.focus\\:outline-0.w-full.text-left{background:var(--new-moon-90)}}"},{"filePath":"custom/variables.css","content":":root{--main-padding-x:1rem;--red-05:#fff2f3;--red-10:#ffe3e5;--red-20:#ffb6bb;--red-30:#ff929a;--red-40:#fd6d77;--red-50:#f03a47;--red-60:#c5283d;--red-70:#b4162b;--red-80:#9a0b1e;--red-90:#7b0011;--red-pink:#ed749d;--gold-05:#fffaf1;--gold-10:#fff1d8;--gold-20:#ffe3b3;--gold-30:#ffd07d;--gold-40:#ffb32d;--gold-50:#e89428;--gold-60:#dd8513;--gold-70:#c2730c;--gold-80:#a55d05;--gold-90:#7f4002;--gold-fg:#1b130a;--teal-05:#e3fbff;--teal-10:#c2f7ff;--teal-20:#95e8f5;--teal-30:#74d5e4;--teal-40:#44c9de;--teal-50:#13bdd7;--teal-60:#00a2bb;--teal-70:#0095ac;--teal-80:#008397;--teal-90:#006271;--green-05:#e6fff0;--green-10:#c4f9da;--green-20:#95f1ba;--green-30:#6bde99;--green-40:#42cc7a;--green-50:#19ba5a;--green-60:#118a06;--green-70:#0d7503;--green-80:#0a5702;--green-90:#053900;--blue-05:#f0f5ff;--blue-10:#d2e3ff;--blue-20:#adcbff;--blue-30:#81afff;--blue-40:#5493ff;--blue-50:#2676ff;--blue-60:#0458ea;--blue-70:#024bc9;--blue-80:#003da6;--blue-90:#00276a;--purple-05:#f7f3ff;--purple-10:#e8dbfe;--purple-20:#d9c2fe;--purple-30:#c9aafd;--purple-40:#ba91fc;--purple-50:#a067fb;--purple-60:#872ded;--purple-70:#6d23c0;--purple-80:#521993;--purple-90:#380e65;--purple-95:#1d0438;--purple-99:#0d011a;--new-moon-05:#f8f5f2;--new-moon-10:#f0ece5;--new-moon-20:#e9e2d8;--new-moon-30:#d0c9c2;--new-moon-40:#b6b1ad;--new-moon-50:#969194;--new-moon-60:#75727a;--new-moon-70:#555261;--new-moon-80:#343247;--new-moon-85:#2d2c3f;--new-moon-90:#1d1d2c;--new-moon-95:#111121;--new-moon-99:#040416;--topaz-50:#ffeee1;--topaz-100:#ffd9bd;--topaz-200:#ffc399;--topaz-300:#ff9d61;--topaz-400:#ff792e;--topaz-500:#d85d15;--topaz-600:#b14807;--topaz-700:#8a3700;--topaz-800:#632800;--white:#fff;--black:var(--new-moon-99);--surface-secondary:var(--grey-10);--theme-font-family-heading:\"League Gothic\", sans-serif;--theme-font-family-body:\"Roboto\", \"Inter\", sans-serif;--theme-font-family-mono:\"Roboto Mono\", monospace;--theme-font-family-condensed:\"Roboto Condensed\", \"Roboto\", sans-serif;--ease-standard:cubic-bezier(0.2, 0.8, 0.2, 1);--theme-primary-color:var(--new-moon-90);--theme-background-color:var(--white);--theme-accent-color:var(--gold-40);--theme-secondary-color:var(--new-moon-70)}@media (min-width:800px){:root{--main-padding-x:2rem}}@media (min-width:1024px){:root{--main-padding-x:2.5rem}}.callout,.card{border-radius:5px!important}.acds-button{--button-background-color:var(--gold-40, #ffb32d);--button-color:var(--new-moon-90, #1d1d2c);--button-background-color-hover:var(--new-moon-20);--button-color-hover:var(--new-moon-90, #1d1d2c);text-align:center;background:var(--button-background-color);color:var(--button-color);cursor:pointer;letter-spacing:.2738px;border:3px solid var(--button-border-color);min-width:max-content;font-size:14px;font-style:normal;font-weight:600;line-height:2.14;font-family:var(--theme-font-family-body);border-radius:5px;padding:8px 20px;text-decoration:none;transition:all .3s;display:inline-block}.acds-button span{color:inherit!important}.acds-button svg{color:var(--new-moon-90, #1d1d2c);background-color:var(--new-moon-90, #1d1d2c)}.acds-button:hover{background-color:var(--button-background-color-hover, --new-moon-20);color:var(--button-color-hover, var(--button-color));text-decoration:none}.acds-button.secondary,.acds-button.secondary span{--button-background-color:var(--new-moon-70);--button-color:var(--white, #fff);--button-background-color-hover:var(--new-moon-90);--button-color-hover:var(--white, #fff);color:var(--button-color)!important}html.dark .acds-button:not(.secondary) span{color:var(--button-color)!important}#content-area{max-width:60rem!important}#content-container{padding-top:2rem;padding-inline:var(--main-padding-x)!important}#sidebar-content{padding-top:1rem}#sidebar-content>div>div.px-2{padding:0!important}#search-bar-entry,.sidebar-group a,.sidebar-group button{border-radius:5px!important}#page-context-menu-button{border-top-left-radius:5px;border-bottom-left-radius:5px}#page-context-menu-button+button{border-top-right-radius:5px;border-bottom-right-radius:5px}.eyebrow{font-family:var(--theme-font-family-mono);text-transform:uppercase;letter-spacing:.1em;font-weight:600;font-size:12px;line-height:1.33}.scroll-mt-\\(--scroll-mt\\).almond-layout.top-\\[var\\(--mintlify-slot-header-height\\,7rem\\)\\].lg\\:top-\\[var\\(--mintlify-slot-header-height\\,3\\.5rem\\)\\].peer-\\[\\.is-not-custom\\]\\:fixed.peer-\\[\\.is-not-custom\\]\\:pb-2.peer-\\[\\.is-not-custom\\]\\:px-2.peer-\\[\\.is-not-custom\\]\\:pt-0.peer-\\[\\.is-custom\\]\\:absolute.peer-\\[\\.is-custom\\]\\:\\[\\\u0026\\>\\:first-child\\]\\:hidden\\!.peer-\\[\\.is-custom\\]\\:\\[\\\u0026\\>\\:first-child\\]\\:sm\\:hidden\\!.peer-\\[\\.is-custom\\]\\:\\[\\\u0026\\>\\:first-child\\]\\:md\\:hidden\\!.peer-\\[\\.is-custom\\]\\:\\[\\\u0026\\>\\:first-child\\]\\:lg\\:hidden\\!.peer-\\[\\.is-custom\\]\\:\\[\\\u0026\\>\\:first-child\\]\\:xl\\:hidden\\!{position:relative;padding-right:0;padding-bottom:0;width:100%!important}.flex.rounded-2xl.h-\\[calc\\(100dvh-1rem-var\\(--mintlify-slot-header-height\\,7rem\\)\\)\\].lg\\:h-\\[calc\\(100dvh-0\\.5rem-var\\(--mintlify-slot-header-height\\,3\\.5rem\\)\\)\\]{height:100%}#header>div:first-of-type+div p{margin-top:1rem;font-size:1rem;font-style:italic}.sticky.shrink-0.z-22.pt-2.pb-2.pr-2.mt-\\(--banner-height\\,0px\\).top-\\(--banner-height\\,0px\\).h-\\[calc\\(100vh-var\\(--banner-height\\,0px\\)\\)\\].print\\:hidden{padding:0;border-radius:0!important}#chat-assistant-sheet{border-radius:0}.flex.flex-col.sm\\:grid.max-md\\:grid-cols-2\\!.gap-8.flex-1{display:flex!important;justify-content:start;align-items:center;flex-wrap:wrap;flex-direction:row}.flex.flex-col.sm\\:grid.max-md\\:grid-cols-2\\!.gap-8.flex-1>div{flex:0 1 auto;max-width:min-content}@media screen and (max-width:639px){.flex.flex-col.sm\\:grid.max-md\\:grid-cols-2\\!.gap-8.flex-1{align-items:start}.flex.flex-col.sm\\:grid.max-md\\:grid-cols-2\\!.gap-8.flex-1>div{flex:1 1 40%;max-width:none}}@media screen and (max-width:1023px){.scroll-mt-\\(--scroll-mt\\).almond-layout.top-\\[var\\(--mintlify-slot-header-height\\,7rem\\)\\].lg\\:top-\\[var\\(--mintlify-slot-header-height\\,3\\.5rem\\)\\].peer-\\[\\.is-not-custom\\]\\:fixed.peer-\\[\\.is-not-custom\\]\\:pb-2.peer-\\[\\.is-not-custom\\]\\:px-2.peer-\\[\\.is-not-custom\\]\\:pt-0.peer-\\[\\.is-custom\\]\\:absolute.peer-\\[\\.is-custom\\]\\:\\[\\\u0026\\>\\:first-child\\]\\:hidden\\!.peer-\\[\\.is-custom\\]\\:\\[\\\u0026\\>\\:first-child\\]\\:sm\\:hidden\\!.peer-\\[\\.is-custom\\]\\:\\[\\\u0026\\>\\:first-child\\]\\:md\\:hidden\\!.peer-\\[\\.is-custom\\]\\:\\[\\\u0026\\>\\:first-child\\]\\:lg\\:hidden\\!.peer-\\[\\.is-custom\\]\\:\\[\\\u0026\\>\\:first-child\\]\\:xl\\:hidden\\!{padding-left:0}}"},{"filePath":"custom/home-search.css","content":".home-search-trigger{display:flex;align-items:center;gap:.625rem;width:100%;padding:.875rem 1.125rem;border:1px solid var(--new-moon-20, #e9e2d8);border-radius:8px;background:var(--white, #fff);color:var(--new-moon-50, #969194);font-family:var(--theme-font-family-body);font-size:15px;text-align:left;cursor:pointer;transition:border-color .2s ease,box-shadow .2s ease}.home-search-trigger:focus-visible,.home-search-trigger:hover{border-color:var(--new-moon-40, #b6b1ad);box-shadow:0 1px 4px rgba(0,0,0,.06);outline:0}.home-search-trigger svg{flex-shrink:0;color:var(--new-moon-50, #969194);background-color:var(--new-moon-50, #969194)}html.dark .home-search-trigger{background:var(--new-moon-85, #2d2c3f);border-color:var(--new-moon-80, #343247);color:var(--new-moon-40, #b6b1ad)}html.dark .home-search-trigger:focus-visible,html.dark .home-search-trigger:hover{border-color:var(--new-moon-60, #75727a)}"}],"page":{"pagePath":"astro/ci-cd-templates/github-actions-private-network","slug":"/astro/ci-cd-templates/github-actions-private-network","pageMetadata":{"title":"GitHub Actions templates for deploying to Astro from private networks","sidebarTitle":"Private network templates","description":"Use pre-built Astronomer CI/CD templates to automate deploying Apache Airflow dags to Astro on private networks using GitHub Actions.","hideFooterPagination":true,"href":"/astro/ci-cd-templates/github-actions-private-network"},"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 pre-built Astronomer CI/CD templates to automate deploying Apache Airflow dags to Astro on private networks using GitHub Actions.\"\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`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Info,Tab,Tabs,Tip,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!Tab)_missingMdxReference(`Tab`,true);if(!Tabs)_missingMdxReference(`Tabs`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(Tip,{children:[`The Astro GitHub integration can automatically deploy code from a GitHub repository to Astro without you needing to configure a GitHub action. In addition, the Astro UI shows Git metadata for each deploy on your Deployment information screen. See `,_jsx(_components.a,{href:`/astro/deploy-github-integration`,children:`Deploy code with the Astro GitHub integration`}),` for setup steps.`]}),`\n`,_jsxs(_components.p,{children:[`If you don’t have access to the Astronomer `,_jsx(_components.a,{href:`https://github.com/astronomer/deploy-action`,children:`deploy action`}),` because you can’t access the public internet from your GitHub repository, use one of the following private network templates to deploy to Astro.`]}),`\n`,_jsxs(_components.p,{children:[`Read the following sections to choose the right template for your use case. If you have one Deployment and one environment on Astro, use the `,_jsx(_components.a,{href:`/astro/ci-cd-templates/template-overview#single-branch-implementation`,children:`single branch implementation`}),`. If you have multiple Deployments that support development and production environments, use the `,_jsx(_components.a,{href:`/astro/ci-cd-templates/template-overview#multiple-branch-implementation`,children:`multiple branch implementation`}),`. If your team builds custom Docker images, use the `,_jsx(_components.a,{href:`/astro/ci-cd-templates/template-overview#custom-image-implementation`,children:`custom image implementation`}),`. If you want to deploy a prebuilt image from an artifact registry without rebuilding, use the `,_jsx(_components.a,{href:`/astro/deploy-project-image#deploy-a-prebuilt-docker-image`,children:`prebuilt image implementation`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`You can configure your CI/CD pipelines to deploy a full project image or your `,_jsx(_components.code,{children:`dags`}),` directory. To learn more about CI/CD on Astro, see `,_jsx(_components.a,{href:`/astro/set-up-ci-cd`,children:`Choose a CI/CD strategy`}),`.`]}),`\n`,_jsxs(Warning,{children:[_jsxs(_components.p,{children:[`If you use a `,_jsx(_components.a,{href:`https://docs.github.com/en/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners`,children:`self-hosted runner`}),` to execute jobs from GitHub Actions, the Astro CLI’s `,_jsx(_components.code,{children:`config.yaml`}),` file, which stores default deploy details, might be shared across your organization and hence multiple CI/CD pipelines. To reduce the risk of accidentally deploying to the wrong Deployment, ensure the following:`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Add `,_jsx(_components.code,{children:`ASTRO_API_TOKEN`}),` to your repository and include a check in your GitHub workflow to verify that it exists.`]}),`\n`,_jsx(_components.li,{children:`Use Deployment API tokens, which are scoped only to one Deployment, instead of Workspace or Organization API tokens.`}),`\n`,_jsxs(_components.li,{children:[`Specify `,_jsx(_components.code,{children:`deployment-id`}),` or `,_jsx(_components.code,{children:`deployment-name`}),` in your action. For example, `,_jsx(_components.code,{children:`astro deploy \u003cdeployment-id>`}),` or `,_jsx(_components.code,{children:`astro deploy -n \u003cdeployment-name>`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Add the command `,_jsx(_components.code,{children:`astro logout`}),` at the end of your workflow to ensure that your authentication token is cleared from the `,_jsx(_components.code,{children:`config.yaml`}),` file.`]}),`\n`]})]}),`\n`,_jsx(Heading,{level:`2`,id:`prerequisites`,children:`Prerequisites`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`An `,_jsx(_components.a,{href:`/cli/v1.46/develop-project#create-an-astro-project`,children:`Astro project`}),` hosted in a GitHub repository.`]}),`\n`,_jsxs(_components.li,{children:[`An `,_jsx(_components.a,{href:`/astro/create-deployment`,children:`Astro Deployment`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`A `,_jsx(_components.a,{href:`/astro/deployment-api-tokens`,children:`Deployment API token`}),`, `,_jsx(_components.a,{href:`/astro/workspace-api-tokens`,children:`Workspace API token`}),`, or `,_jsx(_components.a,{href:`/astro/organization-api-tokens`,children:`Organization API token`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Access to `,_jsx(_components.a,{href:`https://github.com/features/actions`,children:`GitHub Actions`}),`.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`setup`,children:`Setup`}),`\n`,_jsxs(Tabs,{children:[_jsxs(Tab,{title:`Single branch`,id:`single-branch`,children:[_jsxs(_components.p,{children:[`To automate code deploys to a Deployment using `,_jsx(_components.a,{href:`https://github.com/features/actions`,children:`GitHub Actions`}),`, complete the following setup in a Git-based repository that hosts an Astro project:`]}),_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Set the following as `,_jsx(_components.a,{href:`https://docs.github.com/en/actions/reference/encrypted-secrets#creating-encrypted-secrets-for-a-repository`,children:`GitHub secrets`}),`:`]}),`\n`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`ASTRO_API_TOKEN`}),`: The value for your Workspace or Organization API token.`]}),`\n`]}),_jsxs(_components.ol,{start:`2`,children:[`\n`,_jsxs(_components.li,{children:[`In your project repository, create a new YAML file in `,_jsx(_components.code,{children:`.github/workflows`}),` that includes the following configuration. When you make a commit to a specified branch, this workflow sets your Deployment API credentials as environment variables, installs the latest version of the Astro CLI, checks to see if your `,_jsx(_components.code,{children:`dags`}),` folder has changes, and then either completes a full code deploy or a dag-only code deploy.`]}),`\n`]}),_jsx(CodeBlock,{filename:``,wrap:`true`,expandable:`true`,numberOfLines:`45`,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:`45`,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:`Astronomer CI - Deploy code`})]}),`\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:`env`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` ## Sets Deployment API credentials as environment variables`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` ASTRO_API_TOKEN`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"${{ secrets.ASTRO_API_TOKEN }}\"})]}),`\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:` build`}),_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`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # add the appropriate image`})]}),`\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`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Install the Astro CLI (current version)`})}),`\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 repo`})]}),`\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@v3`})]}),`\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:` fetch-depth`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`2`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` clean`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`})]}),`\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:`Install the CLI`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` run`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`curl -sSL install.astronomer.io | sudo bash -s`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Determine if only dag files have changes`})}),`\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 to Astronomer`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` run`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`|`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` files=$(git diff --name-only $(git rev-parse HEAD~1) -- .)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` dags_only=1`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` for file in $files; do`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` if [[ $file != dags/* ]]; then`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` echo \"$file is not a dag, triggering a full image build\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` dags_only=0`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` break`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` fi`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` done`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` ### If only dags changed deploy only the dags in your 'dags' folder to your Deployment`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` if [ $dags_only == 1 ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` then`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` astro deploy --dags`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` fi`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` ### If any other files changed build your Astro project into a Docker image, push the image to your Deployment, and then push and dag changes`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` if [ $dags_only == 0 ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` then`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` astro deploy`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` fi`})}),`\n`]})})})]}),_jsxs(Tab,{title:`Multiple branch`,id:`multiple-branch`,\"data-child-heading-ids\":`[\"prerequisites-multiple-branch\",\"setup-multiple-branch\"]`,children:[_jsxs(_components.p,{children:[`The following setup can be used to create a multiple branch CI/CD pipeline using GitHub Actions to push a `,_jsx(_components.a,{href:`/astro/deploy-project-image`,children:`full image deploy`}),` to Astro. A multiple branch pipeline can be used to test dags in a development Deployment and promote them to a production Deployment.`]}),_jsx(Heading,{level:`4`,id:`prerequisites-multiple-branch`,children:`Prerequisites (Multiple branch)`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`You have both a `,_jsx(_components.code,{children:`dev`}),` and `,_jsx(_components.code,{children:`main`}),` branch of an Astro project hosted in a single GitHub repository.`]}),`\n`,_jsxs(_components.li,{children:[`You have respective `,_jsx(_components.code,{children:`dev`}),` and `,_jsx(_components.code,{children:`prod`}),` Deployments on Astro where you deploy your GitHub branches to.`]}),`\n`,_jsx(_components.li,{children:`You have at least one API token with access to both of your Deployments.`}),`\n`]}),_jsx(Heading,{level:`4`,id:`setup-multiple-branch`,children:`Setup (Multiple branch)`}),_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Set the following as `,_jsx(_components.a,{href:`https://docs.github.com/en/actions/reference/encrypted-secrets#creating-encrypted-secrets-for-a-repository`,children:`GitHub secrets`}),`:`]}),`\n`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`PROD_ASTRO_API_TOKEN`}),`: The value for your production Workspace or Organization API token.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`DEV_ASTRO_API_TOKEN`}),`: The value for your Workspace or Organization API token.`]}),`\n`]}),_jsxs(_components.ol,{start:`2`,children:[`\n`,_jsxs(_components.li,{children:[`In your project repository, create a new YAML file in `,_jsx(_components.code,{children:`.github/workflows`}),` that includes the following configuration:`]}),`\n`]}),_jsx(CodeBlock,{filename:``,wrap:`true`,expandable:`true`,numberOfLines:`37`,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:`37`,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:`Astronomer CI - Deploy code (Multiple Branches)`})]}),`\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:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`dev`}),_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:` pull_request`}),_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:` types`}),_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:`closed`})]}),`\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:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`main`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\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:` dev-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:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`github.ref == 'refs/heads/dev'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` env`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` ## Sets DEV Deployment API token credential as an environment variable`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` ASTRO_API_TOKEN`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"${{ secrets.DEV_ASTRO_API_TOKEN }}\"})]}),`\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`,_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 repo`})]}),`\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@v3`})]}),`\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 to Astro`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` run`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`|`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` curl -sSL install.astronomer.io | sudo bash -s`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` astro deploy \u003cyour-dev-deployment-id>`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` prod-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:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`github.event.action == 'closed' \u0026\u0026 github.event.pull_request.merged == true`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` env`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` ## Sets PROD Deployment API token credential as an environment variable`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` ASTRO_API_TOKEN`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"${{ secrets.PROD_ASTRO_API_TOKEN }}\"})]}),`\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`,_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 repo`})]}),`\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@v3`})]}),`\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 to Astro`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` run`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`|`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` curl -sSL install.astronomer.io | sudo bash -s`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` astro deploy \u003cyour-prod-deployment-id>`})}),`\n`]})})})]}),_jsxs(Tab,{title:`Custom Image`,id:`custom-image`,\"data-child-heading-ids\":`[\"prerequisites-custom-image\",\"setup-custom-image\"]`,children:[_jsxs(_components.p,{children:[`If your Astro project requires additional build-time arguments to build an image, you need to define these build arguments using Docker’s `,_jsx(_components.a,{href:`https://github.com/docker/build-push-action`,children:_jsx(_components.code,{children:`build-push-action`})}),`. This template always pushes your entire project `,_jsx(_components.a,{href:`/astro/deploy-project-image`,children:`as an image`}),` to Astro.`]}),_jsx(Heading,{level:`4`,id:`prerequisites-custom-image`,children:`Prerequisites (Custom Image)`}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`An Astro project that requires additional build-time arguments to build the Runtime image.`}),`\n`]}),_jsx(Heading,{level:`4`,id:`setup-custom-image`,children:`Setup (Custom Image)`}),_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Set the following as `,_jsx(_components.a,{href:`https://docs.github.com/en/actions/reference/encrypted-secrets#creating-encrypted-secrets-for-a-repository`,children:`GitHub secrets`}),`:`]}),`\n`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`ASTRO_API_TOKEN`}),`: The value for your Workspace or Organization API token.`]}),`\n`]}),_jsxs(_components.ol,{start:`2`,children:[`\n`,_jsxs(_components.li,{children:[`In your project repository, create a new YAML file in `,_jsx(_components.code,{children:`.github/workflows`}),` that includes the following configuration:`]}),`\n`]}),_jsx(CodeBlock,{filename:``,wrap:`true`,expandable:`true`,numberOfLines:`34`,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:`34`,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:`Astronomer CI - Additional build-time args`})]}),`\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:` build`}),_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`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` env`}),_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:` ASTRO_API_TOKEN`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"${{ secrets.ASTRO_API_TOKEN }}\"})]}),`\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:`Check out the repo`})]}),`\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@v3`})]}),`\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:`Create image tag`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`image_tag`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` run`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`echo ::set-output name=image_tag::astro-$(date +%Y%m%d%H%M%S)`})]}),`\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:`Build image`})]}),`\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:`docker/build-push-action@v4`})]}),`\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:` tags`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"${{ steps.image_tag.outputs.image_tag }}\"})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` load`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Define your custom image's build arguments, contexts, and connections here using`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # the available GitHub Action settings:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # https://github.com/docker/build-push-action#customizing .`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:\" # This example uses `build-args` , but your use case might require configuring\"})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # different values.`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` build-args`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`|`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \u003cyour-build-arguments>`})}),`\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 to Astro`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` run`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`|`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` curl -sSL install.astronomer.io | sudo bash -s`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\" astro deploy \u003cyour-deployment-id> --image-name ${{ steps.image_tag.outputs.image_tag }}\"})}),`\n`]})})}),_jsxs(_components.p,{children:[`For example, to create a CI/CD pipeline that deploys a project which `,_jsx(_components.a,{href:`/cli/v1.46/private-python-packages`,children:`installs Python packages from a private GitHub repository`}),`, you would use the following configuration:`]}),_jsx(CodeBlock,{filename:``,wrap:`true`,expandable:`true`,numberOfLines:`36`,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:`36`,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:`Astronomer CI - Custom base image`})]}),`\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:` build`}),_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`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` env`}),_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:` ASTRO_API_TOKEN`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"${{ secrets.ASTRO_API_TOKEN }}\"})]}),`\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:`Check out the repo`})]}),`\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@v3`})]}),`\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:`Create image tag`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`image_tag`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` run`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`echo ::set-output name=image_tag::astro-$(date +%Y%m%d%H%M%S)`})]}),`\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:`Create SSH Socket`})]}),`\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:`webfactory/ssh-agent@v0.5.4`})]}),`\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`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # GITHUB_SSH_KEY must be defined as a GitHub secret.`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` ssh-private-key`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"${{ secrets.GITHUB_SSH_KEY }}\"})]}),`\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:`(Optional) Test SSH Connection - Should print hello message.`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` run`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`(ssh git@github.com) || true`})]}),`\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:`Build image`})]}),`\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:`docker/build-push-action@v2`})]}),`\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:` tags`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"${{ steps.image_tag.outputs.image_tag }}\"})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` load`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` ssh`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`|`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\" github=${{ env.SSH_AUTH_SOCK }}\"})}),`\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 to Astro`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` run`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`|`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` curl -sSL install.astronomer.io | sudo bash -s`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\" astro deploy \u003cyour-deployment-id> --image-name ${{ steps.image_tag.outputs.image_tag }}\"})}),`\n`]})})}),_jsxs(Info,{children:[`If you need guidance configuring a CI/CD pipeline for a more complex use case involving custom Runtime images, reach out to `,_jsx(_components.a,{href:`https://support.astronomer.io/`,children:`Astronomer support`}),`.`]})]}),_jsxs(Tab,{title:`Prebuilt image`,id:`prebuilt-image`,\"data-child-tab-ids\":`[\"google-artifact-registry\",\"amazon-ecr\",\"azure-container-registry\",\"docker-hub\"]`,\"data-child-heading-ids\":`[\"prerequisites-prebuilt-image\",\"setup-prebuilt-image\"]`,children:[_jsx(_components.p,{children:`If your organization builds Astro Runtime images in a separate build pipeline and stores them in an artifact registry, use this template to pull and deploy the prebuilt image without rebuilding it. This template skips the build step entirely and deploys the image directly from your registry to Astro.`}),_jsx(Heading,{level:`4`,id:`prerequisites-prebuilt-image`,children:`Prerequisites (Prebuilt image)`}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`A prebuilt Docker image based on Astro Runtime, stored in an artifact registry such as Google Artifact Registry, Amazon ECR, Azure Container Registry, or Docker Hub.`}),`\n`,_jsx(_components.li,{children:`Registry credentials with pull access to the image.`}),`\n`]}),_jsx(Heading,{level:`4`,id:`setup-prebuilt-image`,children:`Setup (Prebuilt image)`}),_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Set the following as `,_jsx(_components.a,{href:`https://docs.github.com/en/actions/reference/encrypted-secrets#creating-encrypted-secrets-for-a-repository`,children:`GitHub secrets`}),`:`]}),`\n`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`ASTRO_API_TOKEN`}),`: The value for your Workspace or Organization API token.`]}),`\n`,_jsx(_components.li,{children:`Registry credentials for your artifact registry. See the following tabs for registry-specific secrets.`}),`\n`]}),_jsxs(_components.ol,{start:`2`,children:[`\n`,_jsxs(_components.li,{children:[`In your project repository, create a new YAML file in `,_jsx(_components.code,{children:`.github/workflows`}),` that includes the following configuration for your registry:`]}),`\n`]}),_jsxs(Tabs,{children:[_jsxs(Tab,{title:`Google Artifact Registry`,id:`google-artifact-registry`,children:[_jsx(CodeBlock,{filename:``,wrap:`true`,numberOfLines:`30`,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:`30`,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:`Astronomer CI - Deploy prebuilt image from Google Artifact Registry`})]}),`\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:`env`}),_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:` ASTRO_API_TOKEN`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"${{ secrets.ASTRO_API_TOKEN }}\"})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` REGISTRY`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\u003cyour-region>-docker.pkg.dev/\u003cyour-project-id>/\u003cyour-repository>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` IMAGE_NAME`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\u003cyour-image-name>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` IMAGE_TAG`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\u003cyour-image-tag>`})]}),`\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:` deploy`}),_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`,_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:`Authenticate to Google Cloud`})]}),`\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:`google-github-actions/auth@v2`})]}),`\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:` credentials_json`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"${{ secrets.GCP_SERVICE_ACCOUNT_KEY }}\"})]}),`\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:`Configure Docker for Google Artifact Registry`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` run`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`gcloud auth configure-docker \u003cyour-region>-docker.pkg.dev --quiet`})]}),`\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:`Pull image from registry`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` run`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"docker pull ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}\"})]}),`\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:`Install the Astro CLI`})]}),`\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:`astronomer/setup-astro-cli@v0.0.1`})]}),`\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 to Astro`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` run`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`|`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\" astro deploy \u003cyour-deployment-id> --image-name ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}\"})}),`\n`]})})}),_jsxs(_components.p,{children:[`Set `,_jsx(_components.code,{children:`GCP_SERVICE_ACCOUNT_KEY`}),` as a GitHub secret containing the JSON key for a Google Cloud service account with read access to the registry.`]})]}),_jsxs(Tab,{title:`Amazon ECR`,id:`amazon-ecr`,children:[_jsx(CodeBlock,{filename:``,wrap:`true`,expandable:`true`,numberOfLines:`32`,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:`32`,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:`Astronomer CI - Deploy prebuilt image from Amazon ECR`})]}),`\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:`env`}),_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:` ASTRO_API_TOKEN`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"${{ secrets.ASTRO_API_TOKEN }}\"})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` REGISTRY`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\u003cyour-account-id>.dkr.ecr.\u003cyour-region>.amazonaws.com`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` IMAGE_NAME`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\u003cyour-image-name>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` IMAGE_TAG`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\u003cyour-image-tag>`})]}),`\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:` deploy`}),_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`,_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:`Configure AWS credentials`})]}),`\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:`aws-actions/configure-aws-credentials@v4`})]}),`\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:` aws-access-key-id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"${{ secrets.AWS_ACCESS_KEY_ID }}\"})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` aws-secret-access-key`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"${{ secrets.AWS_SECRET_ACCESS_KEY }}\"})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` aws-region`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\u003cyour-region>`})]}),`\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:`Authenticate to Amazon ECR`})]}),`\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:`aws-actions/amazon-ecr-login@v2`})]}),`\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:`Pull image from registry`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` run`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"docker pull ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}\"})]}),`\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:`Install the Astro CLI`})]}),`\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:`astronomer/setup-astro-cli@v0.0.1`})]}),`\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 to Astro`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` run`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`|`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\" astro deploy \u003cyour-deployment-id> --image-name ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}\"})}),`\n`]})})}),_jsxs(_components.p,{children:[`Set `,_jsx(_components.code,{children:`AWS_ACCESS_KEY_ID`}),` and `,_jsx(_components.code,{children:`AWS_SECRET_ACCESS_KEY`}),` as GitHub secrets with permissions to pull from the ECR repository.`]})]}),_jsxs(Tab,{title:`Azure Container Registry`,id:`azure-container-registry`,children:[_jsx(CodeBlock,{filename:``,wrap:`true`,numberOfLines:`30`,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:`30`,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:`Astronomer CI - Deploy prebuilt image from Azure Container Registry`})]}),`\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:`env`}),_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:` ASTRO_API_TOKEN`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"${{ secrets.ASTRO_API_TOKEN }}\"})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` REGISTRY`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\u003cyour-registry-name>.azurecr.io`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` IMAGE_NAME`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\u003cyour-image-name>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` IMAGE_TAG`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\u003cyour-image-tag>`})]}),`\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:` deploy`}),_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`,_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:`Authenticate to Azure Container Registry`})]}),`\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:`docker/login-action@v3`})]}),`\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:` registry`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"${{ env.REGISTRY }}\"})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` username`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"${{ secrets.ACR_USERNAME }}\"})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` password`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"${{ secrets.ACR_PASSWORD }}\"})]}),`\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:`Pull image from registry`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` run`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"docker pull ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}\"})]}),`\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:`Install the Astro CLI`})]}),`\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:`astronomer/setup-astro-cli@v0.0.1`})]}),`\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 to Astro`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` run`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`|`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\" astro deploy \u003cyour-deployment-id> --image-name ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}\"})}),`\n`]})})}),_jsxs(_components.p,{children:[`Set `,_jsx(_components.code,{children:`ACR_USERNAME`}),` and `,_jsx(_components.code,{children:`ACR_PASSWORD`}),` as GitHub secrets. You can use a service principal or an admin account with pull access to the registry.`]})]}),_jsxs(Tab,{title:`Docker Hub`,id:`docker-hub`,children:[_jsx(CodeBlock,{filename:``,wrap:`true`,numberOfLines:`28`,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:`28`,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:`Astronomer CI - Deploy prebuilt image from Docker Hub`})]}),`\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:`env`}),_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:` ASTRO_API_TOKEN`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"${{ secrets.ASTRO_API_TOKEN }}\"})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` IMAGE_NAME`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\u003cyour-dockerhub-org>/\u003cyour-image-name>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` IMAGE_TAG`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\u003cyour-image-tag>`})]}),`\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:` deploy`}),_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`,_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:`Authenticate to Docker Hub`})]}),`\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:`docker/login-action@v3`})]}),`\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:` username`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"${{ secrets.DOCKERHUB_USERNAME }}\"})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` password`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"${{ secrets.DOCKERHUB_TOKEN }}\"})]}),`\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:`Pull image from registry`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` run`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"docker pull ${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}\"})]}),`\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:`Install the Astro CLI`})]}),`\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:`astronomer/setup-astro-cli@v0.0.1`})]}),`\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 to Astro`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` run`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`|`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\" astro deploy \u003cyour-deployment-id> --image-name ${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}\"})}),`\n`]})})}),_jsxs(_components.p,{children:[`Set `,_jsx(_components.code,{children:`DOCKERHUB_USERNAME`}),` and `,_jsx(_components.code,{children:`DOCKERHUB_TOKEN`}),` as GitHub secrets with pull access to the repository.`]})]})]}),_jsxs(_components.p,{children:[`These workflows authenticate to the registry, pull the prebuilt image, and deploy it to Astro using `,_jsx(_components.code,{children:`--image-name`}),`. No build step occurs. The image must be based on Astro Runtime.`]}),_jsxs(_components.p,{children:[`To learn more about deploying prebuilt images, see `,_jsx(_components.a,{href:`/astro/deploy-project-image#deploy-a-prebuilt-docker-image`,children:`Deploy a prebuilt Docker image`}),`.`]})]})]})]})}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":"GitHub Actions templates for deploying to Astro from private networks","sidebarTitle":"Private network templates","description":"Use pre-built Astronomer CI/CD templates to automate deploying Apache Airflow dags to Astro on private networks using GitHub Actions.","hideFooterPagination":true,"href":"/astro/ci-cd-templates/github-actions-private-network"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Prerequisites","slug":"prerequisites","depth":2,"children":[]},{"title":"Setup","slug":"setup","depth":2,"children":[{"title":"Prerequisites (Multiple branch)","slug":"prerequisites-multiple-branch","depth":4,"children":[],"tabId":"multiple-branch"},{"title":"Setup (Multiple branch)","slug":"setup-multiple-branch","depth":4,"children":[],"tabId":"multiple-branch"},{"title":"Prerequisites (Custom Image)","slug":"prerequisites-custom-image","depth":4,"children":[],"tabId":"custom-image"},{"title":"Setup (Custom Image)","slug":"setup-custom-image","depth":4,"children":[],"tabId":"custom-image"},{"title":"Prerequisites (Prebuilt image)","slug":"prerequisites-prebuilt-image","depth":4,"children":[],"tabId":"prebuilt-image"},{"title":"Setup (Prebuilt image)","slug":"setup-prebuilt-image","depth":4,"children":[],"tabId":"prebuilt-image"}]}],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/astronomer/46b6c05e40efd5a8/custom/footer-copyright.js","/docs/_mintlify/custom/astronomer/fdfd7818f1bab435/custom/header.js","/docs/_mintlify/custom/astronomer/15d4f032d5ffce84/custom/home-search.js"],"subdomain":"astronomer","siteName":"Astronomer","title":"GitHub Actions templates for deploying to Astro from private networks - Astronomer","relatedPagesConfig":{"enabled":false,"limit":5,"mode":"automatic"},"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-19T17:24:05.243Z","originalFileLocation":"astro/ci-cd-templates/github-actions-private-network.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 pre-built Astronomer CI/CD templates to automate deploying Apache Airflow dags to Astro on private networks using GitHub Actions.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Astronomer\">\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/astronomer/qeNb2c1imgRQqBmD/_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/astronomer/qeNb2c1imgRQqBmD/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/astronomer/qeNb2c1imgRQqBmD/_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/astronomer/qeNb2c1imgRQqBmD/_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/astronomer/qeNb2c1imgRQqBmD/_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/astronomer/qeNb2c1imgRQqBmD/_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/astronomer/qeNb2c1imgRQqBmD/_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/astronomer/qeNb2c1imgRQqBmD/_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/astronomer/qeNb2c1imgRQqBmD/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"GitHub Actions templates for deploying to Astro from private networks - Astronomer\">\u003cmeta data-mint-head property=\"og:description\" content=\"Use pre-built Astronomer CI/CD templates to automate deploying Apache Airflow dags to Astro on private networks using GitHub Actions.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Astronomer Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://www.astronomer.io/docs/astro/ci-cd-templates/github-actions-private-network\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://www.astronomer.io/docs/images/astronomer-card.png\">\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=\"GitHub Actions templates for deploying to Astro from private networks - Astronomer\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Use pre-built Astronomer CI/CD templates to automate deploying Apache Airflow dags to Astro on private networks using GitHub Actions.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://www.astronomer.io/docs/images/astronomer-card.png\">\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/astronomer/qeNb2c1imgRQqBmD/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Astronomer\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#6B3aad\">\u003clink data-mint-head rel=\"canonical\" href=\"https://www.astronomer.io/docs/astro/ci-cd-templates/github-actions-private-network\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/astro/ci-cd-templates/github-actions-private-network.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://www.astronomer.io/#organization\",\"name\":\"Astronomer\",\"url\":\"https://www.astronomer.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/astronomer/U_UZjTkJqgXPi7dz/images/logo-light.svg?fit=max\u0026auto=format\u0026n=U_UZjTkJqgXPi7dz\u0026q=85\u0026s=e0826571e784a49618fef3e33a90cb43\"}},{\"@type\":\"WebSite\",\"@id\":\"https://www.astronomer.io/docs#website\",\"name\":\"Astronomer\",\"url\":\"https://www.astronomer.io/docs\",\"publisher\":{\"@id\":\"https://www.astronomer.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://www.astronomer.io/docs/astro/ci-cd-templates/github-actions-private-network#webpage\",\"url\":\"https://www.astronomer.io/docs/astro/ci-cd-templates/github-actions-private-network\",\"name\":\"GitHub Actions templates for deploying to Astro from private networks\",\"description\":\"Use pre-built Astronomer CI/CD templates to automate deploying Apache Airflow dags to Astro on private networks using GitHub Actions.\",\"dateModified\":\"2026-10-19T17:24:05.243Z\",\"isPartOf\":{\"@id\":\"https://www.astronomer.io/docs#website\"},\"breadcrumb\":{\"@id\":\"https://www.astronomer.io/docs/astro/ci-cd-templates/github-actions-private-network#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://www.astronomer.io/docs/astro/ci-cd-templates/github-actions-private-network#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Build and deploy\",\"item\":\"https://www.astronomer.io/docs/astro/dags-overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Automation \u0026 CI/CD\",\"item\":\"https://www.astronomer.io/docs/astro/automation-overview\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"CI/CD\",\"item\":\"https://www.astronomer.io/docs/astro/set-up-ci-cd\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"CI/CD templates\",\"item\":\"https://www.astronomer.io/docs/astro/ci-cd-templates/template-overview\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"GitHub Actions\",\"item\":\"https://www.astronomer.io/docs/astro/ci-cd-templates/github-actions-template\"},{\"@type\":\"ListItem\",\"position\":6,\"name\":\"GitHub Actions templates for deploying to Astro from private networks\",\"item\":\"https://www.astronomer.io/docs/astro/ci-cd-templates/github-actions-private-network\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://www.astronomer.io/docs/astro/ci-cd-templates/github-actions-private-network#article\",\"headline\":\"GitHub Actions templates for deploying to Astro from private networks\",\"name\":\"GitHub Actions templates for deploying to Astro from private networks\",\"description\":\"Use pre-built Astronomer CI/CD templates to automate deploying Apache Airflow dags to Astro on private networks using GitHub Actions.\",\"url\":\"https://www.astronomer.io/docs/astro/ci-cd-templates/github-actions-private-network\",\"mainEntityOfPage\":{\"@id\":\"https://www.astronomer.io/docs/astro/ci-cd-templates/github-actions-private-network#webpage\"},\"image\":\"https://www.astronomer.io/docs/images/astronomer-card.png\",\"dateModified\":\"2026-10-19T17:24:05.243Z\",\"publisher\":{\"@id\":\"https://www.astronomer.io/#organization\"},\"isPartOf\":{\"@id\":\"https://www.astronomer.io/docs#website\"}}]}\u003c/script>","siteName":"Astronomer","nav":{"global":null,"products":[{"product":"Home","icon":"house","pages":[{"title":"Home","href":""}]},{"product":"Astro","icon":"rocket","description":"Fully managed Apache Airflow from experts.","groups":[{"group":"Overview","pages":[{"title":"Astro Documentation","sidebarTitle":"Astro overview","mode":"wide","href":"/astro/overview"},{"title":"About Astro","href":"/astro/astro-architecture"},{"title":"Astro features","sidebarTitle":"Features","href":"/astro/features"}]},{"group":"Get started","pages":[{"title":"Start your Astro trial","sidebarTitle":"Start a trial","href":"/astro/trial"},{"group":"Run your first Dag","root":{"title":"Run your first dag on Astro","sidebarTitle":"Run your first Dag","href":"/astro/run-first-dag"},"pages":[{"title":"Run your first dag on Astro","sidebarTitle":"When Signing Up for Astro","href":"/astro/first-dag-onboarding"},{"title":"Run your first Dag with GitHub Actions","sidebarTitle":"With GitHub Actions","href":"/astro/first-dag-github-actions"},{"title":"Run your first Dag with the Astro CLI","sidebarTitle":"With Astro CLI","href":"/astro/first-dag-cli"}]},{"title":"Log in to Astro","href":"/astro/log-in-to-astro"},{"group":"Migrate to Astro","pages":[{"title":"Migrate to Astro from Amazon MWAA","sidebarTitle":"From Amazon MWAA","href":"/astro/migrate-mwaa"},{"title":"Migrate to Astro from Google Cloud Composer","sidebarTitle":"From Google Cloud Composer","href":"/astro/migrate-gcc"}]},{"title":"Subscribe to Astro from the AWS Marketplace","sidebarTitle":"Subscribe from AWS Marketplace","href":"/astro/subscribe-aws"}]},{"group":"AI features","pages":[{"group":"Otto","pages":[{"title":"Otto overview","sidebarTitle":"Overview","href":"/astro/otto/otto-overview"},{"title":"Otto quickstart","sidebarTitle":"Quickstart","href":"/astro/otto/get-started-otto"},{"title":"Customize Otto","href":"/astro/otto/customize-otto"},{"title":"Upgrade Airflow with Otto","href":"/astro/otto/otto-upgrades"},{"title":"Investigate with Otto","href":"/astro/otto/otto-investigate"},{"title":"Review code with Otto","sidebarTitle":"Code review","href":"/astro/otto/otto-code-review"},{"group":"Reference","pages":[{"title":"Otto tools","sidebarTitle":"Tools","href":"/astro/otto/otto-tools"},{"title":"Otto skills","sidebarTitle":"Skills","href":"/astro/otto/otto-skills"},{"title":"Otto memory","sidebarTitle":"Memory","href":"/astro/otto/otto-memory"},{"title":"Otto permissions","sidebarTitle":"Permissions","href":"/astro/otto/otto-permissions"},{"title":"Otto extensions","sidebarTitle":"Extensions","href":"/astro/otto/otto-extensions"},{"title":"Otto settings","sidebarTitle":"Settings","href":"/astro/otto/otto-settings"},{"title":"Models and regions","href":"/astro/otto/otto-models-and-regions"}]}]},{"title":"MCP servers","href":"/astro/astro-mcp-server"},{"title":"Toggle AI features for your Organization","sidebarTitle":"Toggle AI features","href":"/astro/enable-disable-astro-ai"},{"title":"Set an Astro AI token spending cap","sidebarTitle":"AI token spending cap","href":"/astro/astro-ai-spending-cap"}]},{"group":"Build and deploy","pages":[{"group":"Develop Dags","pages":[{"title":"Write and run dags on Astro","sidebarTitle":"Overview","href":"/astro/dags-overview"},{"group":"Astro IDE","pages":[{"title":"Astro IDE overview","sidebarTitle":"Overview","href":"/astro/ide-overview"},{"title":"Astro IDE Quickstart","sidebarTitle":"Quickstart","href":"/astro/ide-quickstart"},{"group":"Import projects","pages":[{"title":"Import CLI projects to the Astro IDE","sidebarTitle":"Import a CLI project","href":"/astro/ide-import-cli-project"},{"title":"Import GitHub projects to the Astro IDE","sidebarTitle":"Import project with Astro GitHub integration","href":"/astro/ide-import-github-project"},{"title":"Import a Git project to the Astro IDE","sidebarTitle":"Import a Git project","href":"/astro/ide-import-git-project"}]},{"title":"Author dags with the Astro IDE","sidebarTitle":"Author dags","href":"/astro/ide-author-dags"},{"title":"Blueprint","href":"/astro/ide-blueprint"},{"title":"Test and run code with the Astro IDE","sidebarTitle":"Test and run dags","href":"/astro/ide-test-run"},{"group":"Deploy code from the IDE","pages":[{"title":"Deploy code from the Astro IDE","sidebarTitle":"Deploy code to Astro","href":"/astro/ide-deploy"},{"title":"Deploy code from the Astro IDE to Git","sidebarTitle":"Deploy code to Git","href":"/astro/ide-deploy-git"}]}]},{"group":"Astro for VS Code","pages":[{"title":"Astro for VS Code overview","sidebarTitle":"Overview","href":"/astro/vscode/vscode-overview"},{"title":"Get started with Astro for VS Code","sidebarTitle":"Quickstart","href":"/astro/vscode/vscode-quickstart"},{"title":"Chat with Otto in VS Code","sidebarTitle":"Chat with Otto","href":"/astro/vscode/vscode-otto-chat"},{"title":"Triage Deployments in VS Code","sidebarTitle":"Triage Deployments","href":"/astro/vscode/vscode-deployments"},{"title":"Run Airflow locally in VS Code","sidebarTitle":"Run Airflow locally","href":"/astro/vscode/vscode-local-airflow"},{"title":"Search docs and the provider registry in VS Code","sidebarTitle":"Search docs","href":"/astro/vscode/vscode-docs-search"},{"title":"Astro for VS Code reference","sidebarTitle":"Commands and settings","href":"/astro/vscode/vscode-reference"},{"title":"Troubleshoot Astro for VS Code","sidebarTitle":"Troubleshoot","href":"/astro/vscode/vscode-troubleshooting"}]},{"group":"KubernetesPodOperator","pages":[{"title":"Run the KubernetesPodOperator on Astro","sidebarTitle":"Set up KubernetesPodOperator","href":"/astro/kubernetespodoperator"},{"title":"Configure task-level Pod resources","sidebarTitle":"Configure task-level resources","href":"/astro/kpo-task-level-resources"},{"title":"Mount temporary directory","sidebarTitle":"Mount a temporary directory","href":"/astro/kpo-mount-temporary-directory"},{"title":"Run your Deployment's current Airflow image","href":"/astro/kpo-run-current-image"},{"group":"Use a private registry","root":{"title":"Run images from a private registry","sidebarTitle":"Use a private registry","href":"/astro/kpo-private-registry"},"pages":[{"title":"Run images from Amazon Elastic Container Registry (ECR)","sidebarTitle":"Use Amazon ECR","href":"/astro/kpo-ecr"},{"title":"Run images from Google Artifact Registry","sidebarTitle":"Use Google Artifact Registry","href":"/astro/kpo-google-artifact-registry"}]},{"title":"Use secret environment variables","href":"/astro/kpo-secret-env-var"},{"title":"Use the @task.kubernetes decorator","href":"/astro/kpo-task-decorator"},{"group":"Launch a Pod in an external cluster","pages":[{"title":"Launch a Pod in an EKS cluster on AWS","sidebarTitle":"EKS on AWS","href":"/astro/launch-pod-external-cluster-aws"},{"title":"Launch a Pod in an AKS cluster on Azure","sidebarTitle":"AKS on Azure","href":"/astro/launch-pod-external-cluster-azure"},{"title":"Launch a Pod in a GKE cluster on GCP","sidebarTitle":"GKE on GCP","href":"/astro/launch-pod-external-cluster-gcp"}]}]},{"title":"Dag versioning","href":"/astro/dag-versioning"},{"title":"View Airflow component and task logs for a Deployment","sidebarTitle":"Airflow logs","href":"/astro/view-logs"},{"title":"Manage Dag runs","sidebarTitle":"Dag and task runs","href":"/astro/manage-dags"},{"title":"Using the Airflow REST API with Astro","sidebarTitle":"Airflow REST API","href":"/astro/airflow-api"}]},{"group":"Deploy code","pages":[{"title":"Deploy code to Astro","sidebarTitle":"Overview","href":"/astro/deploy-code"},{"title":"Deploy an Astro project as an image","sidebarTitle":"Deploy a project image","href":"/astro/deploy-project-image"},{"title":"Deploy Dags to Astro","sidebarTitle":"Deploy Dags","href":"/astro/deploy-dags"},{"title":"Deploy code to multiple Dag bundles","sidebarTitle":"Dag bundles","href":"/astro/dag-bundles"},{"title":"Deploy code with the Astro GitHub integration","sidebarTitle":"Deploy code with GitHub","href":"/astro/deploy-github-integration"},{"title":"Deploy dbt projects to Astro","sidebarTitle":"Deploy a dbt project","href":"/astro/deploy-dbt-project"},{"title":"Roll back to previous deploys using deploy histories","sidebarTitle":"Deploy history and rollbacks","href":"/astro/deploy-history"}]},{"group":"Automation \u0026 CI/CD","pages":[{"title":"Automate actions on Astro","sidebarTitle":"Overview","href":"/astro/automation-overview"},{"title":"Authenticate an automation tool to Astro","sidebarTitle":"Authenticate an automation tool","href":"/astro/automation-authentication"},{"group":"CI/CD","pages":[{"title":"Develop a CI/CD workflow for deploying code to Astro","sidebarTitle":"Develop a CI/CD workflow","href":"/astro/set-up-ci-cd"},{"group":"CI/CD templates","pages":[{"title":"Template options","href":"/astro/ci-cd-templates/template-overview"},{"title":"Automate preview Deployments with any CI/CD tool","sidebarTitle":"Preview Deployments","href":"/astro/ci-cd-templates/preview-deployments"},{"group":"GitHub Actions","pages":[{"group":"Standard Deployment templates","pages":[{"title":"GitHub Actions templates for deploying code to Astro","sidebarTitle":"Overview","href":"/astro/ci-cd-templates/github-actions-template"},{"title":"Default deploy action for deploying code to Astro","sidebarTitle":"Default deploy action","href":"/astro/ci-cd-templates/default-deploy-action"},{"title":"dbt deploy action for deploying dbt code to Astro","sidebarTitle":"dbt deploy action","href":"/astro/ci-cd-templates/dbt-deploy-action"}]},{"title":"GitHub Actions templates for deploying code to preview Deployments on Astro","sidebarTitle":"Preview Deployment templates","description":"Use pre-built Astronomer CI/CD templates to automate deploying Apache Airflow dags to a preview Deployment using GitHub Actions.","href":"/astro/ci-cd-templates/github-actions-deployment-preview"},{"title":"GitHub Actions templates for deploying to Astro from private networks","sidebarTitle":"Private network templates","href":"/astro/ci-cd-templates/github-actions-private-network"}]},{"title":"Astro CI/CD templates for Jenkins","sidebarTitle":"Jenkins","description":"Use pre-built Astronomer CI/CD templates to automate deploying Apache Airflow dags to Astro using Jenkins.","href":"/astro/ci-cd-templates/jenkins"},{"title":"Astro CI/CD templates for GitLab","sidebarTitle":"GitLab","href":"/astro/ci-cd-templates/gitlab"},{"title":"Deploy dags from an AWS S3 bucket to Astro using AWS Lambda","sidebarTitle":"AWS S3 bucket","href":"/astro/ci-cd-templates/aws-s3"},{"title":"Astro CI/CD templates for AWS CodeBuild","sidebarTitle":"AWS CodeBuild","href":"/astro/ci-cd-templates/aws-codebuild"},{"title":"Astro CI/CD templates for Azure DevOps","sidebarTitle":"Azure DevOps","href":"/astro/ci-cd-templates/azure-devops"},{"title":"Deploy Dags from Google Cloud Storage to Astro","sidebarTitle":"GCS bucket","href":"/astro/ci-cd-templates/gcs"},{"title":"Astro CI/CD templates for Bitbucket","sidebarTitle":"Bitbucket","href":"/astro/ci-cd-templates/bitbucket"},{"title":"Astro CI/CD templates for CircleCI","sidebarTitle":"CircleCI","href":"/astro/ci-cd-templates/circleci"},{"title":"Astro CI/CD templates for Drone","sidebarTitle":"Drone","href":"/astro/ci-cd-templates/drone"},{"title":"Astro CI/CD templates for Harness","sidebarTitle":"Harness","href":"/astro/ci-cd-templates/harness"}]}]},{"title":"Astro Terraform Provider","href":"/astro/terraform-provider"},{"group":"Manage Deployments as code","pages":[{"title":"Manage Deployments programmatically using Deployment files","sidebarTitle":"Create and apply Deployment files","href":"/astro/manage-deployments-as-code"},{"title":"Deployment file reference","href":"/astro/deployment-file-reference"}]}]}]},{"group":"Run and operate","pages":[{"group":"Deployments","pages":[{"title":"Create a Deployment","href":"/astro/create-deployment"},{"group":"Deployment settings","pages":[{"title":"Overview","href":"/astro/deployment-settings"},{"title":"Deployment details","href":"/astro/deployment-details"},{"title":"View cluster details","href":"/astro/view-cluster-details"},{"title":"Configure Deployment resources","sidebarTitle":"Deployment resources","href":"/astro/deployment-resources"},{"title":"Configure API server autoscaling","sidebarTitle":"API server autoscaling","href":"/astro/api-server-autoscaling"}]},{"title":"Execution mode","href":"/astro/execution-mode"},{"group":"Executors","pages":[{"title":"Manage Airflow executors on Astro","sidebarTitle":"Overview","href":"/astro/executors-overview"},{"title":"Astro executor","href":"/astro/astro-executor"},{"title":"Configure the Celery executor","sidebarTitle":"Celery executor","href":"/astro/celery-executor"},{"title":"Configure tasks to run with the Kubernetes executor","sidebarTitle":"Kubernetes executor","href":"/astro/kubernetes-executor"}]},{"title":"Configure worker queues","sidebarTitle":"Worker queues","href":"/astro/configure-worker-queues"},{"title":"Enable Sub-Second Pipelines","sidebarTitle":"Sub-Second Pipelines","href":"/astro/sub-second-pipelines"}]},{"group":"Remote Execution","pages":[{"title":"Remote Execution overview","sidebarTitle":"Overview","href":"/astro/remote-execution/remote-execution-overview"},{"title":"Remote Execution shared responsibility model","sidebarTitle":"Shared responsibility model","href":"/astro/remote-execution/remote-execution-shared-responsibility"},{"title":"Remote Execution isolation and multi-tenancy","sidebarTitle":"Isolation and multi-tenancy","href":"/astro/remote-execution/remote-execution-isolation"},{"title":"Get started with Remote Execution","sidebarTitle":"Get started","href":"/astro/remote-execution/remote-execution-get-started"},{"group":"Core configuration","pages":[{"group":"Configure Remote Execution Agents","root":{"title":"Register and configure agents","sidebarTitle":"Configure Remote Execution Agents","href":"/astro/remote-execution/remote-execution-configure-agents"},"pages":[{"title":"Remote Execution Agent failure and recovery scenarios","sidebarTitle":"Failure and recovery scenarios","href":"/astro/remote-execution/remote-agents-failure-scenarios"}]},{"title":"Configure secrets backend","href":"/astro/remote-execution/remote-execution-configure-secrets-backend"},{"title":"Configure XCom backend","href":"/astro/remote-execution/remote-execution-configure-xcom-backend"},{"title":"Configure state store backend","href":"/astro/remote-execution/remote-execution-configure-state-store-backend"},{"title":"Configure Dag sources","href":"/astro/remote-execution/remote-execution-configure-dag-sources"}]},{"group":"Logging configuration","pages":[{"title":"Configure logging","sidebarTitle":"Overview","href":"/astro/remote-execution/remote-execution-logging-overview"},{"title":"Configure LoggingSidecar in a Remote Execution Agent","sidebarTitle":"Configure logging sidecar","href":"/astro/remote-execution/remote-agents-logging-sidecar"},{"title":"Send Remote Execution Agent task logs to external logging provider","sidebarTitle":"Export logs to external platforms","href":"/astro/remote-execution/remote-task-logs-external"},{"title":"Show Remote Execution Agent task logs in Airflow UI","sidebarTitle":"Display logs in Airflow UI","href":"/astro/remote-execution/remote-task-logs-af-ui"}]},{"group":"Advanced configuration","pages":[{"title":"Configure OpenLineage for a Remote Execution Agent","sidebarTitle":"Configure OpenLineage","href":"/astro/remote-execution/remote-execution-configure-openlineage"},{"title":"Sentinel for Remote Execution Agents","sidebarTitle":"Enable Sentinel monitoring","href":"/astro/remote-execution/remote-agents-sentinel"},{"title":"Scrape metrics from Remote Execution Agents","sidebarTitle":"Monitor Remote Execution Agents","href":"/astro/remote-execution/remote-agents-metrics"},{"title":"Autoscale Remote Execution Agent workers on queue depth","sidebarTitle":"Autoscale workers","href":"/astro/remote-execution/remote-agents-autoscale-workers"},{"title":"Install Remote Execution Agents in a restricted kubernetes namespace","sidebarTitle":"Install in restricted Kubernetes namespace","href":"/astro/remote-execution/remote-agents-restricted-kubernetes"},{"title":"Set up custom timetable support for Remote Execution","sidebarTitle":"Set up custom timetable support","href":"/astro/remote-execution/remote-execution-custom-timetables"},{"title":"Configure AWS PrivateLink for Remote Execution Agents","sidebarTitle":"Configure AWS PrivateLink","href":"/astro/remote-execution/remote-agents-aws-privatelink"},{"title":"Configure Azure Private Link for Remote Execution Agents","sidebarTitle":"Configure Azure Private Link","href":"/astro/remote-execution/remote-agents-azure-privatelink"}]},{"title":"Initialize and deploy Remote Execution projects","sidebarTitle":"Deploy Remote Execution project","href":"/astro/remote-execution/deploy-project-remote-execution"},{"title":"Deploy a dbt project to Remote Execution Agents","sidebarTitle":"Deploy a dbt project","href":"/astro/remote-execution/remote-execution-deploy-dbt"},{"title":"Helm chart configuration reference","sidebarTitle":"Helm chart reference","href":"/astro/remote-execution/remote-agents-helm-reference"}]},{"group":"Environment Manager","pages":[{"title":"Astro Environment Manager overview","sidebarTitle":"Environment Manager overview","href":"/astro/environment-manager-overview"},{"title":"Manage Airflow connections, variables, and environment variables","sidebarTitle":"Manage connections and variables","href":"/astro/manage-connections-variables"},{"title":"Create Airflow connections in the Astro UI","sidebarTitle":"Create connections in Astro","href":"/astro/create-and-link-connections"},{"title":"Create Airflow variables in the Astro UI","sidebarTitle":"Create variables in Astro","href":"/astro/create-and-link-variables"},{"title":"Create environment variables in the Astro UI","sidebarTitle":"Create environment variables in Astro","href":"/astro/create-and-link-environment-variables"},{"title":"Migrate existing objects to the Environment Manager","sidebarTitle":"Migrate to Environment Manager","href":"/astro/migrate-metadata-db-to-environment-manager"},{"title":"Import and export Airflow connections and variables","sidebarTitle":"Import and export connections and variables","href":"/astro/import-export-connections-variables"},{"group":"Environment variables","root":{"title":"Environment variables","href":"/astro/environment-variables"},"pages":[{"title":"Manage environment variables on Astro","sidebarTitle":"Manage environment variables","href":"/astro/manage-env-vars"}]},{"group":"Secrets backend","root":{"title":"Configure a secrets backend","sidebarTitle":"Secrets backend","href":"/astro/secrets-backend"},"pages":[{"title":"Set up AWS Secrets Manager as your secrets backend","sidebarTitle":"AWS Secrets Manager","href":"/astro/secrets-backend/aws-secretsmanager"},{"title":"Set up AWS Systems Manager (SSM) Parameter Store","sidebarTitle":"AWS Systems Manager (SSM) Parameter Store","href":"/astro/secrets-backend/aws-paramstore"},{"title":"Set up Azure Key Vault as your secrets backend","sidebarTitle":"Azure Key Vault","href":"/astro/secrets-backend/azure-key-vault"},{"title":"Set up HashiCorp Vault as your secrets backend","sidebarTitle":"HashiCorp Vault","href":"/astro/secrets-backend/hashicorp-vault"},{"title":"Set up Google Cloud Secret Manager as your secrets backend","sidebarTitle":"Google Cloud Secret Manager","href":"/astro/secrets-backend/gcp-secretsmanager"}]}]}]},{"group":"Observe and monitor","pages":[{"title":"Astro Observe overview","sidebarTitle":"Overview","href":"/astro/astro-observe"},{"title":"Get started with Observe","sidebarTitle":"Get started","href":"/astro/observe-get-started"},{"title":"Warehouse connections","href":"/astro/observe-warehouse-connections"},{"group":"Catalog","pages":[{"title":"Assets overview","sidebarTitle":"Assets","href":"/astro/assets-overview"},{"title":"Event timeline","href":"/astro/assets-timeline"}]},{"title":"Create and use data products with Astro Observe","sidebarTitle":"Data products","href":"/astro/create-data-products"},{"group":"Dashboards","pages":[{"title":"View and address Deployment health incidents","sidebarTitle":"Deployment health incidents","href":"/astro/deployment-health-incidents"},{"title":"View metrics for Astro Deployments","sidebarTitle":"Deployments","href":"/astro/deployment-metrics"},{"title":"View task-level utilization metrics in the Airflow UI","sidebarTitle":"Task-level utilization metrics","href":"/astro/task-level-metrics"},{"group":"Organization dashboards","pages":[{"title":"View Organization dashboards","sidebarTitle":"View dashboards","href":"/astro/organization-dashboard"},{"title":"Export Astro reporting data","sidebarTitle":"Export reporting data","href":"/astro/org-dash-exports"}]}]},{"group":"Alerting","pages":[{"title":"Set up Astro alerts","sidebarTitle":"Astro alerts","href":"/astro/alerts"},{"title":"Service Level Agreements (SLAs)","sidebarTitle":"SLAs","href":"/astro/observe-slas"},{"title":"Configure Airflow email notifications on Astro","sidebarTitle":"Airflow email notifications","href":"/astro/airflow-email-notifications"}]},{"group":"Lineage","root":{"title":"Lineage","sidebarTitle":"Overview","href":"/astro/lineage-graph"},"pages":[{"title":"Configure OpenLineage on Astro","sidebarTitle":"Configure OpenLineage","href":"/astro/observe-openlineage"},{"sidebarTitle":"Customize OpenLineage events","title":"Use TransformTransport to customize OpenLineage events","href":"/astro/observe-transformtransport"},{"title":"Add custom metadata to OpenLineage assets","sidebarTitle":"Add custom metadata to Observe assets","href":"/astro/observe-custom-metadata"}]},{"title":"Diagnose Dag failures in Astro Observe","sidebarTitle":"Diagnose Dag failures","href":"/astro/root-cause-analysis"},{"group":"Export metrics","pages":[{"title":"Export metrics from Astro","sidebarTitle":"Overview","href":"/astro/export-metrics"},{"title":"Universal Metrics Exporter metrics reference","sidebarTitle":"Metrics reference","href":"/astro/export-metrics-reference"}]},{"group":"Integrate with data tools","pages":[{"title":"Export metrics and logs to Datadog","sidebarTitle":"Datadog","href":"/astro/export-datadog"},{"title":"Export logs to AWS CloudWatch","sidebarTitle":"AWS CloudWatch","href":"/astro/export-cloudwatch"},{"title":"Export logs to a Secondary S3 Bucket","sidebarTitle":"AWS S3 bucket","href":"/astro/export-secondary-s3-bucket"},{"title":"Export logs to a Secondary WASB Container","sidebarTitle":"Azure WASB","href":"/astro/export-secondary-wasb"},{"title":"Export logs to a Secondary GCS Bucket","sidebarTitle":"Google Cloud Storage","href":"/astro/export-secondary-gcs-bucket"}]},{"title":"Export Astro audit logs","sidebarTitle":"Export audit logs","href":"/astro/audit-logs"}]},{"group":"Administration","pages":[{"group":"Organization","pages":[{"title":"Update settings for your Astro Organization","sidebarTitle":"Update Organization settings","href":"/astro/organization-settings"},{"title":"Create and manage Organization API tokens","sidebarTitle":"Organization API tokens","href":"/astro/organization-api-tokens"}]},{"group":"User access","pages":[{"title":"Manage users in an Astro Organization","sidebarTitle":"Organization users","href":"/astro/manage-organization-users"},{"title":"Manage users in your Astro Workspace","sidebarTitle":"Workspace users","href":"/astro/manage-workspace-users"},{"title":"Configure Teams on Astro","sidebarTitle":"Teams","href":"/astro/manage-teams"},{"title":"Set up authentication and single sign-on for Astro","sidebarTitle":"Set up SSO","href":"/astro/configure-idp"},{"title":"Set up IP Access List on Astro","sidebarTitle":"Set up IP Access List","href":"/astro/ip-access-list"},{"title":"Set up SCIM provisioning on Astro","sidebarTitle":"Set up SCIM provisioning","href":"/astro/set-up-scim-provisioning"},{"title":"Create and manage domains for your Organization","sidebarTitle":"Manage domains","href":"/astro/manage-domains"},{"title":"Astro user permissions reference","sidebarTitle":"User permissions reference","href":"/astro/user-permissions"},{"title":"API authentication and token security","href":"/astro/api-authentication"},{"title":"Dag-level access control","href":"/astro/dag-level-access-control"}]},{"group":"Workspaces","pages":[{"title":"Configure Workspaces on Astro","sidebarTitle":"Configure Workspaces","href":"/astro/manage-workspaces"},{"title":"Create and manage Workspace API tokens","sidebarTitle":"Workspace API tokens","href":"/astro/workspace-api-tokens"}]},{"group":"Deployments","pages":[{"title":"Create and manage Deployment API tokens","sidebarTitle":"Deployment API tokens","href":"/astro/deployment-api-tokens"},{"title":"Create and assign custom Deployment roles","sidebarTitle":"Custom Deployment roles","href":"/astro/customize-deployment-roles"},{"title":"Authorize an Astro Deployment to cloud resources using workload identity","sidebarTitle":"Authorize Deployments to cloud resources","href":"/astro/authorize-deployments-to-your-cloud"},{"title":"Transfer a Deployment to a different Workspace","sidebarTitle":"Transfer a Deployment","href":"/astro/transfer-a-deployment"}]},{"group":"Clusters","pages":[{"title":"Create a dedicated Astro cluster","sidebarTitle":"Create a dedicated cluster","href":"/astro/create-dedicated-cluster"},{"title":"Authorize Workspaces to a cluster","href":"/astro/authorize-workspaces-to-a-cluster"},{"title":"Astro Hosted resource reference","sidebarTitle":"Resource reference","href":"/astro/resource-reference-hosted"},{"title":"View clusters","sidebarTitle":"View Clusters","href":"/astro/view-clusters"}]},{"group":"Networking","pages":[{"group":"Connect to data services","root":{"title":"Create network connections between Astro and external resources","sidebarTitle":"Connect to data services","href":"/astro/networking-overview"},"pages":[{"group":"AWS","root":{"title":"Create a network connection between Astro and AWS","sidebarTitle":"AWS","href":"/astro/connect-aws"},"pages":[{"title":"Connect to a public AWS Endpoint","sidebarTitle":"Access a public AWS endpoint","href":"/astro/connect-aws-public"},{"group":"AWS Private Networking Options","pages":[{"title":"AWS Networking: VPC Peering","sidebarTitle":"VPC Peering","href":"/astro/connect-aws-vpc-peering"},{"title":"AWS Networking: VPN","sidebarTitle":"VPN","href":"/astro/connect-aws-VPN"},{"title":"AWS Networking: AWS PrivateLink","sidebarTitle":"AWS PrivateLink","href":"/astro/connect-aws-privatelink"},{"title":"AWS Networking: Transit Gateways","sidebarTitle":"AWS Transit Gateway","href":"/astro/connect-aws-transit-gateways"},{"title":"AWS Networking: Hostname resolution options","sidebarTitle":"Hostname resolution options","href":"/astro/connect-aws-hostname-resolution"}]}]},{"group":"Azure","root":{"title":"Create a network connection between Astro and Azure","sidebarTitle":"Azure","href":"/astro/connect-azure"},"pages":[{"title":"Create a connection between Astro and Azure public endpoint","sidebarTitle":"Access a public Azure endpoint","href":"/astro/connect-azure-public"},{"group":"Azure Private Networking Options","pages":[{"title":"Azure Networking: VNet Peering","sidebarTitle":"Azure VNet Peering","href":"/astro/connect-azure-vnet-peering"},{"title":"Azure Networking: VHub Peering","sidebarTitle":"Azure VHub Peering","href":"/astro/connect-azure-vhub-peering"},{"title":"Azure Networking: VPN","sidebarTitle":"Azure VPN","href":"/astro/connect-azure-vpn"},{"title":"Azure Networking: Azure PrivateLink","sidebarTitle":"Azure Privatelink","href":"/astro/connect-azure-private-link"},{"title":"Azure Networking: Hostname resolution options","sidebarTitle":"Azure Hostname Resolutions","href":"/astro/connect-azure-hostname-resolution"}]}]},{"title":"Create a network connection between Astro and GCP","sidebarTitle":"GCP","href":"/astro/connect-gcp"}]},{"group":"Manage network egress","pages":[{"title":"Enable Private Network Egress","sidebarTitle":"Private Network Egress","href":"/astro/private-network-egress"},{"title":"Configure Customer Managed Egress","sidebarTitle":"Customer Managed Egress","href":"/astro/customer-managed-egress"}]}]},{"title":"Manage Astro billing","sidebarTitle":"Billing","href":"/astro/manage-billing"}]},{"group":"Best practices","pages":[{"title":"Airflow Edge Cases on Astro","sidebarTitle":"Airflow edge cases on Astro","href":"/astro/best-practices/airflow-edge-cases"},{"title":"Best practices for upgrading Astro Runtime on Astro","sidebarTitle":"Astro Runtime upgrades","href":"/astro/best-practices/upgrading-astro-runtime"},{"title":"When to use Airflow or Astro alerts for your pipelines on Astro","sidebarTitle":"Choosing Airflow or Astro alerts","href":"/astro/best-practices/airflow-vs-astro-alerts"},{"title":"Best practices for rightsizing Airflow resources on Astro","sidebarTitle":"Rightsize Airflow on Astro","href":"/astro/best-practices/rightsize-airflow-on-astro"},{"title":"Attribute Astro spend across teams","href":"/astro/best-practices/internal-chargeback"},{"title":"Manage Astro connections in branch-based deploy workflows","sidebarTitle":"Connections and branch-based deploys","href":"/astro/best-practices/connections-branch-deploys"},{"title":"Cross-deployment dependencies","href":"/astro/best-practices/cross-deployment-dependencies"},{"title":"Dag writing on Astro","sidebarTitle":"Dag writing on Astro","href":"/astro/best-practices/dag-writing-on-astro"},{"title":"Manage development Deployments on Astro","sidebarTitle":"Manage dev Deployments","href":"/astro/best-practices/manage-dev-deployments"},{"title":"Astro API best practices","sidebarTitle":"Work with the Astro API","href":"/astro/best-practices/astro-api-best-practices"},{"title":"Manage resources on Astro","sidebarTitle":"Manage resources","href":"/astro/best-practices/manage-resources"},{"title":"Choose a code repository strategy","sidebarTitle":"Repository strategy","href":"/astro/best-practices/repo-structure"},{"title":"Use Git submodules with an Astro project","sidebarTitle":"Git submodules","href":"/astro/best-practices/git-submodules"}]},{"group":"Reference","pages":[{"title":"Submit a support request","sidebarTitle":"Astro Support","href":"/astro/astro-support"},{"title":"Astro office hours","sidebarTitle":"Astro Office Hours","href":"/astro/astro-office-hours"},{"group":"Remote Execution Agent","pages":[{"title":"Remote Execution Agent maintenance policy","sidebarTitle":"Maintenance policy","href":"/astro/agent-maintenance-policy"}]},{"title":"Global environment variables","href":"/astro/platform-variables"},{"title":"Custom role permissions reference","sidebarTitle":"Custom role permissions","href":"/astro/deployment-role-reference"},{"title":"Add Astro domains to your network","sidebarTitle":"Allowlist Astro domains","href":"/astro/allowlist-domains"},{"title":"Astronomer feature lifecycle","sidebarTitle":"Feature previews","href":"/astro/feature-previews"},{"title":"Astro deprecations","sidebarTitle":"Deprecations","href":"/astro/deprecations"},{"title":"Apache Airflow feature support","sidebarTitle":"Airflow feature support","href":"/astro/airflow-feature-support"},{"group":"Security","root":{"title":"Security in Astro","sidebarTitle":"Security","href":"/astro/security"},"pages":[{"title":"Shared responsibility model","href":"/astro/shared-responsibility-model"},{"title":"Resilience","href":"/astro/resilience"},{"group":"Disaster recovery","root":{"title":"Disaster recovery","sidebarTitle":"Overview","href":"/astro/disaster-recovery"},"pages":[{"title":"Prepare for disaster recovery","href":"/astro/disaster-recovery-prepare"},{"title":"Set up disaster recovery","href":"/astro/disaster-recovery-setup"},{"title":"Trigger failover and failback","href":"/astro/disaster-recovery-failover"}]},{"title":"Data protection","href":"/astro/data-protection"},{"title":"GDPR compliance","href":"/astro/gdpr-compliance"},{"title":"HIPAA compliance","href":"/astro/hipaa-compliance"},{"group":"Secrets management","root":{"title":"Secrets management","href":"/astro/secrets-management"},"pages":[{"title":"Rotate credentials in Astro","sidebarTitle":"Rotate credentials","href":"/astro/rotate-credentials"}]}]},{"title":"Astro glossary","sidebarTitle":"Glossary","href":"/astro/astro-glossary"}]},{"group":"Release notes","pages":[{"group":"Astro","pages":[{"title":"Astro release notes","sidebarTitle":"Release notes","href":"/astro/release-notes"},{"group":"Release notes archive","pages":[{"title":"2026 Astro release notes: January to June","sidebarTitle":"2026 (Jan-Jun)","href":"/astro/release-notes-2026-h1"},{"title":"2025 Astro release notes","sidebarTitle":"2025","href":"/astro/release-notes-2025"},{"title":"2024 Astro release notes: July to December","sidebarTitle":"2024 (Jul-Dec)","href":"/astro/release-notes-2024"},{"title":"2024 Astro release notes: January to June","sidebarTitle":"2024 (Jan-Jun)","href":"/astro/release-notes-2024-h1"},{"title":"2023 Astro release notes: July to December","sidebarTitle":"2023 (Jul-Dec)","href":"/astro/release-notes-2023"},{"title":"2023 Astro release notes: January to June","sidebarTitle":"2023 (Jan-Jun)","href":"/astro/release-notes-2023-h1"},{"title":"2022 Astro release notes: July to December","sidebarTitle":"2022 (Jul-Dec)","href":"/astro/release-notes-2022"},{"title":"2022 Astro release notes: January to June","sidebarTitle":"2022 (Jan-Jun)","href":"/astro/release-notes-2022-h1"},{"title":"2021 Astro release notes","sidebarTitle":"2021","href":"/astro/release-notes-2021"}]}]},{"group":"Remote Execution Agent","pages":[{"title":"Remote Execution Agent release notes","sidebarTitle":"Agent release notes","href":"/astro/agent-release-notes"},{"title":"Remote Execution Agent Helm chart release notes","sidebarTitle":"Helm chart release notes","href":"/astro/agent-helm-chart-release-notes"},{"title":"Remote Execution Agent image reference","sidebarTitle":"Agent image reference","href":"/astro/agent-images"},{"title":"Remote Execution Agent image reference archive: 1.6.0 through 1.3.2","sidebarTitle":"Agent image archive: 1.6.0-1.3.2","href":"/astro/agent-images-archive-1"},{"title":"Remote Execution Agent image reference archive: 1.3.1 through 1.0.0","sidebarTitle":"Agent image archive: 1.3.1-1.0.0","href":"/astro/agent-images-archive-2"}]},{"group":"Upcoming changes","pages":[{"title":"Upcoming changes for the Astro Developer plan","sidebarTitle":"Developer","href":"/astro/upcoming-changes/developer"},{"title":"Upcoming changes for the Astro Team plan","sidebarTitle":"Team","href":"/astro/upcoming-changes/team"},{"title":"Upcoming changes for the Astro Business plan","sidebarTitle":"Business","href":"/astro/upcoming-changes/business"},{"title":"Upcoming changes for the Astro Enterprise plan","sidebarTitle":"Enterprise","href":"/astro/upcoming-changes/enterprise"},{"title":"Upcoming changes for the Astro Enterprise Business Critical plan","sidebarTitle":"Enterprise Business Critical","href":"/astro/upcoming-changes/enterprise-business-critical"}]},{"title":"Subscribe to release notes","href":"/astro/release-notes-subscribe"}]},{"group":"Airflow 3","pages":[{"title":"Airflow 3 features","sidebarTitle":"Features","href":"/astro/airflow3/features-af3"},{"title":"Upgrade an Astro project to Airflow 3","sidebarTitle":"Upgrade to Airflow 3 on Astro","href":"/astro/airflow3/upgrade-af3"}]},{"group":"Astro Hybrid","hidden":true,"pages":[{"title":"Astro Hybrid overview","href":"/astro/hybrid-overview"},{"title":"Create a new Hybrid cluster on Astro","sidebarTitle":"Create a Hybrid cluster","href":"/astro/create-hybrid-cluster"},{"title":"Manage Hybrid clusters","href":"/astro/manage-hybrid-clusters"},{"group":"Install","pages":[{"title":"Install Astro Hybrid on AWS","href":"/astro/install-aws-hybrid"},{"title":"Install Astro Hybrid on Azure","href":"/astro/install-azure-hybrid"},{"title":"Install Astro on GCP","sidebarTitle":"Install Astro Hybrid on GCP","href":"/astro/install-gcp-hybrid"}]},{"group":"Resource reference","pages":[{"title":"AWS Hybrid cluster settings","sidebarTitle":"AWS resource reference","href":"/astro/resource-reference-aws-hybrid"},{"title":"Azure Hybrid cluster settings","sidebarTitle":"Azure resource reference","href":"/astro/resource-reference-azure-hybrid"},{"title":"GCP Hybrid cluster settings","sidebarTitle":"GCP resource reference","href":"/astro/resource-reference-gcp-hybrid"}]}]}]},{"product":"Astro Private Cloud","icon":"clouds","description":"A better way to manage Apache Airflow yourself.","versions":[{"version":"v2.x"},{"version":"v1.x"},{"version":"v0.37"},{"version":"v0.36"},{"version":"v0.34"},{"version":"Archive"}],"pages":[{"title":"Astro Private Cloud","href":"/astro-private-cloud/v-2-x/astro-private-cloud-overview"}]},{"product":"Astro Runtime","icon":"layer-group","description":"The distribution of Apache Airflow that powers Astro.","pages":[{"title":"Astro Runtime","href":"/runtime/overview"}]},{"product":"Astro CLI","icon":"terminal","description":"Manage and configure your Astro projects.","versions":[{"version":"v1.47"},{"version":"v1.46"},{"version":"v1.45"},{"version":"v1.44"},{"version":"v1.43"},{"version":"v1.42"},{"version":"v1.41"},{"version":"v1.40"},{"version":"v1.39"},{"version":"v1.38"}],"pages":[{"title":"Astro CLI","href":"/cli/v1.47/overview"}]},{"product":"Astro API","icon":"gear-code","description":"Programmatic control of Astro resources and Airflow operations.","versions":[{"version":"v1"},{"version":"v1labs"},{"version":"v1beta1"}],"pages":[{"title":"Astro API","href":"/astro/api/v-1/overview"}]},{"product":"Airflow","icon":"books","description":"Apache Airflow tutorials, concepts, and guides.","versions":[{"version":"Airflow 3"},{"version":"Airflow 2"}],"pages":[{"title":"Airflow","href":"/airflow/overview"}]}]},"basePath":"","title":"GitHub Actions templates for deploying to Astro from private networks - Astronomer","buildId":"dpl_6cCEiK8XNNvaLBBkWzcBhdE9QfLC","deploymentId":"dpl_6cCEiK8XNNvaLBBkWzcBhdE9QfLC","dynamics":[],"chunks":[]}