[{"data":1,"prerenderedAt":962},["ShallowReactive",2],{"/blog/security-testing-principles-developer":3,"navigation-en-us":167,"banner-en-us":595,"footer-en-us":605,"blog-post-authors-en-us-Vanessa Wegner|Seth Berger":849,"blog-related-posts-en-us-security-testing-principles-developer":874,"blog-promotions-en-us":899,"next-steps-en-us":952},{"id":4,"title":5,"authors":6,"body":9,"category":146,"date":147,"description":148,"extension":149,"externalUrl":150,"faq":150,"featured":151,"heroImage":152,"meta":153,"navigation":154,"path":155,"seo":156,"slug":160,"stem":161,"tags":162,"template":165,"updatedDate":150,"__hash__":166},"blogPosts/en-us/blog/security-testing-principles-developer.md","5 Security testing principles every developer should know",[7,8],"Vanessa Wegner","Seth Berger",{"type":10,"value":11,"toc":132},"minimark",[12,17,27,31,34,39,42,46,57,61,75,79,88,92,107,111,118],[13,14,16],"h2",{"id":15},"principles-of-secure-testing-and-how-to-do-it","Principles of secure testing and how to do it",[18,19,20,21,26],"p",{},"Security testing is no longer under sole ownership of the security team. New\ntools have made it easy to bring testing into the DevOps model, where developers\ncan review and test code as they build out the app or software. However,\ndevelopers aren’t always on board with conducting security tests themselves:\nNearly half of security professionals surveyed in ",[22,23,25],"a",{"href":24},"/resources/developer-survey/","GitLab’s 2019 Global\nDeveloper Report"," (49%) said they\nstruggle to get developers to make remediation of vulnerabilities a priority.\nLike the developers and operations professionals, 50% of security teams\nsurveyed also believe testing is what most slows down development. AppDev leaders can improve their teams' security practices by building team buy-in and adopting tools that make it easy for developers to follow the five principles outlined below.",[13,28,30],{"id":29},"security-should-be-with-you-every-step-of-the-way","Security should be with you every step of the way",[18,32,33],{},"We’ve reached a day and age where security can’t be an afterthought or bolt-on\nactivity: Everyone is responsible for ensuring their work does not put the\ncustomer or business at risk. Security isn't just a box to check either, it’s a\nway of operating that should stay with you through development, deployment, and\nupdates. Developers can adopt security as their own by following these five\nprinciples:",[35,36,38],"h3",{"id":37},"_1-evangelize-your-security-efforts","1. Evangelize your security efforts",[18,40,41],{},"While developers are taking more responsibility for security, an overall\nquestion of ownership still remains. Everyone should be responsible for\nsecurity, but all too often that “everyone” comes to mean “no one”. Dev team\nleaders should advocate for security and the proper time to address it. Without\nthe proper advocacy, resources won't be allocated and security can become high-\nrisk technical debt. By shifting security left in the software development\nprocess, developers can allocate resources early on while they are still\nplentiful. Make it easy for your developers to adopt strong security practices\nby creating team-wide guidelines, educating developers on best practices and\ncommon challenges, and standardizing your expectations through both team and\nindividual security metrics.",[35,43,45],{"id":44},"_2-test-early-test-often","2. Test early, test often",[18,47,48,49,52,53,56],{},"DevSecOps is an important next step in your DevOps initiatives. ",[22,50,51],{"href":24},"Security teams\nare three times as likely to discover bugs before code is merged",", so test as you\ncode and begin fixing vulnerabilities as early as possible. By incorporating tools\nthat help with dependency scanning, dynamic application security testing (DAST),\nand static application security testing (SAST), developers can get feedback as code is written and committed. These tools can give\ndevelopers information about the security of their code early in the development\nprocess, making it faster and cheaper to remediate compared to making fixes later on.\n",[22,54,55],{"href":24},"In a mature DevOps model, teams are 90% more likely to test between\n91% and 100% of all code than organizations with early-stage DevOps",".\nTesting should continue throughout the DevOps lifecycle, so that developers are\nable to change code before it’s integrated into the broader codebase. Frequent testing will\nultimately take less time and fewer resources, speed time to deployment, and\nreduce friction between IT and security.",[35,58,60],{"id":59},"_3-always-verify-your-changes-with-a-second-set-of-eyes","3. Always verify your changes with a second set of eyes",[18,62,63,64,68,69,74],{},"Writing and updating code should always be a joint effort. A second set of eyes\nwill spot potential issues that the author wasn’t able to see, and will reduce\nthe risk of deploying code that still has vulnerabilities. A ",[22,65,67],{"href":66},"/blog/play-reviewer-roulette/","randomized buddy\nsystem"," comes in handy here, to ensure that code reviews aren’t being handed to\nthe same person time after time, and allows different team members to\nlook at work that may be different from their own activities. Don't be afraid to\nuse tooling to help implement code reveiws and approvals. Configure your tooling\nto ",[22,70,73],{"href":71,"rel":72},"https://docs.gitlab.com/user/project/merge_requests/approvals/",[],"require approvers within your merge request process",".\nCulture is an important element when it comes to code review: Your team of\ndevelopers must care about the integrity of the product or project as a whole,\nand not just the speed or quality of their own code development.",[35,76,78],{"id":77},"_4-keep-a-master-log-of-every-code-deployment-dependency-and-update","4. Keep a master log of every code deployment, dependency, and update",[18,80,81,82,87],{},"Transparency is key to ensuring quality code. Creating a complete history of your code\nwill be helpful in reviews and incident response, and allows the security team or\ndevelopers to identify exactly when and where a vulnerability occurred. Teams should\nalso minimize any manual build or deployment processes to ensure that their\napplications have full traceability and logging.\nWith a majority of application code being open source, dependencies have become a\nmajor attack surface. What’s more, bugs in open source code generally fly under\nthe radar (no pun intended), undetected by developers until it’s too late.\nUnderstanding, patching, and updating dependencies is critical, as catastrophic\nbreaches (",[22,83,86],{"href":84,"rel":85},"https://en.wikipedia.org/wiki/WannaCry_ransomware_attack",[],"such as WannaCry",")\ncan and have occurred due to a missed update or patch. Security scans using updated vulnerability databases should be run on a regular\nbasis to maintain app security – even on code that has previously been scanned.",[35,89,91],{"id":90},"_5-diversify-your-security-portfolio","5. Diversify your security portfolio",[18,93,94,95,100,101,106],{},"Employ many different types of testing to cover your bases. A single type of\ntesting, like SAST, DAST, pre-release scanning, pen testing, or dependency\nscanning is helpful, but won’t provide a complete view of your application\nenvironment. ",[22,96,99],{"href":97,"rel":98},"https://www.forrester.com/report/The+State+Of+Application+Security+2019/-/E-RES145135",[],"Forrester's annual application security report","\nnotes that security teams are adjusting their practices to help developers respond to\nvulnerabilities at the speed of development. Some teams now conduct software\ncomposition analysis ahead of production, and have moved static application\nsecurity testing (SAST) to early development (",[22,102,105],{"href":103,"rel":104},"https://docs.gitlab.com/user/application_security/sast/",[],"something your team can achieve\nwith GitLab",").\nOthers are using bug bounty programs to crowdsource vulnerability discovery,\nwhich is particularly helpful for uncovering problems that don’t fall into known\nsecurity flaw patterns.",[13,108,110],{"id":109},"work-to-achieve-a-devsecops-model","Work to achieve a DevSecOps model",[18,112,113,114,117],{},"Nearly 70% of developers are expected to write secure code, but only 25% of\ndevelopers believe they have “good” security practices. DevOps is a great place\nto start: It’s ",[22,115,116],{"href":24},"clear from our data","\nthat a more mature DevOps model encourages innovation and collaboration, and\nenables teams to test more code faster. As more teams continue to shift their\nsecurity practices left, DevSecOps will become an advantageous reality for\ndevelopers and security professionals alike.",[18,119,120,121,126,127],{},"Cover photo by ",[22,122,125],{"href":123,"rel":124},"https://unsplash.com/@impatrickt?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText",[],"Patrick Tomasso","\non ",[22,128,131],{"href":129,"rel":130},"https://unsplash.com/?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText",[],"Unsplash",{"title":133,"searchDepth":134,"depth":134,"links":135},"",2,[136,137,145],{"id":15,"depth":134,"text":16},{"id":29,"depth":134,"text":30,"children":138},[139,141,142,143,144],{"id":37,"depth":140,"text":38},3,{"id":44,"depth":140,"text":45},{"id":59,"depth":140,"text":60},{"id":77,"depth":140,"text":78},{"id":90,"depth":140,"text":91},{"id":109,"depth":134,"text":110},"insights","2019-09-16","Developers are looking for guidance and standard practices as they take on more security testing responsibilities.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749669784/Blog/Hero%20Images/security-testing-principles-devs.jpg",{},true,"/en-us/blog/security-testing-principles-developer",{"title":5,"description":148,"ogTitle":5,"ogDescription":148,"noIndex":151,"ogImage":152,"ogUrl":157,"ogSiteName":158,"ogType":159,"canonicalUrls":157},"https://about.gitlab.com/blog/security-testing-principles-developer","https://about.gitlab.com","article","security-testing-principles-developer","en-us/blog/security-testing-principles-developer",[163,164],"DevOps","security","BlogPost","ybLZ1E08eP9wscdrwzz3JClyZy8_mG0Fwd81k3N0uQw",{"logo":168,"freeTrial":173,"sales":178,"login":183,"items":188,"search":515,"minimal":546,"duo":565,"switchNav":574,"pricingDeployment":585},{"config":169},{"href":170,"dataGaName":171,"dataGaLocation":172},"/","gitlab logo","header",{"text":174,"config":175},"Get free trial",{"href":176,"dataGaName":177,"dataGaLocation":172},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":179,"config":180},"Request a demo",{"href":181,"dataGaName":182,"dataGaLocation":172},"/sales/?contact-topic=request-demo","sales",{"text":184,"config":185},"Sign in",{"href":186,"dataGaName":187,"dataGaLocation":172},"https://gitlab.com/users/sign_in/","sign in",[189,218,318,323,437,493],{"text":190,"config":191,"menu":193},"Platform",{"dataNavLevelOne":192},"platform",{"type":194,"columns":195},"cards",[196,202,210],{"title":190,"description":197,"link":198},"The intelligent orchestration platform for DevSecOps",{"text":199,"config":200},"Explore our Platform",{"href":201,"dataGaName":192,"dataGaLocation":172},"/platform/",{"title":203,"description":204,"link":205},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":206,"config":207},"Meet GitLab Duo",{"href":208,"dataGaName":209,"dataGaLocation":172},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":211,"description":212,"link":213},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":214,"config":215},"Learn more",{"href":216,"dataGaName":217,"dataGaLocation":172},"/why-gitlab/","why gitlab",{"text":219,"left":154,"config":220,"menu":222},"Product",{"dataNavLevelOne":221},"solutions",{"type":223,"link":224,"columns":228,"feature":297},"lists",{"text":225,"config":226},"View all Solutions",{"href":227,"dataGaName":221,"dataGaLocation":172},"/solutions/",[229,253,276],{"title":230,"description":231,"link":232,"items":237},"Automation","CI/CD and automation to accelerate deployment",{"config":233},{"icon":234,"href":235,"dataGaName":236,"dataGaLocation":172},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[238,242,245,249],{"text":239,"config":240},"CI/CD",{"href":241,"dataGaLocation":172,"dataGaName":239},"/solutions/continuous-integration/",{"text":203,"config":243},{"href":208,"dataGaLocation":172,"dataGaName":244},"gitlab duo agent platform - product menu",{"text":246,"config":247},"Source Code Management",{"href":248,"dataGaLocation":172,"dataGaName":246},"/solutions/source-code-management/",{"text":250,"config":251},"Automated Software Delivery",{"href":235,"dataGaLocation":172,"dataGaName":252},"Automated software delivery",{"title":254,"description":255,"link":256,"items":261},"Security","Deliver code faster without compromising security",{"config":257},{"href":258,"dataGaName":259,"dataGaLocation":172,"icon":260},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[262,266,271],{"text":263,"config":264},"Application Security Testing",{"href":258,"dataGaName":265,"dataGaLocation":172},"Application security testing",{"text":267,"config":268},"Software Supply Chain Security",{"href":269,"dataGaLocation":172,"dataGaName":270},"/solutions/supply-chain/","Software supply chain security",{"text":272,"config":273},"Software Compliance",{"href":274,"dataGaName":275,"dataGaLocation":172},"/solutions/software-compliance/","software compliance",{"title":277,"link":278,"items":283},"Measurement",{"config":279},{"icon":280,"href":281,"dataGaName":282,"dataGaLocation":172},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[284,288,292],{"text":285,"config":286},"Visibility & Measurement",{"href":281,"dataGaLocation":172,"dataGaName":287},"Visibility and Measurement",{"text":289,"config":290},"Value Stream Management",{"href":291,"dataGaLocation":172,"dataGaName":289},"/solutions/value-stream-management/",{"text":293,"config":294},"Analytics & Insights",{"href":295,"dataGaLocation":172,"dataGaName":296},"/solutions/analytics-and-insights/","Analytics and insights",{"title":298,"type":223,"items":299},"GitLab for",[300,306,312],{"text":301,"config":302},"Enterprise",{"icon":303,"href":304,"dataGaLocation":172,"dataGaName":305},"Building","/enterprise/","enterprise",{"text":307,"config":308},"Small Business",{"icon":309,"href":310,"dataGaLocation":172,"dataGaName":311},"Work","/small-business/","small business",{"text":313,"config":314},"Public Sector",{"icon":315,"href":316,"dataGaLocation":172,"dataGaName":317},"Organization","/solutions/public-sector/","public sector",{"text":319,"config":320},"Pricing",{"href":321,"dataGaName":322,"dataGaLocation":172,"dataNavLevelOne":322},"/pricing/","pricing",{"text":324,"config":325,"menu":327},"Resources",{"dataNavLevelOne":326},"resources",{"type":223,"link":328,"columns":332,"feature":426},{"text":329,"config":330},"View all resources",{"href":331,"dataGaName":326,"dataGaLocation":172},"/resources/",[333,366,393],{"title":334,"items":335},"Getting started",[336,341,346,351,356,361],{"text":337,"config":338},"Install",{"href":339,"dataGaName":340,"dataGaLocation":172},"/install/","install",{"text":342,"config":343},"Quick start guides",{"href":344,"dataGaName":345,"dataGaLocation":172},"/get-started/","quick setup checklists",{"text":347,"config":348},"Learn",{"href":349,"dataGaLocation":172,"dataGaName":350},"https://university.gitlab.com/","learn",{"text":352,"config":353},"Product documentation",{"href":354,"dataGaName":355,"dataGaLocation":172},"https://docs.gitlab.com/","product documentation",{"text":357,"config":358},"Best practice videos",{"href":359,"dataGaName":360,"dataGaLocation":172},"/getting-started-videos/","best practice videos",{"text":362,"config":363},"Integrations",{"href":364,"dataGaName":365,"dataGaLocation":172},"/integrations/","integrations",{"title":367,"items":368},"Discover",[369,374,379,384,388],{"text":370,"config":371},"Customer success stories",{"href":372,"dataGaName":373,"dataGaLocation":172},"/customers/","customer success stories",{"text":375,"config":376},"Blog",{"href":377,"dataGaName":378,"dataGaLocation":172},"/blog/","blog",{"text":380,"config":381},"Demo Hub",{"href":382,"dataGaName":383,"dataGaLocation":172},"/demo-hub/","demo hub",{"text":385,"config":386},"The Source",{"href":387,"dataGaName":378,"dataGaLocation":172},"/the-source/",{"text":389,"config":390},"Remote",{"href":391,"dataGaName":392,"dataGaLocation":172},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":394,"items":395},"Connect",[396,401,406,411,416,421],{"text":397,"config":398},"GitLab Services",{"href":399,"dataGaName":400,"dataGaLocation":172},"/services/","services",{"text":402,"config":403},"Contribute",{"href":404,"dataGaName":405,"dataGaLocation":172},"https://contributors.gitlab.com","contribute",{"text":407,"config":408},"Community",{"href":409,"dataGaName":410,"dataGaLocation":172},"/community/","community",{"text":412,"config":413},"Forum",{"href":414,"dataGaName":415,"dataGaLocation":172},"https://forum.gitlab.com/","forum",{"text":417,"config":418},"Events",{"href":419,"dataGaName":420,"dataGaLocation":172},"/events/","events",{"text":422,"config":423},"Partners",{"href":424,"dataGaName":425,"dataGaLocation":172},"/partners/","partners",{"config":427,"title":430,"text":431,"link":432},{"background":428,"textColor":429},"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":433,"config":434},"Read the latest",{"href":435,"dataGaName":436,"dataGaLocation":172},"/whats-new/","whats new",{"text":438,"config":439,"menu":441},"Company",{"dataNavLevelOne":440},"company",{"type":223,"columns":442},[443],{"items":444},[445,450,456,458,463,468,473,478,483,488],{"text":446,"config":447},"About",{"href":448,"dataGaName":449,"dataGaLocation":172},"/company/","about",{"text":451,"config":452,"footerGa":455},"Jobs",{"href":453,"dataGaName":454,"dataGaLocation":172},"/jobs/","jobs",{"dataGaName":454},{"text":417,"config":457},{"href":419,"dataGaName":420,"dataGaLocation":172},{"text":459,"config":460},"Leadership",{"href":461,"dataGaName":462,"dataGaLocation":172},"/company/team/e-group/","leadership",{"text":464,"config":465},"Handbook",{"href":466,"dataGaName":467,"dataGaLocation":172},"https://handbook.gitlab.com/","handbook",{"text":469,"config":470},"Investor relations",{"href":471,"dataGaName":472,"dataGaLocation":172},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":474,"config":475},"Trust Center",{"href":476,"dataGaName":477,"dataGaLocation":172},"/security/","trust center",{"text":479,"config":480},"AI Transparency Center",{"href":481,"dataGaName":482,"dataGaLocation":172},"/ai-transparency-center/","ai transparency center",{"text":484,"config":485},"Newsletter",{"href":486,"dataGaName":487,"dataGaLocation":172},"/company/contact/#contact-forms","newsletter",{"text":489,"config":490},"Press",{"href":491,"dataGaName":492,"dataGaLocation":172},"/press/","press",{"text":494,"config":495,"menu":496},"Contact us",{"dataNavLevelOne":440},{"type":223,"columns":497},[498],{"items":499},[500,505,510],{"text":501,"config":502},"Talk to sales",{"href":503,"dataGaName":504,"dataGaLocation":172},"/sales/","talk to sales",{"text":506,"config":507},"Support portal",{"href":508,"dataGaName":509,"dataGaLocation":172},"https://support.gitlab.com/hc/en-us","support portal",{"text":511,"config":512},"Customer portal",{"href":513,"dataGaName":514,"dataGaLocation":172},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":516,"login":517,"suggestions":524},"Close",{"text":518,"link":519},"To search repositories and projects, login to",{"text":520,"config":521},"gitlab.com",{"href":186,"dataGaName":522,"dataGaLocation":523},"search login","search",{"text":525,"default":526},"Suggestions",[527,529,533,535,539,543],{"text":203,"config":528},{"href":208,"dataGaName":203,"dataGaLocation":523},{"text":530,"config":531},"Code Suggestions (AI)",{"href":532,"dataGaName":530,"dataGaLocation":523},"/solutions/code-suggestions/",{"text":239,"config":534},{"href":241,"dataGaName":239,"dataGaLocation":523},{"text":536,"config":537},"GitLab on AWS",{"href":538,"dataGaName":536,"dataGaLocation":523},"/partners/technology-partners/aws/",{"text":540,"config":541},"GitLab on Google Cloud",{"href":542,"dataGaName":540,"dataGaLocation":523},"/partners/technology-partners/google-cloud-platform/",{"text":544,"config":545},"Why GitLab?",{"href":216,"dataGaName":544,"dataGaLocation":523},{"freeTrial":547,"mobileIcon":552,"desktopIcon":557,"secondaryButton":560},{"text":548,"config":549},"Start free trial",{"href":550,"dataGaName":177,"dataGaLocation":551},"https://gitlab.com/-/trials/new/","nav",{"altText":553,"config":554},"Gitlab Icon",{"src":555,"dataGaName":556,"dataGaLocation":551},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":553,"config":558},{"src":559,"dataGaName":556,"dataGaLocation":551},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":561,"config":562},"Get Started",{"href":563,"dataGaName":564,"dataGaLocation":551},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":566,"mobileIcon":570,"desktopIcon":572},{"text":567,"config":568},"Learn more about GitLab Duo",{"href":208,"dataGaName":569,"dataGaLocation":551},"gitlab duo",{"altText":553,"config":571},{"src":555,"dataGaName":556,"dataGaLocation":551},{"altText":553,"config":573},{"src":559,"dataGaName":556,"dataGaLocation":551},{"button":575,"mobileIcon":580,"desktopIcon":582},{"text":576,"config":577},"/switch",{"href":578,"dataGaName":579,"dataGaLocation":551},"#contact","switch",{"altText":553,"config":581},{"src":555,"dataGaName":556,"dataGaLocation":551},{"altText":553,"config":583},{"src":584,"dataGaName":556,"dataGaLocation":551},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":586,"mobileIcon":591,"desktopIcon":593},{"text":587,"config":588},"Back to pricing",{"href":321,"dataGaName":589,"dataGaLocation":551,"icon":590},"back to pricing","GoBack",{"altText":553,"config":592},{"src":555,"dataGaName":556,"dataGaLocation":551},{"altText":553,"config":594},{"src":559,"dataGaName":556,"dataGaLocation":551},{"title":596,"titleMobile":597,"button":598,"config":603},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":214,"config":599},{"href":600,"dataGaName":601,"dataGaLocation":602},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":604,"disabled":151},"release",{"data":606},{"text":607,"source":608,"edit":614,"contribute":619,"config":624,"items":629,"minimal":838},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":609,"config":610},"View page source",{"href":611,"dataGaName":612,"dataGaLocation":613},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":615,"config":616},"Edit this page",{"href":617,"dataGaName":618,"dataGaLocation":613},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":620,"config":621},"Please contribute",{"href":622,"dataGaName":623,"dataGaLocation":613},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":625,"facebook":626,"youtube":627,"linkedin":628},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[630,677,730,774,806],{"title":319,"links":631,"subMenu":646},[632,636,641],{"text":633,"config":634},"View plans",{"href":321,"dataGaName":635,"dataGaLocation":613},"view plans",{"text":637,"config":638},"Why Premium?",{"href":639,"dataGaName":640,"dataGaLocation":613},"/pricing/premium/","why premium",{"text":642,"config":643},"Why Ultimate?",{"href":644,"dataGaName":645,"dataGaLocation":613},"/pricing/ultimate/","why ultimate",[647],{"title":648,"links":649},"Contact Us",[650,653,655,657,662,667,672],{"text":651,"config":652},"Contact sales",{"href":503,"dataGaName":182,"dataGaLocation":613},{"text":506,"config":654},{"href":508,"dataGaName":509,"dataGaLocation":613},{"text":511,"config":656},{"href":513,"dataGaName":514,"dataGaLocation":613},{"text":658,"config":659},"Status",{"href":660,"dataGaName":661,"dataGaLocation":613},"https://status.gitlab.com/","status",{"text":663,"config":664},"Terms of use",{"href":665,"dataGaName":666,"dataGaLocation":613},"/terms/","terms of use",{"text":668,"config":669},"Privacy statement",{"href":670,"dataGaName":671,"dataGaLocation":613},"/privacy/","privacy statement",{"text":673,"config":674},"Cookie preferences",{"dataGaName":675,"dataGaLocation":613,"id":676,"isOneTrustButton":154},"cookie preferences","ot-sdk-btn",{"title":219,"links":678,"subMenu":687},[679,683],{"text":680,"config":681},"DevSecOps platform",{"href":201,"dataGaName":682,"dataGaLocation":613},"devsecops platform",{"text":684,"config":685},"AI-Assisted Development",{"href":208,"dataGaName":686,"dataGaLocation":613},"ai-assisted development",[688],{"title":689,"links":690},"Topics",[691,696,701,705,710,715,720,725],{"text":692,"config":693},"CICD",{"href":694,"dataGaName":695,"dataGaLocation":613},"/topics/ci-cd/","cicd",{"text":697,"config":698},"GitOps",{"href":699,"dataGaName":700,"dataGaLocation":613},"/topics/gitops/","gitops",{"text":163,"config":702},{"href":703,"dataGaName":704,"dataGaLocation":613},"/topics/devops/","devops",{"text":706,"config":707},"Version Control",{"href":708,"dataGaName":709,"dataGaLocation":613},"/topics/version-control/","version control",{"text":711,"config":712},"DevSecOps",{"href":713,"dataGaName":714,"dataGaLocation":613},"/topics/devsecops/","devsecops",{"text":716,"config":717},"Cloud Native",{"href":718,"dataGaName":719,"dataGaLocation":613},"/topics/cloud-native/","cloud native",{"text":721,"config":722},"AI for Coding",{"href":723,"dataGaName":724,"dataGaLocation":613},"/topics/devops/ai-for-coding/","ai for coding",{"text":726,"config":727},"Agentic AI",{"href":728,"dataGaName":729,"dataGaLocation":613},"/topics/agentic-ai/","agentic ai",{"title":731,"links":732},"Solutions",[733,735,737,742,746,749,753,756,758,761,764,769],{"text":263,"config":734},{"href":258,"dataGaName":263,"dataGaLocation":613},{"text":252,"config":736},{"href":235,"dataGaName":236,"dataGaLocation":613},{"text":738,"config":739},"Agile development",{"href":740,"dataGaName":741,"dataGaLocation":613},"/solutions/agile-delivery/","agile delivery",{"text":743,"config":744},"SCM",{"href":248,"dataGaName":745,"dataGaLocation":613},"source code management",{"text":692,"config":747},{"href":241,"dataGaName":748,"dataGaLocation":613},"continuous integration & delivery",{"text":750,"config":751},"Value stream management",{"href":291,"dataGaName":752,"dataGaLocation":613},"value stream management",{"text":697,"config":754},{"href":755,"dataGaName":700,"dataGaLocation":613},"/solutions/gitops/",{"text":301,"config":757},{"href":304,"dataGaName":305,"dataGaLocation":613},{"text":759,"config":760},"Small business",{"href":310,"dataGaName":311,"dataGaLocation":613},{"text":762,"config":763},"Public sector",{"href":316,"dataGaName":317,"dataGaLocation":613},{"text":765,"config":766},"Education",{"href":767,"dataGaName":768,"dataGaLocation":613},"/solutions/education/","education",{"text":770,"config":771},"Financial services",{"href":772,"dataGaName":773,"dataGaLocation":613},"/solutions/finance/","financial services",{"title":324,"links":775},[776,778,780,782,785,787,790,792,794,796,798,800,802,804],{"text":337,"config":777},{"href":339,"dataGaName":340,"dataGaLocation":613},{"text":342,"config":779},{"href":344,"dataGaName":345,"dataGaLocation":613},{"text":347,"config":781},{"href":349,"dataGaName":350,"dataGaLocation":613},{"text":352,"config":783},{"href":354,"dataGaName":784,"dataGaLocation":613},"docs",{"text":375,"config":786},{"href":377,"dataGaName":378,"dataGaLocation":613},{"text":788,"config":789},"What's new",{"href":435,"dataGaName":436,"dataGaLocation":613},{"text":370,"config":791},{"href":372,"dataGaName":373,"dataGaLocation":613},{"text":389,"config":793},{"href":391,"dataGaName":392,"dataGaLocation":613},{"text":397,"config":795},{"href":399,"dataGaName":400,"dataGaLocation":613},{"text":402,"config":797},{"href":404,"dataGaName":405,"dataGaLocation":613},{"text":407,"config":799},{"href":409,"dataGaName":410,"dataGaLocation":613},{"text":412,"config":801},{"href":414,"dataGaName":415,"dataGaLocation":613},{"text":417,"config":803},{"href":419,"dataGaName":420,"dataGaLocation":613},{"text":422,"config":805},{"href":424,"dataGaName":425,"dataGaLocation":613},{"title":438,"links":807},[808,810,812,814,816,818,822,827,829,831,833],{"text":446,"config":809},{"href":448,"dataGaName":440,"dataGaLocation":613},{"text":451,"config":811},{"href":453,"dataGaName":454,"dataGaLocation":613},{"text":459,"config":813},{"href":461,"dataGaName":462,"dataGaLocation":613},{"text":464,"config":815},{"href":466,"dataGaName":467,"dataGaLocation":613},{"text":469,"config":817},{"href":471,"dataGaName":472,"dataGaLocation":613},{"text":819,"config":820},"Sustainability",{"href":821,"dataGaName":819,"dataGaLocation":613},"/sustainability/",{"text":823,"config":824},"Diversity, inclusion and belonging (DIB)",{"href":825,"dataGaName":826,"dataGaLocation":613},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":474,"config":828},{"href":476,"dataGaName":477,"dataGaLocation":613},{"text":484,"config":830},{"href":486,"dataGaName":487,"dataGaLocation":613},{"text":489,"config":832},{"href":491,"dataGaName":492,"dataGaLocation":613},{"text":834,"config":835},"Modern Slavery Transparency Statement",{"href":836,"dataGaName":837,"dataGaLocation":613},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":839},[840,843,846],{"text":841,"config":842},"Terms",{"href":665,"dataGaName":666,"dataGaLocation":613},{"text":844,"config":845},"Cookies",{"dataGaName":675,"dataGaLocation":613,"id":676,"isOneTrustButton":154},{"text":847,"config":848},"Privacy",{"href":670,"dataGaName":671,"dataGaLocation":613},[850,863],{"id":851,"title":7,"body":150,"config":852,"content":854,"description":150,"extension":857,"meta":858,"navigation":154,"path":859,"seo":860,"stem":861,"__hash__":862},"blogAuthors/en-us/blog/authors/vanessa-wegner.yml",{"template":853},"BlogAuthor",{"name":7,"config":855},{"headshot":133,"ctfId":856},"vwegner","yml",{},"/en-us/blog/authors/vanessa-wegner",{},"en-us/blog/authors/vanessa-wegner","g7HCM0Grx5gV_2xQsDV9uteKV2uGLbv0_gKd-wvL26M",{"id":864,"title":8,"body":150,"config":865,"content":866,"description":150,"extension":857,"meta":869,"navigation":154,"path":870,"seo":871,"stem":872,"__hash__":873},"blogAuthors/en-us/blog/authors/seth-berger.yml",{"template":853},{"name":8,"config":867},{"headshot":133,"ctfId":868},"sethgitlab",{},"/en-us/blog/authors/seth-berger",{},"en-us/blog/authors/seth-berger","L4TSipag89jmGySd05S6Dj4HesWrHoogokN66IUHmmc",[875,883,891],{"title":876,"description":877,"heroImage":878,"category":146,"date":879,"authors":880,"slug":882,"externalUrl":150},"How we overhauled GitLab navigation","Users weren't getting what they needed from our navigation. Here are the steps we took to turn that experience around.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682884/Blog/Hero%20Images/navigation.jpg","2023-08-15",[881],"Ashley Knobloch","navigation-research-blog-post",{"title":884,"description":885,"heroImage":886,"category":146,"date":887,"authors":888,"slug":890,"externalUrl":150},"Beautifying our UI: Giving GitLab build features a fresh look","Get an inside look at how we are improving the usability of GitLab build features with multiple visual design improvements.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682807/Blog/Hero%20Images/beautify.jpg","2023-07-05",[889],"Veethika Mishra","beautifying-of-our-ui",{"title":892,"description":893,"heroImage":894,"category":146,"date":895,"authors":896,"slug":898,"externalUrl":150},"4 best practices leading orgs to release software faster","GitLab's 2023 Global DevSecOps Survey illuminates the strategies that organizations deploying more frequently have in common.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663908/Blog/Hero%20Images/2023-devsecops-report-blog-banner2.png","2023-06-08",[897],"Kristina Weis","best-practices-leading-orgs-to-release-software-faster",{"promotions":900},[901,915,927,938],{"id":902,"categories":903,"header":905,"text":906,"button":907,"image":912},"ai-modernization",[904],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":908,"config":909},"Get your AI maturity score",{"href":910,"dataGaName":911,"dataGaLocation":378},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":913},{"src":914},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":916,"categories":917,"header":919,"text":906,"button":920,"image":924},"devops-modernization",[918,714],"product","Are you just managing tools or shipping innovation?",{"text":921,"config":922},"Get your DevOps maturity score",{"href":923,"dataGaName":911,"dataGaLocation":378},"/assessments/devops-modernization-assessment/",{"config":925},{"src":926},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":928,"categories":929,"header":930,"text":906,"button":931,"image":935},"security-modernization",[164],"Are you trading speed for security?",{"text":932,"config":933},"Get your security maturity score",{"href":934,"dataGaName":911,"dataGaLocation":378},"/assessments/security-modernization-assessment/",{"config":936},{"src":937},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":939,"paths":940,"header":943,"text":944,"button":945,"image":950},"github-azure-migration",[941,942],"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":946,"config":947},"See how GitLab compares to GitHub",{"href":948,"dataGaName":949,"dataGaLocation":378},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":951},{"src":926},{"header":953,"blurb":954,"button":955,"secondaryButton":960},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":956,"config":957},"Get your free trial",{"href":958,"dataGaName":177,"dataGaLocation":959},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":651,"config":961},{"href":503,"dataGaName":182,"dataGaLocation":959},1786803774548]