[{"data":1,"prerenderedAt":879},["ShallowReactive",2],{"/en-us/blog/authors/michael-friedrich":3,"navigation-en-us":20,"banner-en-us":420,"footer-en-us":430,"blog-author-posts-en-us-michael-friedrich":672},{"id":4,"title":5,"body":6,"config":7,"content":9,"description":6,"extension":13,"meta":14,"navigation":15,"path":16,"seo":17,"stem":18,"__hash__":19},"blogAuthors/en-us/blog/authors/michael-friedrich.yml","Michael Friedrich",null,{"template":8},"BlogAuthor",{"name":5,"config":10},{"headshot":11,"ctfId":12},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659879/Blog/Author%20Headshots/dnsmichi-headshot.jpg","dnsmichi","yml",{},true,"/en-us/blog/authors/michael-friedrich",{},"en-us/blog/authors/michael-friedrich","lJ-nfRIhdG49Arfrxdn1Vv4UppwD51BB13S3HwIswt4",{"data":21},{"logo":22,"freeTrial":27,"sales":32,"login":37,"items":42,"search":350,"minimal":381,"duo":400,"pricingDeployment":410},{"config":23},{"href":24,"dataGaName":25,"dataGaLocation":26},"/","gitlab logo","header",{"text":28,"config":29},"Get free trial",{"href":30,"dataGaName":31,"dataGaLocation":26},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":33,"config":34},"Talk to sales",{"href":35,"dataGaName":36,"dataGaLocation":26},"/sales/","sales",{"text":38,"config":39},"Sign in",{"href":40,"dataGaName":41,"dataGaLocation":26},"https://gitlab.com/users/sign_in/","sign in",[43,70,165,170,271,331],{"text":44,"config":45,"cards":47},"Platform",{"dataNavLevelOne":46},"platform",[48,54,62],{"title":44,"description":49,"link":50},"The intelligent orchestration platform for DevSecOps",{"text":51,"config":52},"Explore our Platform",{"href":53,"dataGaName":46,"dataGaLocation":26},"/platform/",{"title":55,"description":56,"link":57},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":58,"config":59},"Meet GitLab Duo",{"href":60,"dataGaName":61,"dataGaLocation":26},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":63,"description":64,"link":65},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":66,"config":67},"Learn more",{"href":68,"dataGaName":69,"dataGaLocation":26},"/why-gitlab/","why gitlab",{"text":71,"left":15,"config":72,"link":74,"lists":78,"footer":147},"Product",{"dataNavLevelOne":73},"solutions",{"text":75,"config":76},"View all Solutions",{"href":77,"dataGaName":73,"dataGaLocation":26},"/solutions/",[79,103,126],{"title":80,"description":81,"link":82,"items":87},"Automation","CI/CD and automation to accelerate deployment",{"config":83},{"icon":84,"href":85,"dataGaName":86,"dataGaLocation":26},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[88,92,95,99],{"text":89,"config":90},"CI/CD",{"href":91,"dataGaLocation":26,"dataGaName":89},"/solutions/continuous-integration/",{"text":55,"config":93},{"href":60,"dataGaLocation":26,"dataGaName":94},"gitlab duo agent platform - product menu",{"text":96,"config":97},"Source Code Management",{"href":98,"dataGaLocation":26,"dataGaName":96},"/solutions/source-code-management/",{"text":100,"config":101},"Automated Software Delivery",{"href":85,"dataGaLocation":26,"dataGaName":102},"Automated software delivery",{"title":104,"description":105,"link":106,"items":111},"Security","Deliver code faster without compromising security",{"config":107},{"href":108,"dataGaName":109,"dataGaLocation":26,"icon":110},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[112,116,121],{"text":113,"config":114},"Application Security Testing",{"href":108,"dataGaName":115,"dataGaLocation":26},"Application security testing",{"text":117,"config":118},"Software Supply Chain Security",{"href":119,"dataGaLocation":26,"dataGaName":120},"/solutions/supply-chain/","Software supply chain security",{"text":122,"config":123},"Software Compliance",{"href":124,"dataGaName":125,"dataGaLocation":26},"/solutions/software-compliance/","software compliance",{"title":127,"link":128,"items":133},"Measurement",{"config":129},{"icon":130,"href":131,"dataGaName":132,"dataGaLocation":26},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[134,138,142],{"text":135,"config":136},"Visibility & Measurement",{"href":131,"dataGaLocation":26,"dataGaName":137},"Visibility and Measurement",{"text":139,"config":140},"Value Stream Management",{"href":141,"dataGaLocation":26,"dataGaName":139},"/solutions/value-stream-management/",{"text":143,"config":144},"Analytics & Insights",{"href":145,"dataGaLocation":26,"dataGaName":146},"/solutions/analytics-and-insights/","Analytics and insights",{"title":148,"items":149},"GitLab for",[150,155,160],{"text":151,"config":152},"Enterprise",{"href":153,"dataGaLocation":26,"dataGaName":154},"/enterprise/","enterprise",{"text":156,"config":157},"Small Business",{"href":158,"dataGaLocation":26,"dataGaName":159},"/small-business/","small business",{"text":161,"config":162},"Public Sector",{"href":163,"dataGaLocation":26,"dataGaName":164},"/solutions/public-sector/","public sector",{"text":166,"config":167},"Pricing",{"href":168,"dataGaName":169,"dataGaLocation":26,"dataNavLevelOne":169},"/pricing/","pricing",{"text":171,"config":172,"link":174,"lists":178,"feature":258},"Resources",{"dataNavLevelOne":173},"resources",{"text":175,"config":176},"View all resources",{"href":177,"dataGaName":173,"dataGaLocation":26},"/resources/",[179,212,230],{"title":180,"items":181},"Getting started",[182,187,192,197,202,207],{"text":183,"config":184},"Install",{"href":185,"dataGaName":186,"dataGaLocation":26},"/install/","install",{"text":188,"config":189},"Quick start guides",{"href":190,"dataGaName":191,"dataGaLocation":26},"/get-started/","quick setup checklists",{"text":193,"config":194},"Learn",{"href":195,"dataGaLocation":26,"dataGaName":196},"https://university.gitlab.com/","learn",{"text":198,"config":199},"Product documentation",{"href":200,"dataGaName":201,"dataGaLocation":26},"https://docs.gitlab.com/","product documentation",{"text":203,"config":204},"Best practice videos",{"href":205,"dataGaName":206,"dataGaLocation":26},"/getting-started-videos/","best practice videos",{"text":208,"config":209},"Integrations",{"href":210,"dataGaName":211,"dataGaLocation":26},"/integrations/","integrations",{"title":213,"items":214},"Discover",[215,220,225],{"text":216,"config":217},"Customer success stories",{"href":218,"dataGaName":219,"dataGaLocation":26},"/customers/","customer success stories",{"text":221,"config":222},"Blog",{"href":223,"dataGaName":224,"dataGaLocation":26},"/blog/","blog",{"text":226,"config":227},"Remote",{"href":228,"dataGaName":229,"dataGaLocation":26},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":231,"items":232},"Connect",[233,238,243,248,253],{"text":234,"config":235},"GitLab Services",{"href":236,"dataGaName":237,"dataGaLocation":26},"/services/","services",{"text":239,"config":240},"Community",{"href":241,"dataGaName":242,"dataGaLocation":26},"/community/","community",{"text":244,"config":245},"Forum",{"href":246,"dataGaName":247,"dataGaLocation":26},"https://forum.gitlab.com/","forum",{"text":249,"config":250},"Events",{"href":251,"dataGaName":252,"dataGaLocation":26},"/events/","events",{"text":254,"config":255},"Partners",{"href":256,"dataGaName":257,"dataGaLocation":26},"/partners/","partners",{"backgroundColor":259,"textColor":260,"text":261,"image":262,"link":266},"#2f2a6b","#fff","Insights for the future of software development",{"altText":263,"config":264},"the source promo card",{"src":265},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758208064/dzl0dbift9xdizyelkk4.svg",{"text":267,"config":268},"Read the latest",{"href":269,"dataGaName":270,"dataGaLocation":26},"/the-source/","the source",{"text":272,"config":273,"lists":275},"Company",{"dataNavLevelOne":274},"company",[276],{"items":277},[278,283,289,291,296,301,306,311,316,321,326],{"text":279,"config":280},"About",{"href":281,"dataGaName":282,"dataGaLocation":26},"/company/","about",{"text":284,"config":285,"footerGa":288},"Jobs",{"href":286,"dataGaName":287,"dataGaLocation":26},"/jobs/","jobs",{"dataGaName":287},{"text":249,"config":290},{"href":251,"dataGaName":252,"dataGaLocation":26},{"text":292,"config":293},"Leadership",{"href":294,"dataGaName":295,"dataGaLocation":26},"/company/team/e-group/","leadership",{"text":297,"config":298},"Team",{"href":299,"dataGaName":300,"dataGaLocation":26},"/company/team/","team",{"text":302,"config":303},"Handbook",{"href":304,"dataGaName":305,"dataGaLocation":26},"https://handbook.gitlab.com/","handbook",{"text":307,"config":308},"Investor relations",{"href":309,"dataGaName":310,"dataGaLocation":26},"https://ir.gitlab.com/","investor relations",{"text":312,"config":313},"Trust Center",{"href":314,"dataGaName":315,"dataGaLocation":26},"/security/","trust center",{"text":317,"config":318},"AI Transparency Center",{"href":319,"dataGaName":320,"dataGaLocation":26},"/ai-transparency-center/","ai transparency center",{"text":322,"config":323},"Newsletter",{"href":324,"dataGaName":325,"dataGaLocation":26},"/company/contact/#contact-forms","newsletter",{"text":327,"config":328},"Press",{"href":329,"dataGaName":330,"dataGaLocation":26},"/press/","press",{"text":332,"config":333,"lists":334},"Contact us",{"dataNavLevelOne":274},[335],{"items":336},[337,340,345],{"text":33,"config":338},{"href":35,"dataGaName":339,"dataGaLocation":26},"talk to sales",{"text":341,"config":342},"Support portal",{"href":343,"dataGaName":344,"dataGaLocation":26},"https://support.gitlab.com","support portal",{"text":346,"config":347},"Customer portal",{"href":348,"dataGaName":349,"dataGaLocation":26},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":351,"login":352,"suggestions":359},"Close",{"text":353,"link":354},"To search repositories and projects, login to",{"text":355,"config":356},"gitlab.com",{"href":40,"dataGaName":357,"dataGaLocation":358},"search login","search",{"text":360,"default":361},"Suggestions",[362,364,368,370,374,378],{"text":55,"config":363},{"href":60,"dataGaName":55,"dataGaLocation":358},{"text":365,"config":366},"Code Suggestions (AI)",{"href":367,"dataGaName":365,"dataGaLocation":358},"/solutions/code-suggestions/",{"text":89,"config":369},{"href":91,"dataGaName":89,"dataGaLocation":358},{"text":371,"config":372},"GitLab on AWS",{"href":373,"dataGaName":371,"dataGaLocation":358},"/partners/technology-partners/aws/",{"text":375,"config":376},"GitLab on Google Cloud",{"href":377,"dataGaName":375,"dataGaLocation":358},"/partners/technology-partners/google-cloud-platform/",{"text":379,"config":380},"Why GitLab?",{"href":68,"dataGaName":379,"dataGaLocation":358},{"freeTrial":382,"mobileIcon":387,"desktopIcon":392,"secondaryButton":395},{"text":383,"config":384},"Start free trial",{"href":385,"dataGaName":31,"dataGaLocation":386},"https://gitlab.com/-/trials/new/","nav",{"altText":388,"config":389},"Gitlab Icon",{"src":390,"dataGaName":391,"dataGaLocation":386},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":388,"config":393},{"src":394,"dataGaName":391,"dataGaLocation":386},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":396,"config":397},"Get Started",{"href":398,"dataGaName":399,"dataGaLocation":386},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/compare/gitlab-vs-github/","get started",{"freeTrial":401,"mobileIcon":406,"desktopIcon":408},{"text":402,"config":403},"Learn more about GitLab Duo",{"href":404,"dataGaName":405,"dataGaLocation":386},"/gitlab-duo/","gitlab duo",{"altText":388,"config":407},{"src":390,"dataGaName":391,"dataGaLocation":386},{"altText":388,"config":409},{"src":394,"dataGaName":391,"dataGaLocation":386},{"freeTrial":411,"mobileIcon":416,"desktopIcon":418},{"text":412,"config":413},"Back to pricing",{"href":168,"dataGaName":414,"dataGaLocation":386,"icon":415},"back to pricing","GoBack",{"altText":388,"config":417},{"src":390,"dataGaName":391,"dataGaLocation":386},{"altText":388,"config":419},{"src":394,"dataGaName":391,"dataGaLocation":386},{"title":421,"button":422,"config":427},"See how agentic AI transforms software delivery",{"text":423,"config":424},"Watch GitLab Transcend now",{"href":425,"dataGaName":426,"dataGaLocation":26},"/events/transcend/virtual/","transcend event",{"layout":428,"icon":429},"release","AiStar",{"data":431},{"text":432,"source":433,"edit":439,"contribute":444,"config":449,"items":454,"minimal":661},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":434,"config":435},"View page source",{"href":436,"dataGaName":437,"dataGaLocation":438},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":440,"config":441},"Edit this page",{"href":442,"dataGaName":443,"dataGaLocation":438},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":445,"config":446},"Please contribute",{"href":447,"dataGaName":448,"dataGaLocation":438},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":450,"facebook":451,"youtube":452,"linkedin":453},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[455,502,556,600,627],{"title":166,"links":456,"subMenu":471},[457,461,466],{"text":458,"config":459},"View plans",{"href":168,"dataGaName":460,"dataGaLocation":438},"view plans",{"text":462,"config":463},"Why Premium?",{"href":464,"dataGaName":465,"dataGaLocation":438},"/pricing/premium/","why premium",{"text":467,"config":468},"Why Ultimate?",{"href":469,"dataGaName":470,"dataGaLocation":438},"/pricing/ultimate/","why ultimate",[472],{"title":473,"links":474},"Contact Us",[475,478,480,482,487,492,497],{"text":476,"config":477},"Contact sales",{"href":35,"dataGaName":36,"dataGaLocation":438},{"text":341,"config":479},{"href":343,"dataGaName":344,"dataGaLocation":438},{"text":346,"config":481},{"href":348,"dataGaName":349,"dataGaLocation":438},{"text":483,"config":484},"Status",{"href":485,"dataGaName":486,"dataGaLocation":438},"https://status.gitlab.com/","status",{"text":488,"config":489},"Terms of use",{"href":490,"dataGaName":491,"dataGaLocation":438},"/terms/","terms of use",{"text":493,"config":494},"Privacy statement",{"href":495,"dataGaName":496,"dataGaLocation":438},"/privacy/","privacy statement",{"text":498,"config":499},"Cookie preferences",{"dataGaName":500,"dataGaLocation":438,"id":501,"isOneTrustButton":15},"cookie preferences","ot-sdk-btn",{"title":71,"links":503,"subMenu":512},[504,508],{"text":505,"config":506},"DevSecOps platform",{"href":53,"dataGaName":507,"dataGaLocation":438},"devsecops platform",{"text":509,"config":510},"AI-Assisted Development",{"href":404,"dataGaName":511,"dataGaLocation":438},"ai-assisted development",[513],{"title":514,"links":515},"Topics",[516,521,526,531,536,541,546,551],{"text":517,"config":518},"CICD",{"href":519,"dataGaName":520,"dataGaLocation":438},"/topics/ci-cd/","cicd",{"text":522,"config":523},"GitOps",{"href":524,"dataGaName":525,"dataGaLocation":438},"/topics/gitops/","gitops",{"text":527,"config":528},"DevOps",{"href":529,"dataGaName":530,"dataGaLocation":438},"/topics/devops/","devops",{"text":532,"config":533},"Version Control",{"href":534,"dataGaName":535,"dataGaLocation":438},"/topics/version-control/","version control",{"text":537,"config":538},"DevSecOps",{"href":539,"dataGaName":540,"dataGaLocation":438},"/topics/devsecops/","devsecops",{"text":542,"config":543},"Cloud Native",{"href":544,"dataGaName":545,"dataGaLocation":438},"/topics/cloud-native/","cloud native",{"text":547,"config":548},"AI for Coding",{"href":549,"dataGaName":550,"dataGaLocation":438},"/topics/devops/ai-for-coding/","ai for coding",{"text":552,"config":553},"Agentic AI",{"href":554,"dataGaName":555,"dataGaLocation":438},"/topics/agentic-ai/","agentic ai",{"title":557,"links":558},"Solutions",[559,561,563,568,572,575,579,582,584,587,590,595],{"text":113,"config":560},{"href":108,"dataGaName":113,"dataGaLocation":438},{"text":102,"config":562},{"href":85,"dataGaName":86,"dataGaLocation":438},{"text":564,"config":565},"Agile development",{"href":566,"dataGaName":567,"dataGaLocation":438},"/solutions/agile-delivery/","agile delivery",{"text":569,"config":570},"SCM",{"href":98,"dataGaName":571,"dataGaLocation":438},"source code management",{"text":517,"config":573},{"href":91,"dataGaName":574,"dataGaLocation":438},"continuous integration & delivery",{"text":576,"config":577},"Value stream management",{"href":141,"dataGaName":578,"dataGaLocation":438},"value stream management",{"text":522,"config":580},{"href":581,"dataGaName":525,"dataGaLocation":438},"/solutions/gitops/",{"text":151,"config":583},{"href":153,"dataGaName":154,"dataGaLocation":438},{"text":585,"config":586},"Small business",{"href":158,"dataGaName":159,"dataGaLocation":438},{"text":588,"config":589},"Public sector",{"href":163,"dataGaName":164,"dataGaLocation":438},{"text":591,"config":592},"Education",{"href":593,"dataGaName":594,"dataGaLocation":438},"/solutions/education/","education",{"text":596,"config":597},"Financial services",{"href":598,"dataGaName":599,"dataGaLocation":438},"/solutions/finance/","financial services",{"title":171,"links":601},[602,604,606,608,611,613,615,617,619,621,623,625],{"text":183,"config":603},{"href":185,"dataGaName":186,"dataGaLocation":438},{"text":188,"config":605},{"href":190,"dataGaName":191,"dataGaLocation":438},{"text":193,"config":607},{"href":195,"dataGaName":196,"dataGaLocation":438},{"text":198,"config":609},{"href":200,"dataGaName":610,"dataGaLocation":438},"docs",{"text":221,"config":612},{"href":223,"dataGaName":224,"dataGaLocation":438},{"text":216,"config":614},{"href":218,"dataGaName":219,"dataGaLocation":438},{"text":226,"config":616},{"href":228,"dataGaName":229,"dataGaLocation":438},{"text":234,"config":618},{"href":236,"dataGaName":237,"dataGaLocation":438},{"text":239,"config":620},{"href":241,"dataGaName":242,"dataGaLocation":438},{"text":244,"config":622},{"href":246,"dataGaName":247,"dataGaLocation":438},{"text":249,"config":624},{"href":251,"dataGaName":252,"dataGaLocation":438},{"text":254,"config":626},{"href":256,"dataGaName":257,"dataGaLocation":438},{"title":272,"links":628},[629,631,633,635,637,639,641,645,650,652,654,656],{"text":279,"config":630},{"href":281,"dataGaName":274,"dataGaLocation":438},{"text":284,"config":632},{"href":286,"dataGaName":287,"dataGaLocation":438},{"text":292,"config":634},{"href":294,"dataGaName":295,"dataGaLocation":438},{"text":297,"config":636},{"href":299,"dataGaName":300,"dataGaLocation":438},{"text":302,"config":638},{"href":304,"dataGaName":305,"dataGaLocation":438},{"text":307,"config":640},{"href":309,"dataGaName":310,"dataGaLocation":438},{"text":642,"config":643},"Sustainability",{"href":644,"dataGaName":642,"dataGaLocation":438},"/sustainability/",{"text":646,"config":647},"Diversity, inclusion and belonging (DIB)",{"href":648,"dataGaName":649,"dataGaLocation":438},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":312,"config":651},{"href":314,"dataGaName":315,"dataGaLocation":438},{"text":322,"config":653},{"href":324,"dataGaName":325,"dataGaLocation":438},{"text":327,"config":655},{"href":329,"dataGaName":330,"dataGaLocation":438},{"text":657,"config":658},"Modern Slavery Transparency Statement",{"href":659,"dataGaName":660,"dataGaLocation":438},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":662},[663,666,669],{"text":664,"config":665},"Terms",{"href":490,"dataGaName":491,"dataGaLocation":438},{"text":667,"config":668},"Cookies",{"dataGaName":500,"dataGaLocation":438,"id":501,"isOneTrustButton":15},{"text":670,"config":671},"Privacy",{"href":495,"dataGaName":496,"dataGaLocation":438},[673,683,693,703,712,722,731,740,749,756,765,773,781,789,799,807,815,823,832,842,852,861,870],{"content":674,"config":681},{"title":675,"heroImage":676,"category":677,"description":678,"authors":679,"date":680},"Custom rules in GitLab Duo Agentic Chat for greater developer efficiency","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099203/Blog/Hero%20Images/Blog/Hero%20Images/blog-image-template-1800x945%20%2820%29_2bJGC5ZP3WheoqzlLT05C5_1750099203484.png","engineering","Discover how AI can understand your codebase, follow your conventions, and generate production-ready code with minimal review cycles.",[5],"2025-08-12",{"slug":682,"externalUrl":-1},"custom-rules-duo-agentic-chat-deep-dive",{"content":684,"config":691},{"title":685,"heroImage":686,"category":687,"description":688,"authors":689,"date":690},"Refactor code into modern languages with AI-powered GitLab Duo ","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749662465/Blog/Hero%20Images/GitLab_Duo_Workflow_Unified_Data_Store__1_.png","ai-ml","This detailed tutorial helps developers use AI to modernize code by switching to a new programming language and gain knowledge about new features in the same language.",[5],"2024-08-26",{"slug":692,"externalUrl":-1},"refactor-code-into-modern-languages-with-ai-powered-gitlab-duo",{"content":694,"config":701},{"title":695,"heroImage":696,"category":687,"description":697,"authors":698,"date":700},"Developing GitLab Duo: Use AI to remediate security vulnerabilities ","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098106/Blog/Hero%20Images/Blog/Hero%20Images/blog-hero-banner-1-0178-820x470-fy25_7JlF3WlEkswGQbcTe8DOTB_1750098106040.png","This tutorial shows how GitLab Duo Vulnerability Explanation and GitLab Duo Vulnerability Resolution, along with our other AI-powered features, can help to address vulnerabilities quickly.",[5,699],"Alana Bellucci","2024-07-15",{"slug":702,"externalUrl":-1},"developing-gitlab-duo-use-ai-to-remediate-security-vulnerabilities",{"content":704,"config":710},{"title":705,"heroImage":706,"category":687,"description":707,"authors":708,"date":709},"Top tips for efficient AI-powered Code Suggestions with GitLab Duo","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749669095/Blog/Hero%20Images/gitlabduo.png","Explore best practices  for using Code Suggestions and how to combine it with our other AI features to greatly improve the developer experience (includes real-world exercises).",[5],"2024-06-11",{"slug":711,"externalUrl":-1},"top-tips-for-efficient-ai-powered-code-suggestions-with-gitlab-duo",{"content":713,"config":720},{"title":714,"heroImage":715,"category":687,"description":716,"authors":717,"date":719},"Developing GitLab Duo: Blending AI and Root Cause Analysis to fix CI/CD pipelines","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097321/Blog/Hero%20Images/Blog/Hero%20Images/blog-hero-banner-1-0178-820x470-fy25_7JlF3WlEkswGQbcTe8DOTB_1750097321081.png","Discover how we've infused Root Cause Analysis with AI to help remedy broken CI/CD pipelines, including example scenarios and take-away exercises.",[718,5],"Rutvik Shah","2024-06-06",{"slug":721,"externalUrl":-1},"developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd",{"content":723,"config":729},{"title":724,"heroImage":725,"category":687,"description":726,"authors":727,"date":728},"10 best practices for using AI-powered GitLab Duo Chat","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097639/Blog/Hero%20Images/Blog/Hero%20Images/blog-image-template-1800x945%20%281%29_77JeTV9gAmbXM0224acirV_1750097638765.png","Explore tips and tricks for integrating GitLab Duo Chat into your AI-powered DevSecOps workflows. Plus, expert advice on how to refine chat prompts for the best results.",[5],"2024-04-02",{"slug":730,"externalUrl":-1},"10-best-practices-for-using-ai-powered-gitlab-duo-chat",{"content":732,"config":738},{"title":733,"heroImage":734,"category":687,"description":735,"authors":736,"date":737},"Learning Python with a little help from AI","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663918/Blog/Hero%20Images/aipower.jpg","Use this guided tutorial, along with GitLab Duo Code Suggestions, to learn a new programming language.",[5],"2023-11-09",{"slug":739,"externalUrl":-1},"learning-python-with-a-little-help-from-ai-code-suggestions",{"content":741,"config":747},{"title":742,"heroImage":743,"category":687,"description":744,"authors":745,"date":746},"Learn advanced Rust programming with a little help from AI","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749662439/Blog/Hero%20Images/codewithheart.png","Use this guided tutorial, along with AI-powered GitLab Duo Code Suggestions, to continue learning advanced Rust programming.",[5],"2023-10-12",{"slug":748,"externalUrl":-1},"learn-advanced-rust-programming-with-a-little-help-from-ai-code-suggestions",{"content":750,"config":754},{"title":751,"heroImage":734,"category":687,"description":735,"authors":752,"date":753},"Learning Rust with a little help from AI",[5],"2023-08-10",{"slug":755,"externalUrl":-1},"learning-rust-with-a-little-help-from-ai-code-suggestions-getting-started",{"content":757,"config":763},{"title":758,"heroImage":759,"category":677,"description":760,"authors":761,"date":762},"Set up your infrastructure for on-demand, cloud-based development environments in GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659883/Blog/Hero%20Images/post-cover-image.jpg","Learn how to set up the requirements, manage Kubernetes clusters in different clouds, create the first workspaces and custom images, and get tips and troubleshooting.",[5],"2023-07-13",{"slug":764,"externalUrl":-1},"set-up-infrastructure-for-cloud-development-environments",{"content":766,"config":771},{"title":767,"heroImage":759,"category":677,"description":768,"authors":769,"date":770},"How GitLab can help mitigate deletion of open source container images on Docker Hub","CI/CD and Kubernetes deployments can be affected by Docker Hub tier changes. This tutorial walks through analysis, mitigations, and long-term solutions.",[5],"2023-03-16",{"slug":772,"externalUrl":-1},"how-gitlab-can-help-mitigate-deletion-open-source-images-docker-hub",{"content":774,"config":779},{"title":775,"heroImage":759,"category":677,"description":776,"authors":777,"date":778},"Efficient DevSecOps workflows: Hands-on python-gitlab API automation","The python-gitlab library is a useful abstraction layer for the GitLab API. Dive into hands-on examples and best practices in this tutorial.",[5],"2023-02-01",{"slug":780,"externalUrl":-1},"efficient-devsecops-workflows-hands-on-python-gitlab-api-automation",{"content":782,"config":787},{"title":783,"heroImage":759,"category":677,"description":784,"authors":785,"date":786},"How to continuously test web apps and APIs with Hurl and GitLab CI/CD","Hurl as a CLI tool can be integrated into the DevSecOps platform to continuously verify, test, and monitor targets. It also offers integrated unit test reports in GitLab CI/CD.",[5],"2022-12-14",{"slug":788,"externalUrl":-1},"how-to-continously-test-web-apps-apis-with-hurl-and-gitlab-ci-cd",{"content":790,"config":797},{"title":791,"heroImage":792,"category":793,"description":794,"authors":795,"date":796},"Fantastic Infrastructure as Code security attacks and how to find them","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749667482/Blog/Hero%20Images/cover-image-unsplash.jpg","insights","Learn about possible attack scenarios in Infrastructure as Code and GitOps environments, evaluate tools and scanners with Terraform, Kubernetes, etc., and more.",[5],"2022-02-17",{"slug":798,"externalUrl":-1},"fantastic-infrastructure-as-code-security-attacks-and-how-to-find-them",{"content":800,"config":805},{"title":801,"heroImage":792,"category":540,"description":802,"authors":803,"date":804},"Top ten GitLab hacks for all stages of the DevOps Platform","Get the most out of the GitLab DevOps Platform with our ten best tips for enhanced productivity.",[5],"2021-10-19",{"slug":806,"externalUrl":-1},"top-10-gitlab-hacks",{"content":808,"config":813},{"title":809,"heroImage":792,"category":274,"description":810,"authors":811,"date":812},"5 Great Phabricator features that inspired GitLab","Take a deep dive into the Phabricator features that prompted GitLab to build new tooling around automation, integrated CI, and better code reviews.",[5],"2021-08-13",{"slug":814,"externalUrl":-1},"five-great-phabricator-features-inspired-gitlab",{"content":816,"config":821},{"title":817,"heroImage":792,"category":677,"description":818,"authors":819,"date":820},"How teams can use the Gitpod integration in GitLab to speed up their development process","Learn about Gitpod as cloud development environment, and how its integration into Gitpod helps teams to get more efficient in their DevOps lifecycle.",[5],"2021-07-19",{"slug":822,"externalUrl":-1},"teams-gitpod-integration-gitlab-speed-up-development",{"content":824,"config":830},{"title":825,"heroImage":826,"category":677,"description":827,"authors":828,"date":829},"Tips for productive DevOps workflows: JSON formatting with jq and CI/CD linting automation","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749681979/Blog/Hero%20Images/gert-boers-unsplash.jpg","Learn how to filter in JSON data structures and interact with the REST API. Use the GitLab API to lint your CI/CD configuration and dive into Git hooks speeding up your workflows.",[5],"2021-04-21",{"slug":831,"externalUrl":-1},"devops-workflows-json-format-jq-ci-cd-lint",{"content":833,"config":840},{"title":834,"heroImage":835,"category":836,"description":837,"authors":838,"date":839},"We are very far from a better Heroku for production apps in a hyper cloud","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749672405/Blog/Hero%20Images/spacex-unsplash.jpg","unfiltered","GitLab is building Heroku for production apps in hyper clouds, integrated into your DevSecOps workflow: The 5 minute production app.",[5],"2021-03-22",{"slug":841,"externalUrl":-1},"we-are-building-a-better-heroku",{"content":843,"config":850},{"title":844,"heroImage":845,"category":677,"description":846,"authors":847,"date":849},"10 tips to make you a productive GitLab user","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749666717/Blog/Hero%20Images/cover-image.jpg","Learn how quick actions can make you a more efficient GitLab user.",[5,848],"Roman Kuba","2021-02-18",{"slug":851,"externalUrl":-1},"improve-your-gitlab-productivity-with-these-10-tips",{"content":853,"config":859},{"title":854,"heroImage":855,"category":836,"description":856,"authors":857,"date":858},"A journey from the first code to CI/CD deployments in 5 minutes?","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749665823/Blog/Hero%20Images/snow-speed-unsplash.jpg","From writing, building, and testing code to reviewing, releasing, and deploying in 5 minutes. Is this possible? Learn which hurdles you might encounter and how to solve them. Spoiler: Without Kubernetes.",[5],"2020-12-15",{"slug":860,"externalUrl":-1},"first-code-to-ci-cd-deployments-in-5-minutes",{"content":862,"config":868},{"title":863,"heroImage":864,"category":677,"description":865,"authors":866,"date":867},"How to make Docker Hub rate limit monitoring a breeze","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749681749/Blog/Hero%20Images/vidarnm-unsplash.jpg","Docker Hub Rate Limits are enforced and we need to find ways to monitor the remaining pull requests. Explore some ways to create a monitoring plugin for Nagios/Icinga/Sensu/Zabbix and test-drive a new Prometheus exporter in combination with Grafana.",[5],"2020-11-18",{"slug":869,"externalUrl":-1},"docker-hub-rate-limit-monitoring",{"content":871,"config":877},{"title":872,"heroImage":873,"category":836,"description":874,"authors":875,"date":876},"dotfiles - Document and automate your Macbook setup","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749664102/Blog/Hero%20Images/gitlab-values-cover.png","Document and automate your Macbook setup with installing tools and well-known configuration settings. Follow best practices from a developer’s point of view.",[5],"2020-04-17",{"slug":878,"externalUrl":-1},"dotfiles-document-and-automate-your-macbook-setup",1772652060769]