[{"data":1,"prerenderedAt":1066},["ShallowReactive",2],{"/blog/changes-to-the-preclonescript":3,"navigation-en-us":282,"banner-en-us":710,"footer-en-us":720,"blog-post-authors-en-us-Darren Eastman":965,"blog-related-posts-en-us-changes-to-the-preclonescript":980,"blog-promotions-en-us":1002,"next-steps-en-us":1056},{"id":4,"title":5,"authors":6,"body":8,"category":260,"date":261,"description":262,"extension":263,"externalUrl":264,"faq":264,"featured":265,"heroImage":266,"meta":267,"navigation":268,"path":269,"seo":270,"slug":274,"stem":275,"tags":276,"template":280,"updatedDate":264,"__hash__":281},"blogPosts/en-us/blog/changes-to-the-preclonescript.md","Guide to pre_clone_script changes on GitLab SaaS Linux Runners",[7],"Darren Eastman",{"type":9,"value":10,"toc":252},"minimark",[11,23,28,40,50,65,69,79,156,159,166,172,200,207,232,242,248],[12,13,14,15,19,20,22],"p",{},"In GitLab 16.0, on GitLab SaaS Runners on Linux, we are removing the ",[16,17,18],"code",{},"CI_PRE_CLONE_SCRIPT"," variable support in CI/CD workflows. If you use the ",[16,21,18],{}," variable in your GitLab SaaS CI pipelines, you must change to the new method to ensure your workflows run as expected.",[24,25,27],"h2",{"id":26},"what-is-the-pre_clone_script","What is the pre_clone_script?",[12,29,30,31,39],{},"The ",[32,33,36],"a",{"href":34,"rel":35},"https://docs.gitlab.com/runner/configuration/advanced-configuration/#the-runners-section",[],[16,37,38],{},"pre_clone_script"," configuration option is a powerful pre-build script feature that enables you to execute custom logic before a GitLab Runner clones the project repository and runs your CI jobs. For example, you could use this feature in your environment to automate the cleanup of files from the build directory that aren’t useful for subsequent builds. Other use cases include retrieving files needed for the build or running other commands before the git initialization of the build directory.",[12,41,42,43,45,46,49],{},"To use this feature on GitLab SaaS Runners on Linux, you must first define a project CI/CD variable, ",[16,44,18],{},", and include that variable in the ",[16,47,48],{},".gitlab-ci.yml"," pipeline file.",[12,51,52,53,60,61,64],{},"While this Runner pre-build script hook configuration has proven helpful for our customers, we needed to devise a more straightforward solution, while introducing additional guard rails. Enter the new ",[32,54,57],{"href":55,"rel":56},"https://docs.gitlab.com/ci/yaml/#hookspre_get_sources_script",[],[16,58,59],{},"pre_get_sources_script"," keyword in the ",[16,62,63],{},".gilab-ci.yml"," file syntax.",[24,66,68],{"id":67},"what-is-the-pre_get_sources_script-hook","What is the pre_get_sources_script hook?",[12,70,30,71,73,74,76,77,49],{},[16,72,59],{}," hook is a simple-to-use method that enables you to have your script executed by the GitLab Runner before the git clone, init, and CI build scripts. Using the new ",[16,75,59],{}," script is as simple as entering the following syntax in your ",[16,78,48],{},[80,81,86],"pre",{"className":82,"code":83,"language":84,"meta":85,"style":85},"language-yaml shiki shiki-themes github-light","test_job:\n   stage: test\n   hooks:\n      pre_get_sources_script:\n      - echo 'hello run commands here before fetching the project repository'\n   script:\n     - echo 'this is the start of my CI build job script\n\n","yaml","",[16,87,88,101,114,122,130,139,147],{"__ignoreMap":85},[89,90,93,97],"span",{"class":91,"line":92},"line",1,[89,94,96],{"class":95},"shJU0","test_job",[89,98,100],{"class":99},"sgsFI",":\n",[89,102,104,107,110],{"class":91,"line":103},2,[89,105,106],{"class":95},"   stage",[89,108,109],{"class":99},": ",[89,111,113],{"class":112},"sYBdl","test\n",[89,115,117,120],{"class":91,"line":116},3,[89,118,119],{"class":95},"   hooks",[89,121,100],{"class":99},[89,123,125,128],{"class":91,"line":124},4,[89,126,127],{"class":95},"      pre_get_sources_script",[89,129,100],{"class":99},[89,131,133,136],{"class":91,"line":132},5,[89,134,135],{"class":99},"      - ",[89,137,138],{"class":112},"echo 'hello run commands here before fetching the project repository'\n",[89,140,142,145],{"class":91,"line":141},6,[89,143,144],{"class":95},"   script",[89,146,100],{"class":99},[89,148,150,153],{"class":91,"line":149},7,[89,151,152],{"class":99},"     - ",[89,154,155],{"class":112},"echo 'this is the start of my CI build job script\n",[12,157,158],{},"Since the hook now is visible as code in your pipeline, you have immediate visibility into the script the Runner will execute before running the build job.",[24,160,162,163,165],{"id":161},"how-to-prepare-for-pre_get_sources_script","How to prepare for ",[16,164,59],{},"?",[12,167,168,169,171],{},"To prepare for the change to ",[16,170,59],{}," in GitLab 16.0, follow these steps:",[173,174,175,182,194],"ol",{},[176,177,178,179,181],"li",{},"Check your CI jobs on GitLab SaaS to confirm if the ",[16,180,18],{}," variable is used.",[176,183,184,185,187,188,190,191,193],{},"If the ",[16,186,18],{}," is used, then replace the script definition with a ",[16,189,59],{}," hook in your ",[16,192,48],{}," file.",[176,195,196,197,199],{},"If you have any issues during testing of your pipelines with ",[16,198,59],{},", connect with us by leaving a comment below.",[24,201,203,204],{"id":202},"whats-next-support-for-post_get_source","What's next: Support for ",[16,205,206],{},"post_get_source",[12,208,209,210,212,213,216,217,220,221,224,225,231],{},"On self-managed GitLab Runners, the ",[16,211,59],{}," hook is only one of many hooks you can use to run code in various CI/CD pipeline stages. Those hooks include ",[16,214,215],{},"post_get_sources",", ",[16,218,219],{},"pre_build",", and ",[16,222,223],{},"post_build"," hooks, configurable only on the Runner host. More details are available in the ",[32,226,228],{"href":34,"rel":227},[],[16,229,230],{},"[[runners]]"," section in the advanced configuration documentation.",[12,233,234,235,237,238,241],{},"In the future, we plan to add support for ",[16,236,215],{}," in the YAML syntax of the ",[16,239,240],{},"gitlab-ci.yml"," pipeline.",[12,243,244],{},[245,246,247],"em",{},"Disclaimer: This blog contains information related to upcoming products, features, and functionality. It is important to note that the information in this blog post is for informational purposes only. Please do not rely on this information for purchasing or planning purposes. As with all projects, the items mentioned in this blog and linked pages are subject to change or delay. The development, release, and timing of any products, features, or functionality remain at the sole discretion of GitLab.",[249,250,251],"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":85,"searchDepth":103,"depth":103,"links":253},[254,255,256,258],{"id":26,"depth":103,"text":27},{"id":67,"depth":103,"text":68},{"id":161,"depth":103,"text":257},"How to prepare for pre_get_sources_script?",{"id":202,"depth":103,"text":259},"What's next: Support for post_get_source","news","2023-03-27","Learn about the change from CI_PRE_CLONE_SCRIPT to pre_get_sources_script on GitLab SaaS Linux Runners.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749664087/Blog/Hero%20Images/tanukicover.jpg",{},true,"/en-us/blog/changes-to-the-preclonescript",{"title":5,"description":262,"ogTitle":5,"ogDescription":262,"noIndex":265,"ogImage":266,"ogUrl":271,"ogSiteName":272,"ogType":273,"canonicalUrls":271},"https://about.gitlab.com/blog/changes-to-the-preclonescript","https://about.gitlab.com","article","changes-to-the-preclonescript","en-us/blog/changes-to-the-preclonescript",[277,278,279],"CI","CD","features","BlogPost","hLGzARCSqksVikykdCT4FzYdKasakZJb5HZfpb44Fxk",{"logo":283,"freeTrial":288,"sales":293,"login":298,"items":303,"search":630,"minimal":661,"duo":680,"switchNav":689,"pricingDeployment":700},{"config":284},{"href":285,"dataGaName":286,"dataGaLocation":287},"/","gitlab logo","header",{"text":289,"config":290},"Get free trial",{"href":291,"dataGaName":292,"dataGaLocation":287},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":294,"config":295},"Request a demo",{"href":296,"dataGaName":297,"dataGaLocation":287},"/sales/?contact-topic=request-demo","sales",{"text":299,"config":300},"Sign in",{"href":301,"dataGaName":302,"dataGaLocation":287},"https://gitlab.com/users/sign_in/","sign in",[304,333,433,438,552,608],{"text":305,"config":306,"menu":308},"Platform",{"dataNavLevelOne":307},"platform",{"type":309,"columns":310},"cards",[311,317,325],{"title":305,"description":312,"link":313},"The intelligent orchestration platform for DevSecOps",{"text":314,"config":315},"Explore our Platform",{"href":316,"dataGaName":307,"dataGaLocation":287},"/platform/",{"title":318,"description":319,"link":320},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":321,"config":322},"Meet GitLab Duo",{"href":323,"dataGaName":324,"dataGaLocation":287},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":326,"description":327,"link":328},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":329,"config":330},"Learn more",{"href":331,"dataGaName":332,"dataGaLocation":287},"/why-gitlab/","why gitlab",{"text":334,"left":268,"config":335,"menu":337},"Product",{"dataNavLevelOne":336},"solutions",{"type":338,"link":339,"columns":343,"feature":412},"lists",{"text":340,"config":341},"View all Solutions",{"href":342,"dataGaName":336,"dataGaLocation":287},"/solutions/",[344,368,391],{"title":345,"description":346,"link":347,"items":352},"Automation","CI/CD and automation to accelerate deployment",{"config":348},{"icon":349,"href":350,"dataGaName":351,"dataGaLocation":287},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[353,357,360,364],{"text":354,"config":355},"CI/CD",{"href":356,"dataGaLocation":287,"dataGaName":354},"/solutions/continuous-integration/",{"text":318,"config":358},{"href":323,"dataGaLocation":287,"dataGaName":359},"gitlab duo agent platform - product menu",{"text":361,"config":362},"Source Code Management",{"href":363,"dataGaLocation":287,"dataGaName":361},"/solutions/source-code-management/",{"text":365,"config":366},"Automated Software Delivery",{"href":350,"dataGaLocation":287,"dataGaName":367},"Automated software delivery",{"title":369,"description":370,"link":371,"items":376},"Security","Deliver code faster without compromising security",{"config":372},{"href":373,"dataGaName":374,"dataGaLocation":287,"icon":375},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[377,381,386],{"text":378,"config":379},"Application Security Testing",{"href":373,"dataGaName":380,"dataGaLocation":287},"Application security testing",{"text":382,"config":383},"Software Supply Chain Security",{"href":384,"dataGaLocation":287,"dataGaName":385},"/solutions/supply-chain/","Software supply chain security",{"text":387,"config":388},"Software Compliance",{"href":389,"dataGaName":390,"dataGaLocation":287},"/solutions/software-compliance/","software compliance",{"title":392,"link":393,"items":398},"Measurement",{"config":394},{"icon":395,"href":396,"dataGaName":397,"dataGaLocation":287},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[399,403,407],{"text":400,"config":401},"Visibility & Measurement",{"href":396,"dataGaLocation":287,"dataGaName":402},"Visibility and Measurement",{"text":404,"config":405},"Value Stream Management",{"href":406,"dataGaLocation":287,"dataGaName":404},"/solutions/value-stream-management/",{"text":408,"config":409},"Analytics & Insights",{"href":410,"dataGaLocation":287,"dataGaName":411},"/solutions/analytics-and-insights/","Analytics and insights",{"title":413,"type":338,"items":414},"GitLab for",[415,421,427],{"text":416,"config":417},"Enterprise",{"icon":418,"href":419,"dataGaLocation":287,"dataGaName":420},"Building","/enterprise/","enterprise",{"text":422,"config":423},"Small Business",{"icon":424,"href":425,"dataGaLocation":287,"dataGaName":426},"Work","/small-business/","small business",{"text":428,"config":429},"Public Sector",{"icon":430,"href":431,"dataGaLocation":287,"dataGaName":432},"Organization","/solutions/public-sector/","public sector",{"text":434,"config":435},"Pricing",{"href":436,"dataGaName":437,"dataGaLocation":287,"dataNavLevelOne":437},"/pricing/","pricing",{"text":439,"config":440,"menu":442},"Resources",{"dataNavLevelOne":441},"resources",{"type":338,"link":443,"columns":447,"feature":541},{"text":444,"config":445},"View all resources",{"href":446,"dataGaName":441,"dataGaLocation":287},"/resources/",[448,481,508],{"title":449,"items":450},"Getting started",[451,456,461,466,471,476],{"text":452,"config":453},"Install",{"href":454,"dataGaName":455,"dataGaLocation":287},"/install/","install",{"text":457,"config":458},"Quick start guides",{"href":459,"dataGaName":460,"dataGaLocation":287},"/get-started/","quick setup checklists",{"text":462,"config":463},"Learn",{"href":464,"dataGaLocation":287,"dataGaName":465},"https://university.gitlab.com/","learn",{"text":467,"config":468},"Product documentation",{"href":469,"dataGaName":470,"dataGaLocation":287},"https://docs.gitlab.com/","product documentation",{"text":472,"config":473},"Best practice videos",{"href":474,"dataGaName":475,"dataGaLocation":287},"/getting-started-videos/","best practice videos",{"text":477,"config":478},"Integrations",{"href":479,"dataGaName":480,"dataGaLocation":287},"/integrations/","integrations",{"title":482,"items":483},"Discover",[484,489,494,499,503],{"text":485,"config":486},"Customer success stories",{"href":487,"dataGaName":488,"dataGaLocation":287},"/customers/","customer success stories",{"text":490,"config":491},"Blog",{"href":492,"dataGaName":493,"dataGaLocation":287},"/blog/","blog",{"text":495,"config":496},"Demo Hub",{"href":497,"dataGaName":498,"dataGaLocation":287},"/demo-hub/","demo hub",{"text":500,"config":501},"The Source",{"href":502,"dataGaName":493,"dataGaLocation":287},"/the-source/",{"text":504,"config":505},"Remote",{"href":506,"dataGaName":507,"dataGaLocation":287},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":509,"items":510},"Connect",[511,516,521,526,531,536],{"text":512,"config":513},"GitLab Services",{"href":514,"dataGaName":515,"dataGaLocation":287},"/services/","services",{"text":517,"config":518},"Contribute",{"href":519,"dataGaName":520,"dataGaLocation":287},"https://contributors.gitlab.com","contribute",{"text":522,"config":523},"Community",{"href":524,"dataGaName":525,"dataGaLocation":287},"/community/","community",{"text":527,"config":528},"Forum",{"href":529,"dataGaName":530,"dataGaLocation":287},"https://forum.gitlab.com/","forum",{"text":532,"config":533},"Events",{"href":534,"dataGaName":535,"dataGaLocation":287},"/events/","events",{"text":537,"config":538},"Partners",{"href":539,"dataGaName":540,"dataGaLocation":287},"/partners/","partners",{"config":542,"title":545,"text":546,"link":547},{"background":543,"textColor":544},"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":548,"config":549},"Read the latest",{"href":550,"dataGaName":551,"dataGaLocation":287},"/whats-new/","whats new",{"text":553,"config":554,"menu":556},"Company",{"dataNavLevelOne":555},"company",{"type":338,"columns":557},[558],{"items":559},[560,565,571,573,578,583,588,593,598,603],{"text":561,"config":562},"About",{"href":563,"dataGaName":564,"dataGaLocation":287},"/company/","about",{"text":566,"config":567,"footerGa":570},"Jobs",{"href":568,"dataGaName":569,"dataGaLocation":287},"/jobs/","jobs",{"dataGaName":569},{"text":532,"config":572},{"href":534,"dataGaName":535,"dataGaLocation":287},{"text":574,"config":575},"Leadership",{"href":576,"dataGaName":577,"dataGaLocation":287},"/company/team/e-group/","leadership",{"text":579,"config":580},"Handbook",{"href":581,"dataGaName":582,"dataGaLocation":287},"https://handbook.gitlab.com/","handbook",{"text":584,"config":585},"Investor relations",{"href":586,"dataGaName":587,"dataGaLocation":287},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":589,"config":590},"Trust Center",{"href":591,"dataGaName":592,"dataGaLocation":287},"/security/","trust center",{"text":594,"config":595},"AI Transparency Center",{"href":596,"dataGaName":597,"dataGaLocation":287},"/ai-transparency-center/","ai transparency center",{"text":599,"config":600},"Newsletter",{"href":601,"dataGaName":602,"dataGaLocation":287},"/company/contact/#contact-forms","newsletter",{"text":604,"config":605},"Press",{"href":606,"dataGaName":607,"dataGaLocation":287},"/press/","press",{"text":609,"config":610,"menu":611},"Contact us",{"dataNavLevelOne":555},{"type":338,"columns":612},[613],{"items":614},[615,620,625],{"text":616,"config":617},"Talk to sales",{"href":618,"dataGaName":619,"dataGaLocation":287},"/sales/","talk to sales",{"text":621,"config":622},"Support portal",{"href":623,"dataGaName":624,"dataGaLocation":287},"https://support.gitlab.com/hc/en-us","support portal",{"text":626,"config":627},"Customer portal",{"href":628,"dataGaName":629,"dataGaLocation":287},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":631,"login":632,"suggestions":639},"Close",{"text":633,"link":634},"To search repositories and projects, login to",{"text":635,"config":636},"gitlab.com",{"href":301,"dataGaName":637,"dataGaLocation":638},"search login","search",{"text":640,"default":641},"Suggestions",[642,644,648,650,654,658],{"text":318,"config":643},{"href":323,"dataGaName":318,"dataGaLocation":638},{"text":645,"config":646},"Code Suggestions (AI)",{"href":647,"dataGaName":645,"dataGaLocation":638},"/solutions/code-suggestions/",{"text":354,"config":649},{"href":356,"dataGaName":354,"dataGaLocation":638},{"text":651,"config":652},"GitLab on AWS",{"href":653,"dataGaName":651,"dataGaLocation":638},"/partners/technology-partners/aws/",{"text":655,"config":656},"GitLab on Google Cloud",{"href":657,"dataGaName":655,"dataGaLocation":638},"/partners/technology-partners/google-cloud-platform/",{"text":659,"config":660},"Why GitLab?",{"href":331,"dataGaName":659,"dataGaLocation":638},{"freeTrial":662,"mobileIcon":667,"desktopIcon":672,"secondaryButton":675},{"text":663,"config":664},"Start free trial",{"href":665,"dataGaName":292,"dataGaLocation":666},"https://gitlab.com/-/trials/new/","nav",{"altText":668,"config":669},"Gitlab Icon",{"src":670,"dataGaName":671,"dataGaLocation":666},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":668,"config":673},{"src":674,"dataGaName":671,"dataGaLocation":666},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":676,"config":677},"Get Started",{"href":678,"dataGaName":679,"dataGaLocation":666},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":681,"mobileIcon":685,"desktopIcon":687},{"text":682,"config":683},"Learn more about GitLab Duo",{"href":323,"dataGaName":684,"dataGaLocation":666},"gitlab duo",{"altText":668,"config":686},{"src":670,"dataGaName":671,"dataGaLocation":666},{"altText":668,"config":688},{"src":674,"dataGaName":671,"dataGaLocation":666},{"button":690,"mobileIcon":695,"desktopIcon":697},{"text":691,"config":692},"/switch",{"href":693,"dataGaName":694,"dataGaLocation":666},"#contact","switch",{"altText":668,"config":696},{"src":670,"dataGaName":671,"dataGaLocation":666},{"altText":668,"config":698},{"src":699,"dataGaName":671,"dataGaLocation":666},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":701,"mobileIcon":706,"desktopIcon":708},{"text":702,"config":703},"Back to pricing",{"href":436,"dataGaName":704,"dataGaLocation":666,"icon":705},"back to pricing","GoBack",{"altText":668,"config":707},{"src":670,"dataGaName":671,"dataGaLocation":666},{"altText":668,"config":709},{"src":674,"dataGaName":671,"dataGaLocation":666},{"title":711,"titleMobile":712,"button":713,"config":718},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":329,"config":714},{"href":715,"dataGaName":716,"dataGaLocation":717},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":719,"disabled":265},"release",{"data":721},{"text":722,"source":723,"edit":729,"contribute":734,"config":739,"items":744,"minimal":954},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":724,"config":725},"View page source",{"href":726,"dataGaName":727,"dataGaLocation":728},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":730,"config":731},"Edit this page",{"href":732,"dataGaName":733,"dataGaLocation":728},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":735,"config":736},"Please contribute",{"href":737,"dataGaName":738,"dataGaLocation":728},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":740,"facebook":741,"youtube":742,"linkedin":743},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[745,792,846,890,922],{"title":434,"links":746,"subMenu":761},[747,751,756],{"text":748,"config":749},"View plans",{"href":436,"dataGaName":750,"dataGaLocation":728},"view plans",{"text":752,"config":753},"Why Premium?",{"href":754,"dataGaName":755,"dataGaLocation":728},"/pricing/premium/","why premium",{"text":757,"config":758},"Why Ultimate?",{"href":759,"dataGaName":760,"dataGaLocation":728},"/pricing/ultimate/","why ultimate",[762],{"title":763,"links":764},"Contact Us",[765,768,770,772,777,782,787],{"text":766,"config":767},"Contact sales",{"href":618,"dataGaName":297,"dataGaLocation":728},{"text":621,"config":769},{"href":623,"dataGaName":624,"dataGaLocation":728},{"text":626,"config":771},{"href":628,"dataGaName":629,"dataGaLocation":728},{"text":773,"config":774},"Status",{"href":775,"dataGaName":776,"dataGaLocation":728},"https://status.gitlab.com/","status",{"text":778,"config":779},"Terms of use",{"href":780,"dataGaName":781,"dataGaLocation":728},"/terms/","terms of use",{"text":783,"config":784},"Privacy statement",{"href":785,"dataGaName":786,"dataGaLocation":728},"/privacy/","privacy statement",{"text":788,"config":789},"Cookie preferences",{"dataGaName":790,"dataGaLocation":728,"id":791,"isOneTrustButton":268},"cookie preferences","ot-sdk-btn",{"title":334,"links":793,"subMenu":802},[794,798],{"text":795,"config":796},"DevSecOps platform",{"href":316,"dataGaName":797,"dataGaLocation":728},"devsecops platform",{"text":799,"config":800},"AI-Assisted Development",{"href":323,"dataGaName":801,"dataGaLocation":728},"ai-assisted development",[803],{"title":804,"links":805},"Topics",[806,811,816,821,826,831,836,841],{"text":807,"config":808},"CICD",{"href":809,"dataGaName":810,"dataGaLocation":728},"/topics/ci-cd/","cicd",{"text":812,"config":813},"GitOps",{"href":814,"dataGaName":815,"dataGaLocation":728},"/topics/gitops/","gitops",{"text":817,"config":818},"DevOps",{"href":819,"dataGaName":820,"dataGaLocation":728},"/topics/devops/","devops",{"text":822,"config":823},"Version Control",{"href":824,"dataGaName":825,"dataGaLocation":728},"/topics/version-control/","version control",{"text":827,"config":828},"DevSecOps",{"href":829,"dataGaName":830,"dataGaLocation":728},"/topics/devsecops/","devsecops",{"text":832,"config":833},"Cloud Native",{"href":834,"dataGaName":835,"dataGaLocation":728},"/topics/cloud-native/","cloud native",{"text":837,"config":838},"AI for Coding",{"href":839,"dataGaName":840,"dataGaLocation":728},"/topics/devops/ai-for-coding/","ai for coding",{"text":842,"config":843},"Agentic AI",{"href":844,"dataGaName":845,"dataGaLocation":728},"/topics/agentic-ai/","agentic ai",{"title":847,"links":848},"Solutions",[849,851,853,858,862,865,869,872,874,877,880,885],{"text":378,"config":850},{"href":373,"dataGaName":378,"dataGaLocation":728},{"text":367,"config":852},{"href":350,"dataGaName":351,"dataGaLocation":728},{"text":854,"config":855},"Agile development",{"href":856,"dataGaName":857,"dataGaLocation":728},"/solutions/agile-delivery/","agile delivery",{"text":859,"config":860},"SCM",{"href":363,"dataGaName":861,"dataGaLocation":728},"source code management",{"text":807,"config":863},{"href":356,"dataGaName":864,"dataGaLocation":728},"continuous integration & delivery",{"text":866,"config":867},"Value stream management",{"href":406,"dataGaName":868,"dataGaLocation":728},"value stream management",{"text":812,"config":870},{"href":871,"dataGaName":815,"dataGaLocation":728},"/solutions/gitops/",{"text":416,"config":873},{"href":419,"dataGaName":420,"dataGaLocation":728},{"text":875,"config":876},"Small business",{"href":425,"dataGaName":426,"dataGaLocation":728},{"text":878,"config":879},"Public sector",{"href":431,"dataGaName":432,"dataGaLocation":728},{"text":881,"config":882},"Education",{"href":883,"dataGaName":884,"dataGaLocation":728},"/solutions/education/","education",{"text":886,"config":887},"Financial services",{"href":888,"dataGaName":889,"dataGaLocation":728},"/solutions/finance/","financial services",{"title":439,"links":891},[892,894,896,898,901,903,906,908,910,912,914,916,918,920],{"text":452,"config":893},{"href":454,"dataGaName":455,"dataGaLocation":728},{"text":457,"config":895},{"href":459,"dataGaName":460,"dataGaLocation":728},{"text":462,"config":897},{"href":464,"dataGaName":465,"dataGaLocation":728},{"text":467,"config":899},{"href":469,"dataGaName":900,"dataGaLocation":728},"docs",{"text":490,"config":902},{"href":492,"dataGaName":493,"dataGaLocation":728},{"text":904,"config":905},"What's new",{"href":550,"dataGaName":551,"dataGaLocation":728},{"text":485,"config":907},{"href":487,"dataGaName":488,"dataGaLocation":728},{"text":504,"config":909},{"href":506,"dataGaName":507,"dataGaLocation":728},{"text":512,"config":911},{"href":514,"dataGaName":515,"dataGaLocation":728},{"text":517,"config":913},{"href":519,"dataGaName":520,"dataGaLocation":728},{"text":522,"config":915},{"href":524,"dataGaName":525,"dataGaLocation":728},{"text":527,"config":917},{"href":529,"dataGaName":530,"dataGaLocation":728},{"text":532,"config":919},{"href":534,"dataGaName":535,"dataGaLocation":728},{"text":537,"config":921},{"href":539,"dataGaName":540,"dataGaLocation":728},{"title":553,"links":923},[924,926,928,930,932,934,938,943,945,947,949],{"text":561,"config":925},{"href":563,"dataGaName":555,"dataGaLocation":728},{"text":566,"config":927},{"href":568,"dataGaName":569,"dataGaLocation":728},{"text":574,"config":929},{"href":576,"dataGaName":577,"dataGaLocation":728},{"text":579,"config":931},{"href":581,"dataGaName":582,"dataGaLocation":728},{"text":584,"config":933},{"href":586,"dataGaName":587,"dataGaLocation":728},{"text":935,"config":936},"Sustainability",{"href":937,"dataGaName":935,"dataGaLocation":728},"/sustainability/",{"text":939,"config":940},"Diversity, inclusion and belonging (DIB)",{"href":941,"dataGaName":942,"dataGaLocation":728},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":589,"config":944},{"href":591,"dataGaName":592,"dataGaLocation":728},{"text":599,"config":946},{"href":601,"dataGaName":602,"dataGaLocation":728},{"text":604,"config":948},{"href":606,"dataGaName":607,"dataGaLocation":728},{"text":950,"config":951},"Modern Slavery Transparency Statement",{"href":952,"dataGaName":953,"dataGaLocation":728},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":955},[956,959,962],{"text":957,"config":958},"Terms",{"href":780,"dataGaName":781,"dataGaLocation":728},{"text":960,"config":961},"Cookies",{"dataGaName":790,"dataGaLocation":728,"id":791,"isOneTrustButton":268},{"text":963,"config":964},"Privacy",{"href":785,"dataGaName":786,"dataGaLocation":728},[966],{"id":967,"title":7,"body":264,"config":968,"content":970,"description":264,"extension":974,"meta":975,"navigation":268,"path":976,"seo":977,"stem":978,"__hash__":979},"blogAuthors/en-us/blog/authors/darren-eastman.yml",{"template":969},"BlogAuthor",{"name":7,"config":971},{"headshot":972,"ctfId":973},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749665148/Blog/Author%20Headshots/darren_eastman.png","DarrenEastman","yml",{},"/en-us/blog/authors/darren-eastman",{},"en-us/blog/authors/darren-eastman","iXnMUFNVF56JYxVUygLV2-q6FjfdZM8UekM1NED6tu0",[981,989,996],{"title":982,"description":983,"heroImage":984,"category":260,"date":985,"authors":986,"slug":988,"externalUrl":264},"GitLab named a Leader in the 2026 Gartner® Magic Quadrant™ for DevSecOps Platforms","Agents made coding fast. GitLab is the Intelligent Orchestration Platform for DevSecOps that brings speed with control for the rest of the software lifecycle.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099203/Blog/Hero%20Images/Blog/Hero%20Images/blog-image-template-1800x945%20%2820%29_2bJGC5ZP3WheoqzlLT05C5_1750099203484.png","2026-06-17",[987],"Manav Khurana","gitlab-leader-2026-gartner-mq-devsecops-platforms",{"title":990,"description":991,"heroImage":992,"category":260,"date":985,"authors":993,"slug":995,"externalUrl":264},"GitLab and Capgemini accelerate DevSecOps transformation","The global alliance helps organizations modernize software delivery, secure their supply chain, and bring AI into development workflows.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1781279411/n3pkmddd2eswa8qbu06z.png",[994],"Alex Picker","gitlab-and-capgemini-global-alliance-partnership",{"title":997,"description":998,"heroImage":999,"category":260,"date":985,"authors":1000,"slug":1001,"externalUrl":264},"Introducing the 2026 EMEA GitLab Partner Award winners","Learn about the EMEA partners who made an outstanding impact over the past year.\n","https://res.cloudinary.com/about-gitlab-com/image/upload/v1781608381/biycl2ib2kpsbspjlac7.png",[994],"2026-emea-gitlab-partner-awards",{"promotions":1003},[1004,1018,1030,1042],{"id":1005,"categories":1006,"header":1008,"text":1009,"button":1010,"image":1015},"ai-modernization",[1007],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":1011,"config":1012},"Get your AI maturity score",{"href":1013,"dataGaName":1014,"dataGaLocation":493},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":1016},{"src":1017},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1019,"categories":1020,"header":1022,"text":1009,"button":1023,"image":1027},"devops-modernization",[1021,830],"product","Are you just managing tools or shipping innovation?",{"text":1024,"config":1025},"Get your DevOps maturity score",{"href":1026,"dataGaName":1014,"dataGaLocation":493},"/assessments/devops-modernization-assessment/",{"config":1028},{"src":1029},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1031,"categories":1032,"header":1034,"text":1009,"button":1035,"image":1039},"security-modernization",[1033],"security","Are you trading speed for security?",{"text":1036,"config":1037},"Get your security maturity score",{"href":1038,"dataGaName":1014,"dataGaLocation":493},"/assessments/security-modernization-assessment/",{"config":1040},{"src":1041},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1043,"paths":1044,"header":1047,"text":1048,"button":1049,"image":1054},"github-azure-migration",[1045,1046],"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":1050,"config":1051},"See how GitLab compares to GitHub",{"href":1052,"dataGaName":1053,"dataGaLocation":493},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1055},{"src":1029},{"header":1057,"blurb":1058,"button":1059,"secondaryButton":1064},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":1060,"config":1061},"Get your free trial",{"href":1062,"dataGaName":292,"dataGaLocation":1063},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":766,"config":1065},{"href":618,"dataGaName":297,"dataGaLocation":1063},1786803767216]