[{"data":1,"prerenderedAt":1008},["ShallowReactive",2],{"/blog/how-grammatech-and-gitlab-enables-better-devsecops":3,"navigation-en-us":226,"banner-en-us":653,"footer-en-us":663,"blog-post-authors-en-us-Christian Simko":905,"blog-related-posts-en-us-how-grammatech-and-gitlab-enables-better-devsecops":919,"blog-promotions-en-us":945,"next-steps-en-us":998},{"id":4,"title":5,"authors":6,"body":8,"category":204,"date":205,"description":206,"extension":207,"externalUrl":208,"faq":208,"featured":209,"heroImage":210,"meta":211,"navigation":212,"path":213,"seo":214,"slug":218,"stem":219,"tags":220,"template":224,"updatedDate":208,"__hash__":225},"blogPosts/en-us/blog/how-grammatech-and-gitlab-enables-better-devsecops.md","How a new integration helps GitLab customers secure their code",[7],"Christian Simko",{"type":9,"value":10,"toc":188},"minimark",[11,21,30,35,43,46,50,53,56,61,64,72,75,78,82,91,98,102,105,109,112,119,123,126,130,175,183],[12,13,14,15,20],"p",{},"Software development teams that embrace agile and ",[16,17,19],"a",{"href":18},"/topics/devsecops/","DevSecOps"," are able to code with a security-first mindset, which is essential for industries that build particularly complicated products where security is paramount, like: Aerospace and defense, automotive, industrial controls, medical devices, and more.",[12,22,23,24,29],{},"Static application security testing (SAST) solutions, like ",[16,25,28],{"href":26,"rel":27},"https://www.grammatech.com/products/source-code-analysis",[],"CodeSonar® from GrammaTech",", integrate directly into CI/CD pipelines to bake security into every step of the software development life cycle (SDLC) – protecting your products every step of the way. Security solutions like GrammaTech pair well with an all-in-one DevOps Platform like GitLab, and allow development teams to follow best practices and industry standards to develop code that is better quality and more secure.",[31,32,34],"h2",{"id":33},"the-grammatech-and-gitlab-integration","The GrammaTech and GitLab integration",[12,36,37,38,42],{},"The GrammaTech module for ",[16,39,41],{"href":40},"/pricing/ultimate/","GitLab Ultimate"," provides native SAST capabilities that scan code for defects in CI/CD pipelines and eliminates the need for any integration and maintenance by users. It allows developers to assess code continuously, avoiding costly mistakes and the duplicative work associated with waiting until the testing phase to scan for security problems.",[12,44,45],{},"We recognize that developers face pressure to meet aggressive deadlines for delivering new software, as rolling releases and agile development practices have developers pushing new features and code into production faster. Integrating SAST tools like CodeSonar into a DevOps Platform like GitLab Ultimate is a natural consequence to more iterative development in companies that embrace DevSecOps practices. CodeSonar helps developers shift security left by detecting and eliminating bugs and vulnerabilities at the earliest stages of the SDLC.",[31,47,49],{"id":48},"sast-with-codesonar","SAST with CodeSonar",[12,51,52],{},"CodeSonar uses a unified data flow and symbolic execution analysis to examine the computation of the complete application. This approach is deeper than typical pattern-matching syntax analysis, and discovers 3-5x more defects on average.",[12,54,55],{},"Static analysis is unlike other software development tools (i.e., testing tools, compilers, and configuration management) becuase it can be integrated into the development process at any time with ease. CodeSonar simply attaches to your existing build environments to add analysis information to your verification process.",[57,58,60],"h3",{"id":59},"how-does-codesonar-work","How does CodeSonar work?",[12,62,63],{},"Like a compiler, CodeSonar does a \"build\" of your code using the existing build environment, but instead of creating object code, CodeSonar creates an abstract model of your entire program. From the derived model, CodeSonar's symbolic execution engine explores program paths, reasoning about program variables, and how they relate. Advanced theorem-proving technology prunes infeasible program paths from the exploration.",[12,65,66,71],{},[67,68],"img",{"alt":69,"src":70},"How CodeSonar works to secure code","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398086/blog/Content%20Images/codesonar.png","\nSee how CodeSonar secures code.",[12,73,74],{},"Checkers in CodeSonar perform static code analysis to find common defects, violations of policies, etc. Checkers operate by traversing or querying the model and looking for particular properties or patterns that indicate defects. Sophisticated symbolic execution techniques explore paths through a control-flow graph – the data structure representing paths that might be traversed by a program during its execution. When the path exploration notices an anomaly, a warning is generated.",[12,76,77],{},"An astronomical number of combinations of circumstances must be modeled and explored, so CodeSonar employs a variety of strategies to ensure scalability. For example, procedure summaries are refined and compacted during the analysis, and paths are explored in a way that minimizes paging.",[31,79,81],{"id":80},"continuous-integration-enabled-by-gitlab","Continuous Integration enabled by GitLab",[12,83,84,85,90],{},"Integrating CodeSonar into GitLab's pipeline is done with each ",[16,86,89],{"href":87,"rel":88},"https://docs.gitlab.com/user/project/merge_requests/",[],"merge request (MR)",", automatically analyzing your code and returning any vulnerabilities found via the GitLab SAST interface. Users can consult the GitLab Security Dashboard to get an overview of code security, and the Vulnerability Report gets into the details.",[12,92,93,97],{},[67,94],{"alt":95,"src":96},"How CodeSonar integrates with GitLab CI pipelines","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398087/blog/Content%20Images/codesonar2.png","\nHow CodeSonar integrates with GitLab CI pipelines.",[57,99,101],{"id":100},"review-codesonar-warnings-in-gitlab-vulnerability-reports","Review CodeSonar warnings in GitLab Vulnerability Reports",[12,103,104],{},"CodeSonar displays vulnerabilities right in the GitLab UI – you can review a warning, create a GitLab issue, and assign it to a developer – all in a single application. You can also dismiss vulnerabilities. CodeSonar's fingerprinting technology ensures that GitLab won't ever show dismissed vulnerabilities to you again.",[57,106,108],{"id":107},"get-a-more-detailed-warning-view","Get a more detailed warning view",[12,110,111],{},"Sometimes you need more information to decide how to handle a particular warning. CodeSonar and GitLab make this easy. The CodeSonar warning message can be viewed directly in GitLab, and CodeSonar's detailed warning reports with annotated source code are just a click away – no copy and pasting, or searching for line numbers.",[12,113,114,118],{},[67,115],{"alt":116,"src":117},"Example of GitLab vulnerability report","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398087/blog/Content%20Images/codesonar3.png","\nSee example of a GitLab vulnerability report and detailed view of warnings.",[31,120,122],{"id":121},"how-to-get-started","How to get started",[12,124,125],{},"A typical way to use the GitLab CI/CD pipeline is to set it up to run whenever new Git commits are submitted to a MR. When you add CodeSonar static analysis to your MR pipeline, GitLab will display the new analysis warnings on the MR page. The full set of warnings is always available on the pipeline page.",[57,127,129],{"id":128},"prerequisites-to-use-codesonar","Prerequisites to use CodeSonar",[131,132,133,142,157,166,169,172],"ol",{},[134,135,136,137,141],"li",{},"The CodeSonar integration requires a working instance of ",[138,139,140],"em",{},"GitLab Ultimate edition",".",[134,143,144,145,150,151,156],{},"You must have a source code project in your GitLab instance that you wish to analyze. Set up a ",[16,146,149],{"href":147,"rel":148},"https://docs.gitlab.com/ci/",[],"GitLab CI/CD"," pipeline for your project that can build your source code. This will include the configuration of one or more GitLab pipeline jobs (",[16,152,155],{"href":153,"rel":154},"https://docs.gitlab.com/runner/configuration/",[],"more on how to configure GitLab Runners",").",[134,158,159,160,165],{},"If you use Docker, ensure you have ",[16,161,164],{"href":162,"rel":163},"https://docs.docker.com/engine/install/",[],"Docker Engine"," version 19.03.12 or later.",[134,167,168],{},"Use the CodeSonar software package that is appropriate for your GitLab pipeline job runner's operating platform.",[134,170,171],{},"Set up a dedicated, \"persistent\" CodeSonar Hub to coordinate and receive the results of your analysis. See your CodeSonar manual for how to set up and license a Hub.",[134,173,174],{},"You will need a valid CodeSonar Hub license that is appropriate to your configuration and the CodeSonar GitLab Integration software package.",[12,176,177,178,141],{},"Read the ",[16,179,182],{"href":180,"rel":181},"https://support.grammatech.com/documentation/codesonar/integrations/gitlab/",[],"instructions on installing the CodeSonar GitLab integration",[12,184,185],{},[138,186,187],{},"Christian Simko is the Director of Product Marketing at GrammaTech.",{"title":189,"searchDepth":190,"depth":190,"links":191},"",2,[192,193,197,201],{"id":33,"depth":190,"text":34},{"id":48,"depth":190,"text":49,"children":194},[195],{"id":59,"depth":196,"text":60},3,{"id":80,"depth":190,"text":81,"children":198},[199,200],{"id":100,"depth":196,"text":101},{"id":107,"depth":196,"text":108},{"id":121,"depth":190,"text":122,"children":202},[203],{"id":128,"depth":196,"text":129},"engineering","2021-08-20","GitLab Ultimate customers can use CodeSonar from GrammaTech for SAST and to bake protection into every stage of software development.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663397/Blog/Hero%20Images/logoforblogpost.jpg",{},true,"/en-us/blog/how-grammatech-and-gitlab-enables-better-devsecops",{"title":5,"description":206,"ogTitle":5,"ogDescription":206,"noIndex":209,"ogImage":210,"ogUrl":215,"ogSiteName":216,"ogType":217,"canonicalUrls":215},"https://about.gitlab.com/blog/how-grammatech-and-gitlab-enables-better-devsecops","https://about.gitlab.com","article","how-grammatech-and-gitlab-enables-better-devsecops","en-us/blog/how-grammatech-and-gitlab-enables-better-devsecops",[221,222,223],"security","integrations","inside GitLab","BlogPost","2UrpxXUZ2xlerjotJyy9z_lWvcz5KHiEeS6Bgtt30UI",{"logo":227,"freeTrial":232,"sales":237,"login":242,"items":247,"search":573,"minimal":604,"duo":623,"switchNav":632,"pricingDeployment":643},{"config":228},{"href":229,"dataGaName":230,"dataGaLocation":231},"/","gitlab logo","header",{"text":233,"config":234},"Get free trial",{"href":235,"dataGaName":236,"dataGaLocation":231},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":238,"config":239},"Request a demo",{"href":240,"dataGaName":241,"dataGaLocation":231},"/sales/?contact-topic=request-demo","sales",{"text":243,"config":244},"Sign in",{"href":245,"dataGaName":246,"dataGaLocation":231},"https://gitlab.com/users/sign_in/","sign in",[248,277,377,382,495,551],{"text":249,"config":250,"menu":252},"Platform",{"dataNavLevelOne":251},"platform",{"type":253,"columns":254},"cards",[255,261,269],{"title":249,"description":256,"link":257},"The intelligent orchestration platform for DevSecOps",{"text":258,"config":259},"Explore our Platform",{"href":260,"dataGaName":251,"dataGaLocation":231},"/platform/",{"title":262,"description":263,"link":264},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":265,"config":266},"Meet GitLab Duo",{"href":267,"dataGaName":268,"dataGaLocation":231},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":270,"description":271,"link":272},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":273,"config":274},"Learn more",{"href":275,"dataGaName":276,"dataGaLocation":231},"/why-gitlab/","why gitlab",{"text":278,"left":212,"config":279,"menu":281},"Product",{"dataNavLevelOne":280},"solutions",{"type":282,"link":283,"columns":287,"feature":356},"lists",{"text":284,"config":285},"View all Solutions",{"href":286,"dataGaName":280,"dataGaLocation":231},"/solutions/",[288,312,335],{"title":289,"description":290,"link":291,"items":296},"Automation","CI/CD and automation to accelerate deployment",{"config":292},{"icon":293,"href":294,"dataGaName":295,"dataGaLocation":231},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[297,301,304,308],{"text":298,"config":299},"CI/CD",{"href":300,"dataGaLocation":231,"dataGaName":298},"/solutions/continuous-integration/",{"text":262,"config":302},{"href":267,"dataGaLocation":231,"dataGaName":303},"gitlab duo agent platform - product menu",{"text":305,"config":306},"Source Code Management",{"href":307,"dataGaLocation":231,"dataGaName":305},"/solutions/source-code-management/",{"text":309,"config":310},"Automated Software Delivery",{"href":294,"dataGaLocation":231,"dataGaName":311},"Automated software delivery",{"title":313,"description":314,"link":315,"items":320},"Security","Deliver code faster without compromising security",{"config":316},{"href":317,"dataGaName":318,"dataGaLocation":231,"icon":319},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[321,325,330],{"text":322,"config":323},"Application Security Testing",{"href":317,"dataGaName":324,"dataGaLocation":231},"Application security testing",{"text":326,"config":327},"Software Supply Chain Security",{"href":328,"dataGaLocation":231,"dataGaName":329},"/solutions/supply-chain/","Software supply chain security",{"text":331,"config":332},"Software Compliance",{"href":333,"dataGaName":334,"dataGaLocation":231},"/solutions/software-compliance/","software compliance",{"title":336,"link":337,"items":342},"Measurement",{"config":338},{"icon":339,"href":340,"dataGaName":341,"dataGaLocation":231},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[343,347,351],{"text":344,"config":345},"Visibility & Measurement",{"href":340,"dataGaLocation":231,"dataGaName":346},"Visibility and Measurement",{"text":348,"config":349},"Value Stream Management",{"href":350,"dataGaLocation":231,"dataGaName":348},"/solutions/value-stream-management/",{"text":352,"config":353},"Analytics & Insights",{"href":354,"dataGaLocation":231,"dataGaName":355},"/solutions/analytics-and-insights/","Analytics and insights",{"title":357,"type":282,"items":358},"GitLab for",[359,365,371],{"text":360,"config":361},"Enterprise",{"icon":362,"href":363,"dataGaLocation":231,"dataGaName":364},"Building","/enterprise/","enterprise",{"text":366,"config":367},"Small Business",{"icon":368,"href":369,"dataGaLocation":231,"dataGaName":370},"Work","/small-business/","small business",{"text":372,"config":373},"Public Sector",{"icon":374,"href":375,"dataGaLocation":231,"dataGaName":376},"Organization","/solutions/public-sector/","public sector",{"text":378,"config":379},"Pricing",{"href":380,"dataGaName":381,"dataGaLocation":231,"dataNavLevelOne":381},"/pricing/","pricing",{"text":383,"config":384,"menu":386},"Resources",{"dataNavLevelOne":385},"resources",{"type":282,"link":387,"columns":391,"feature":484},{"text":388,"config":389},"View all resources",{"href":390,"dataGaName":385,"dataGaLocation":231},"/resources/",[392,424,451],{"title":393,"items":394},"Getting started",[395,400,405,410,415,420],{"text":396,"config":397},"Install",{"href":398,"dataGaName":399,"dataGaLocation":231},"/install/","install",{"text":401,"config":402},"Quick start guides",{"href":403,"dataGaName":404,"dataGaLocation":231},"/get-started/","quick setup checklists",{"text":406,"config":407},"Learn",{"href":408,"dataGaLocation":231,"dataGaName":409},"https://university.gitlab.com/","learn",{"text":411,"config":412},"Product documentation",{"href":413,"dataGaName":414,"dataGaLocation":231},"https://docs.gitlab.com/","product documentation",{"text":416,"config":417},"Best practice videos",{"href":418,"dataGaName":419,"dataGaLocation":231},"/getting-started-videos/","best practice videos",{"text":421,"config":422},"Integrations",{"href":423,"dataGaName":222,"dataGaLocation":231},"/integrations/",{"title":425,"items":426},"Discover",[427,432,437,442,446],{"text":428,"config":429},"Customer success stories",{"href":430,"dataGaName":431,"dataGaLocation":231},"/customers/","customer success stories",{"text":433,"config":434},"Blog",{"href":435,"dataGaName":436,"dataGaLocation":231},"/blog/","blog",{"text":438,"config":439},"Demo Hub",{"href":440,"dataGaName":441,"dataGaLocation":231},"/demo-hub/","demo hub",{"text":443,"config":444},"The Source",{"href":445,"dataGaName":436,"dataGaLocation":231},"/the-source/",{"text":447,"config":448},"Remote",{"href":449,"dataGaName":450,"dataGaLocation":231},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":452,"items":453},"Connect",[454,459,464,469,474,479],{"text":455,"config":456},"GitLab Services",{"href":457,"dataGaName":458,"dataGaLocation":231},"/services/","services",{"text":460,"config":461},"Contribute",{"href":462,"dataGaName":463,"dataGaLocation":231},"https://contributors.gitlab.com","contribute",{"text":465,"config":466},"Community",{"href":467,"dataGaName":468,"dataGaLocation":231},"/community/","community",{"text":470,"config":471},"Forum",{"href":472,"dataGaName":473,"dataGaLocation":231},"https://forum.gitlab.com/","forum",{"text":475,"config":476},"Events",{"href":477,"dataGaName":478,"dataGaLocation":231},"/events/","events",{"text":480,"config":481},"Partners",{"href":482,"dataGaName":483,"dataGaLocation":231},"/partners/","partners",{"config":485,"title":488,"text":489,"link":490},{"background":486,"textColor":487},"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":491,"config":492},"Read the latest",{"href":493,"dataGaName":494,"dataGaLocation":231},"/whats-new/","whats new",{"text":496,"config":497,"menu":499},"Company",{"dataNavLevelOne":498},"company",{"type":282,"columns":500},[501],{"items":502},[503,508,514,516,521,526,531,536,541,546],{"text":504,"config":505},"About",{"href":506,"dataGaName":507,"dataGaLocation":231},"/company/","about",{"text":509,"config":510,"footerGa":513},"Jobs",{"href":511,"dataGaName":512,"dataGaLocation":231},"/jobs/","jobs",{"dataGaName":512},{"text":475,"config":515},{"href":477,"dataGaName":478,"dataGaLocation":231},{"text":517,"config":518},"Leadership",{"href":519,"dataGaName":520,"dataGaLocation":231},"/company/team/e-group/","leadership",{"text":522,"config":523},"Handbook",{"href":524,"dataGaName":525,"dataGaLocation":231},"https://handbook.gitlab.com/","handbook",{"text":527,"config":528},"Investor relations",{"href":529,"dataGaName":530,"dataGaLocation":231},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":532,"config":533},"Trust Center",{"href":534,"dataGaName":535,"dataGaLocation":231},"/security/","trust center",{"text":537,"config":538},"AI Transparency Center",{"href":539,"dataGaName":540,"dataGaLocation":231},"/ai-transparency-center/","ai transparency center",{"text":542,"config":543},"Newsletter",{"href":544,"dataGaName":545,"dataGaLocation":231},"/company/contact/#contact-forms","newsletter",{"text":547,"config":548},"Press",{"href":549,"dataGaName":550,"dataGaLocation":231},"/press/","press",{"text":552,"config":553,"menu":554},"Contact us",{"dataNavLevelOne":498},{"type":282,"columns":555},[556],{"items":557},[558,563,568],{"text":559,"config":560},"Talk to sales",{"href":561,"dataGaName":562,"dataGaLocation":231},"/sales/","talk to sales",{"text":564,"config":565},"Support portal",{"href":566,"dataGaName":567,"dataGaLocation":231},"https://support.gitlab.com/hc/en-us","support portal",{"text":569,"config":570},"Customer portal",{"href":571,"dataGaName":572,"dataGaLocation":231},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":574,"login":575,"suggestions":582},"Close",{"text":576,"link":577},"To search repositories and projects, login to",{"text":578,"config":579},"gitlab.com",{"href":245,"dataGaName":580,"dataGaLocation":581},"search login","search",{"text":583,"default":584},"Suggestions",[585,587,591,593,597,601],{"text":262,"config":586},{"href":267,"dataGaName":262,"dataGaLocation":581},{"text":588,"config":589},"Code Suggestions (AI)",{"href":590,"dataGaName":588,"dataGaLocation":581},"/solutions/code-suggestions/",{"text":298,"config":592},{"href":300,"dataGaName":298,"dataGaLocation":581},{"text":594,"config":595},"GitLab on AWS",{"href":596,"dataGaName":594,"dataGaLocation":581},"/partners/technology-partners/aws/",{"text":598,"config":599},"GitLab on Google Cloud",{"href":600,"dataGaName":598,"dataGaLocation":581},"/partners/technology-partners/google-cloud-platform/",{"text":602,"config":603},"Why GitLab?",{"href":275,"dataGaName":602,"dataGaLocation":581},{"freeTrial":605,"mobileIcon":610,"desktopIcon":615,"secondaryButton":618},{"text":606,"config":607},"Start free trial",{"href":608,"dataGaName":236,"dataGaLocation":609},"https://gitlab.com/-/trials/new/","nav",{"altText":611,"config":612},"Gitlab Icon",{"src":613,"dataGaName":614,"dataGaLocation":609},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":611,"config":616},{"src":617,"dataGaName":614,"dataGaLocation":609},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":619,"config":620},"Get Started",{"href":621,"dataGaName":622,"dataGaLocation":609},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":624,"mobileIcon":628,"desktopIcon":630},{"text":625,"config":626},"Learn more about GitLab Duo",{"href":267,"dataGaName":627,"dataGaLocation":609},"gitlab duo",{"altText":611,"config":629},{"src":613,"dataGaName":614,"dataGaLocation":609},{"altText":611,"config":631},{"src":617,"dataGaName":614,"dataGaLocation":609},{"button":633,"mobileIcon":638,"desktopIcon":640},{"text":634,"config":635},"/switch",{"href":636,"dataGaName":637,"dataGaLocation":609},"#contact","switch",{"altText":611,"config":639},{"src":613,"dataGaName":614,"dataGaLocation":609},{"altText":611,"config":641},{"src":642,"dataGaName":614,"dataGaLocation":609},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":644,"mobileIcon":649,"desktopIcon":651},{"text":645,"config":646},"Back to pricing",{"href":380,"dataGaName":647,"dataGaLocation":609,"icon":648},"back to pricing","GoBack",{"altText":611,"config":650},{"src":613,"dataGaName":614,"dataGaLocation":609},{"altText":611,"config":652},{"src":617,"dataGaName":614,"dataGaLocation":609},{"title":654,"titleMobile":655,"button":656,"config":661},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":273,"config":657},{"href":658,"dataGaName":659,"dataGaLocation":660},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":662,"disabled":209},"release",{"data":664},{"text":665,"source":666,"edit":672,"contribute":677,"config":682,"items":687,"minimal":894},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":667,"config":668},"View page source",{"href":669,"dataGaName":670,"dataGaLocation":671},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":673,"config":674},"Edit this page",{"href":675,"dataGaName":676,"dataGaLocation":671},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":678,"config":679},"Please contribute",{"href":680,"dataGaName":681,"dataGaLocation":671},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":683,"facebook":684,"youtube":685,"linkedin":686},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[688,734,786,830,862],{"title":378,"links":689,"subMenu":703},[690,694,699],{"text":691,"config":692},"View plans",{"href":380,"dataGaName":693,"dataGaLocation":671},"view plans",{"text":695,"config":696},"Why Premium?",{"href":697,"dataGaName":698,"dataGaLocation":671},"/pricing/premium/","why premium",{"text":700,"config":701},"Why Ultimate?",{"href":40,"dataGaName":702,"dataGaLocation":671},"why ultimate",[704],{"title":705,"links":706},"Contact Us",[707,710,712,714,719,724,729],{"text":708,"config":709},"Contact sales",{"href":561,"dataGaName":241,"dataGaLocation":671},{"text":564,"config":711},{"href":566,"dataGaName":567,"dataGaLocation":671},{"text":569,"config":713},{"href":571,"dataGaName":572,"dataGaLocation":671},{"text":715,"config":716},"Status",{"href":717,"dataGaName":718,"dataGaLocation":671},"https://status.gitlab.com/","status",{"text":720,"config":721},"Terms of use",{"href":722,"dataGaName":723,"dataGaLocation":671},"/terms/","terms of use",{"text":725,"config":726},"Privacy statement",{"href":727,"dataGaName":728,"dataGaLocation":671},"/privacy/","privacy statement",{"text":730,"config":731},"Cookie preferences",{"dataGaName":732,"dataGaLocation":671,"id":733,"isOneTrustButton":212},"cookie preferences","ot-sdk-btn",{"title":278,"links":735,"subMenu":744},[736,740],{"text":737,"config":738},"DevSecOps platform",{"href":260,"dataGaName":739,"dataGaLocation":671},"devsecops platform",{"text":741,"config":742},"AI-Assisted Development",{"href":267,"dataGaName":743,"dataGaLocation":671},"ai-assisted development",[745],{"title":746,"links":747},"Topics",[748,753,758,763,768,771,776,781],{"text":749,"config":750},"CICD",{"href":751,"dataGaName":752,"dataGaLocation":671},"/topics/ci-cd/","cicd",{"text":754,"config":755},"GitOps",{"href":756,"dataGaName":757,"dataGaLocation":671},"/topics/gitops/","gitops",{"text":759,"config":760},"DevOps",{"href":761,"dataGaName":762,"dataGaLocation":671},"/topics/devops/","devops",{"text":764,"config":765},"Version Control",{"href":766,"dataGaName":767,"dataGaLocation":671},"/topics/version-control/","version control",{"text":19,"config":769},{"href":18,"dataGaName":770,"dataGaLocation":671},"devsecops",{"text":772,"config":773},"Cloud Native",{"href":774,"dataGaName":775,"dataGaLocation":671},"/topics/cloud-native/","cloud native",{"text":777,"config":778},"AI for Coding",{"href":779,"dataGaName":780,"dataGaLocation":671},"/topics/devops/ai-for-coding/","ai for coding",{"text":782,"config":783},"Agentic AI",{"href":784,"dataGaName":785,"dataGaLocation":671},"/topics/agentic-ai/","agentic ai",{"title":787,"links":788},"Solutions",[789,791,793,798,802,805,809,812,814,817,820,825],{"text":322,"config":790},{"href":317,"dataGaName":322,"dataGaLocation":671},{"text":311,"config":792},{"href":294,"dataGaName":295,"dataGaLocation":671},{"text":794,"config":795},"Agile development",{"href":796,"dataGaName":797,"dataGaLocation":671},"/solutions/agile-delivery/","agile delivery",{"text":799,"config":800},"SCM",{"href":307,"dataGaName":801,"dataGaLocation":671},"source code management",{"text":749,"config":803},{"href":300,"dataGaName":804,"dataGaLocation":671},"continuous integration & delivery",{"text":806,"config":807},"Value stream management",{"href":350,"dataGaName":808,"dataGaLocation":671},"value stream management",{"text":754,"config":810},{"href":811,"dataGaName":757,"dataGaLocation":671},"/solutions/gitops/",{"text":360,"config":813},{"href":363,"dataGaName":364,"dataGaLocation":671},{"text":815,"config":816},"Small business",{"href":369,"dataGaName":370,"dataGaLocation":671},{"text":818,"config":819},"Public sector",{"href":375,"dataGaName":376,"dataGaLocation":671},{"text":821,"config":822},"Education",{"href":823,"dataGaName":824,"dataGaLocation":671},"/solutions/education/","education",{"text":826,"config":827},"Financial services",{"href":828,"dataGaName":829,"dataGaLocation":671},"/solutions/finance/","financial services",{"title":383,"links":831},[832,834,836,838,841,843,846,848,850,852,854,856,858,860],{"text":396,"config":833},{"href":398,"dataGaName":399,"dataGaLocation":671},{"text":401,"config":835},{"href":403,"dataGaName":404,"dataGaLocation":671},{"text":406,"config":837},{"href":408,"dataGaName":409,"dataGaLocation":671},{"text":411,"config":839},{"href":413,"dataGaName":840,"dataGaLocation":671},"docs",{"text":433,"config":842},{"href":435,"dataGaName":436,"dataGaLocation":671},{"text":844,"config":845},"What's new",{"href":493,"dataGaName":494,"dataGaLocation":671},{"text":428,"config":847},{"href":430,"dataGaName":431,"dataGaLocation":671},{"text":447,"config":849},{"href":449,"dataGaName":450,"dataGaLocation":671},{"text":455,"config":851},{"href":457,"dataGaName":458,"dataGaLocation":671},{"text":460,"config":853},{"href":462,"dataGaName":463,"dataGaLocation":671},{"text":465,"config":855},{"href":467,"dataGaName":468,"dataGaLocation":671},{"text":470,"config":857},{"href":472,"dataGaName":473,"dataGaLocation":671},{"text":475,"config":859},{"href":477,"dataGaName":478,"dataGaLocation":671},{"text":480,"config":861},{"href":482,"dataGaName":483,"dataGaLocation":671},{"title":496,"links":863},[864,866,868,870,872,874,878,883,885,887,889],{"text":504,"config":865},{"href":506,"dataGaName":498,"dataGaLocation":671},{"text":509,"config":867},{"href":511,"dataGaName":512,"dataGaLocation":671},{"text":517,"config":869},{"href":519,"dataGaName":520,"dataGaLocation":671},{"text":522,"config":871},{"href":524,"dataGaName":525,"dataGaLocation":671},{"text":527,"config":873},{"href":529,"dataGaName":530,"dataGaLocation":671},{"text":875,"config":876},"Sustainability",{"href":877,"dataGaName":875,"dataGaLocation":671},"/sustainability/",{"text":879,"config":880},"Diversity, inclusion and belonging (DIB)",{"href":881,"dataGaName":882,"dataGaLocation":671},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":532,"config":884},{"href":534,"dataGaName":535,"dataGaLocation":671},{"text":542,"config":886},{"href":544,"dataGaName":545,"dataGaLocation":671},{"text":547,"config":888},{"href":549,"dataGaName":550,"dataGaLocation":671},{"text":890,"config":891},"Modern Slavery Transparency Statement",{"href":892,"dataGaName":893,"dataGaLocation":671},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":895},[896,899,902],{"text":897,"config":898},"Terms",{"href":722,"dataGaName":723,"dataGaLocation":671},{"text":900,"config":901},"Cookies",{"dataGaName":732,"dataGaLocation":671,"id":733,"isOneTrustButton":212},{"text":903,"config":904},"Privacy",{"href":727,"dataGaName":728,"dataGaLocation":671},[906],{"id":907,"title":7,"body":208,"config":908,"content":910,"description":208,"extension":913,"meta":914,"navigation":212,"path":915,"seo":916,"stem":917,"__hash__":918},"blogAuthors/en-us/blog/authors/christian-simko.yml",{"template":909},"BlogAuthor",{"name":7,"config":911},{"headshot":189,"ctfId":912},"csimko","yml",{},"/en-us/blog/authors/christian-simko",{},"en-us/blog/authors/christian-simko","GLJnhxR2-K8ASv04cxTmu75nN5jHv_Z00ogOcIA2trw",[920,929,937],{"title":921,"description":922,"heroImage":923,"category":204,"date":924,"authors":925,"slug":928,"externalUrl":208},"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",[926,927],"Mathias Ewald","Martin Paloncy, Edgeless Systems","confidential-ai-for-gitlab-self-hosted",{"title":930,"description":931,"heroImage":932,"category":204,"date":933,"authors":934,"slug":936,"externalUrl":208},"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",[935],"Lysanne Pinto","green-devops-carbon-measurement-cicd-pipeline",{"title":938,"description":939,"heroImage":940,"category":204,"date":941,"authors":942,"slug":944,"externalUrl":208},"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",[943],"Paul Meresanu","how-to-build-ci-cd-observability-at-scale",{"promotions":946},[947,961,973,984],{"id":948,"categories":949,"header":951,"text":952,"button":953,"image":958},"ai-modernization",[950],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":954,"config":955},"Get your AI maturity score",{"href":956,"dataGaName":957,"dataGaLocation":436},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":959},{"src":960},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":962,"categories":963,"header":965,"text":952,"button":966,"image":970},"devops-modernization",[964,770],"product","Are you just managing tools or shipping innovation?",{"text":967,"config":968},"Get your DevOps maturity score",{"href":969,"dataGaName":957,"dataGaLocation":436},"/assessments/devops-modernization-assessment/",{"config":971},{"src":972},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":974,"categories":975,"header":976,"text":952,"button":977,"image":981},"security-modernization",[221],"Are you trading speed for security?",{"text":978,"config":979},"Get your security maturity score",{"href":980,"dataGaName":957,"dataGaLocation":436},"/assessments/security-modernization-assessment/",{"config":982},{"src":983},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":985,"paths":986,"header":989,"text":990,"button":991,"image":996},"github-azure-migration",[987,988],"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":992,"config":993},"See how GitLab compares to GitHub",{"href":994,"dataGaName":995,"dataGaLocation":436},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":997},{"src":972},{"header":999,"blurb":1000,"button":1001,"secondaryButton":1006},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":1002,"config":1003},"Get your free trial",{"href":1004,"dataGaName":236,"dataGaLocation":1005},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":708,"config":1007},{"href":561,"dataGaName":241,"dataGaLocation":1005},1786803751785]