[{"data":1,"prerenderedAt":989},["ShallowReactive",2],{"/blog/how-to-secure-cloud-run-deployment-with-auto-devops":3,"navigation-en-us":203,"banner-en-us":631,"footer-en-us":641,"blog-post-authors-en-us-Regnard Raquedan":885,"blog-related-posts-en-us-how-to-secure-cloud-run-deployment-with-auto-devops":900,"blog-promotions-en-us":926,"next-steps-en-us":979},{"id":4,"title":5,"authors":6,"body":8,"category":182,"date":183,"description":184,"extension":185,"externalUrl":186,"faq":186,"featured":187,"heroImage":188,"meta":189,"navigation":66,"path":190,"seo":191,"slug":195,"stem":196,"tags":197,"template":201,"updatedDate":186,"__hash__":202},"blogPosts/en-us/blog/how-to-secure-cloud-run-deployment-with-auto-devops.md","How to secure Google Cloud Run deployment with GitLab Auto DevOps",[7],"Regnard Raquedan",{"type":9,"value":10,"toc":175},"minimark",[11,22,31,36,39,52,57,67,74,77,83,86,97,100,106,109,129,135,138,162,165,171],[12,13,14,15,21],"p",{},"Teams looking for efficiency often look to GitLab and serverless platforms to minimize management overhead and speed deployment times. GitLab's tight integration with ",[16,17,20],"a",{"href":18,"rel":19},"https://cloud.google.com/run",[],"Google Cloud Run"," means that teams can take advantage of the industry-leading DevSecOps platform to deliver container-based applications securely and efficiently.",[12,23,24,25,30],{},"This tutorial will show you how to deploy applications to Cloud Run using GitLab ",[16,26,29],{"href":27,"rel":28},"https://docs.gitlab.com/topics/autodevops/",[],"Auto DevOps",", a feature that lets developers quickly use CI/CD pipelines via pre-built templates. This approach can accelerate testing and deployment because stages and jobs are already pre-configured.",[32,33,35],"h2",{"id":34},"prerequisites","Prerequisites",[12,37,38],{},"Before you begin, make sure you have the following:",[40,41,42,46,49],"ul",{},[43,44,45],"li",{},"a Google Cloud project with Cloud Run and Cloud Build APIs enabled",[43,47,48],{},"a Google Cloud service account with Cloud Run Admin, Cloud Build Service Agent, Service Account User, and Project Viewer permissions",[43,50,51],{},"a GitLab project containing your application code",[53,54,56],"h3",{"id":55},"demo-walkthrough","Demo walkthrough",[58,59],"iframe",{"width":60,"height":61,"src":62,"title":63,"frameBorder":64,"allow":65,"allowFullScreen":66},560,315,"https://www.youtube.com/embed/hIFagDyo3f8","YouTube video player","0","accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",true,[12,68,69,73],{},[70,71,72],"strong",{},"Step 1:"," Configure Google Cloud credentials",[12,75,76],{},"To start, use the Google Cloud service account with the necessary permissions. Once you have the service account, export its key to a JSON file and encode it using base64.",[12,78,79,82],{},[70,80,81],{},"Step 2:"," Add Auto DevOps to your GitLab project",[12,84,85],{},"Navigate to your GitLab project and create a new file at the root called \"gitlab-ci.yml.\" Add the following lines of code to include the Auto DevOps template, which automatically configures your pipeline based on project settings and configuration:",[87,88,94],"pre",{"className":89,"code":91,"language":92,"meta":93},[90],"language-text","include:\n  - template: Auto-DevOps.gitlab-ci.yml\n","text","",[95,96,91],"code",{"__ignoreMap":93},[12,98,99],{},"Commit the changes to your project.",[12,101,102,105],{},[70,103,104],{},"Step 3:"," Configure environment variables",[12,107,108],{},"Add the following environment variables to your GitLab project:",[40,110,111,117,123],{},[43,112,113,116],{},[95,114,115],{},"BASE64_GOOGLE_CLOUD_CREDENTIALS",": The base64-encoded JSON file containing your service account key. Make sure to mask this variable.",[43,118,119,122],{},[95,120,121],{},"PROJECT_ID",": The Google Cloud project ID.",[43,124,125,128],{},[95,126,127],{},"SERVICE_ID",": The service ID that will be used for Cloud Run. For this tutorial, we'll use \"nodejs\" as our service ID.",[12,130,131,134],{},[70,132,133],{},"Step 4:"," Configure the CI/CD pipeline",[12,136,137],{},"Modify the \"gitlab-ci.yml\" file to add Google Cloud SDK, gcloud commands, Docker, and the necessary configurations for deploying your application to Cloud Run.",[87,139,143],{"className":140,"code":141,"language":142,"meta":93,"style":93},"language-yaml shiki shiki-themes github-light","image: google/cloud-sdk:latest\n","yaml",[95,144,145],{"__ignoreMap":93},[146,147,150,154,158],"span",{"class":148,"line":149},"line",1,[146,151,153],{"class":152},"shJU0","image",[146,155,157],{"class":156},"sgsFI",": ",[146,159,161],{"class":160},"sYBdl","google/cloud-sdk:latest\n",[12,163,164],{},"Additionally, use Google Cloud Build to generate the container image required for deployment. Commit the changes to your project.",[87,166,169],{"className":167,"code":168,"language":92,"meta":93},[90],"deploy:\n  stage: deploy\n  script:\n    - export GOOGLE_CLOUD_CREDENTIALS=$(echo $BASE64_GOOGLE_CLOUD_CREDENTIALS | base64 -d)\n    - echo $GOOGLE_CLOUD_CREDENTIALS > service-account-key.json     - gcloud auth activate-service-account --key-file service-account-key.json     - gcloud config set project $PROJECT_ID     - gcloud auth configure-docker\n    - gcloud builds submit --tag gcr.io/$PROJECT_ID/$SERVICE_ID\n    - gcloud run deploy $SERVICE_ID --image gcr.io/$PROJECT_ID/$SERVICE_ID --region=us-central1 --platform managed --allow-unauthenticated ```\n\n**Step 5:** Finalize the DAST stage\n\nOnce your application has been deployed to Cloud Run, complete the dynamic application security testing ([DAST](https://docs.gitlab.com/user/application_security/dast/)) stage in the CI/CD pipeline to ensure your application is more secure. Add the Cloud Run URL to your \"gitlab-ci.yml\" file and enable full_scan and browser_scan options. Commit the changes to your project.\n\n```text\nvariables:\n  DAST_WEBSITE: \u003Cproject URL>\n  DAST_FULL_SCAN_ENABLED: \"true\"\n  DAST_BROWSER_SCAN: \"true\" ```\n\nIn this tutorial, we successfully deployed a Cloud Run application using GitLab's Auto DevOps. By following these steps, you can enjoy faster development and improved security, and harness the power of serverless technology.\n",[95,170,168],{"__ignoreMap":93},[172,173,174],"style",{},"html pre.shiki code .shJU0, html code.shiki .shJU0{--shiki-default:#22863A}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":93,"searchDepth":176,"depth":176,"links":177},2,[178],{"id":34,"depth":176,"text":35,"children":179},[180],{"id":55,"depth":181,"text":56},3,"engineering","2023-08-21","This tutorial will help teams speed development, improve security, and harness the power of serverless technology.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682898/Blog/Hero%20Images/cloud-security.png",{},"/en-us/blog/how-to-secure-cloud-run-deployment-with-auto-devops",{"title":5,"description":184,"ogTitle":5,"ogDescription":184,"noIndex":187,"ogImage":188,"ogUrl":192,"ogSiteName":193,"ogType":194,"canonicalUrls":192},"https://about.gitlab.com/blog/how-to-secure-cloud-run-deployment-with-auto-devops","https://about.gitlab.com","article","how-to-secure-cloud-run-deployment-with-auto-devops","en-us/blog/how-to-secure-cloud-run-deployment-with-auto-devops",[198,199,200],"tutorial","cloud native","security","BlogPost","i2fCabcy-n2Ec3dzTp0uYjcqASVwN9zqPzbbcQDFf-8",{"logo":204,"freeTrial":209,"sales":214,"login":219,"items":224,"search":551,"minimal":582,"duo":601,"switchNav":610,"pricingDeployment":621},{"config":205},{"href":206,"dataGaName":207,"dataGaLocation":208},"/","gitlab logo","header",{"text":210,"config":211},"Get free trial",{"href":212,"dataGaName":213,"dataGaLocation":208},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":215,"config":216},"Request a demo",{"href":217,"dataGaName":218,"dataGaLocation":208},"/sales/?contact-topic=request-demo","sales",{"text":220,"config":221},"Sign in",{"href":222,"dataGaName":223,"dataGaLocation":208},"https://gitlab.com/users/sign_in/","sign in",[225,254,354,359,473,529],{"text":226,"config":227,"menu":229},"Platform",{"dataNavLevelOne":228},"platform",{"type":230,"columns":231},"cards",[232,238,246],{"title":226,"description":233,"link":234},"The intelligent orchestration platform for DevSecOps",{"text":235,"config":236},"Explore our Platform",{"href":237,"dataGaName":228,"dataGaLocation":208},"/platform/",{"title":239,"description":240,"link":241},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":242,"config":243},"Meet GitLab Duo",{"href":244,"dataGaName":245,"dataGaLocation":208},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":247,"description":248,"link":249},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":250,"config":251},"Learn more",{"href":252,"dataGaName":253,"dataGaLocation":208},"/why-gitlab/","why gitlab",{"text":255,"left":66,"config":256,"menu":258},"Product",{"dataNavLevelOne":257},"solutions",{"type":259,"link":260,"columns":264,"feature":333},"lists",{"text":261,"config":262},"View all Solutions",{"href":263,"dataGaName":257,"dataGaLocation":208},"/solutions/",[265,289,312],{"title":266,"description":267,"link":268,"items":273},"Automation","CI/CD and automation to accelerate deployment",{"config":269},{"icon":270,"href":271,"dataGaName":272,"dataGaLocation":208},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[274,278,281,285],{"text":275,"config":276},"CI/CD",{"href":277,"dataGaLocation":208,"dataGaName":275},"/solutions/continuous-integration/",{"text":239,"config":279},{"href":244,"dataGaLocation":208,"dataGaName":280},"gitlab duo agent platform - product menu",{"text":282,"config":283},"Source Code Management",{"href":284,"dataGaLocation":208,"dataGaName":282},"/solutions/source-code-management/",{"text":286,"config":287},"Automated Software Delivery",{"href":271,"dataGaLocation":208,"dataGaName":288},"Automated software delivery",{"title":290,"description":291,"link":292,"items":297},"Security","Deliver code faster without compromising security",{"config":293},{"href":294,"dataGaName":295,"dataGaLocation":208,"icon":296},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[298,302,307],{"text":299,"config":300},"Application Security Testing",{"href":294,"dataGaName":301,"dataGaLocation":208},"Application security testing",{"text":303,"config":304},"Software Supply Chain Security",{"href":305,"dataGaLocation":208,"dataGaName":306},"/solutions/supply-chain/","Software supply chain security",{"text":308,"config":309},"Software Compliance",{"href":310,"dataGaName":311,"dataGaLocation":208},"/solutions/software-compliance/","software compliance",{"title":313,"link":314,"items":319},"Measurement",{"config":315},{"icon":316,"href":317,"dataGaName":318,"dataGaLocation":208},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[320,324,328],{"text":321,"config":322},"Visibility & Measurement",{"href":317,"dataGaLocation":208,"dataGaName":323},"Visibility and Measurement",{"text":325,"config":326},"Value Stream Management",{"href":327,"dataGaLocation":208,"dataGaName":325},"/solutions/value-stream-management/",{"text":329,"config":330},"Analytics & Insights",{"href":331,"dataGaLocation":208,"dataGaName":332},"/solutions/analytics-and-insights/","Analytics and insights",{"title":334,"type":259,"items":335},"GitLab for",[336,342,348],{"text":337,"config":338},"Enterprise",{"icon":339,"href":340,"dataGaLocation":208,"dataGaName":341},"Building","/enterprise/","enterprise",{"text":343,"config":344},"Small Business",{"icon":345,"href":346,"dataGaLocation":208,"dataGaName":347},"Work","/small-business/","small business",{"text":349,"config":350},"Public Sector",{"icon":351,"href":352,"dataGaLocation":208,"dataGaName":353},"Organization","/solutions/public-sector/","public sector",{"text":355,"config":356},"Pricing",{"href":357,"dataGaName":358,"dataGaLocation":208,"dataNavLevelOne":358},"/pricing/","pricing",{"text":360,"config":361,"menu":363},"Resources",{"dataNavLevelOne":362},"resources",{"type":259,"link":364,"columns":368,"feature":462},{"text":365,"config":366},"View all resources",{"href":367,"dataGaName":362,"dataGaLocation":208},"/resources/",[369,402,429],{"title":370,"items":371},"Getting started",[372,377,382,387,392,397],{"text":373,"config":374},"Install",{"href":375,"dataGaName":376,"dataGaLocation":208},"/install/","install",{"text":378,"config":379},"Quick start guides",{"href":380,"dataGaName":381,"dataGaLocation":208},"/get-started/","quick setup checklists",{"text":383,"config":384},"Learn",{"href":385,"dataGaLocation":208,"dataGaName":386},"https://university.gitlab.com/","learn",{"text":388,"config":389},"Product documentation",{"href":390,"dataGaName":391,"dataGaLocation":208},"https://docs.gitlab.com/","product documentation",{"text":393,"config":394},"Best practice videos",{"href":395,"dataGaName":396,"dataGaLocation":208},"/getting-started-videos/","best practice videos",{"text":398,"config":399},"Integrations",{"href":400,"dataGaName":401,"dataGaLocation":208},"/integrations/","integrations",{"title":403,"items":404},"Discover",[405,410,415,420,424],{"text":406,"config":407},"Customer success stories",{"href":408,"dataGaName":409,"dataGaLocation":208},"/customers/","customer success stories",{"text":411,"config":412},"Blog",{"href":413,"dataGaName":414,"dataGaLocation":208},"/blog/","blog",{"text":416,"config":417},"Demo Hub",{"href":418,"dataGaName":419,"dataGaLocation":208},"/demo-hub/","demo hub",{"text":421,"config":422},"The Source",{"href":423,"dataGaName":414,"dataGaLocation":208},"/the-source/",{"text":425,"config":426},"Remote",{"href":427,"dataGaName":428,"dataGaLocation":208},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":430,"items":431},"Connect",[432,437,442,447,452,457],{"text":433,"config":434},"GitLab Services",{"href":435,"dataGaName":436,"dataGaLocation":208},"/services/","services",{"text":438,"config":439},"Contribute",{"href":440,"dataGaName":441,"dataGaLocation":208},"https://contributors.gitlab.com","contribute",{"text":443,"config":444},"Community",{"href":445,"dataGaName":446,"dataGaLocation":208},"/community/","community",{"text":448,"config":449},"Forum",{"href":450,"dataGaName":451,"dataGaLocation":208},"https://forum.gitlab.com/","forum",{"text":453,"config":454},"Events",{"href":455,"dataGaName":456,"dataGaLocation":208},"/events/","events",{"text":458,"config":459},"Partners",{"href":460,"dataGaName":461,"dataGaLocation":208},"/partners/","partners",{"config":463,"title":466,"text":467,"link":468},{"background":464,"textColor":465},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1777322348/qpq8yrgn8knii57omj0c.png')","#000","What’s new in GitLab","Stay updated with our latest features and improvements.",{"text":469,"config":470},"Read the latest",{"href":471,"dataGaName":472,"dataGaLocation":208},"/whats-new/","whats new",{"text":474,"config":475,"menu":477},"Company",{"dataNavLevelOne":476},"company",{"type":259,"columns":478},[479],{"items":480},[481,486,492,494,499,504,509,514,519,524],{"text":482,"config":483},"About",{"href":484,"dataGaName":485,"dataGaLocation":208},"/company/","about",{"text":487,"config":488,"footerGa":491},"Jobs",{"href":489,"dataGaName":490,"dataGaLocation":208},"/jobs/","jobs",{"dataGaName":490},{"text":453,"config":493},{"href":455,"dataGaName":456,"dataGaLocation":208},{"text":495,"config":496},"Leadership",{"href":497,"dataGaName":498,"dataGaLocation":208},"/company/team/e-group/","leadership",{"text":500,"config":501},"Handbook",{"href":502,"dataGaName":503,"dataGaLocation":208},"https://handbook.gitlab.com/","handbook",{"text":505,"config":506},"Investor relations",{"href":507,"dataGaName":508,"dataGaLocation":208},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":510,"config":511},"Trust Center",{"href":512,"dataGaName":513,"dataGaLocation":208},"/security/","trust center",{"text":515,"config":516},"AI Transparency Center",{"href":517,"dataGaName":518,"dataGaLocation":208},"/ai-transparency-center/","ai transparency center",{"text":520,"config":521},"Newsletter",{"href":522,"dataGaName":523,"dataGaLocation":208},"/company/contact/#contact-forms","newsletter",{"text":525,"config":526},"Press",{"href":527,"dataGaName":528,"dataGaLocation":208},"/press/","press",{"text":530,"config":531,"menu":532},"Contact us",{"dataNavLevelOne":476},{"type":259,"columns":533},[534],{"items":535},[536,541,546],{"text":537,"config":538},"Talk to sales",{"href":539,"dataGaName":540,"dataGaLocation":208},"/sales/","talk to sales",{"text":542,"config":543},"Support portal",{"href":544,"dataGaName":545,"dataGaLocation":208},"https://support.gitlab.com/hc/en-us","support portal",{"text":547,"config":548},"Customer portal",{"href":549,"dataGaName":550,"dataGaLocation":208},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":552,"login":553,"suggestions":560},"Close",{"text":554,"link":555},"To search repositories and projects, login to",{"text":556,"config":557},"gitlab.com",{"href":222,"dataGaName":558,"dataGaLocation":559},"search login","search",{"text":561,"default":562},"Suggestions",[563,565,569,571,575,579],{"text":239,"config":564},{"href":244,"dataGaName":239,"dataGaLocation":559},{"text":566,"config":567},"Code Suggestions (AI)",{"href":568,"dataGaName":566,"dataGaLocation":559},"/solutions/code-suggestions/",{"text":275,"config":570},{"href":277,"dataGaName":275,"dataGaLocation":559},{"text":572,"config":573},"GitLab on AWS",{"href":574,"dataGaName":572,"dataGaLocation":559},"/partners/technology-partners/aws/",{"text":576,"config":577},"GitLab on Google Cloud",{"href":578,"dataGaName":576,"dataGaLocation":559},"/partners/technology-partners/google-cloud-platform/",{"text":580,"config":581},"Why GitLab?",{"href":252,"dataGaName":580,"dataGaLocation":559},{"freeTrial":583,"mobileIcon":588,"desktopIcon":593,"secondaryButton":596},{"text":584,"config":585},"Start free trial",{"href":586,"dataGaName":213,"dataGaLocation":587},"https://gitlab.com/-/trials/new/","nav",{"altText":589,"config":590},"Gitlab Icon",{"src":591,"dataGaName":592,"dataGaLocation":587},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":589,"config":594},{"src":595,"dataGaName":592,"dataGaLocation":587},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":597,"config":598},"Get Started",{"href":599,"dataGaName":600,"dataGaLocation":587},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":602,"mobileIcon":606,"desktopIcon":608},{"text":603,"config":604},"Learn more about GitLab Duo",{"href":244,"dataGaName":605,"dataGaLocation":587},"gitlab duo",{"altText":589,"config":607},{"src":591,"dataGaName":592,"dataGaLocation":587},{"altText":589,"config":609},{"src":595,"dataGaName":592,"dataGaLocation":587},{"button":611,"mobileIcon":616,"desktopIcon":618},{"text":612,"config":613},"/switch",{"href":614,"dataGaName":615,"dataGaLocation":587},"#contact","switch",{"altText":589,"config":617},{"src":591,"dataGaName":592,"dataGaLocation":587},{"altText":589,"config":619},{"src":620,"dataGaName":592,"dataGaLocation":587},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":622,"mobileIcon":627,"desktopIcon":629},{"text":623,"config":624},"Back to pricing",{"href":357,"dataGaName":625,"dataGaLocation":587,"icon":626},"back to pricing","GoBack",{"altText":589,"config":628},{"src":591,"dataGaName":592,"dataGaLocation":587},{"altText":589,"config":630},{"src":595,"dataGaName":592,"dataGaLocation":587},{"title":632,"titleMobile":633,"button":634,"config":639},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":250,"config":635},{"href":636,"dataGaName":637,"dataGaLocation":638},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":640,"disabled":187},"release",{"data":642},{"text":643,"source":644,"edit":650,"contribute":655,"config":660,"items":665,"minimal":874},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":645,"config":646},"View page source",{"href":647,"dataGaName":648,"dataGaLocation":649},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":651,"config":652},"Edit this page",{"href":653,"dataGaName":654,"dataGaLocation":649},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":656,"config":657},"Please contribute",{"href":658,"dataGaName":659,"dataGaLocation":649},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":661,"facebook":662,"youtube":663,"linkedin":664},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[666,713,766,810,842],{"title":355,"links":667,"subMenu":682},[668,672,677],{"text":669,"config":670},"View plans",{"href":357,"dataGaName":671,"dataGaLocation":649},"view plans",{"text":673,"config":674},"Why Premium?",{"href":675,"dataGaName":676,"dataGaLocation":649},"/pricing/premium/","why premium",{"text":678,"config":679},"Why Ultimate?",{"href":680,"dataGaName":681,"dataGaLocation":649},"/pricing/ultimate/","why ultimate",[683],{"title":684,"links":685},"Contact Us",[686,689,691,693,698,703,708],{"text":687,"config":688},"Contact sales",{"href":539,"dataGaName":218,"dataGaLocation":649},{"text":542,"config":690},{"href":544,"dataGaName":545,"dataGaLocation":649},{"text":547,"config":692},{"href":549,"dataGaName":550,"dataGaLocation":649},{"text":694,"config":695},"Status",{"href":696,"dataGaName":697,"dataGaLocation":649},"https://status.gitlab.com/","status",{"text":699,"config":700},"Terms of use",{"href":701,"dataGaName":702,"dataGaLocation":649},"/terms/","terms of use",{"text":704,"config":705},"Privacy statement",{"href":706,"dataGaName":707,"dataGaLocation":649},"/privacy/","privacy statement",{"text":709,"config":710},"Cookie preferences",{"dataGaName":711,"dataGaLocation":649,"id":712,"isOneTrustButton":66},"cookie preferences","ot-sdk-btn",{"title":255,"links":714,"subMenu":723},[715,719],{"text":716,"config":717},"DevSecOps platform",{"href":237,"dataGaName":718,"dataGaLocation":649},"devsecops platform",{"text":720,"config":721},"AI-Assisted Development",{"href":244,"dataGaName":722,"dataGaLocation":649},"ai-assisted development",[724],{"title":725,"links":726},"Topics",[727,732,737,742,747,752,756,761],{"text":728,"config":729},"CICD",{"href":730,"dataGaName":731,"dataGaLocation":649},"/topics/ci-cd/","cicd",{"text":733,"config":734},"GitOps",{"href":735,"dataGaName":736,"dataGaLocation":649},"/topics/gitops/","gitops",{"text":738,"config":739},"DevOps",{"href":740,"dataGaName":741,"dataGaLocation":649},"/topics/devops/","devops",{"text":743,"config":744},"Version Control",{"href":745,"dataGaName":746,"dataGaLocation":649},"/topics/version-control/","version control",{"text":748,"config":749},"DevSecOps",{"href":750,"dataGaName":751,"dataGaLocation":649},"/topics/devsecops/","devsecops",{"text":753,"config":754},"Cloud Native",{"href":755,"dataGaName":199,"dataGaLocation":649},"/topics/cloud-native/",{"text":757,"config":758},"AI for Coding",{"href":759,"dataGaName":760,"dataGaLocation":649},"/topics/devops/ai-for-coding/","ai for coding",{"text":762,"config":763},"Agentic AI",{"href":764,"dataGaName":765,"dataGaLocation":649},"/topics/agentic-ai/","agentic ai",{"title":767,"links":768},"Solutions",[769,771,773,778,782,785,789,792,794,797,800,805],{"text":299,"config":770},{"href":294,"dataGaName":299,"dataGaLocation":649},{"text":288,"config":772},{"href":271,"dataGaName":272,"dataGaLocation":649},{"text":774,"config":775},"Agile development",{"href":776,"dataGaName":777,"dataGaLocation":649},"/solutions/agile-delivery/","agile delivery",{"text":779,"config":780},"SCM",{"href":284,"dataGaName":781,"dataGaLocation":649},"source code management",{"text":728,"config":783},{"href":277,"dataGaName":784,"dataGaLocation":649},"continuous integration & delivery",{"text":786,"config":787},"Value stream management",{"href":327,"dataGaName":788,"dataGaLocation":649},"value stream management",{"text":733,"config":790},{"href":791,"dataGaName":736,"dataGaLocation":649},"/solutions/gitops/",{"text":337,"config":793},{"href":340,"dataGaName":341,"dataGaLocation":649},{"text":795,"config":796},"Small business",{"href":346,"dataGaName":347,"dataGaLocation":649},{"text":798,"config":799},"Public sector",{"href":352,"dataGaName":353,"dataGaLocation":649},{"text":801,"config":802},"Education",{"href":803,"dataGaName":804,"dataGaLocation":649},"/solutions/education/","education",{"text":806,"config":807},"Financial services",{"href":808,"dataGaName":809,"dataGaLocation":649},"/solutions/finance/","financial services",{"title":360,"links":811},[812,814,816,818,821,823,826,828,830,832,834,836,838,840],{"text":373,"config":813},{"href":375,"dataGaName":376,"dataGaLocation":649},{"text":378,"config":815},{"href":380,"dataGaName":381,"dataGaLocation":649},{"text":383,"config":817},{"href":385,"dataGaName":386,"dataGaLocation":649},{"text":388,"config":819},{"href":390,"dataGaName":820,"dataGaLocation":649},"docs",{"text":411,"config":822},{"href":413,"dataGaName":414,"dataGaLocation":649},{"text":824,"config":825},"What's new",{"href":471,"dataGaName":472,"dataGaLocation":649},{"text":406,"config":827},{"href":408,"dataGaName":409,"dataGaLocation":649},{"text":425,"config":829},{"href":427,"dataGaName":428,"dataGaLocation":649},{"text":433,"config":831},{"href":435,"dataGaName":436,"dataGaLocation":649},{"text":438,"config":833},{"href":440,"dataGaName":441,"dataGaLocation":649},{"text":443,"config":835},{"href":445,"dataGaName":446,"dataGaLocation":649},{"text":448,"config":837},{"href":450,"dataGaName":451,"dataGaLocation":649},{"text":453,"config":839},{"href":455,"dataGaName":456,"dataGaLocation":649},{"text":458,"config":841},{"href":460,"dataGaName":461,"dataGaLocation":649},{"title":474,"links":843},[844,846,848,850,852,854,858,863,865,867,869],{"text":482,"config":845},{"href":484,"dataGaName":476,"dataGaLocation":649},{"text":487,"config":847},{"href":489,"dataGaName":490,"dataGaLocation":649},{"text":495,"config":849},{"href":497,"dataGaName":498,"dataGaLocation":649},{"text":500,"config":851},{"href":502,"dataGaName":503,"dataGaLocation":649},{"text":505,"config":853},{"href":507,"dataGaName":508,"dataGaLocation":649},{"text":855,"config":856},"Sustainability",{"href":857,"dataGaName":855,"dataGaLocation":649},"/sustainability/",{"text":859,"config":860},"Diversity, inclusion and belonging (DIB)",{"href":861,"dataGaName":862,"dataGaLocation":649},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":510,"config":864},{"href":512,"dataGaName":513,"dataGaLocation":649},{"text":520,"config":866},{"href":522,"dataGaName":523,"dataGaLocation":649},{"text":525,"config":868},{"href":527,"dataGaName":528,"dataGaLocation":649},{"text":870,"config":871},"Modern Slavery Transparency Statement",{"href":872,"dataGaName":873,"dataGaLocation":649},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":875},[876,879,882],{"text":877,"config":878},"Terms",{"href":701,"dataGaName":702,"dataGaLocation":649},{"text":880,"config":881},"Cookies",{"dataGaName":711,"dataGaLocation":649,"id":712,"isOneTrustButton":66},{"text":883,"config":884},"Privacy",{"href":706,"dataGaName":707,"dataGaLocation":649},[886],{"id":887,"title":7,"body":186,"config":888,"content":890,"description":186,"extension":894,"meta":895,"navigation":66,"path":896,"seo":897,"stem":898,"__hash__":899},"blogAuthors/en-us/blog/authors/regnard-raquedan.yml",{"template":889},"BlogAuthor",{"name":7,"config":891},{"headshot":892,"ctfId":893},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663118/Blog/Author%20Headshots/regnard_raquedan_headshot.png","rraquedan","yml",{},"/en-us/blog/authors/regnard-raquedan",{},"en-us/blog/authors/regnard-raquedan","1JCF9gTeSA0OaLWrorCsz7_b5_2A2kagAMVhH8r4NcM",[901,910,918],{"title":902,"description":903,"heroImage":904,"category":182,"date":905,"authors":906,"slug":909,"externalUrl":186},"Confidential AI for GitLab Self-Hosted","Give developers AI coding agents in GitLab Duo without source code leaving a hardware-encrypted boundary — no GPUs needed.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1773866173/vte9qh8rriznvyclhkes.png","2026-08-06",[907,908],"Mathias Ewald","Martin Paloncy, Edgeless Systems","confidential-ai-for-gitlab-self-hosted",{"title":911,"description":912,"heroImage":913,"category":182,"date":914,"authors":915,"slug":917,"externalUrl":186},"Green DevOps: Why carbon measurement belongs in your CI/CD pipeline","CI/CD pipelines have a hidden carbon cost. Here's why measuring it matters, and how you can get started with Eco CI and Carmen in GitLab.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1765809212/noh0mdfn9o94ry9ykura.png","2026-07-09",[916],"Lysanne Pinto","green-devops-carbon-measurement-cicd-pipeline",{"title":919,"description":920,"heroImage":921,"category":182,"date":922,"authors":923,"slug":925,"externalUrl":186},"How to build CI/CD observability at scale","This practical guide to GitLab pipeline analytics helps self-managed users gain operational insights using Prometheus and Grafana.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1774465167/n5hlvrsrheadeccyr1oz.png","2026-04-28",[924],"Paul Meresanu","how-to-build-ci-cd-observability-at-scale",{"promotions":927},[928,942,954,965],{"id":929,"categories":930,"header":932,"text":933,"button":934,"image":939},"ai-modernization",[931],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":935,"config":936},"Get your AI maturity score",{"href":937,"dataGaName":938,"dataGaLocation":414},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":940},{"src":941},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":943,"categories":944,"header":946,"text":933,"button":947,"image":951},"devops-modernization",[945,751],"product","Are you just managing tools or shipping innovation?",{"text":948,"config":949},"Get your DevOps maturity score",{"href":950,"dataGaName":938,"dataGaLocation":414},"/assessments/devops-modernization-assessment/",{"config":952},{"src":953},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":955,"categories":956,"header":957,"text":933,"button":958,"image":962},"security-modernization",[200],"Are you trading speed for security?",{"text":959,"config":960},"Get your security maturity score",{"href":961,"dataGaName":938,"dataGaLocation":414},"/assessments/security-modernization-assessment/",{"config":963},{"src":964},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":966,"paths":967,"header":970,"text":971,"button":972,"image":977},"github-azure-migration",[968,969],"migration-from-azure-devops-to-gitlab","integrating-azure-devops-scm-and-gitlab","Is your team ready for GitHub's Azure move?","GitHub is already rebuilding around Azure. Find out what it means for you.",{"text":973,"config":974},"See how GitLab compares to GitHub",{"href":975,"dataGaName":976,"dataGaLocation":414},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":978},{"src":953},{"header":980,"blurb":981,"button":982,"secondaryButton":987},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":983,"config":984},"Get your free trial",{"href":985,"dataGaName":213,"dataGaLocation":986},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":687,"config":988},{"href":539,"dataGaName":218,"dataGaLocation":986},1786803752170]