[{"data":1,"prerenderedAt":1040},["ShallowReactive",2],{"/blog/why-were-replacing-gitlab-ci-jobs-with-gitlab-ci-dot-yml":3,"navigation-en-us":281,"banner-en-us":711,"footer-en-us":721,"blog-post-authors-en-us-Job van der Voort":980,"blog-related-posts-en-us-why-were-replacing-gitlab-ci-jobs-with-gitlab-ci-dot-yml":996,"blog-share-wrapper-en-us":1020,"next-steps-en-us":1030},{"id":4,"title":5,"authors":6,"body":8,"category":245,"date":246,"description":247,"extension":248,"externalUrl":249,"faq":249,"featured":250,"heroImage":251,"meta":252,"navigation":271,"path":272,"seo":273,"slug":277,"stem":278,"tags":249,"template":279,"updatedDate":249,"__hash__":280},"blogPosts/en-us/blog/why-were-replacing-gitlab-ci-jobs-with-gitlab-ci-dot-yml.md","Why we're replacing GitLab CI jobs with .gitlab-ci.yml",[7],"Job van der Voort",{"type":9,"value":10,"toc":237},"minimark",[11,27,30,44,50,55,63,71,75,78,81,85,88,94,98,101,108,115,119,130,133,137,140,143,154,159,169,174,192,207,216,220,223,226,229],[12,13,14,15,20,21,26],"p",{},"In case you didn't know yet: Every single GitLab installation\nships with a powerful ",[16,17,19],"a",{"href":18},"/solutions/continuous-integration/","continuous integration tool",": GitLab CI.\nRead how to ",[16,22,25],{"href":23,"rel":24},"https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/gitlab-ci/README.md#getting-started",[],"enable it in 2 minutes",".\nWith GitLab CI you can run tests of your projects and triggers\nbuilds and deployments easily,\nas it integrates deeply with GitLab.",[12,28,29],{},"Up until now, to set up the build / deploy commands you had to\ngo into GitLab CI and edit the scripts in a form. This made\nit very low-threshold to set up, but it felt lacking.",[12,31,32,33,38,39,43],{},"We're glad to tell you we'll get a better solution built on the principles and libraries of ",[16,34,37],{"href":35,"rel":36},"https://www.travis-ci.org",[],"Travis CI",":\n",[40,41,42],"code",{},".gitlab-ci.yml",".",[12,45,46,47,49],{},"Instead of editing a form, in the future you will be able to\nadd a ",[40,48,42],{}," file to your repository in which you\ncan specify your builds for GitLab CI.\nThis has some major (positive) repercussions for GitLab CI\nbuilds:",[51,52,54],"h4",{"id":53},"_1-version-controlled","1. Version controlled",[12,56,57,58],{},"Currently, the script is just a single field in a form:\n",[59,60],"img",{"alt":61,"src":62},"current setup of scripts","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782404835/site/Content%20Images/ci-yml/jobs_old.png",[12,64,65,66,70],{},"This means you get none of the advantages of git: no ",[16,67,69],{"href":68},"/topics/version-control/","version control",".\nBy moving this into the repository you get all the power of git and GitLab.",[51,72,74],{"id":73},"_2-builds-for-older-versions","2. Builds for older versions",[12,76,77],{},"Having the job script live outside of the repository means that it will be the\nsame for every commit. That means that any change to the script will influence\nthe build for any commit, even if you are working on older branches / commits\nthat could be incompatible with the new build script.",[12,79,80],{},"By putting the build in the repository, your older commits can still be tested\nby an older version of the build script, while newer work can safely make changes\nto the build.",[51,82,84],{"id":83},"_3-build-forks","3. Build Forks",[12,86,87],{},"Forking a project with the latest version of GitLab CI will also copy the contents\nof the jobs settings, making it possible to build tests with your fork.\nHowever, this only works if the project and fork have the same owner and able\nto use the same runners.",[12,89,90,91,93],{},"With the script in the repository this makes this process a lot more transparent.\nOn top of that, a fork can easily add dependencies to its ",[40,92,42],{}," file.",[51,95,97],{"id":96},"_4-different-builds-for-different-branches","4. Different builds for different branches",[12,99,100],{},"At the moment you can't easily run different scripts for different branches.",[12,102,103,104,107],{},"By moving the script to the repository this opens up a whole new world of\nspecific builds for certain branches. For instance, you could set up your\ntime-intense integration tests to only run on pushes to your ",[40,105,106],{},"production"," branch",[109,110,111],"ul",{},[112,113,114],"li",{},"and on success, deploy your code immediately.",[51,116,118],{"id":117},"_5-single-source-of-truth","5. Single Source of Truth",[12,120,121,122,125,126,129],{},"Currently, only people with ",[40,123,124],{},"master"," access or higher to the project in GitLab\nare able to view and edit the ",[40,127,128],{},"job settings"," in GitLab CI. That makes it hard\nto see what is happening for all other developers.",[12,131,132],{},"With a single file in the repository, everyone with read access can see the contents,\nmaking it much more inviting to improve and review the build scripts.",[51,134,136],{"id":135},"_6-build-matrices","6. Build matrices",[12,138,139],{},"Currently you can define multiple jobs, but you have to define each one yourself.",[12,141,142],{},"If you have multiple versions of the programming language, multiple environments and\nmultiple lists of dependencies, you end up making a job for each.",[12,144,145,146,148,149,153],{},"With ",[40,147,42],{}," you will be able to run ",[150,151,152],"em",{},"build matrices",", where these jobs are\ngenerated for you. If you define each of the dimensions, the combinations\nwill be generated. This makes it easier to set up complex\ntest suites that require this.",[155,156,158],"h3",{"id":157},"current-jobs","Current jobs",[12,160,161,162,165,166,43],{},"Your current job can be run by putting your\n",[40,163,164],{},"job.sh"," in the root of the repo and referencing that in your\n.gitlab-ci.yml: ",[40,167,168],{},"script:./job.sh",[170,171,173],"h2",{"id":172},"where-we-got-our-inspiration","Where we got our inspiration",[12,175,176,177,181,182,185,186,191],{},"The awesome ",[16,178,37],{"href":179,"rel":180},"https://travis-ci.org/",[]," had the great\nidea to use a ",[40,183,184],{},".yml"," file for builds and was followed\nby the popular ",[16,187,190],{"href":188,"rel":189},"https://circleci.com",[],"CircleCI",". We're happy\nto follow this approach, which we believe is superior than\nany other. Jenkins jobs, for instance, do not solve the problems mentioned\nin the introduction.",[12,193,194,195,200,201,206],{},"As usual, our amazing community was already fully aware of this\nand we've seen demand for this on our ",[16,196,199],{"href":197,"rel":198},"https://about.gitlab.com/blog/improving-open-development-for-everyone/",[],"feedback page","\nand even ",[16,202,205],{"href":203,"rel":204},"https://github.com/claudyus/ci-yml",[],"implementations"," for this!",[12,208,209,210,215],{},"We'll be using some of the great ",[16,211,214],{"href":212,"rel":213},"https://github.com/travis-ci/travis-ci",[],"Travis CI projects"," that are freely available to build this.",[170,217,219],{"id":218},"ships-with-gitlab-80","Ships with GitLab 8.0",[12,221,222],{},"This change will deprecate the existing jobs, as we want to keep\nGitLab CI simple to use and develop for.\nMultiple ways of doing things is\nconfusing for new users, it makes documentation much harder and complicates\ndevelopment and debugging.",[12,224,225],{},"That means it is also a breaking change for anyone using\nGitLab CI. For this reason we will only introduce this\nchange with GitLab 8.0.",[12,227,228],{},"We're not sure yet after which minor version we'll release GitLab 8.0 (7.11, 7.12 or later).",[12,230,231,232,43],{},"Follow the progress in the ",[16,233,236],{"href":234,"rel":235},"https://gitlab.com/gitlab-org/gitlab-ci",[],"GitLab CI repository",{"title":238,"searchDepth":239,"depth":239,"links":240},"",2,[241,243,244],{"id":157,"depth":242,"text":158},3,{"id":172,"depth":239,"text":173},{"id":218,"depth":239,"text":219},"company","2015-05-06","Every single GitLab installation ships with a powerful continuous integration tool: GitLab CI. Read how to enable it in 2 minutes.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749684407/Blog/Hero%20Images/ci-yml.jpg",{"excerpt":253},{"type":9,"value":254},[255,262,264],[12,256,14,257,20,259,26],{},[16,258,19],{"href":18},[16,260,25],{"href":23,"rel":261},[],[12,263,29],{},[12,265,32,266,38,269,43],{},[16,267,37],{"href":35,"rel":268},[],[40,270,42],{},true,"/en-us/blog/why-were-replacing-gitlab-ci-jobs-with-gitlab-ci-dot-yml",{"title":5,"description":247,"ogTitle":5,"ogDescription":247,"noIndex":250,"ogImage":251,"ogUrl":274,"ogSiteName":275,"ogType":276,"canonicalUrls":274},"https://about.gitlab.com/blog/why-were-replacing-gitlab-ci-jobs-with-gitlab-ci-dot-yml","https://about.gitlab.com","article","why-were-replacing-gitlab-ci-jobs-with-gitlab-ci-dot-yml","en-us/blog/why-were-replacing-gitlab-ci-jobs-with-gitlab-ci-dot-yml","BlogPost","lWqejd5odDoZIZh2Yc4TvTlGbGgxZjdZTJUqlkSK1QI",{"logo":282,"freeTrial":287,"sales":292,"login":297,"items":302,"search":631,"minimal":662,"duo":681,"switchNav":690,"pricingDeployment":701},{"config":283},{"href":284,"dataGaName":285,"dataGaLocation":286},"/","gitlab logo","header",{"text":288,"config":289},"Get free trial",{"href":290,"dataGaName":291,"dataGaLocation":286},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":293,"config":294},"Request a demo",{"href":295,"dataGaName":296,"dataGaLocation":286},"/request-a-demo/","sales",{"text":298,"config":299},"Sign in",{"href":300,"dataGaName":301,"dataGaLocation":286},"https://gitlab.com/users/sign_in/","sign in",[303,388,476,481,556,609],{"text":304,"left":271,"config":305,"menu":307},"Platform",{"dataNavLevelOne":306},"platform",{"type":308,"link":309,"columns":313,"feature":377},"lists",{"text":310,"config":311},"Explore the Platform",{"href":312,"dataGaName":306,"dataGaLocation":286},"/platform/",[314,336,359],{"title":315,"items":316},"Execution & Workflows",[317,321,326,331],{"text":318,"config":319},"CI/CD",{"href":18,"dataGaLocation":286,"dataGaName":320},"ci/cd",{"text":322,"config":323},"Source Code Management",{"href":324,"dataGaLocation":286,"dataGaName":325},"/solutions/source-code-management/","source code management",{"text":327,"config":328},"Agile Delivery",{"href":329,"dataGaLocation":286,"dataGaName":330},"/solutions/agile-delivery/","agile delivery",{"text":332,"config":333},"Artifact Management",{"href":334,"dataGaLocation":286,"dataGaName":335},"/artifact-central/","artifact management",{"title":337,"items":338},"Security & Governance",[339,344,349,354],{"text":340,"config":341},"Application Security Testing",{"href":342,"dataGaLocation":286,"dataGaName":343},"/solutions/application-security-testing/","application security testing",{"text":345,"config":346},"Governance & Compliance",{"href":347,"dataGaLocation":286,"dataGaName":348},"/solutions/software-compliance/","governance and compliance",{"text":350,"config":351},"Secrets Management",{"href":352,"dataGaLocation":286,"dataGaName":353},"/gitlab-secrets-manager/","secrets management",{"text":355,"config":356},"Supply Chain Security",{"href":357,"dataGaLocation":286,"dataGaName":358},"/solutions/supply-chain/","supply chain security",{"title":360,"items":361},"Context & AI",[362,367,372],{"text":363,"config":364},"Agentic Orchestration",{"href":365,"dataGaLocation":286,"dataGaName":366},"/gitlab-duo-agent-platform/","agentic orchestration",{"text":368,"config":369},"Context Graph",{"href":370,"dataGaLocation":286,"dataGaName":371},"/gitlab-orbit/","context graph",{"text":373,"config":374},"Visibility & Measurement",{"href":375,"dataGaLocation":286,"dataGaName":376},"/solutions/visibility-measurement/","visibility and measurement",{"config":378,"title":381,"text":382,"link":383},{"background":379,"textColor":380},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1790185102/o7dn32anqcb6z8dgd3as.jpg')","#000","Why GitLab","One platform for speed with control across your software lifecycle.",{"text":384,"config":385},"Learn more",{"href":386,"dataGaName":387,"dataGaLocation":286},"/why-gitlab/","why gitlab",{"text":389,"left":271,"config":390,"menu":392},"Solutions",{"dataNavLevelOne":391},"solutions",{"type":308,"link":393,"columns":397,"feature":467},{"text":394,"config":395},"View all Solutions",{"href":396,"dataGaName":391,"dataGaLocation":286},"/solutions/",[398,416,434],{"title":399,"items":400},"Outcomes",[401,406,411],{"text":402,"config":403},"DevOps Modernization",{"href":404,"dataGaLocation":286,"dataGaName":405},"/assessments/devops-modernization-assessment/","devops modernization",{"text":407,"config":408},"Security Modernization",{"href":409,"dataGaLocation":286,"dataGaName":410},"/assessments/security-modernization-assessment/","security modernization",{"text":412,"config":413},"AI Modernization",{"href":414,"dataGaLocation":286,"dataGaName":415},"/assessments/ai-modernization-assessment/","ai modernization",{"title":417,"items":418},"By size",[419,424,429],{"text":420,"config":421},"Enterprise",{"href":422,"dataGaLocation":286,"dataGaName":423},"/enterprise/","enterprise",{"text":425,"config":426},"Small Business",{"href":427,"dataGaLocation":286,"dataGaName":428},"/small-business/","small business",{"text":430,"config":431},"Startups",{"href":432,"dataGaLocation":286,"dataGaName":433},"/solutions/startups/","startups",{"title":435,"items":436},"Industries",[437,442,447,452,457,462],{"text":438,"config":439},"Financial Services",{"href":440,"dataGaLocation":286,"dataGaName":441},"/solutions/finance/","financial services",{"text":443,"config":444},"Public Sector",{"href":445,"dataGaLocation":286,"dataGaName":446},"/solutions/public-sector/","public sector",{"text":448,"config":449},"Telecommunications",{"href":450,"dataGaLocation":286,"dataGaName":451},"/solutions/telecommunications/","telecommunications",{"text":453,"config":454},"Automotive",{"href":455,"dataGaLocation":286,"dataGaName":456},"/solutions/automotive/","automotive",{"text":458,"config":459},"Education",{"href":460,"dataGaLocation":286,"dataGaName":461},"/solutions/education/","education",{"text":463,"config":464},"Aerospace",{"href":465,"dataGaLocation":286,"dataGaName":466},"/solutions/aerospace/","aerospace",{"config":468,"title":469,"text":470,"link":471},{"background":379,"textColor":380},"GitLab Security Standard","Learn how to harden your software factory and let AI agents earn autonomy, without trading away security.",{"text":472,"config":473},"Explore the standard",{"href":474,"dataGaName":475,"dataGaLocation":286},"/gitlab-security-standard/","gitlab security standard",{"text":477,"config":478},"Pricing",{"href":479,"dataGaName":480,"dataGaLocation":286,"dataNavLevelOne":480},"/pricing/","pricing",{"text":482,"config":483,"menu":485},"Resources",{"dataNavLevelOne":484},"resources",{"type":308,"link":486,"columns":490,"feature":547},{"text":487,"config":488},"View all resources",{"href":489,"dataGaName":484,"dataGaLocation":286},"/resources/",[491,519],{"title":492,"items":493},"Discover",[494,499,504,509,514],{"text":495,"config":496},"Docs",{"href":497,"dataGaName":498,"dataGaLocation":286},"https://docs.gitlab.com/","docs",{"text":500,"config":501},"University",{"href":502,"dataGaName":503,"dataGaLocation":286},"https://university.gitlab.com/","university",{"text":505,"config":506},"Demo Series",{"href":507,"dataGaName":508,"dataGaLocation":286},"/gitlab-technical-demo-series/","demo series",{"text":510,"config":511},"Demo Hub",{"href":512,"dataGaName":513,"dataGaLocation":286},"/demo-hub/","demo hub",{"text":515,"config":516},"Services",{"href":517,"dataGaName":518,"dataGaLocation":286},"/services/","services",{"title":520,"items":521},"Connect",[522,527,532,537,542],{"text":523,"config":524},"Blog",{"href":525,"dataGaName":526,"dataGaLocation":286},"/blog/","blog",{"text":528,"config":529},"Community",{"href":530,"dataGaName":531,"dataGaLocation":286},"/community/","community",{"text":533,"config":534},"Customers",{"href":535,"dataGaName":536,"dataGaLocation":286},"/customers/","customers",{"text":538,"config":539},"Partners",{"href":540,"dataGaName":541,"dataGaLocation":286},"/partners/","partners",{"text":543,"config":544},"Events",{"href":545,"dataGaName":546,"dataGaLocation":286},"/events/","events",{"config":548,"title":549,"text":550,"link":551},{"background":379,"textColor":380},"What’s new in GitLab","Stay updated with our latest features and improvements.",{"text":552,"config":553},"Read the latest",{"href":554,"dataGaName":555,"dataGaLocation":286},"/whats-new/","whats new",{"text":557,"config":558,"menu":559},"Company",{"dataNavLevelOne":245},{"type":308,"columns":560},[561],{"items":562},[563,568,574,579,584,589,594,599,604],{"text":564,"config":565},"About",{"href":566,"dataGaName":567,"dataGaLocation":286},"/company/","about",{"text":569,"config":570,"footerGa":573},"Jobs",{"href":571,"dataGaName":572,"dataGaLocation":286},"/jobs/","jobs",{"dataGaName":572},{"text":575,"config":576},"Press",{"href":577,"dataGaName":578,"dataGaLocation":286},"/press/","press",{"text":580,"config":581},"Handbook",{"href":582,"dataGaName":583,"dataGaLocation":286},"https://handbook.gitlab.com/","handbook",{"text":585,"config":586},"Leadership",{"href":587,"dataGaName":588,"dataGaLocation":286},"/company/team/e-group/","leadership",{"text":590,"config":591},"Investor relations",{"href":592,"dataGaName":593,"dataGaLocation":286},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":595,"config":596},"Trust Center",{"href":597,"dataGaName":598,"dataGaLocation":286},"/security/","trust center",{"text":600,"config":601},"AI Transparency Center",{"href":602,"dataGaName":603,"dataGaLocation":286},"/ai-transparency-center/","ai transparency center",{"text":605,"config":606},"Newsletter",{"href":607,"dataGaName":608,"dataGaLocation":286},"/company/contact/#contact-forms","newsletter",{"text":610,"config":611,"menu":612},"Contact us",{"dataNavLevelOne":245},{"type":308,"columns":613},[614],{"items":615},[616,621,626],{"text":617,"config":618},"Talk to sales",{"href":619,"dataGaName":620,"dataGaLocation":286},"/sales/","talk to sales",{"text":622,"config":623},"Support portal",{"href":624,"dataGaName":625,"dataGaLocation":286},"https://support.gitlab.com/hc/en-us","support portal",{"text":627,"config":628},"Customer portal",{"href":629,"dataGaName":630,"dataGaLocation":286},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":632,"login":633,"suggestions":640},"Close",{"text":634,"link":635},"To search repositories and projects, login to",{"text":636,"config":637},"gitlab.com",{"href":300,"dataGaName":638,"dataGaLocation":639},"search login","search",{"text":641,"default":642},"Suggestions",[643,646,649,651,655,659],{"text":644,"config":645},"GitLab Duo Agent Platform",{"href":365,"dataGaName":644,"dataGaLocation":639},{"text":647,"config":648},"Code Suggestions (AI)",{"href":365,"dataGaName":647,"dataGaLocation":639},{"text":318,"config":650},{"href":18,"dataGaName":318,"dataGaLocation":639},{"text":652,"config":653},"GitLab on AWS",{"href":654,"dataGaName":652,"dataGaLocation":639},"/partners/technology-partners/aws/",{"text":656,"config":657},"GitLab on Google Cloud",{"href":658,"dataGaName":656,"dataGaLocation":639},"/partners/technology-partners/google-cloud-platform/",{"text":660,"config":661},"Why GitLab?",{"href":386,"dataGaName":660,"dataGaLocation":639},{"freeTrial":663,"mobileIcon":668,"desktopIcon":673,"secondaryButton":676},{"text":664,"config":665},"Start free trial",{"href":666,"dataGaName":291,"dataGaLocation":667},"https://gitlab.com/-/trials/new/","nav",{"altText":669,"config":670},"Gitlab Icon",{"src":671,"dataGaName":672,"dataGaLocation":667},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":669,"config":674},{"src":675,"dataGaName":672,"dataGaLocation":667},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":677,"config":678},"Get Started",{"href":679,"dataGaName":680,"dataGaLocation":667},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":682,"mobileIcon":686,"desktopIcon":688},{"text":683,"config":684},"Learn more about GitLab Duo",{"href":365,"dataGaName":685,"dataGaLocation":667},"gitlab duo",{"altText":669,"config":687},{"src":671,"dataGaName":672,"dataGaLocation":667},{"altText":669,"config":689},{"src":675,"dataGaName":672,"dataGaLocation":667},{"button":691,"mobileIcon":696,"desktopIcon":698},{"text":692,"config":693},"/switch",{"href":694,"dataGaName":695,"dataGaLocation":667},"#contact","switch",{"altText":669,"config":697},{"src":671,"dataGaName":672,"dataGaLocation":667},{"altText":669,"config":699},{"src":700,"dataGaName":672,"dataGaLocation":667},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":702,"mobileIcon":707,"desktopIcon":709},{"text":703,"config":704},"Back to pricing",{"href":479,"dataGaName":705,"dataGaLocation":667,"icon":706},"back to pricing","GoBack",{"altText":669,"config":708},{"src":671,"dataGaName":672,"dataGaLocation":667},{"altText":669,"config":710},{"src":675,"dataGaName":672,"dataGaLocation":667},{"title":712,"button":713,"config":719},"Ship at agent speed. Prove every step. Transcend is here.",{"text":714,"config":715},"Watch now",{"href":716,"dataGaName":717,"dataGaLocation":718},"/events/transcend/virtual/#watch-gitlab-transcend","transcend-october-2026-banner","global-banner",{"layout":720,"disabled":250},"release",{"data":722},{"text":723,"source":724,"edit":730,"contribute":735,"config":740,"items":745,"minimal":969},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":725,"config":726},"View page source",{"href":727,"dataGaName":728,"dataGaLocation":729},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":731,"config":732},"Edit this page",{"href":733,"dataGaName":734,"dataGaLocation":729},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":736,"config":737},"Please contribute",{"href":738,"dataGaName":739,"dataGaLocation":729},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":741,"facebook":742,"youtube":743,"linkedin":744},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[746,793,849,896,937],{"title":477,"links":747,"subMenu":762},[748,752,757],{"text":749,"config":750},"View plans",{"href":479,"dataGaName":751,"dataGaLocation":729},"view plans",{"text":753,"config":754},"Why Premium?",{"href":755,"dataGaName":756,"dataGaLocation":729},"/pricing/premium/","why premium",{"text":758,"config":759},"Why Ultimate?",{"href":760,"dataGaName":761,"dataGaLocation":729},"/pricing/ultimate/","why ultimate",[763],{"title":764,"links":765},"Contact Us",[766,769,771,773,778,783,788],{"text":767,"config":768},"Contact sales",{"href":619,"dataGaName":296,"dataGaLocation":729},{"text":622,"config":770},{"href":624,"dataGaName":625,"dataGaLocation":729},{"text":627,"config":772},{"href":629,"dataGaName":630,"dataGaLocation":729},{"text":774,"config":775},"Status",{"href":776,"dataGaName":777,"dataGaLocation":729},"https://status.gitlab.com/","status",{"text":779,"config":780},"Terms of use",{"href":781,"dataGaName":782,"dataGaLocation":729},"/terms/","terms of use",{"text":784,"config":785},"Privacy statement",{"href":786,"dataGaName":787,"dataGaLocation":729},"/privacy/","privacy statement",{"text":789,"config":790},"Cookie preferences",{"dataGaName":791,"dataGaLocation":729,"id":792,"isOneTrustButton":271},"cookie preferences","ot-sdk-btn",{"title":304,"links":794,"subMenu":808},[795,798,800,802,804,806],{"text":796,"config":797},"Explore the platform",{"href":312,"dataGaName":306,"dataGaLocation":729},{"text":363,"config":799},{"href":365,"dataGaName":366,"dataGaLocation":729},{"text":318,"config":801},{"href":18,"dataGaName":320,"dataGaLocation":729},{"text":368,"config":803},{"href":370,"dataGaName":371,"dataGaLocation":729},{"text":350,"config":805},{"href":352,"dataGaName":353,"dataGaLocation":729},{"text":381,"config":807},{"href":386,"dataGaName":387,"dataGaLocation":729},[809],{"title":810,"links":811},"Topics",[812,816,821,826,829,834,839,844],{"text":318,"config":813},{"href":814,"dataGaName":815,"dataGaLocation":729},"/topics/ci-cd/","cicd",{"text":817,"config":818},"GitOps",{"href":819,"dataGaName":820,"dataGaLocation":729},"/topics/gitops/","gitops",{"text":822,"config":823},"DevOps",{"href":824,"dataGaName":825,"dataGaLocation":729},"/topics/devops/","devops",{"text":827,"config":828},"Version Control",{"href":68,"dataGaName":69,"dataGaLocation":729},{"text":830,"config":831},"DevSecOps",{"href":832,"dataGaName":833,"dataGaLocation":729},"/topics/devsecops/","devsecops",{"text":835,"config":836},"Cloud Native",{"href":837,"dataGaName":838,"dataGaLocation":729},"/topics/cloud-native/","cloud native",{"text":840,"config":841},"AI for Coding",{"href":842,"dataGaName":843,"dataGaLocation":729},"/topics/devops/ai-for-coding/","ai for coding",{"text":845,"config":846},"Agentic AI",{"href":847,"dataGaName":848,"dataGaLocation":729},"/topics/agentic-ai/","agentic ai",{"title":389,"links":850},[851,854,857,860,863,866,868,870,872,874,876,879,881,884,888,892],{"text":852,"config":853},"DevOps modernization",{"href":404,"dataGaName":405,"dataGaLocation":729},{"text":855,"config":856},"Security modernization",{"href":409,"dataGaName":410,"dataGaLocation":729},{"text":858,"config":859},"AI modernization",{"href":414,"dataGaName":415,"dataGaLocation":729},{"text":861,"config":862},"Financial services",{"href":440,"dataGaName":441,"dataGaLocation":729},{"text":864,"config":865},"Public sector",{"href":445,"dataGaName":446,"dataGaLocation":729},{"text":448,"config":867},{"href":450,"dataGaName":451,"dataGaLocation":729},{"text":453,"config":869},{"href":455,"dataGaName":456,"dataGaLocation":729},{"text":458,"config":871},{"href":460,"dataGaName":461,"dataGaLocation":729},{"text":463,"config":873},{"href":465,"dataGaName":466,"dataGaLocation":729},{"text":420,"config":875},{"href":422,"dataGaName":423,"dataGaLocation":729},{"text":877,"config":878},"Small business",{"href":427,"dataGaName":428,"dataGaLocation":729},{"text":430,"config":880},{"href":432,"dataGaName":433,"dataGaLocation":729},{"text":817,"config":882},{"href":883,"dataGaName":820,"dataGaLocation":729},"/solutions/gitops/",{"text":885,"config":886},"Software composition analysis",{"href":357,"dataGaName":887,"dataGaLocation":729},"software composition analysis",{"text":889,"config":890},"Value stream management",{"href":375,"dataGaName":891,"dataGaLocation":729},"value stream management",{"text":893,"config":894},"All solutions",{"href":396,"dataGaName":895,"dataGaLocation":729},"all solutions",{"title":482,"links":897},[898,903,908,910,912,914,916,918,920,922,924,926,928,930,933],{"text":899,"config":900},"Install",{"href":901,"dataGaName":902,"dataGaLocation":729},"/install/","install",{"text":904,"config":905},"Quick start guides",{"href":906,"dataGaName":907,"dataGaLocation":729},"/get-started/","quick setup checklists",{"text":495,"config":909},{"href":497,"dataGaName":498,"dataGaLocation":729},{"text":500,"config":911},{"href":502,"dataGaName":503,"dataGaLocation":729},{"text":505,"config":913},{"href":507,"dataGaName":508,"dataGaLocation":729},{"text":510,"config":915},{"href":512,"dataGaName":513,"dataGaLocation":729},{"text":515,"config":917},{"href":517,"dataGaName":518,"dataGaLocation":729},{"text":523,"config":919},{"href":525,"dataGaName":526,"dataGaLocation":729},{"text":528,"config":921},{"href":530,"dataGaName":531,"dataGaLocation":729},{"text":533,"config":923},{"href":535,"dataGaName":536,"dataGaLocation":729},{"text":538,"config":925},{"href":540,"dataGaName":541,"dataGaLocation":729},{"text":543,"config":927},{"href":545,"dataGaName":546,"dataGaLocation":729},{"text":605,"config":929},{"href":607,"dataGaName":608,"dataGaLocation":729},{"text":931,"config":932},"What's new",{"href":554,"dataGaName":555,"dataGaLocation":729},{"text":934,"config":935},"All resources",{"href":489,"dataGaName":936,"dataGaLocation":729},"all resources",{"title":557,"links":938},[939,941,943,945,947,949,951,953,955,959,964],{"text":564,"config":940},{"href":566,"dataGaName":245,"dataGaLocation":729},{"text":569,"config":942},{"href":571,"dataGaName":572,"dataGaLocation":729},{"text":575,"config":944},{"href":577,"dataGaName":578,"dataGaLocation":729},{"text":580,"config":946},{"href":582,"dataGaName":583,"dataGaLocation":729},{"text":585,"config":948},{"href":587,"dataGaName":588,"dataGaLocation":729},{"text":590,"config":950},{"href":592,"dataGaName":593,"dataGaLocation":729},{"text":595,"config":952},{"href":597,"dataGaName":598,"dataGaLocation":729},{"text":600,"config":954},{"href":602,"dataGaName":603,"dataGaLocation":729},{"text":956,"config":957},"Sustainability",{"href":958,"dataGaName":956,"dataGaLocation":729},"/sustainability/",{"text":960,"config":961},"Diversity, inclusion and belonging (DIB)",{"href":962,"dataGaName":963,"dataGaLocation":729},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":965,"config":966},"Modern Slavery Transparency Statement",{"href":967,"dataGaName":968,"dataGaLocation":729},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":970},[971,974,977],{"text":972,"config":973},"Terms",{"href":781,"dataGaName":782,"dataGaLocation":729},{"text":975,"config":976},"Cookies",{"dataGaName":791,"dataGaLocation":729,"id":792,"isOneTrustButton":271},{"text":978,"config":979},"Privacy",{"href":786,"dataGaName":787,"dataGaLocation":729},[981],{"id":982,"title":983,"body":249,"config":984,"content":986,"description":249,"extension":990,"meta":991,"navigation":271,"path":992,"seo":993,"stem":994,"__hash__":995},"blogAuthors/en-us/blog/authors/job-van-der-voort.yml","Job Van Der Voort",{"template":985},"BlogAuthor",{"name":7,"config":987},{"headshot":988,"ctfId":989},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659488/Blog/Author%20Headshots/gitlab-logo-extra-whitespace.png","Job-van-der-Voort","yml",{},"/en-us/blog/authors/job-van-der-voort",{},"en-us/blog/authors/job-van-der-voort","w8TOn_hGFgQQOv35VnObjxoMM-hviRbwtijFETooJCM",[997,1005,1012],{"title":998,"description":999,"heroImage":1000,"category":245,"date":1001,"authors":1002,"slug":1004,"externalUrl":249},"Why GitLab signed the Open Weights and American AI Leadership letter","GitLab supports customer choice, data privacy, and AI model neutrality, empowering teams to run secure, cost-effective, local solutions.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1785333264/ww4mlighwlvvzgnmbe6w.png","2026-07-29",[1003],"Bill Staples","open-weight-model-letter",{"title":1006,"description":1007,"heroImage":1008,"category":245,"date":1009,"authors":1010,"slug":1011,"externalUrl":249},"GitLab Act 2","A letter to our customers and our investors.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1776362275/ozbwn9tk0dditpnfddlz.png","2026-05-11",[1003],"gitlab-act-2",{"title":1013,"description":1014,"heroImage":1015,"category":245,"date":1016,"authors":1017,"slug":1019,"externalUrl":249},"GitLab named a 2026 Omdia Universe Leader","Omdia's 2026 report on AI-assisted software development ranked 19 vendors. Here is what GitLab's top scores mean for engineering teams.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1774465167/n5hlvrsrheadeccyr1oz.png","2026-04-13",[1018],"Rebecca Carter","gitlab-named-a-2026-omdia-universe-leader",{"header":1021,"text":1022,"button":1026,"disclaimer":1029},"Start your free\n\n30-day GitLab trial\n",[1023,1024,1025],"GitLab Duo Agent Platform access","Try our most advanced features","Automate complex tasks with AI",{"text":288,"config":1027},{"href":1028,"dataGaName":291,"dataGaLocation":526},"https://gitlab.com/-/trials/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/blog/","No credit card required.",{"header":1031,"blurb":1032,"button":1033,"secondaryButton":1038},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":1034,"config":1035},"Get your free trial",{"href":1036,"dataGaName":291,"dataGaLocation":1037},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":767,"config":1039},{"href":619,"dataGaName":296,"dataGaLocation":1037},1791990523404]