[{"data":1,"prerenderedAt":1042},["ShallowReactive",2],{"/blog/how-to-include-file-references-in-your-ci-cd-components":3,"navigation-en-us":265,"banner-en-us":691,"footer-en-us":701,"blog-post-authors-en-us-Itzik Gan Baruch":945,"blog-related-posts-en-us-how-to-include-file-references-in-your-ci-cd-components":960,"blog-promotions-en-us":979,"next-steps-en-us":1032},{"id":4,"title":5,"authors":6,"body":8,"category":243,"date":244,"description":245,"extension":246,"externalUrl":247,"faq":247,"featured":248,"heroImage":249,"meta":250,"navigation":251,"path":252,"seo":253,"slug":257,"stem":258,"tags":259,"template":263,"updatedDate":247,"__hash__":264},"blogPosts/en-us/blog/how-to-include-file-references-in-your-ci-cd-components.md","How to include file references in your CI/CD components",[7],"Itzik Gan Baruch",{"type":9,"value":10,"toc":234},"minimark",[11,15,31,40,43,46,51,59,63,70,74,87,91,94,101,115,125,134,140,149,154,159,166,174,179,182,187,195,206,210],[12,13,14],"p",{},"I’m frequently asked whether included CI/CD components can reference additional files stored outside of the pipeline repository. While including components in your configuration is straightforward since they’re just YAML, many users want to know if those included components can access and execute additional files referenced by the components, like shell scripts or other dependencies.",[12,16,17,18,24,25,30],{},"This challenge has been a common topic of discussion in threads across the ",[19,20,23],"a",{"href":21,"rel":22},"https://forum.gitlab.com/t/gitlab-ci-includes-a-file-from-another-project-that-executes-a-script-file/111698",[],"GitLab Forum"," and ",[19,26,29],{"href":27,"rel":28},"https://www.reddit.com/r/gitlab/comments/18ma13x/gitlab_components_question/",[],"Reddit",".",[12,32,33,34,39],{},"Now for the good news: CI/CD components not only allow you to reuse pipeline configurations, saving time and effort, but you can also go a step further. With the new ",[19,35,38],{"href":36,"rel":37},"https://about.gitlab.com/blog/introducing-ci-cd-steps-a-programming-language-for-devsecops-automation/",[],"CI/CD Steps",", you can directly reuse centralized automation scripts and dependencies in your pipelines. You'll gain even greater flexibility, making your pipelines more powerful and adaptable than ever.",[12,41,42],{},"By storing your scripts in a central location and wrapping them in CI/CD Steps, you can easily call these steps from your CI/CD components. This eliminates the need to duplicate scripts across multiple repositories and CI/CD configurations, streamlining your workflow and reducing redundancy.",[12,44,45],{},"Before we dive into the step-by-step guide, let’s briefly explore what CI/CD components and CI/CD Steps are.",[47,48,50],"h2",{"id":49},"what-are-cicd-components","What are CI/CD components?",[12,52,53,58],{},[19,54,57],{"href":55,"rel":56},"https://docs.gitlab.com/ci/components/",[],"CI/CD components"," are reusable units of pipeline configurations that get included in a pipeline when it’s created. The components bring additional jobs into the pipeline, however they can’t bring additional files as such reusable scripts.",[47,60,62],{"id":61},"what-are-cicd-steps","What are CI/CD Steps?",[12,64,65,69],{},[19,66,38],{"href":67,"rel":68},"https://docs.gitlab.com/ci/functions/",[]," are reusable units of a job. Each step defines structured inputs and outputs that can be consumed by other steps. Steps can come from local files, GitLab.com repositories, or any other Git source. Steps offer a structured alternative to shell scripts for running jobs. They are modular, can be composed, tested, and easily reused, providing greater flexibility and maintainability.",[47,71,73],{"id":72},"what-are-the-differences-between-cicd-steps-and-cicd-components","What are the differences between CI/CD Steps and CI/CD components?",[75,76,77,81,84],"ul",{},[78,79,80],"li",{},"Component and step definitions look very similar but they take effect at different phases in pipeline execution.",[78,82,83],{},"Components are used when a pipeline is created while steps are used when individual jobs are running.",[78,85,86],{},"When a step is running, the whole repository is being downloaded into the job environment along with extra files.",[47,88,90],{"id":89},"a-step-by-step-guide","A step-by-step guide",[12,92,93],{},"Here is how CI/CD Steps and Components work together to access additional files.",[12,95,96],{},[97,98],"img",{"alt":99,"src":100},"CI/CD Steps flow diagram","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749675829/Blog/Content%20Images/steps-diagram-for-blog.png",[12,102,103,104,108,109,114],{},"This diagram illustrates the process flow: Jobs defined within components are imported into the pipeline configuration (",[105,106,107],"code",{},".gitlab-ci.yml",") when the pipeline is created. During the pipeline's execution, a job’s steps are executed, and the entire Git repository is downloaded to the ",[19,110,113],{"href":111,"rel":112},"https://docs.gitlab.com/ci/functions/#using-steps",[],"Step runner"," within the job’s context. This ensures that references to dependencies function correctly.",[12,116,117],{},[118,119,120,121,124],"strong",{},"1. Define a component with ",[105,122,123],{},"run"," keyword that runs CI/CD Steps",[12,126,127,128,133],{},"Run is a new keyword that supports running steps, see the example code below. You can use ",[19,129,132],{"href":130,"rel":131},"https://about.gitlab.com/blog/introducing-the-gitlab-ci-cd-catalog-beta/",[],"this guide"," to learn more on how to create Components.",[12,135,136],{},[97,137],{"alt":138,"src":139},"template-yml","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749675829/Blog/Content%20Images/Screenshot_2024-10-13_at_8.22.00.png",[12,141,142],{},[118,143,144,145,148],{},"2. Create a ",[105,146,147],{},"step.yml"," file in the project where your scripts and dependencies are located.",[12,150,151,152,30],{},"In this code example, format.sh exists in the same directory as the ",[105,153,147],{},[12,155,156],{},[97,157],{"alt":147,"src":158},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749675829/Blog/Content%20Images/Screenshot_2024-10-13_at_8.23.52.png",[12,160,161,162,165],{},"While the job is running, the Step runner will download the entire Git repository where the step is defined. The ",[105,163,164],{},"${{ step_dir }}"," step expression references the directory of the locally cached step files, allowing you to access other files from the repository. In the example above, the “format” step invokes the format.sh script.",[12,167,168],{},[118,169,170,171,173],{},"3. Make sure that any files accessed by the step are located in the same repository as the ",[105,172,147],{}," file.",[12,175,176],{},[118,177,178],{},"4. Include the component in your CI/CD configuration.",[12,180,181],{},"See this example code:",[12,183,184],{},[97,185],{"alt":107,"src":186},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749675829/Blog/Content%20Images/Screenshot_2024-10-13_at_8.26.22.png",[12,188,189,190,30],{},"Code example: You can find the entire code demonstrated in this blog in this ",[19,191,194],{"href":192,"rel":193},"https://gitlab.com/gitlab-da/use-cases/ci-steps",[],"GitLab Group",[12,196,197,200,201,30],{},[118,198,199],{},"Important note:"," The CI/CD Steps feature is currently Experimental, and the syntax may change as we continue to iterate and refine it based on user feedback. Any feedback should be provided via ",[19,202,205],{"href":203,"rel":204},"https://gitlab.com/gitlab-org/gitlab/-/issues/493694",[],"this issue",[47,207,209],{"id":208},"learn-more","Learn more",[75,211,212,221,227],{},[78,213,214,215,220],{},"Watch ",[19,216,219],{"href":217,"rel":218},"https://youtu.be/qxTbeYXEQLM",[],"this walkthrough"," by Joe Burnett, principal engineer at GitLab, as he demonstrates the example discussed in the blog post.",[78,222,223],{},[19,224,226],{"href":36,"rel":225},[],"Introducing CI/CD Steps",[78,228,229],{},[19,230,233],{"href":231,"rel":232},"https://about.gitlab.com/blog/introducing-ci-components/",[],"Introducing CI/CD components",{"title":235,"searchDepth":236,"depth":236,"links":237},"",2,[238,239,240,241,242],{"id":49,"depth":236,"text":50},{"id":61,"depth":236,"text":62},{"id":72,"depth":236,"text":73},{"id":89,"depth":236,"text":90},{"id":208,"depth":236,"text":209},"product","2024-10-16","Learn how to include scripts and dependencies in your CI/CD components to minimize duplications and simplify maintenance. This tutorial takes you step-by-step through the process.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749664595/Blog/Hero%20Images/blog-image-template-1800x945__9_.png",{},true,"/en-us/blog/how-to-include-file-references-in-your-ci-cd-components",{"title":5,"description":245,"ogTitle":5,"ogDescription":245,"noIndex":248,"ogImage":249,"ogUrl":254,"ogSiteName":255,"ogType":256,"canonicalUrls":254},"https://about.gitlab.com/blog/how-to-include-file-references-in-your-ci-cd-components","https://about.gitlab.com","article","how-to-include-file-references-in-your-ci-cd-components","en-us/blog/how-to-include-file-references-in-your-ci-cd-components",[260,261,262,243],"CI/CD","DevOps","features","BlogPost","0WzZpr7rmIlKmHj3TyxOYRXar8IiQN9m-o2E-rqvu30",{"logo":266,"freeTrial":271,"sales":276,"login":281,"items":286,"search":611,"minimal":642,"duo":661,"switchNav":670,"pricingDeployment":681},{"config":267},{"href":268,"dataGaName":269,"dataGaLocation":270},"/","gitlab logo","header",{"text":272,"config":273},"Get free trial",{"href":274,"dataGaName":275,"dataGaLocation":270},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":277,"config":278},"Request a demo",{"href":279,"dataGaName":280,"dataGaLocation":270},"/sales/?contact-topic=request-demo","sales",{"text":282,"config":283},"Sign in",{"href":284,"dataGaName":285,"dataGaLocation":270},"https://gitlab.com/users/sign_in/","sign in",[287,315,414,419,533,589],{"text":288,"config":289,"menu":291},"Platform",{"dataNavLevelOne":290},"platform",{"type":292,"columns":293},"cards",[294,300,308],{"title":288,"description":295,"link":296},"The intelligent orchestration platform for DevSecOps",{"text":297,"config":298},"Explore our Platform",{"href":299,"dataGaName":290,"dataGaLocation":270},"/platform/",{"title":301,"description":302,"link":303},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":304,"config":305},"Meet GitLab Duo",{"href":306,"dataGaName":307,"dataGaLocation":270},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":309,"description":310,"link":311},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":209,"config":312},{"href":313,"dataGaName":314,"dataGaLocation":270},"/why-gitlab/","why gitlab",{"text":316,"left":251,"config":317,"menu":319},"Product",{"dataNavLevelOne":318},"solutions",{"type":320,"link":321,"columns":325,"feature":393},"lists",{"text":322,"config":323},"View all Solutions",{"href":324,"dataGaName":318,"dataGaLocation":270},"/solutions/",[326,349,372],{"title":327,"description":328,"link":329,"items":334},"Automation","CI/CD and automation to accelerate deployment",{"config":330},{"icon":331,"href":332,"dataGaName":333,"dataGaLocation":270},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[335,338,341,345],{"text":260,"config":336},{"href":337,"dataGaLocation":270,"dataGaName":260},"/solutions/continuous-integration/",{"text":301,"config":339},{"href":306,"dataGaLocation":270,"dataGaName":340},"gitlab duo agent platform - product menu",{"text":342,"config":343},"Source Code Management",{"href":344,"dataGaLocation":270,"dataGaName":342},"/solutions/source-code-management/",{"text":346,"config":347},"Automated Software Delivery",{"href":332,"dataGaLocation":270,"dataGaName":348},"Automated software delivery",{"title":350,"description":351,"link":352,"items":357},"Security","Deliver code faster without compromising security",{"config":353},{"href":354,"dataGaName":355,"dataGaLocation":270,"icon":356},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[358,362,367],{"text":359,"config":360},"Application Security Testing",{"href":354,"dataGaName":361,"dataGaLocation":270},"Application security testing",{"text":363,"config":364},"Software Supply Chain Security",{"href":365,"dataGaLocation":270,"dataGaName":366},"/solutions/supply-chain/","Software supply chain security",{"text":368,"config":369},"Software Compliance",{"href":370,"dataGaName":371,"dataGaLocation":270},"/solutions/software-compliance/","software compliance",{"title":373,"link":374,"items":379},"Measurement",{"config":375},{"icon":376,"href":377,"dataGaName":378,"dataGaLocation":270},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[380,384,388],{"text":381,"config":382},"Visibility & Measurement",{"href":377,"dataGaLocation":270,"dataGaName":383},"Visibility and Measurement",{"text":385,"config":386},"Value Stream Management",{"href":387,"dataGaLocation":270,"dataGaName":385},"/solutions/value-stream-management/",{"text":389,"config":390},"Analytics & Insights",{"href":391,"dataGaLocation":270,"dataGaName":392},"/solutions/analytics-and-insights/","Analytics and insights",{"title":394,"type":320,"items":395},"GitLab for",[396,402,408],{"text":397,"config":398},"Enterprise",{"icon":399,"href":400,"dataGaLocation":270,"dataGaName":401},"Building","/enterprise/","enterprise",{"text":403,"config":404},"Small Business",{"icon":405,"href":406,"dataGaLocation":270,"dataGaName":407},"Work","/small-business/","small business",{"text":409,"config":410},"Public Sector",{"icon":411,"href":412,"dataGaLocation":270,"dataGaName":413},"Organization","/solutions/public-sector/","public sector",{"text":415,"config":416},"Pricing",{"href":417,"dataGaName":418,"dataGaLocation":270,"dataNavLevelOne":418},"/pricing/","pricing",{"text":420,"config":421,"menu":423},"Resources",{"dataNavLevelOne":422},"resources",{"type":320,"link":424,"columns":428,"feature":522},{"text":425,"config":426},"View all resources",{"href":427,"dataGaName":422,"dataGaLocation":270},"/resources/",[429,462,489],{"title":430,"items":431},"Getting started",[432,437,442,447,452,457],{"text":433,"config":434},"Install",{"href":435,"dataGaName":436,"dataGaLocation":270},"/install/","install",{"text":438,"config":439},"Quick start guides",{"href":440,"dataGaName":441,"dataGaLocation":270},"/get-started/","quick setup checklists",{"text":443,"config":444},"Learn",{"href":445,"dataGaLocation":270,"dataGaName":446},"https://university.gitlab.com/","learn",{"text":448,"config":449},"Product documentation",{"href":450,"dataGaName":451,"dataGaLocation":270},"https://docs.gitlab.com/","product documentation",{"text":453,"config":454},"Best practice videos",{"href":455,"dataGaName":456,"dataGaLocation":270},"/getting-started-videos/","best practice videos",{"text":458,"config":459},"Integrations",{"href":460,"dataGaName":461,"dataGaLocation":270},"/integrations/","integrations",{"title":463,"items":464},"Discover",[465,470,475,480,484],{"text":466,"config":467},"Customer success stories",{"href":468,"dataGaName":469,"dataGaLocation":270},"/customers/","customer success stories",{"text":471,"config":472},"Blog",{"href":473,"dataGaName":474,"dataGaLocation":270},"/blog/","blog",{"text":476,"config":477},"Demo Hub",{"href":478,"dataGaName":479,"dataGaLocation":270},"/demo-hub/","demo hub",{"text":481,"config":482},"The Source",{"href":483,"dataGaName":474,"dataGaLocation":270},"/the-source/",{"text":485,"config":486},"Remote",{"href":487,"dataGaName":488,"dataGaLocation":270},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":490,"items":491},"Connect",[492,497,502,507,512,517],{"text":493,"config":494},"GitLab Services",{"href":495,"dataGaName":496,"dataGaLocation":270},"/services/","services",{"text":498,"config":499},"Contribute",{"href":500,"dataGaName":501,"dataGaLocation":270},"https://contributors.gitlab.com","contribute",{"text":503,"config":504},"Community",{"href":505,"dataGaName":506,"dataGaLocation":270},"/community/","community",{"text":508,"config":509},"Forum",{"href":510,"dataGaName":511,"dataGaLocation":270},"https://forum.gitlab.com/","forum",{"text":513,"config":514},"Events",{"href":515,"dataGaName":516,"dataGaLocation":270},"/events/","events",{"text":518,"config":519},"Partners",{"href":520,"dataGaName":521,"dataGaLocation":270},"/partners/","partners",{"config":523,"title":526,"text":527,"link":528},{"background":524,"textColor":525},"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":529,"config":530},"Read the latest",{"href":531,"dataGaName":532,"dataGaLocation":270},"/whats-new/","whats new",{"text":534,"config":535,"menu":537},"Company",{"dataNavLevelOne":536},"company",{"type":320,"columns":538},[539],{"items":540},[541,546,552,554,559,564,569,574,579,584],{"text":542,"config":543},"About",{"href":544,"dataGaName":545,"dataGaLocation":270},"/company/","about",{"text":547,"config":548,"footerGa":551},"Jobs",{"href":549,"dataGaName":550,"dataGaLocation":270},"/jobs/","jobs",{"dataGaName":550},{"text":513,"config":553},{"href":515,"dataGaName":516,"dataGaLocation":270},{"text":555,"config":556},"Leadership",{"href":557,"dataGaName":558,"dataGaLocation":270},"/company/team/e-group/","leadership",{"text":560,"config":561},"Handbook",{"href":562,"dataGaName":563,"dataGaLocation":270},"https://handbook.gitlab.com/","handbook",{"text":565,"config":566},"Investor relations",{"href":567,"dataGaName":568,"dataGaLocation":270},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":570,"config":571},"Trust Center",{"href":572,"dataGaName":573,"dataGaLocation":270},"/security/","trust center",{"text":575,"config":576},"AI Transparency Center",{"href":577,"dataGaName":578,"dataGaLocation":270},"/ai-transparency-center/","ai transparency center",{"text":580,"config":581},"Newsletter",{"href":582,"dataGaName":583,"dataGaLocation":270},"/company/contact/#contact-forms","newsletter",{"text":585,"config":586},"Press",{"href":587,"dataGaName":588,"dataGaLocation":270},"/press/","press",{"text":590,"config":591,"menu":592},"Contact us",{"dataNavLevelOne":536},{"type":320,"columns":593},[594],{"items":595},[596,601,606],{"text":597,"config":598},"Talk to sales",{"href":599,"dataGaName":600,"dataGaLocation":270},"/sales/","talk to sales",{"text":602,"config":603},"Support portal",{"href":604,"dataGaName":605,"dataGaLocation":270},"https://support.gitlab.com/hc/en-us","support portal",{"text":607,"config":608},"Customer portal",{"href":609,"dataGaName":610,"dataGaLocation":270},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":612,"login":613,"suggestions":620},"Close",{"text":614,"link":615},"To search repositories and projects, login to",{"text":616,"config":617},"gitlab.com",{"href":284,"dataGaName":618,"dataGaLocation":619},"search login","search",{"text":621,"default":622},"Suggestions",[623,625,629,631,635,639],{"text":301,"config":624},{"href":306,"dataGaName":301,"dataGaLocation":619},{"text":626,"config":627},"Code Suggestions (AI)",{"href":628,"dataGaName":626,"dataGaLocation":619},"/solutions/code-suggestions/",{"text":260,"config":630},{"href":337,"dataGaName":260,"dataGaLocation":619},{"text":632,"config":633},"GitLab on AWS",{"href":634,"dataGaName":632,"dataGaLocation":619},"/partners/technology-partners/aws/",{"text":636,"config":637},"GitLab on Google Cloud",{"href":638,"dataGaName":636,"dataGaLocation":619},"/partners/technology-partners/google-cloud-platform/",{"text":640,"config":641},"Why GitLab?",{"href":313,"dataGaName":640,"dataGaLocation":619},{"freeTrial":643,"mobileIcon":648,"desktopIcon":653,"secondaryButton":656},{"text":644,"config":645},"Start free trial",{"href":646,"dataGaName":275,"dataGaLocation":647},"https://gitlab.com/-/trials/new/","nav",{"altText":649,"config":650},"Gitlab Icon",{"src":651,"dataGaName":652,"dataGaLocation":647},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":649,"config":654},{"src":655,"dataGaName":652,"dataGaLocation":647},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":657,"config":658},"Get Started",{"href":659,"dataGaName":660,"dataGaLocation":647},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":662,"mobileIcon":666,"desktopIcon":668},{"text":663,"config":664},"Learn more about GitLab Duo",{"href":306,"dataGaName":665,"dataGaLocation":647},"gitlab duo",{"altText":649,"config":667},{"src":651,"dataGaName":652,"dataGaLocation":647},{"altText":649,"config":669},{"src":655,"dataGaName":652,"dataGaLocation":647},{"button":671,"mobileIcon":676,"desktopIcon":678},{"text":672,"config":673},"/switch",{"href":674,"dataGaName":675,"dataGaLocation":647},"#contact","switch",{"altText":649,"config":677},{"src":651,"dataGaName":652,"dataGaLocation":647},{"altText":649,"config":679},{"src":680,"dataGaName":652,"dataGaLocation":647},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":682,"mobileIcon":687,"desktopIcon":689},{"text":683,"config":684},"Back to pricing",{"href":417,"dataGaName":685,"dataGaLocation":647,"icon":686},"back to pricing","GoBack",{"altText":649,"config":688},{"src":651,"dataGaName":652,"dataGaLocation":647},{"altText":649,"config":690},{"src":655,"dataGaName":652,"dataGaLocation":647},{"title":692,"titleMobile":693,"button":694,"config":699},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":209,"config":695},{"href":696,"dataGaName":697,"dataGaLocation":698},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":700,"disabled":248},"release",{"data":702},{"text":703,"source":704,"edit":710,"contribute":715,"config":720,"items":725,"minimal":934},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":705,"config":706},"View page source",{"href":707,"dataGaName":708,"dataGaLocation":709},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":711,"config":712},"Edit this page",{"href":713,"dataGaName":714,"dataGaLocation":709},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":716,"config":717},"Please contribute",{"href":718,"dataGaName":719,"dataGaLocation":709},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":721,"facebook":722,"youtube":723,"linkedin":724},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[726,773,826,870,902],{"title":415,"links":727,"subMenu":742},[728,732,737],{"text":729,"config":730},"View plans",{"href":417,"dataGaName":731,"dataGaLocation":709},"view plans",{"text":733,"config":734},"Why Premium?",{"href":735,"dataGaName":736,"dataGaLocation":709},"/pricing/premium/","why premium",{"text":738,"config":739},"Why Ultimate?",{"href":740,"dataGaName":741,"dataGaLocation":709},"/pricing/ultimate/","why ultimate",[743],{"title":744,"links":745},"Contact Us",[746,749,751,753,758,763,768],{"text":747,"config":748},"Contact sales",{"href":599,"dataGaName":280,"dataGaLocation":709},{"text":602,"config":750},{"href":604,"dataGaName":605,"dataGaLocation":709},{"text":607,"config":752},{"href":609,"dataGaName":610,"dataGaLocation":709},{"text":754,"config":755},"Status",{"href":756,"dataGaName":757,"dataGaLocation":709},"https://status.gitlab.com/","status",{"text":759,"config":760},"Terms of use",{"href":761,"dataGaName":762,"dataGaLocation":709},"/terms/","terms of use",{"text":764,"config":765},"Privacy statement",{"href":766,"dataGaName":767,"dataGaLocation":709},"/privacy/","privacy statement",{"text":769,"config":770},"Cookie preferences",{"dataGaName":771,"dataGaLocation":709,"id":772,"isOneTrustButton":251},"cookie preferences","ot-sdk-btn",{"title":316,"links":774,"subMenu":783},[775,779],{"text":776,"config":777},"DevSecOps platform",{"href":299,"dataGaName":778,"dataGaLocation":709},"devsecops platform",{"text":780,"config":781},"AI-Assisted Development",{"href":306,"dataGaName":782,"dataGaLocation":709},"ai-assisted development",[784],{"title":785,"links":786},"Topics",[787,792,797,801,806,811,816,821],{"text":788,"config":789},"CICD",{"href":790,"dataGaName":791,"dataGaLocation":709},"/topics/ci-cd/","cicd",{"text":793,"config":794},"GitOps",{"href":795,"dataGaName":796,"dataGaLocation":709},"/topics/gitops/","gitops",{"text":261,"config":798},{"href":799,"dataGaName":800,"dataGaLocation":709},"/topics/devops/","devops",{"text":802,"config":803},"Version Control",{"href":804,"dataGaName":805,"dataGaLocation":709},"/topics/version-control/","version control",{"text":807,"config":808},"DevSecOps",{"href":809,"dataGaName":810,"dataGaLocation":709},"/topics/devsecops/","devsecops",{"text":812,"config":813},"Cloud Native",{"href":814,"dataGaName":815,"dataGaLocation":709},"/topics/cloud-native/","cloud native",{"text":817,"config":818},"AI for Coding",{"href":819,"dataGaName":820,"dataGaLocation":709},"/topics/devops/ai-for-coding/","ai for coding",{"text":822,"config":823},"Agentic AI",{"href":824,"dataGaName":825,"dataGaLocation":709},"/topics/agentic-ai/","agentic ai",{"title":827,"links":828},"Solutions",[829,831,833,838,842,845,849,852,854,857,860,865],{"text":359,"config":830},{"href":354,"dataGaName":359,"dataGaLocation":709},{"text":348,"config":832},{"href":332,"dataGaName":333,"dataGaLocation":709},{"text":834,"config":835},"Agile development",{"href":836,"dataGaName":837,"dataGaLocation":709},"/solutions/agile-delivery/","agile delivery",{"text":839,"config":840},"SCM",{"href":344,"dataGaName":841,"dataGaLocation":709},"source code management",{"text":788,"config":843},{"href":337,"dataGaName":844,"dataGaLocation":709},"continuous integration & delivery",{"text":846,"config":847},"Value stream management",{"href":387,"dataGaName":848,"dataGaLocation":709},"value stream management",{"text":793,"config":850},{"href":851,"dataGaName":796,"dataGaLocation":709},"/solutions/gitops/",{"text":397,"config":853},{"href":400,"dataGaName":401,"dataGaLocation":709},{"text":855,"config":856},"Small business",{"href":406,"dataGaName":407,"dataGaLocation":709},{"text":858,"config":859},"Public sector",{"href":412,"dataGaName":413,"dataGaLocation":709},{"text":861,"config":862},"Education",{"href":863,"dataGaName":864,"dataGaLocation":709},"/solutions/education/","education",{"text":866,"config":867},"Financial services",{"href":868,"dataGaName":869,"dataGaLocation":709},"/solutions/finance/","financial services",{"title":420,"links":871},[872,874,876,878,881,883,886,888,890,892,894,896,898,900],{"text":433,"config":873},{"href":435,"dataGaName":436,"dataGaLocation":709},{"text":438,"config":875},{"href":440,"dataGaName":441,"dataGaLocation":709},{"text":443,"config":877},{"href":445,"dataGaName":446,"dataGaLocation":709},{"text":448,"config":879},{"href":450,"dataGaName":880,"dataGaLocation":709},"docs",{"text":471,"config":882},{"href":473,"dataGaName":474,"dataGaLocation":709},{"text":884,"config":885},"What's new",{"href":531,"dataGaName":532,"dataGaLocation":709},{"text":466,"config":887},{"href":468,"dataGaName":469,"dataGaLocation":709},{"text":485,"config":889},{"href":487,"dataGaName":488,"dataGaLocation":709},{"text":493,"config":891},{"href":495,"dataGaName":496,"dataGaLocation":709},{"text":498,"config":893},{"href":500,"dataGaName":501,"dataGaLocation":709},{"text":503,"config":895},{"href":505,"dataGaName":506,"dataGaLocation":709},{"text":508,"config":897},{"href":510,"dataGaName":511,"dataGaLocation":709},{"text":513,"config":899},{"href":515,"dataGaName":516,"dataGaLocation":709},{"text":518,"config":901},{"href":520,"dataGaName":521,"dataGaLocation":709},{"title":534,"links":903},[904,906,908,910,912,914,918,923,925,927,929],{"text":542,"config":905},{"href":544,"dataGaName":536,"dataGaLocation":709},{"text":547,"config":907},{"href":549,"dataGaName":550,"dataGaLocation":709},{"text":555,"config":909},{"href":557,"dataGaName":558,"dataGaLocation":709},{"text":560,"config":911},{"href":562,"dataGaName":563,"dataGaLocation":709},{"text":565,"config":913},{"href":567,"dataGaName":568,"dataGaLocation":709},{"text":915,"config":916},"Sustainability",{"href":917,"dataGaName":915,"dataGaLocation":709},"/sustainability/",{"text":919,"config":920},"Diversity, inclusion and belonging (DIB)",{"href":921,"dataGaName":922,"dataGaLocation":709},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":570,"config":924},{"href":572,"dataGaName":573,"dataGaLocation":709},{"text":580,"config":926},{"href":582,"dataGaName":583,"dataGaLocation":709},{"text":585,"config":928},{"href":587,"dataGaName":588,"dataGaLocation":709},{"text":930,"config":931},"Modern Slavery Transparency Statement",{"href":932,"dataGaName":933,"dataGaLocation":709},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":935},[936,939,942],{"text":937,"config":938},"Terms",{"href":761,"dataGaName":762,"dataGaLocation":709},{"text":940,"config":941},"Cookies",{"dataGaName":771,"dataGaLocation":709,"id":772,"isOneTrustButton":251},{"text":943,"config":944},"Privacy",{"href":766,"dataGaName":767,"dataGaLocation":709},[946],{"id":947,"title":7,"body":247,"config":948,"content":950,"description":247,"extension":954,"meta":955,"navigation":251,"path":956,"seo":957,"stem":958,"__hash__":959},"blogAuthors/en-us/blog/authors/itzik-gan-baruch.yml",{"template":949},"BlogAuthor",{"name":7,"config":951},{"headshot":952,"ctfId":953},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749658921/Blog/Author%20Headshots/iganbaruch-headshot.jpg","iganbaruch","yml",{},"/en-us/blog/authors/itzik-gan-baruch",{},"en-us/blog/authors/itzik-gan-baruch","bz9VMiTQ1ixvnoxUFk0jiUcnLG3oQsymgXNCqyRqfsk",[961,967,971],{"title":962,"description":963,"heroImage":964,"category":243,"date":965,"authors":247,"slug":247,"externalUrl":966},"GitLab Patch Release: 19.2.2, 19.1.4, 19.0.6","Learn about this latest patch release for Community Edition and Enterprise Edition.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749661926/Blog/Hero%20Images/security-patch-blog-image-r2-0506-700x400-fy25_2x.jpg","2026-08-12","https://docs.gitlab.com/releases/patches/patch-release-gitlab-19-2-2-released/",{"title":968,"description":963,"heroImage":964,"category":243,"date":969,"authors":247,"slug":247,"externalUrl":970}," GitLab Patch Release: 19.2.1, 19.1.3, 19.0.5","2026-07-29","https://docs.gitlab.com/releases/patches/patch-release-gitlab-19-2-1-released/",{"title":972,"description":973,"heroImage":974,"category":243,"date":975,"authors":976,"slug":978,"externalUrl":247},"Automate work item assignment with a \"Work item created\" trigger","Our step-by-step guide walks through this AI capability, which enables instant, scalable triage without manual intervention.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1773866173/vte9qh8rriznvyclhkes.png","2026-07-20",[977],"Cesar Saavedra","how-to-use-a-work-item-created-trigger",{"promotions":980},[981,995,1006,1018],{"id":982,"categories":983,"header":985,"text":986,"button":987,"image":992},"ai-modernization",[984],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":988,"config":989},"Get your AI maturity score",{"href":990,"dataGaName":991,"dataGaLocation":474},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":993},{"src":994},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":996,"categories":997,"header":998,"text":986,"button":999,"image":1003},"devops-modernization",[243,810],"Are you just managing tools or shipping innovation?",{"text":1000,"config":1001},"Get your DevOps maturity score",{"href":1002,"dataGaName":991,"dataGaLocation":474},"/assessments/devops-modernization-assessment/",{"config":1004},{"src":1005},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1007,"categories":1008,"header":1010,"text":986,"button":1011,"image":1015},"security-modernization",[1009],"security","Are you trading speed for security?",{"text":1012,"config":1013},"Get your security maturity score",{"href":1014,"dataGaName":991,"dataGaLocation":474},"/assessments/security-modernization-assessment/",{"config":1016},{"src":1017},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1019,"paths":1020,"header":1023,"text":1024,"button":1025,"image":1030},"github-azure-migration",[1021,1022],"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":1026,"config":1027},"See how GitLab compares to GitHub",{"href":1028,"dataGaName":1029,"dataGaLocation":474},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1031},{"src":1005},{"header":1033,"blurb":1034,"button":1035,"secondaryButton":1040},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":1036,"config":1037},"Get your free trial",{"href":1038,"dataGaName":275,"dataGaLocation":1039},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":747,"config":1041},{"href":599,"dataGaName":280,"dataGaLocation":1039},1786803771556]