[{"data":1,"prerenderedAt":1243},["ShallowReactive",2],{"/blog/getting-started-with-gitlab-working-with-ci-cd-variables":3,"navigation-en-us":464,"banner-en-us":890,"footer-en-us":900,"blog-post-authors-en-us-GitLab Team":1145,"blog-related-posts-en-us-getting-started-with-gitlab-working-with-ci-cd-variables":1161,"blog-promotions-en-us":1180,"next-steps-en-us":1233},{"id":4,"title":5,"authors":6,"body":8,"category":440,"date":441,"description":442,"extension":443,"externalUrl":444,"faq":444,"featured":445,"heroImage":446,"meta":447,"navigation":445,"path":448,"seo":449,"slug":454,"stem":455,"tags":456,"template":462,"updatedDate":444,"__hash__":463},"blogPosts/en-us/blog/getting-started-with-gitlab-working-with-ci-cd-variables.md","Getting started with GitLab: Working with CI/CD variables",[7],"GitLab Team",{"type":9,"value":10,"toc":429},"minimark",[11,18,33,38,46,50,53,81,85,88,170,174,177,232,236,246,300,304,313,316,342,346,360,364,367,370,381,386,389,425],[12,13,14],"p",{},[15,16,17],"em",{},"Welcome to our \"Getting started with GitLab\" series, where we help newcomers get familiar with the GitLab DevSecOps platform.",[12,19,20,21,27,28,32],{},"In an earlier article, we explored ",[22,23,26],"a",{"href":24,"rel":25},"https://about.gitlab.com/blog/getting-started-with-gitlab-understanding-ci-cd/",[],"GitLab CI/CD",". Now, let's dive deeper into the world of ",[29,30,31],"strong",{},"CI/CD variables"," and unlock their full potential.",[34,35,37],"h3",{"id":36},"what-are-cicd-variables","What are CI/CD variables?",[12,39,40,41,45],{},"CI/CD variables are dynamic key-value pairs that you can define at different levels within your GitLab environment (e.g., project, group, or instance). These variables act as placeholders for values that you can use in your ",[42,43,44],"code",{},".gitlab-ci.yml"," file to customize your pipelines, securely store sensitive information, and make your CI/CD configuration more maintainable.",[34,47,49],{"id":48},"why-are-cicd-variables-important","Why are CI/CD variables important?",[12,51,52],{},"CI/CD variables offer numerous benefits:",[54,55,56,63,69,75],"ul",{},[57,58,59,62],"li",{},[29,60,61],{},"Flexibility"," - Easily adapt your pipelines to different environments, configurations, or deployment targets without modifying your core CI/CD script.",[57,64,65,68],{},[29,66,67],{},"Security"," - Securely store sensitive information like API keys, passwords, and tokens, preventing them from being exposed directly in your code.",[57,70,71,74],{},[29,72,73],{},"Maintainability"," - Keep your CI/CD configuration clean and organized by centralizing values in variables, making updates and modifications easier.",[57,76,77,80],{},[29,78,79],{},"Reusability"," - Define variables once and reuse them across multiple projects, promoting consistency and reducing duplication.",[34,82,84],{"id":83},"scopes-of-cicd-variables-project-group-and-instance","Scopes of CI/CD variables: Project, group, and instance",[12,86,87],{},"GitLab allows you to define CI/CD variables with different scopes, controlling their visibility and accessibility:",[54,89,90,118,139],{},[57,91,92,95,96],{},[29,93,94],{},"Project-level variables"," - These variables are specific to a single project and are ideal for storing project-specific settings, such as:",[54,97,98,101,104,107],{},[57,99,100],{},"Deployment URLs: Define different URLs for staging and production environments.",[57,102,103],{},"Database credentials: Store database connection details for testing or deployment.",[57,105,106],{},"Feature flags: Enable or disable features during different stages of your pipeline.",[57,108,109,110,113,114,117],{},"Example: You have a project called \"MyWebApp\" and want to store the production deployment URL. You create a project-level variable named ",[42,111,112],{},"DPROD_DEPLOY_URL"," with the value ",[42,115,116],{},"https://mywebapp.com",".",[57,119,120,123,124],{},[29,121,122],{},"Group-level variables"," - These variables are shared across all projects within a GitLab group. They are useful for settings that are common to multiple projects, such as:",[54,125,126,129,132],{},[57,127,128],{},"API keys for shared services: Store API keys for services like AWS, Google Cloud, or Docker Hub that are used by multiple projects within the group.",[57,130,131],{},"Global configuration settings: Define common configuration parameters that apply to all projects in the group.",[57,133,134,135,138],{},"Example: You have a group called \"Web Apps\" and want to store an API key for Docker Hub. You create a group-level variable named ",[42,136,137],{},"DOCKER_HUB_API_KEY"," with the corresponding API key value.",[57,140,141,144,145],{},[29,142,143],{},"Instance-level variables"," - These variables are available to all projects on a GitLab instance. They are typically used for global settings that apply across an entire organization such as:",[54,146,147,155,158,161],{},[57,148,149,150,117],{},"Default runner registration token: Provide a default token for registering new ",[22,151,154],{"href":152,"rel":153},"https://docs.gitlab.com/runner/",[],"runners",[57,156,157],{},"License information: Store license keys for GitLab features or third-party tools.",[57,159,160],{},"Global environment settings: Define environment variables that should be available to all projects.",[57,162,163,164,113,167,117],{},"Example: You want to set a default Docker image for all projects on your GitLab instance. You create an instance-level variable named ",[42,165,166],{},"DEFAULT_DOCKER_IMAGE",[42,168,169],{},"ubuntu:latest",[34,171,173],{"id":172},"defining-cicd-variables","Defining CI/CD variables",[12,175,176],{},"To define a CI/CD variable:",[178,179,180,187,194,200,214,221,227],"ol",{},[57,181,182,183,186],{},"Click on the ",[29,184,185],{},"Settings > CI/CD"," buttons for  your project, group, or instance.",[57,188,189,190,193],{},"Go to the ",[29,191,192],{},"Variables"," section.",[57,195,196,197,117],{},"Click ",[29,198,199],{},"Add variable",[57,201,202,203,206,207,210,211,117],{},"Enter the ",[29,204,205],{},"key"," (e.g., ",[42,208,209],{},"API_KEY",") and ",[29,212,213],{},"value",[57,215,216,217,220],{},"Optionally, check the ",[29,218,219],{},"Protect variable"," box for sensitive information. This ensures that the variable is only available to pipelines running on protected branches or tags.",[57,222,216,223,226],{},[29,224,225],{},"Mask variable"," box to hide the variable's value from job logs, preventing accidental exposure.",[57,228,196,229,117],{},[29,230,231],{},"Save variable",[34,233,235],{"id":234},"using-cicd-variables","Using CI/CD variables",[12,237,238,239,241,242,245],{},"To use a CI/CD variable in your ",[42,240,44],{}," file, simply prefix the variable name with ",[42,243,244],{},"$",":",[247,248,253],"pre",{"className":249,"code":250,"language":251,"meta":252,"style":252},"language-yaml shiki shiki-themes github-light","deploy_job:\n  script:\n    - echo \"Deploying to production...\"\n    - curl -H \"Authorization: Bearer $API_KEY\" https://api.example.com/deploy\n\n","yaml","",[42,254,255,268,276,286],{"__ignoreMap":252},[256,257,260,264],"span",{"class":258,"line":259},"line",1,[256,261,263],{"class":262},"shJU0","deploy_job",[256,265,267],{"class":266},"sgsFI",":\n",[256,269,271,274],{"class":258,"line":270},2,[256,272,273],{"class":262},"  script",[256,275,267],{"class":266},[256,277,279,282],{"class":258,"line":278},3,[256,280,281],{"class":266},"    - ",[256,283,285],{"class":284},"sYBdl","echo \"Deploying to production...\"\n",[256,287,289,291,294,297],{"class":258,"line":288},4,[256,290,281],{"class":266},[256,292,293],{"class":262},"curl -H \"Authorization",[256,295,296],{"class":266},": ",[256,298,299],{"class":284},"Bearer $API_KEY\" https://api.example.com/deploy\n",[34,301,303],{"id":302},"predefined-cicd-variables","Predefined CI/CD variables",[12,305,306,307,312],{},"GitLab provides a set of ",[22,308,311],{"href":309,"rel":310},"https://docs.gitlab.com/ci/variables/predefined_variables/",[],"predefined CI/CD variables"," that you can use in your pipelines. These variables provide information about the current pipeline, job, project, and more.",[12,314,315],{},"Some commonly used predefined variables include:",[54,317,318,324,330,336],{},[57,319,320,323],{},[42,321,322],{},"$CI_COMMIT_SHA",": The commit SHA of the current pipeline.",[57,325,326,329],{},[42,327,328],{},"$CI_PROJECT_DIR",": The directory where the project is cloned.",[57,331,332,335],{},[42,333,334],{},"$CI_PIPELINE_ID",": The ID of the current pipeline.",[57,337,338,341],{},[42,339,340],{},"$CI_ENVIRONMENT_NAME",": The name of the environment being deployed to (if applicable).",[34,343,345],{"id":344},"best-practices","Best practices",[54,347,348,351,354,357],{},[57,349,350],{},"Securely manage sensitive variables: Use protected and masked variables for API keys, passwords, and other sensitive information.",[57,352,353],{},"Avoid hardcoding values: Use variables to store configuration values, making your pipelines more flexible and maintainable.",[57,355,356],{},"Organize your variables: Use descriptive names and group related variables together for better organization.",[57,358,359],{},"Use the appropriate scope: Choose the correct scope (project, group, or instance) for your variables based on their intended use and visibility.",[34,361,363],{"id":362},"unlock-the-power-of-variables","Unlock the power of variables",[12,365,366],{},"CI/CD variables are a powerful tool for customizing and securing your GitLab pipelines. By mastering variables and understanding their different scopes, you can create more flexible, maintainable, and efficient workflows.",[12,368,369],{},"We hope you found it helpful and are now well-equipped to leverage the power of GitLab for your development projects.",[371,372,373],"blockquote",{},[12,374,375,376,117],{},"Get started with CI/CD variables today with a ",[22,377,380],{"href":378,"rel":379},"https://about.gitlab.com/free-trial/",[],"free trial of GitLab Ultimate with Duo Enterprise",[382,383,385],"h2",{"id":384},"getting-started-with-gitlab-series","\"Getting Started with GitLab\" series",[12,387,388],{},"Read more articles in our \"Getting Started with GitLab\" series:",[54,390,391,398,405,412,419],{},[57,392,393],{},[22,394,397],{"href":395,"rel":396},"https://about.gitlab.com/blog/getting-started-with-gitlab-how-to-manage-users/",[],"How to manage users",[57,399,400],{},[22,401,404],{"href":402,"rel":403},"https://about.gitlab.com/blog/getting-started-with-gitlab-how-to-import-your-projects-to-gitlab/",[],"How to import your projects to GitLab",[57,406,407],{},[22,408,411],{"href":409,"rel":410},"https://about.gitlab.com/blog/getting-started-with-gitlab-mastering-project-management/",[],"Mastering project management",[57,413,414],{},[22,415,418],{"href":416,"rel":417},"https://about.gitlab.com/blog/automating-agile-workflows-with-the-gitlab-triage-gem/",[],"Automating Agile workflows with the gitlab-triage gem",[57,420,421],{},[22,422,424],{"href":24,"rel":423},[],"Understanding CI/CD",[426,427,428],"style",{},"html pre.shiki code .shJU0, html code.shiki .shJU0{--shiki-default:#22863A}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":252,"searchDepth":270,"depth":270,"links":430},[431,432,433,434,435,436,437,438,439],{"id":36,"depth":278,"text":37},{"id":48,"depth":278,"text":49},{"id":83,"depth":278,"text":84},{"id":172,"depth":278,"text":173},{"id":234,"depth":278,"text":235},{"id":302,"depth":278,"text":303},{"id":344,"depth":278,"text":345},{"id":362,"depth":278,"text":363},{"id":384,"depth":270,"text":385},"product","2025-05-27","Learn what CI/CD variables are, why they are important in DevSecOps, and best practices for utilizing them.","md",null,true,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659525/Blog/Hero%20Images/blog-getting-started-with-gitlab-banner-0497-option4-fy25.png",{},"/en-us/blog/getting-started-with-gitlab-working-with-ci-cd-variables",{"title":5,"description":442,"ogTitle":5,"ogDescription":442,"noIndex":450,"ogImage":446,"ogUrl":451,"ogSiteName":452,"ogType":453,"canonicalUrls":451},false,"https://about.gitlab.com/blog/getting-started-with-gitlab-working-with-ci-cd-variables","https://about.gitlab.com","article","getting-started-with-gitlab-working-with-ci-cd-variables","en-us/blog/getting-started-with-gitlab-working-with-ci-cd-variables",[440,457,458,459,460,461],"tutorial","CI","CD","CI/CD","features","BlogPost","Iq2NwTydwqZNSb1w1Yx-mnIyRMij3gXDZOAMcEVDPGE",{"logo":465,"freeTrial":470,"sales":475,"login":480,"items":485,"search":810,"minimal":841,"duo":860,"switchNav":869,"pricingDeployment":880},{"config":466},{"href":467,"dataGaName":468,"dataGaLocation":469},"/","gitlab logo","header",{"text":471,"config":472},"Get free trial",{"href":473,"dataGaName":474,"dataGaLocation":469},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":476,"config":477},"Request a demo",{"href":478,"dataGaName":479,"dataGaLocation":469},"/sales/?contact-topic=request-demo","sales",{"text":481,"config":482},"Sign in",{"href":483,"dataGaName":484,"dataGaLocation":469},"https://gitlab.com/users/sign_in/","sign in",[486,515,613,618,732,788],{"text":487,"config":488,"menu":490},"Platform",{"dataNavLevelOne":489},"platform",{"type":491,"columns":492},"cards",[493,499,507],{"title":487,"description":494,"link":495},"The intelligent orchestration platform for DevSecOps",{"text":496,"config":497},"Explore our Platform",{"href":498,"dataGaName":489,"dataGaLocation":469},"/platform/",{"title":500,"description":501,"link":502},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":503,"config":504},"Meet GitLab Duo",{"href":505,"dataGaName":506,"dataGaLocation":469},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":508,"description":509,"link":510},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":511,"config":512},"Learn more",{"href":513,"dataGaName":514,"dataGaLocation":469},"/why-gitlab/","why gitlab",{"text":516,"left":445,"config":517,"menu":519},"Product",{"dataNavLevelOne":518},"solutions",{"type":520,"link":521,"columns":525,"feature":592},"lists",{"text":522,"config":523},"View all Solutions",{"href":524,"dataGaName":518,"dataGaLocation":469},"/solutions/",[526,549,571],{"title":527,"description":528,"link":529,"items":534},"Automation","CI/CD and automation to accelerate deployment",{"config":530},{"icon":531,"href":532,"dataGaName":533,"dataGaLocation":469},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[535,538,541,545],{"text":460,"config":536},{"href":537,"dataGaLocation":469,"dataGaName":460},"/solutions/continuous-integration/",{"text":500,"config":539},{"href":505,"dataGaLocation":469,"dataGaName":540},"gitlab duo agent platform - product menu",{"text":542,"config":543},"Source Code Management",{"href":544,"dataGaLocation":469,"dataGaName":542},"/solutions/source-code-management/",{"text":546,"config":547},"Automated Software Delivery",{"href":532,"dataGaLocation":469,"dataGaName":548},"Automated software delivery",{"title":67,"description":550,"link":551,"items":556},"Deliver code faster without compromising security",{"config":552},{"href":553,"dataGaName":554,"dataGaLocation":469,"icon":555},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[557,561,566],{"text":558,"config":559},"Application Security Testing",{"href":553,"dataGaName":560,"dataGaLocation":469},"Application security testing",{"text":562,"config":563},"Software Supply Chain Security",{"href":564,"dataGaLocation":469,"dataGaName":565},"/solutions/supply-chain/","Software supply chain security",{"text":567,"config":568},"Software Compliance",{"href":569,"dataGaName":570,"dataGaLocation":469},"/solutions/software-compliance/","software compliance",{"title":572,"link":573,"items":578},"Measurement",{"config":574},{"icon":575,"href":576,"dataGaName":577,"dataGaLocation":469},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[579,583,587],{"text":580,"config":581},"Visibility & Measurement",{"href":576,"dataGaLocation":469,"dataGaName":582},"Visibility and Measurement",{"text":584,"config":585},"Value Stream Management",{"href":586,"dataGaLocation":469,"dataGaName":584},"/solutions/value-stream-management/",{"text":588,"config":589},"Analytics & Insights",{"href":590,"dataGaLocation":469,"dataGaName":591},"/solutions/analytics-and-insights/","Analytics and insights",{"title":593,"type":520,"items":594},"GitLab for",[595,601,607],{"text":596,"config":597},"Enterprise",{"icon":598,"href":599,"dataGaLocation":469,"dataGaName":600},"Building","/enterprise/","enterprise",{"text":602,"config":603},"Small Business",{"icon":604,"href":605,"dataGaLocation":469,"dataGaName":606},"Work","/small-business/","small business",{"text":608,"config":609},"Public Sector",{"icon":610,"href":611,"dataGaLocation":469,"dataGaName":612},"Organization","/solutions/public-sector/","public sector",{"text":614,"config":615},"Pricing",{"href":616,"dataGaName":617,"dataGaLocation":469,"dataNavLevelOne":617},"/pricing/","pricing",{"text":619,"config":620,"menu":622},"Resources",{"dataNavLevelOne":621},"resources",{"type":520,"link":623,"columns":627,"feature":721},{"text":624,"config":625},"View all resources",{"href":626,"dataGaName":621,"dataGaLocation":469},"/resources/",[628,661,688],{"title":629,"items":630},"Getting started",[631,636,641,646,651,656],{"text":632,"config":633},"Install",{"href":634,"dataGaName":635,"dataGaLocation":469},"/install/","install",{"text":637,"config":638},"Quick start guides",{"href":639,"dataGaName":640,"dataGaLocation":469},"/get-started/","quick setup checklists",{"text":642,"config":643},"Learn",{"href":644,"dataGaLocation":469,"dataGaName":645},"https://university.gitlab.com/","learn",{"text":647,"config":648},"Product documentation",{"href":649,"dataGaName":650,"dataGaLocation":469},"https://docs.gitlab.com/","product documentation",{"text":652,"config":653},"Best practice videos",{"href":654,"dataGaName":655,"dataGaLocation":469},"/getting-started-videos/","best practice videos",{"text":657,"config":658},"Integrations",{"href":659,"dataGaName":660,"dataGaLocation":469},"/integrations/","integrations",{"title":662,"items":663},"Discover",[664,669,674,679,683],{"text":665,"config":666},"Customer success stories",{"href":667,"dataGaName":668,"dataGaLocation":469},"/customers/","customer success stories",{"text":670,"config":671},"Blog",{"href":672,"dataGaName":673,"dataGaLocation":469},"/blog/","blog",{"text":675,"config":676},"Demo Hub",{"href":677,"dataGaName":678,"dataGaLocation":469},"/demo-hub/","demo hub",{"text":680,"config":681},"The Source",{"href":682,"dataGaName":673,"dataGaLocation":469},"/the-source/",{"text":684,"config":685},"Remote",{"href":686,"dataGaName":687,"dataGaLocation":469},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":689,"items":690},"Connect",[691,696,701,706,711,716],{"text":692,"config":693},"GitLab Services",{"href":694,"dataGaName":695,"dataGaLocation":469},"/services/","services",{"text":697,"config":698},"Contribute",{"href":699,"dataGaName":700,"dataGaLocation":469},"https://contributors.gitlab.com","contribute",{"text":702,"config":703},"Community",{"href":704,"dataGaName":705,"dataGaLocation":469},"/community/","community",{"text":707,"config":708},"Forum",{"href":709,"dataGaName":710,"dataGaLocation":469},"https://forum.gitlab.com/","forum",{"text":712,"config":713},"Events",{"href":714,"dataGaName":715,"dataGaLocation":469},"/events/","events",{"text":717,"config":718},"Partners",{"href":719,"dataGaName":720,"dataGaLocation":469},"/partners/","partners",{"config":722,"title":725,"text":726,"link":727},{"background":723,"textColor":724},"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":728,"config":729},"Read the latest",{"href":730,"dataGaName":731,"dataGaLocation":469},"/whats-new/","whats new",{"text":733,"config":734,"menu":736},"Company",{"dataNavLevelOne":735},"company",{"type":520,"columns":737},[738],{"items":739},[740,745,751,753,758,763,768,773,778,783],{"text":741,"config":742},"About",{"href":743,"dataGaName":744,"dataGaLocation":469},"/company/","about",{"text":746,"config":747,"footerGa":750},"Jobs",{"href":748,"dataGaName":749,"dataGaLocation":469},"/jobs/","jobs",{"dataGaName":749},{"text":712,"config":752},{"href":714,"dataGaName":715,"dataGaLocation":469},{"text":754,"config":755},"Leadership",{"href":756,"dataGaName":757,"dataGaLocation":469},"/company/team/e-group/","leadership",{"text":759,"config":760},"Handbook",{"href":761,"dataGaName":762,"dataGaLocation":469},"https://handbook.gitlab.com/","handbook",{"text":764,"config":765},"Investor relations",{"href":766,"dataGaName":767,"dataGaLocation":469},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":769,"config":770},"Trust Center",{"href":771,"dataGaName":772,"dataGaLocation":469},"/security/","trust center",{"text":774,"config":775},"AI Transparency Center",{"href":776,"dataGaName":777,"dataGaLocation":469},"/ai-transparency-center/","ai transparency center",{"text":779,"config":780},"Newsletter",{"href":781,"dataGaName":782,"dataGaLocation":469},"/company/contact/#contact-forms","newsletter",{"text":784,"config":785},"Press",{"href":786,"dataGaName":787,"dataGaLocation":469},"/press/","press",{"text":789,"config":790,"menu":791},"Contact us",{"dataNavLevelOne":735},{"type":520,"columns":792},[793],{"items":794},[795,800,805],{"text":796,"config":797},"Talk to sales",{"href":798,"dataGaName":799,"dataGaLocation":469},"/sales/","talk to sales",{"text":801,"config":802},"Support portal",{"href":803,"dataGaName":804,"dataGaLocation":469},"https://support.gitlab.com/hc/en-us","support portal",{"text":806,"config":807},"Customer portal",{"href":808,"dataGaName":809,"dataGaLocation":469},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":811,"login":812,"suggestions":819},"Close",{"text":813,"link":814},"To search repositories and projects, login to",{"text":815,"config":816},"gitlab.com",{"href":483,"dataGaName":817,"dataGaLocation":818},"search login","search",{"text":820,"default":821},"Suggestions",[822,824,828,830,834,838],{"text":500,"config":823},{"href":505,"dataGaName":500,"dataGaLocation":818},{"text":825,"config":826},"Code Suggestions (AI)",{"href":827,"dataGaName":825,"dataGaLocation":818},"/solutions/code-suggestions/",{"text":460,"config":829},{"href":537,"dataGaName":460,"dataGaLocation":818},{"text":831,"config":832},"GitLab on AWS",{"href":833,"dataGaName":831,"dataGaLocation":818},"/partners/technology-partners/aws/",{"text":835,"config":836},"GitLab on Google Cloud",{"href":837,"dataGaName":835,"dataGaLocation":818},"/partners/technology-partners/google-cloud-platform/",{"text":839,"config":840},"Why GitLab?",{"href":513,"dataGaName":839,"dataGaLocation":818},{"freeTrial":842,"mobileIcon":847,"desktopIcon":852,"secondaryButton":855},{"text":843,"config":844},"Start free trial",{"href":845,"dataGaName":474,"dataGaLocation":846},"https://gitlab.com/-/trials/new/","nav",{"altText":848,"config":849},"Gitlab Icon",{"src":850,"dataGaName":851,"dataGaLocation":846},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":848,"config":853},{"src":854,"dataGaName":851,"dataGaLocation":846},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":856,"config":857},"Get Started",{"href":858,"dataGaName":859,"dataGaLocation":846},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":861,"mobileIcon":865,"desktopIcon":867},{"text":862,"config":863},"Learn more about GitLab Duo",{"href":505,"dataGaName":864,"dataGaLocation":846},"gitlab duo",{"altText":848,"config":866},{"src":850,"dataGaName":851,"dataGaLocation":846},{"altText":848,"config":868},{"src":854,"dataGaName":851,"dataGaLocation":846},{"button":870,"mobileIcon":875,"desktopIcon":877},{"text":871,"config":872},"/switch",{"href":873,"dataGaName":874,"dataGaLocation":846},"#contact","switch",{"altText":848,"config":876},{"src":850,"dataGaName":851,"dataGaLocation":846},{"altText":848,"config":878},{"src":879,"dataGaName":851,"dataGaLocation":846},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":881,"mobileIcon":886,"desktopIcon":888},{"text":882,"config":883},"Back to pricing",{"href":616,"dataGaName":884,"dataGaLocation":846,"icon":885},"back to pricing","GoBack",{"altText":848,"config":887},{"src":850,"dataGaName":851,"dataGaLocation":846},{"altText":848,"config":889},{"src":854,"dataGaName":851,"dataGaLocation":846},{"title":891,"titleMobile":892,"button":893,"config":898},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":511,"config":894},{"href":895,"dataGaName":896,"dataGaLocation":897},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":899,"disabled":450},"release",{"data":901},{"text":902,"source":903,"edit":909,"contribute":914,"config":919,"items":924,"minimal":1134},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":904,"config":905},"View page source",{"href":906,"dataGaName":907,"dataGaLocation":908},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":910,"config":911},"Edit this page",{"href":912,"dataGaName":913,"dataGaLocation":908},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":915,"config":916},"Please contribute",{"href":917,"dataGaName":918,"dataGaLocation":908},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":920,"facebook":921,"youtube":922,"linkedin":923},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[925,972,1026,1070,1102],{"title":614,"links":926,"subMenu":941},[927,931,936],{"text":928,"config":929},"View plans",{"href":616,"dataGaName":930,"dataGaLocation":908},"view plans",{"text":932,"config":933},"Why Premium?",{"href":934,"dataGaName":935,"dataGaLocation":908},"/pricing/premium/","why premium",{"text":937,"config":938},"Why Ultimate?",{"href":939,"dataGaName":940,"dataGaLocation":908},"/pricing/ultimate/","why ultimate",[942],{"title":943,"links":944},"Contact Us",[945,948,950,952,957,962,967],{"text":946,"config":947},"Contact sales",{"href":798,"dataGaName":479,"dataGaLocation":908},{"text":801,"config":949},{"href":803,"dataGaName":804,"dataGaLocation":908},{"text":806,"config":951},{"href":808,"dataGaName":809,"dataGaLocation":908},{"text":953,"config":954},"Status",{"href":955,"dataGaName":956,"dataGaLocation":908},"https://status.gitlab.com/","status",{"text":958,"config":959},"Terms of use",{"href":960,"dataGaName":961,"dataGaLocation":908},"/terms/","terms of use",{"text":963,"config":964},"Privacy statement",{"href":965,"dataGaName":966,"dataGaLocation":908},"/privacy/","privacy statement",{"text":968,"config":969},"Cookie preferences",{"dataGaName":970,"dataGaLocation":908,"id":971,"isOneTrustButton":445},"cookie preferences","ot-sdk-btn",{"title":516,"links":973,"subMenu":982},[974,978],{"text":975,"config":976},"DevSecOps platform",{"href":498,"dataGaName":977,"dataGaLocation":908},"devsecops platform",{"text":979,"config":980},"AI-Assisted Development",{"href":505,"dataGaName":981,"dataGaLocation":908},"ai-assisted development",[983],{"title":984,"links":985},"Topics",[986,991,996,1001,1006,1011,1016,1021],{"text":987,"config":988},"CICD",{"href":989,"dataGaName":990,"dataGaLocation":908},"/topics/ci-cd/","cicd",{"text":992,"config":993},"GitOps",{"href":994,"dataGaName":995,"dataGaLocation":908},"/topics/gitops/","gitops",{"text":997,"config":998},"DevOps",{"href":999,"dataGaName":1000,"dataGaLocation":908},"/topics/devops/","devops",{"text":1002,"config":1003},"Version Control",{"href":1004,"dataGaName":1005,"dataGaLocation":908},"/topics/version-control/","version control",{"text":1007,"config":1008},"DevSecOps",{"href":1009,"dataGaName":1010,"dataGaLocation":908},"/topics/devsecops/","devsecops",{"text":1012,"config":1013},"Cloud Native",{"href":1014,"dataGaName":1015,"dataGaLocation":908},"/topics/cloud-native/","cloud native",{"text":1017,"config":1018},"AI for Coding",{"href":1019,"dataGaName":1020,"dataGaLocation":908},"/topics/devops/ai-for-coding/","ai for coding",{"text":1022,"config":1023},"Agentic AI",{"href":1024,"dataGaName":1025,"dataGaLocation":908},"/topics/agentic-ai/","agentic ai",{"title":1027,"links":1028},"Solutions",[1029,1031,1033,1038,1042,1045,1049,1052,1054,1057,1060,1065],{"text":558,"config":1030},{"href":553,"dataGaName":558,"dataGaLocation":908},{"text":548,"config":1032},{"href":532,"dataGaName":533,"dataGaLocation":908},{"text":1034,"config":1035},"Agile development",{"href":1036,"dataGaName":1037,"dataGaLocation":908},"/solutions/agile-delivery/","agile delivery",{"text":1039,"config":1040},"SCM",{"href":544,"dataGaName":1041,"dataGaLocation":908},"source code management",{"text":987,"config":1043},{"href":537,"dataGaName":1044,"dataGaLocation":908},"continuous integration & delivery",{"text":1046,"config":1047},"Value stream management",{"href":586,"dataGaName":1048,"dataGaLocation":908},"value stream management",{"text":992,"config":1050},{"href":1051,"dataGaName":995,"dataGaLocation":908},"/solutions/gitops/",{"text":596,"config":1053},{"href":599,"dataGaName":600,"dataGaLocation":908},{"text":1055,"config":1056},"Small business",{"href":605,"dataGaName":606,"dataGaLocation":908},{"text":1058,"config":1059},"Public sector",{"href":611,"dataGaName":612,"dataGaLocation":908},{"text":1061,"config":1062},"Education",{"href":1063,"dataGaName":1064,"dataGaLocation":908},"/solutions/education/","education",{"text":1066,"config":1067},"Financial services",{"href":1068,"dataGaName":1069,"dataGaLocation":908},"/solutions/finance/","financial services",{"title":619,"links":1071},[1072,1074,1076,1078,1081,1083,1086,1088,1090,1092,1094,1096,1098,1100],{"text":632,"config":1073},{"href":634,"dataGaName":635,"dataGaLocation":908},{"text":637,"config":1075},{"href":639,"dataGaName":640,"dataGaLocation":908},{"text":642,"config":1077},{"href":644,"dataGaName":645,"dataGaLocation":908},{"text":647,"config":1079},{"href":649,"dataGaName":1080,"dataGaLocation":908},"docs",{"text":670,"config":1082},{"href":672,"dataGaName":673,"dataGaLocation":908},{"text":1084,"config":1085},"What's new",{"href":730,"dataGaName":731,"dataGaLocation":908},{"text":665,"config":1087},{"href":667,"dataGaName":668,"dataGaLocation":908},{"text":684,"config":1089},{"href":686,"dataGaName":687,"dataGaLocation":908},{"text":692,"config":1091},{"href":694,"dataGaName":695,"dataGaLocation":908},{"text":697,"config":1093},{"href":699,"dataGaName":700,"dataGaLocation":908},{"text":702,"config":1095},{"href":704,"dataGaName":705,"dataGaLocation":908},{"text":707,"config":1097},{"href":709,"dataGaName":710,"dataGaLocation":908},{"text":712,"config":1099},{"href":714,"dataGaName":715,"dataGaLocation":908},{"text":717,"config":1101},{"href":719,"dataGaName":720,"dataGaLocation":908},{"title":733,"links":1103},[1104,1106,1108,1110,1112,1114,1118,1123,1125,1127,1129],{"text":741,"config":1105},{"href":743,"dataGaName":735,"dataGaLocation":908},{"text":746,"config":1107},{"href":748,"dataGaName":749,"dataGaLocation":908},{"text":754,"config":1109},{"href":756,"dataGaName":757,"dataGaLocation":908},{"text":759,"config":1111},{"href":761,"dataGaName":762,"dataGaLocation":908},{"text":764,"config":1113},{"href":766,"dataGaName":767,"dataGaLocation":908},{"text":1115,"config":1116},"Sustainability",{"href":1117,"dataGaName":1115,"dataGaLocation":908},"/sustainability/",{"text":1119,"config":1120},"Diversity, inclusion and belonging (DIB)",{"href":1121,"dataGaName":1122,"dataGaLocation":908},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":769,"config":1124},{"href":771,"dataGaName":772,"dataGaLocation":908},{"text":779,"config":1126},{"href":781,"dataGaName":782,"dataGaLocation":908},{"text":784,"config":1128},{"href":786,"dataGaName":787,"dataGaLocation":908},{"text":1130,"config":1131},"Modern Slavery Transparency Statement",{"href":1132,"dataGaName":1133,"dataGaLocation":908},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":1135},[1136,1139,1142],{"text":1137,"config":1138},"Terms",{"href":960,"dataGaName":961,"dataGaLocation":908},{"text":1140,"config":1141},"Cookies",{"dataGaName":970,"dataGaLocation":908,"id":971,"isOneTrustButton":445},{"text":1143,"config":1144},"Privacy",{"href":965,"dataGaName":966,"dataGaLocation":908},[1146],{"id":1147,"title":1148,"body":444,"config":1149,"content":1151,"description":444,"extension":1155,"meta":1156,"navigation":445,"path":1157,"seo":1158,"stem":1159,"__hash__":1160},"blogAuthors/en-us/blog/authors/gitlab-team.yml","Gitlab Team",{"template":1150},"BlogAuthor",{"name":7,"config":1152},{"headshot":1153,"ctfId":1154},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659488/Blog/Author%20Headshots/gitlab-logo-extra-whitespace.png","GitLab-Team","yml",{},"/en-us/blog/authors/gitlab-team",{},"en-us/blog/authors/gitlab-team","lmrXWttQYRbkSz_xfCfucB21pf44aAdxkvbbS48UVcE",[1162,1168,1172],{"title":1163,"description":1164,"heroImage":1165,"category":440,"date":1166,"authors":444,"slug":444,"externalUrl":1167},"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":1169,"description":1164,"heroImage":1165,"category":440,"date":1170,"authors":444,"slug":444,"externalUrl":1171}," 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":1173,"description":1174,"heroImage":1175,"category":440,"date":1176,"authors":1177,"slug":1179,"externalUrl":444},"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",[1178],"Cesar Saavedra","how-to-use-a-work-item-created-trigger",{"promotions":1181},[1182,1196,1207,1219],{"id":1183,"categories":1184,"header":1186,"text":1187,"button":1188,"image":1193},"ai-modernization",[1185],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":1189,"config":1190},"Get your AI maturity score",{"href":1191,"dataGaName":1192,"dataGaLocation":673},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":1194},{"src":1195},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1197,"categories":1198,"header":1199,"text":1187,"button":1200,"image":1204},"devops-modernization",[440,1010],"Are you just managing tools or shipping innovation?",{"text":1201,"config":1202},"Get your DevOps maturity score",{"href":1203,"dataGaName":1192,"dataGaLocation":673},"/assessments/devops-modernization-assessment/",{"config":1205},{"src":1206},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1208,"categories":1209,"header":1211,"text":1187,"button":1212,"image":1216},"security-modernization",[1210],"security","Are you trading speed for security?",{"text":1213,"config":1214},"Get your security maturity score",{"href":1215,"dataGaName":1192,"dataGaLocation":673},"/assessments/security-modernization-assessment/",{"config":1217},{"src":1218},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1220,"paths":1221,"header":1224,"text":1225,"button":1226,"image":1231},"github-azure-migration",[1222,1223],"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":1227,"config":1228},"See how GitLab compares to GitHub",{"href":1229,"dataGaName":1230,"dataGaLocation":673},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1232},{"src":1206},{"header":1234,"blurb":1235,"button":1236,"secondaryButton":1241},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":1237,"config":1238},"Get your free trial",{"href":1239,"dataGaName":474,"dataGaLocation":1240},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":946,"config":1242},{"href":798,"dataGaName":479,"dataGaLocation":1240},1786803769029]