[{"data":1,"prerenderedAt":1503},["ShallowReactive",2],{"/blog/whitesource-for-dependency-scanning":3,"navigation-en-us":723,"banner-en-us":1148,"footer-en-us":1158,"blog-post-authors-en-us-Fernando Diaz":1400,"blog-related-posts-en-us-whitesource-for-dependency-scanning":1415,"blog-promotions-en-us":1440,"next-steps-en-us":1493},{"id":4,"title":5,"authors":6,"body":8,"category":701,"date":702,"description":703,"extension":704,"externalUrl":705,"faq":705,"featured":706,"heroImage":707,"meta":708,"navigation":388,"path":709,"seo":710,"slug":714,"stem":715,"tags":716,"template":721,"updatedDate":705,"__hash__":722},"blogPosts/en-us/blog/whitesource-for-dependency-scanning.md","How to secure your dependencies with GitLab and WhiteSource",[7],"Fernando Diaz",{"type":9,"value":10,"toc":690},"minimark",[11,15,29,41,44,49,52,57,60,86,90,93,182,186,189,204,212,252,259,305,309,335,453,457,465,468,496,499,506,511,518,531,559,563,573,576,583,586,593,596,603,616,619,627,647,651,672,686],[12,13,14],"p",{},"GitLab's WhiteSouce integration empowers developers to enhance application security\ndirectly within the GitLab UI. The integration provides dependency scanning with\nin-depth analysis, along with actionable insights, and auto-remediation. WhiteSource for\nGitLab enhances your team's productivity, security, and compliance.",[12,16,17,23,24,28],{},[18,19,22],"a",{"href":20,"rel":21},"https://twitter.com/rarkins?lang=en",[],"Rhys Arkins",", Product Director at WhiteSource, and I hosted a webinar on \"",[18,25,27],{"href":26},"/webcast/scalable-secure-ci/","Harnessing development to scale AppSec","\"\nshowcasing the features of GitLab's WhiteSource integration for open source dependency scanning.",[30,31,34],"figure",{"className":32},[33],"video_container",[35,36,40],"iframe",{"src":37,"frameBorder":38,"allowFullScreen":39},"https://www.youtube-nocookie.com/embed/yJpE_ACt9og","0","true"," ",[12,42,43],{},"This blog post will guide you through setting up WhiteSource in your private GitLab instance\nand show you how the integration with WhiteSource enhances your application's security within GitLab.",[45,46,48],"h2",{"id":47},"installing-the-whitesource-integration","Installing the WhiteSource integration",[12,50,51],{},"First, let's go over how to install the WhiteSource integration. In this section, I will review how to\nset up GitLab service credentials, generate a WhiteSource configuration,\nbuild WhiteSource containers, and how to run them in a Kubernetes cluster.",[53,54,56],"h3",{"id":55},"requirements-for-whitesource-integration","Requirements for WhiteSource integration",[12,58,59],{},"But first, the WhiteSource integration requires that you have the following setup:",[61,62,63,71,79],"ul",{},[64,65,66,70],"li",{},[18,67,69],{"href":68},"/pricing/#self-managed","GitLab on-prem instance",": The GitLab instance where the WhiteSource integration will run.",[64,72,73,78],{},[18,74,77],{"href":75,"rel":76},"https://www.whitesourcesoftware.com/whitesource-pricing/",[],"WhiteSource account",": Provides access to the WhiteSource integration.",[64,80,81,85],{},[18,82,84],{"href":83},"/solutions/kubernetes/","Kubernetes cluster",": Deploys the WhiteSource containers.",[53,87,89],{"id":88},"create-gitlab-service-credentials","Create GitLab service credentials",[12,91,92],{},"The next step is to create GitLab service credentials. This can be accomplished in three simple steps:",[61,94,95,144,151,179],{},[64,96,97,98,102,103,140,143],{},"In your GitLab instance, go to ",[99,100,101],"code",{},"Admin Area > System Hooks"," and create a system hook as follows:",[61,104,105,114,123,132],{},[64,106,107,40,111],{},[108,109,110],"strong",{},"URL:",[99,112,113],{},"https://whitesource.INGRESS_URL.com/payload",[64,115,116,119,120],{},[108,117,118],{},"Secret Token:"," Make up a token, you can use ",[99,121,122],{},"openssl rand -base64 12",[64,124,125,128,129],{},[108,126,127],{},"Trigger:"," All except ",[99,130,131],{},"Tag push events",[64,133,134,40,137],{},[108,135,136],{},"Enable SSL Verification:",[99,138,139],{},"Yes",[141,142],"br",{},"Note: Make sure you save the secret token for use in the next section.",[64,145,146,147,150],{},"Create a user named ",[99,148,149],{},"@whitesource",", with a developer role. An email is not required.",[64,152,153,154,156,157,160,161],{},"As the ",[99,155,149],{}," user, go to ",[99,158,159],{},"Settings > Access tokens"," and create a personal access token:",[61,162,163,171],{},[64,164,165,40,168],{},[108,166,167],{},"Name:",[99,169,170],{},"WhiteSourceToken",[64,172,173,40,176],{},[108,174,175],{},"Scopes:",[99,177,178],{},"all",[64,180,181],{},"Remember to save the access token for use in the next section.",[53,183,185],{"id":184},"generate-the-whitesource-configuration","Generate the WhiteSource configuration",[12,187,188],{},"Next, we generate the WhiteSource configuration, which is used to configure the WhiteSource integration containers.\nThis can be done in a few simple steps:",[61,190,191],{},[64,192,193,194,199,200,203],{},"Login to ",[18,195,198],{"href":196,"rel":197},"https://saas.whitesourcesoftware.com/Wss/WSS.html#!login",[],"WhiteSource"," and click on\nthe ",[99,201,202],{},"Integrate"," tab.",[12,205,206,211],{},[207,208],"img",{"alt":209,"src":210},"whitesource webpage view","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782404926/site/Content%20Images/whitesource-integration/whitesource_webpage_view.png","\nWhiteSource mainpage",[61,213,214],{},[64,215,216,217,220,221],{},"Expand the ",[99,218,219],{},"WhiteSource for GitLab server"," bar and fill the following:\n",[61,222,223,231,238,244],{},[64,224,225,40,228],{},[108,226,227],{},"GitLab Server API URL:",[99,229,230],{},"https://GITLAB_SERVER_URL/api/v4",[64,232,233,40,236],{},[108,234,235],{},"GitLab Webhook URL:",[99,237,113],{},[64,239,240,243],{},[108,241,242],{},"GitLab Webhook secret:"," Use the same secret generated in GitLab credentials section",[64,245,246,40,249,251],{},[108,247,248],{},"GitLab personal access token:",[99,250,149],{}," user access token",[12,253,254,258],{},[207,255],{"alt":256,"src":257},"whitesource integration view","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782404925/site/Content%20Images/whitesource-integration/whitesource_integration_setup.png","\nWhiteSource integrations page",[61,260,261,268,277,289,296],{},[64,262,263,264,267],{},"Press ",[99,265,266],{},"Get Activation Key"," and copy the generated key",[64,269,270,271,276],{},"Open the ",[18,272,275],{"href":273,"rel":274},"https://gitlab.com/fjdiaz/whitesource-helm/-/blob/master/whitesource/wss-configuration/index.html",[],"wss-configurator"," with your browser",[64,278,279,280,283,284],{},"Select ",[99,281,282],{},"Export"," from the menu, and select the ",[18,285,288],{"href":286,"rel":287},"https://gitlab.com/fjdiaz/whitesource-helm/-/blob/master/whitesource/wss-configuration/config/prop.json",[],"prop.json",[64,290,291,292,295],{},"Click on the ",[99,293,294],{},"General"," tab",[64,297,298,299,301,302,304],{},"Paste the generated key and click ",[99,300,282],{}," to save a new ",[99,303,288],{}," file",[53,306,308],{"id":307},"build-the-whitesource-containers","Build the WhiteSource containers",[61,310,311,332],{},[64,312,313,314,319,320,325,326,331],{},"Move the generated prop.json from the previous section to ",[18,315,318],{"href":316,"rel":317},"https://gitlab.com/fjdiaz/whitesource-helm/-/tree/master/whitesource/wss-gls-app/docker/conf",[],"wss-gls-app",", ",[18,321,324],{"href":322,"rel":323},"https://gitlab.com/fjdiaz/whitesource-helm/-/tree/master/whitesource/wss-remediate/docker/src",[],"wss-remediate",", and ",[18,327,330],{"href":328,"rel":329},"https://gitlab.com/fjdiaz/whitesource-helm/-/tree/master/whitesource/wss-scanner/docker/conf",[],"wss-scanner",".",[64,333,334],{},"Build and push the Docker containers:",[336,337,342],"pre",{"className":338,"code":339,"language":340,"meta":341,"style":341},"language-bash shiki shiki-themes github-light","$ docker build -t wss-gls-app:19.12.2 whitesource/wss-gls-app/docker\n$ docker push wss-gls-app:19.12.2\n\n$ docker build -t wss-scanner:19.12.1.2 whitesource/wss-scanner/docker\n$ docker push wss-scanner:19.12.1.2\n\n$ docker build -t wss-remediate:19.12.2 whitesource/wss-remediate/docker\n$ docker push wss-remediate:19.12.2\n","bash","",[99,343,344,370,383,390,407,419,424,441],{"__ignoreMap":341},[345,346,349,353,357,360,364,367],"span",{"class":347,"line":348},"line",1,[345,350,352],{"class":351},"s7eDp","$",[345,354,356],{"class":355},"sYBdl"," docker",[345,358,359],{"class":355}," build",[345,361,363],{"class":362},"sYu0t"," -t",[345,365,366],{"class":355}," wss-gls-app:19.12.2",[345,368,369],{"class":355}," whitesource/wss-gls-app/docker\n",[345,371,373,375,377,380],{"class":347,"line":372},2,[345,374,352],{"class":351},[345,376,356],{"class":355},[345,378,379],{"class":355}," push",[345,381,382],{"class":355}," wss-gls-app:19.12.2\n",[345,384,386],{"class":347,"line":385},3,[345,387,389],{"emptyLinePlaceholder":388},true,"\n",[345,391,393,395,397,399,401,404],{"class":347,"line":392},4,[345,394,352],{"class":351},[345,396,356],{"class":355},[345,398,359],{"class":355},[345,400,363],{"class":362},[345,402,403],{"class":355}," wss-scanner:19.12.1.2",[345,405,406],{"class":355}," whitesource/wss-scanner/docker\n",[345,408,410,412,414,416],{"class":347,"line":409},5,[345,411,352],{"class":351},[345,413,356],{"class":355},[345,415,379],{"class":355},[345,417,418],{"class":355}," wss-scanner:19.12.1.2\n",[345,420,422],{"class":347,"line":421},6,[345,423,389],{"emptyLinePlaceholder":388},[345,425,427,429,431,433,435,438],{"class":347,"line":426},7,[345,428,352],{"class":351},[345,430,356],{"class":355},[345,432,359],{"class":355},[345,434,363],{"class":362},[345,436,437],{"class":355}," wss-remediate:19.12.2",[345,439,440],{"class":355}," whitesource/wss-remediate/docker\n",[345,442,444,446,448,450],{"class":347,"line":443},8,[345,445,352],{"class":351},[345,447,356],{"class":355},[345,449,379],{"class":355},[345,451,452],{"class":355}," wss-remediate:19.12.2\n",[53,454,456],{"id":455},"running-the-whitesource-containers","Running the WhiteSource containers",[12,458,459,460,464],{},"GitLab provides native Kubernetes cluster integration. This means that GitLab allows you\nto deploy software from ",[18,461,463],{"href":462},"/topics/ci-cd/","GitLab CI/CD"," pipelines directly to your Kubernetes cluster.",[12,466,467],{},"WhiteSource containers can be deployed and managed within the same Kubernetes cluster\nused to deploy your application, all by running a simple Helm commands.",[61,469,470,478,486],{},[64,471,472,473],{},"Download the WhiteSource ",[18,474,477],{"href":475,"rel":476},"https://gitlab.com/fjdiaz/whitesource-helm",[],"Helm chart",[64,479,480,481],{},"Edit ",[18,482,485],{"href":483,"rel":484},"https://gitlab.com/fjdiaz/whitesource-helm/-/blob/master/helm/whitesource/values.yaml",[],"values.yaml",[64,487,488,489,492,493],{},"In vaules.yaml set ",[99,490,491],{},"whitesource.ingress"," to ",[108,494,495],{},"https://whitesource.INGRESS_URL.com",[12,497,498],{},"You can get the INGRESS_URL from your Kubernetes cluster settings",[12,500,501,505],{},[207,502],{"alt":503,"src":504},"ingress url location","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782404924/site/Content%20Images/whitesource-integration/base_domain.png","\nIngress URL location",[61,507,508],{},[64,509,510],{},"Make sure Ingress is installed.",[12,512,513,517],{},[207,514],{"alt":515,"src":516},"ingress installation","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782404924/site/Content%20Images/whitesource-integration/ingress_installation.png","\nInstalling Ingress",[61,519,520,528],{},[64,521,522,523],{},"Install ",[18,524,527],{"href":525,"rel":526},"https://helm.sh/docs/intro/install/",[],"Helm",[64,529,530],{},"Deploy WhiteSource with Helm template:",[336,532,534],{"className":338,"code":533,"language":340,"meta":341,"style":341},"helm upgrade -f helm/whitesource/values.yaml --install whitesource-gitlab ./helm/whitesource\n",[99,535,536],{"__ignoreMap":341},[345,537,538,541,544,547,550,553,556],{"class":347,"line":348},[345,539,540],{"class":351},"helm",[345,542,543],{"class":355}," upgrade",[345,545,546],{"class":362}," -f",[345,548,549],{"class":355}," helm/whitesource/values.yaml",[345,551,552],{"class":362}," --install",[345,554,555],{"class":355}," whitesource-gitlab",[345,557,558],{"class":355}," ./helm/whitesource\n",[45,560,562],{"id":561},"using-whitesource","Using WhiteSource",[12,564,565,566,568,569,572],{},"Once the WhiteSource plugin has been installed we can add the ",[99,567,149],{}," user to the repositories\nwe wish to scan. A merge request (MR) with the ",[99,570,571],{},".whitesource"," file will be generated automatically.",[12,574,575],{},"WhiteSource will now scan your repository and generate issues for all the vulnerabilities discovered on the main (master)\nbranch. These issues will provide detailed information on the vulnerability as well as how to resolve it. Some issues\ncan even be auto-remediated.",[12,577,578,582],{},[207,579],{"alt":580,"src":581},"whitesource issue view","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782404925/site/Content%20Images/whitesource-integration/whitesource_issues.png","\nWhiteSource vulnerability issues",[12,584,585],{},"Each time a new MR is pushed, a WhiteSource scan will run, and provide a detailed output.",[12,587,588,592],{},[207,589],{"alt":590,"src":591},"whitesource merge request view","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782404926/site/Content%20Images/whitesource-integration/whitesource_merge_requests.png","\nWhiteSource MR scanning",[12,594,595],{},"Each link provided by WhiteSource shows detailed information on the vulnerabilities the scan detected:",[12,597,598,602],{},[207,599],{"alt":600,"src":601},"whitesource web links","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782404925/site/Content%20Images/whitesource-integration/whitesource_advanced_issues.png","\nWhiteSource vulnerability information",[12,604,605,606,611,612,331],{},"WhiteSource can be integrated into the ",[18,607,610],{"href":608,"rel":609},"https://docs.gitlab.com/user/application_security/security_dashboard/",[],"GitLab Security Dashboard"," so that your security team can manage the\nstatus of these vulnerabilites. Access to the Security Dashboard requires a ",[18,613,615],{"href":614},"/pricing/ultimate/","GitLab Ultimate account",[12,617,618],{},"For integrating WhiteSource to the Security Dashboard, add the following to the CI.yaml:",[336,620,625],{"className":621,"code":623,"language":624,"meta":341},[622],"language-text","whitesource-security-publisher:\n  image: openjdk:8-jdk\n  when: manual\n  script:\n    - curl \"{{WEBHOOK_URL}}/securityReport?repoId=$CI_PROJECT_ID&repoName=$CI_PROJECT_NAME&ownerName=$CI_PROJECT_NAMESPACE&branchName=$CI_COMMIT_REF_NAME&defaultBranchName=$CI_DEFAULT_BRANCH&commitId=$CI_COMMIT_SHA\" -o gl-dependency-scanning-report-ws.json\n  artifacts:\n    paths:\n      - gl-dependency-scanning-report-ws.json\n    reports:\n      dependency_scanning:\n        - gl-dependency-scanning-report-ws.json\n    expire_in: 30 days\n\n","text",[99,626,623],{"__ignoreMap":341},[12,628,629,630,635,636,640,641,646],{},"For more details on the integration checkout ",[18,631,634],{"href":632,"rel":633},"https://whitesource.atlassian.net/wiki/spaces/WD/pages/806191420/WhiteSource+for+GitLab",[],"WhiteSource for GitLab",".\nLearn more at ",[18,637,639],{"href":638},"/solutions/application-security-testing/","DevSecOps"," and checkout the ",[18,642,645],{"href":643,"rel":644},"https://docs.gitlab.com/user/application_security/",[],"Secure direction page"," for more\ninformation on the upcoming features and integrations.",[45,648,650],{"id":649},"learn-more-about-application-security-at-gitlab","Learn more about application security at GitLab",[61,652,653,659,665],{},[64,654,655],{},[18,656,658],{"href":657},"/blog/secure-stage-for-appsec/","How application security engineers can use GitLab to secure their projects",[64,660,661],{},[18,662,664],{"href":663},"/blog/container-security-in-gitlab/","Get better container security with GitLab: 4 real-world examples",[64,666,667],{},[18,668,671],{"href":669,"rel":670},"https://docs.gitlab.com/integration/jenkins/",[],"How to capitalize on GitLab Security tools with external CI",[12,673,674,675,680,681],{},"Cover image by ",[18,676,679],{"href":677,"rel":678},"https://unsplash.com/@alexandramunozavelar",[],"Alexandra Avelar"," on ",[18,682,685],{"href":683,"rel":684},"https://unsplash.com/s/photos/snow-capped-mountains",[],"Unsplash",[687,688,689],"style",{},"html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}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":341,"searchDepth":372,"depth":372,"links":691},[692,699,700],{"id":47,"depth":372,"text":48,"children":693},[694,695,696,697,698],{"id":55,"depth":385,"text":56},{"id":88,"depth":385,"text":89},{"id":184,"depth":385,"text":185},{"id":307,"depth":385,"text":308},{"id":455,"depth":385,"text":456},{"id":561,"depth":372,"text":562},{"id":649,"depth":372,"text":650},"security","2020-08-10","We walk you through how to configure WhiteSource in your GitLab instance to enhance your application security.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663445/Blog/Hero%20Images/snowymtns.jpg",{},"/en-us/blog/whitesource-for-dependency-scanning",{"title":5,"description":703,"ogTitle":5,"ogDescription":703,"noIndex":706,"ogImage":707,"ogUrl":711,"ogSiteName":712,"ogType":713,"canonicalUrls":711},"https://about.gitlab.com/blog/whitesource-for-dependency-scanning","https://about.gitlab.com","article","whitesource-for-dependency-scanning","en-us/blog/whitesource-for-dependency-scanning",[717,701,718,719,720],"CI/CD","integrations","agile","kubernetes","BlogPost","ZWH6VXmFbn9T0MAn-FkexzzX5JH9SLWNNC-14jTGG4U",{"logo":724,"freeTrial":729,"sales":734,"login":739,"items":744,"search":1068,"minimal":1099,"duo":1118,"switchNav":1127,"pricingDeployment":1138},{"config":725},{"href":726,"dataGaName":727,"dataGaLocation":728},"/","gitlab logo","header",{"text":730,"config":731},"Get free trial",{"href":732,"dataGaName":733,"dataGaLocation":728},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":735,"config":736},"Request a demo",{"href":737,"dataGaName":738,"dataGaLocation":728},"/sales/?contact-topic=request-demo","sales",{"text":740,"config":741},"Sign in",{"href":742,"dataGaName":743,"dataGaLocation":728},"https://gitlab.com/users/sign_in/","sign in",[745,774,872,877,990,1046],{"text":746,"config":747,"menu":749},"Platform",{"dataNavLevelOne":748},"platform",{"type":750,"columns":751},"cards",[752,758,766],{"title":746,"description":753,"link":754},"The intelligent orchestration platform for DevSecOps",{"text":755,"config":756},"Explore our Platform",{"href":757,"dataGaName":748,"dataGaLocation":728},"/platform/",{"title":759,"description":760,"link":761},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":762,"config":763},"Meet GitLab Duo",{"href":764,"dataGaName":765,"dataGaLocation":728},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":767,"description":768,"link":769},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":770,"config":771},"Learn more",{"href":772,"dataGaName":773,"dataGaLocation":728},"/why-gitlab/","why gitlab",{"text":775,"left":388,"config":776,"menu":778},"Product",{"dataNavLevelOne":777},"solutions",{"type":779,"link":780,"columns":784,"feature":851},"lists",{"text":781,"config":782},"View all Solutions",{"href":783,"dataGaName":777,"dataGaLocation":728},"/solutions/",[785,808,830],{"title":786,"description":787,"link":788,"items":793},"Automation","CI/CD and automation to accelerate deployment",{"config":789},{"icon":790,"href":791,"dataGaName":792,"dataGaLocation":728},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[794,797,800,804],{"text":717,"config":795},{"href":796,"dataGaLocation":728,"dataGaName":717},"/solutions/continuous-integration/",{"text":759,"config":798},{"href":764,"dataGaLocation":728,"dataGaName":799},"gitlab duo agent platform - product menu",{"text":801,"config":802},"Source Code Management",{"href":803,"dataGaLocation":728,"dataGaName":801},"/solutions/source-code-management/",{"text":805,"config":806},"Automated Software Delivery",{"href":791,"dataGaLocation":728,"dataGaName":807},"Automated software delivery",{"title":809,"description":810,"link":811,"items":815},"Security","Deliver code faster without compromising security",{"config":812},{"href":638,"dataGaName":813,"dataGaLocation":728,"icon":814},"security and compliance","ShieldCheckLight",[816,820,825],{"text":817,"config":818},"Application Security Testing",{"href":638,"dataGaName":819,"dataGaLocation":728},"Application security testing",{"text":821,"config":822},"Software Supply Chain Security",{"href":823,"dataGaLocation":728,"dataGaName":824},"/solutions/supply-chain/","Software supply chain security",{"text":826,"config":827},"Software Compliance",{"href":828,"dataGaName":829,"dataGaLocation":728},"/solutions/software-compliance/","software compliance",{"title":831,"link":832,"items":837},"Measurement",{"config":833},{"icon":834,"href":835,"dataGaName":836,"dataGaLocation":728},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[838,842,846],{"text":839,"config":840},"Visibility & Measurement",{"href":835,"dataGaLocation":728,"dataGaName":841},"Visibility and Measurement",{"text":843,"config":844},"Value Stream Management",{"href":845,"dataGaLocation":728,"dataGaName":843},"/solutions/value-stream-management/",{"text":847,"config":848},"Analytics & Insights",{"href":849,"dataGaLocation":728,"dataGaName":850},"/solutions/analytics-and-insights/","Analytics and insights",{"title":852,"type":779,"items":853},"GitLab for",[854,860,866],{"text":855,"config":856},"Enterprise",{"icon":857,"href":858,"dataGaLocation":728,"dataGaName":859},"Building","/enterprise/","enterprise",{"text":861,"config":862},"Small Business",{"icon":863,"href":864,"dataGaLocation":728,"dataGaName":865},"Work","/small-business/","small business",{"text":867,"config":868},"Public Sector",{"icon":869,"href":870,"dataGaLocation":728,"dataGaName":871},"Organization","/solutions/public-sector/","public sector",{"text":873,"config":874},"Pricing",{"href":875,"dataGaName":876,"dataGaLocation":728,"dataNavLevelOne":876},"/pricing/","pricing",{"text":878,"config":879,"menu":881},"Resources",{"dataNavLevelOne":880},"resources",{"type":779,"link":882,"columns":886,"feature":979},{"text":883,"config":884},"View all resources",{"href":885,"dataGaName":880,"dataGaLocation":728},"/resources/",[887,919,946],{"title":888,"items":889},"Getting started",[890,895,900,905,910,915],{"text":891,"config":892},"Install",{"href":893,"dataGaName":894,"dataGaLocation":728},"/install/","install",{"text":896,"config":897},"Quick start guides",{"href":898,"dataGaName":899,"dataGaLocation":728},"/get-started/","quick setup checklists",{"text":901,"config":902},"Learn",{"href":903,"dataGaLocation":728,"dataGaName":904},"https://university.gitlab.com/","learn",{"text":906,"config":907},"Product documentation",{"href":908,"dataGaName":909,"dataGaLocation":728},"https://docs.gitlab.com/","product documentation",{"text":911,"config":912},"Best practice videos",{"href":913,"dataGaName":914,"dataGaLocation":728},"/getting-started-videos/","best practice videos",{"text":916,"config":917},"Integrations",{"href":918,"dataGaName":718,"dataGaLocation":728},"/integrations/",{"title":920,"items":921},"Discover",[922,927,932,937,941],{"text":923,"config":924},"Customer success stories",{"href":925,"dataGaName":926,"dataGaLocation":728},"/customers/","customer success stories",{"text":928,"config":929},"Blog",{"href":930,"dataGaName":931,"dataGaLocation":728},"/blog/","blog",{"text":933,"config":934},"Demo Hub",{"href":935,"dataGaName":936,"dataGaLocation":728},"/demo-hub/","demo hub",{"text":938,"config":939},"The Source",{"href":940,"dataGaName":931,"dataGaLocation":728},"/the-source/",{"text":942,"config":943},"Remote",{"href":944,"dataGaName":945,"dataGaLocation":728},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":947,"items":948},"Connect",[949,954,959,964,969,974],{"text":950,"config":951},"GitLab Services",{"href":952,"dataGaName":953,"dataGaLocation":728},"/services/","services",{"text":955,"config":956},"Contribute",{"href":957,"dataGaName":958,"dataGaLocation":728},"https://contributors.gitlab.com","contribute",{"text":960,"config":961},"Community",{"href":962,"dataGaName":963,"dataGaLocation":728},"/community/","community",{"text":965,"config":966},"Forum",{"href":967,"dataGaName":968,"dataGaLocation":728},"https://forum.gitlab.com/","forum",{"text":970,"config":971},"Events",{"href":972,"dataGaName":973,"dataGaLocation":728},"/events/","events",{"text":975,"config":976},"Partners",{"href":977,"dataGaName":978,"dataGaLocation":728},"/partners/","partners",{"config":980,"title":983,"text":984,"link":985},{"background":981,"textColor":982},"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":986,"config":987},"Read the latest",{"href":988,"dataGaName":989,"dataGaLocation":728},"/whats-new/","whats new",{"text":991,"config":992,"menu":994},"Company",{"dataNavLevelOne":993},"company",{"type":779,"columns":995},[996],{"items":997},[998,1003,1009,1011,1016,1021,1026,1031,1036,1041],{"text":999,"config":1000},"About",{"href":1001,"dataGaName":1002,"dataGaLocation":728},"/company/","about",{"text":1004,"config":1005,"footerGa":1008},"Jobs",{"href":1006,"dataGaName":1007,"dataGaLocation":728},"/jobs/","jobs",{"dataGaName":1007},{"text":970,"config":1010},{"href":972,"dataGaName":973,"dataGaLocation":728},{"text":1012,"config":1013},"Leadership",{"href":1014,"dataGaName":1015,"dataGaLocation":728},"/company/team/e-group/","leadership",{"text":1017,"config":1018},"Handbook",{"href":1019,"dataGaName":1020,"dataGaLocation":728},"https://handbook.gitlab.com/","handbook",{"text":1022,"config":1023},"Investor relations",{"href":1024,"dataGaName":1025,"dataGaLocation":728},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":1027,"config":1028},"Trust Center",{"href":1029,"dataGaName":1030,"dataGaLocation":728},"/security/","trust center",{"text":1032,"config":1033},"AI Transparency Center",{"href":1034,"dataGaName":1035,"dataGaLocation":728},"/ai-transparency-center/","ai transparency center",{"text":1037,"config":1038},"Newsletter",{"href":1039,"dataGaName":1040,"dataGaLocation":728},"/company/contact/#contact-forms","newsletter",{"text":1042,"config":1043},"Press",{"href":1044,"dataGaName":1045,"dataGaLocation":728},"/press/","press",{"text":1047,"config":1048,"menu":1049},"Contact us",{"dataNavLevelOne":993},{"type":779,"columns":1050},[1051],{"items":1052},[1053,1058,1063],{"text":1054,"config":1055},"Talk to sales",{"href":1056,"dataGaName":1057,"dataGaLocation":728},"/sales/","talk to sales",{"text":1059,"config":1060},"Support portal",{"href":1061,"dataGaName":1062,"dataGaLocation":728},"https://support.gitlab.com/hc/en-us","support portal",{"text":1064,"config":1065},"Customer portal",{"href":1066,"dataGaName":1067,"dataGaLocation":728},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":1069,"login":1070,"suggestions":1077},"Close",{"text":1071,"link":1072},"To search repositories and projects, login to",{"text":1073,"config":1074},"gitlab.com",{"href":742,"dataGaName":1075,"dataGaLocation":1076},"search login","search",{"text":1078,"default":1079},"Suggestions",[1080,1082,1086,1088,1092,1096],{"text":759,"config":1081},{"href":764,"dataGaName":759,"dataGaLocation":1076},{"text":1083,"config":1084},"Code Suggestions (AI)",{"href":1085,"dataGaName":1083,"dataGaLocation":1076},"/solutions/code-suggestions/",{"text":717,"config":1087},{"href":796,"dataGaName":717,"dataGaLocation":1076},{"text":1089,"config":1090},"GitLab on AWS",{"href":1091,"dataGaName":1089,"dataGaLocation":1076},"/partners/technology-partners/aws/",{"text":1093,"config":1094},"GitLab on Google Cloud",{"href":1095,"dataGaName":1093,"dataGaLocation":1076},"/partners/technology-partners/google-cloud-platform/",{"text":1097,"config":1098},"Why GitLab?",{"href":772,"dataGaName":1097,"dataGaLocation":1076},{"freeTrial":1100,"mobileIcon":1105,"desktopIcon":1110,"secondaryButton":1113},{"text":1101,"config":1102},"Start free trial",{"href":1103,"dataGaName":733,"dataGaLocation":1104},"https://gitlab.com/-/trials/new/","nav",{"altText":1106,"config":1107},"Gitlab Icon",{"src":1108,"dataGaName":1109,"dataGaLocation":1104},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":1106,"config":1111},{"src":1112,"dataGaName":1109,"dataGaLocation":1104},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":1114,"config":1115},"Get Started",{"href":1116,"dataGaName":1117,"dataGaLocation":1104},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":1119,"mobileIcon":1123,"desktopIcon":1125},{"text":1120,"config":1121},"Learn more about GitLab Duo",{"href":764,"dataGaName":1122,"dataGaLocation":1104},"gitlab duo",{"altText":1106,"config":1124},{"src":1108,"dataGaName":1109,"dataGaLocation":1104},{"altText":1106,"config":1126},{"src":1112,"dataGaName":1109,"dataGaLocation":1104},{"button":1128,"mobileIcon":1133,"desktopIcon":1135},{"text":1129,"config":1130},"/switch",{"href":1131,"dataGaName":1132,"dataGaLocation":1104},"#contact","switch",{"altText":1106,"config":1134},{"src":1108,"dataGaName":1109,"dataGaLocation":1104},{"altText":1106,"config":1136},{"src":1137,"dataGaName":1109,"dataGaLocation":1104},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":1139,"mobileIcon":1144,"desktopIcon":1146},{"text":1140,"config":1141},"Back to pricing",{"href":875,"dataGaName":1142,"dataGaLocation":1104,"icon":1143},"back to pricing","GoBack",{"altText":1106,"config":1145},{"src":1108,"dataGaName":1109,"dataGaLocation":1104},{"altText":1106,"config":1147},{"src":1112,"dataGaName":1109,"dataGaLocation":1104},{"title":1149,"titleMobile":1150,"button":1151,"config":1156},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":770,"config":1152},{"href":1153,"dataGaName":1154,"dataGaLocation":1155},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":1157,"disabled":706},"release",{"data":1159},{"text":1160,"source":1161,"edit":1167,"contribute":1172,"config":1177,"items":1182,"minimal":1389},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":1162,"config":1163},"View page source",{"href":1164,"dataGaName":1165,"dataGaLocation":1166},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":1168,"config":1169},"Edit this page",{"href":1170,"dataGaName":1171,"dataGaLocation":1166},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":1173,"config":1174},"Please contribute",{"href":1175,"dataGaName":1176,"dataGaLocation":1166},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":1178,"facebook":1179,"youtube":1180,"linkedin":1181},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[1183,1229,1281,1325,1357],{"title":873,"links":1184,"subMenu":1198},[1185,1189,1194],{"text":1186,"config":1187},"View plans",{"href":875,"dataGaName":1188,"dataGaLocation":1166},"view plans",{"text":1190,"config":1191},"Why Premium?",{"href":1192,"dataGaName":1193,"dataGaLocation":1166},"/pricing/premium/","why premium",{"text":1195,"config":1196},"Why Ultimate?",{"href":614,"dataGaName":1197,"dataGaLocation":1166},"why ultimate",[1199],{"title":1200,"links":1201},"Contact Us",[1202,1205,1207,1209,1214,1219,1224],{"text":1203,"config":1204},"Contact sales",{"href":1056,"dataGaName":738,"dataGaLocation":1166},{"text":1059,"config":1206},{"href":1061,"dataGaName":1062,"dataGaLocation":1166},{"text":1064,"config":1208},{"href":1066,"dataGaName":1067,"dataGaLocation":1166},{"text":1210,"config":1211},"Status",{"href":1212,"dataGaName":1213,"dataGaLocation":1166},"https://status.gitlab.com/","status",{"text":1215,"config":1216},"Terms of use",{"href":1217,"dataGaName":1218,"dataGaLocation":1166},"/terms/","terms of use",{"text":1220,"config":1221},"Privacy statement",{"href":1222,"dataGaName":1223,"dataGaLocation":1166},"/privacy/","privacy statement",{"text":1225,"config":1226},"Cookie preferences",{"dataGaName":1227,"dataGaLocation":1166,"id":1228,"isOneTrustButton":388},"cookie preferences","ot-sdk-btn",{"title":775,"links":1230,"subMenu":1239},[1231,1235],{"text":1232,"config":1233},"DevSecOps platform",{"href":757,"dataGaName":1234,"dataGaLocation":1166},"devsecops platform",{"text":1236,"config":1237},"AI-Assisted Development",{"href":764,"dataGaName":1238,"dataGaLocation":1166},"ai-assisted development",[1240],{"title":1241,"links":1242},"Topics",[1243,1247,1252,1257,1262,1266,1271,1276],{"text":1244,"config":1245},"CICD",{"href":462,"dataGaName":1246,"dataGaLocation":1166},"cicd",{"text":1248,"config":1249},"GitOps",{"href":1250,"dataGaName":1251,"dataGaLocation":1166},"/topics/gitops/","gitops",{"text":1253,"config":1254},"DevOps",{"href":1255,"dataGaName":1256,"dataGaLocation":1166},"/topics/devops/","devops",{"text":1258,"config":1259},"Version Control",{"href":1260,"dataGaName":1261,"dataGaLocation":1166},"/topics/version-control/","version control",{"text":639,"config":1263},{"href":1264,"dataGaName":1265,"dataGaLocation":1166},"/topics/devsecops/","devsecops",{"text":1267,"config":1268},"Cloud Native",{"href":1269,"dataGaName":1270,"dataGaLocation":1166},"/topics/cloud-native/","cloud native",{"text":1272,"config":1273},"AI for Coding",{"href":1274,"dataGaName":1275,"dataGaLocation":1166},"/topics/devops/ai-for-coding/","ai for coding",{"text":1277,"config":1278},"Agentic AI",{"href":1279,"dataGaName":1280,"dataGaLocation":1166},"/topics/agentic-ai/","agentic ai",{"title":1282,"links":1283},"Solutions",[1284,1286,1288,1293,1297,1300,1304,1307,1309,1312,1315,1320],{"text":817,"config":1285},{"href":638,"dataGaName":817,"dataGaLocation":1166},{"text":807,"config":1287},{"href":791,"dataGaName":792,"dataGaLocation":1166},{"text":1289,"config":1290},"Agile development",{"href":1291,"dataGaName":1292,"dataGaLocation":1166},"/solutions/agile-delivery/","agile delivery",{"text":1294,"config":1295},"SCM",{"href":803,"dataGaName":1296,"dataGaLocation":1166},"source code management",{"text":1244,"config":1298},{"href":796,"dataGaName":1299,"dataGaLocation":1166},"continuous integration & delivery",{"text":1301,"config":1302},"Value stream management",{"href":845,"dataGaName":1303,"dataGaLocation":1166},"value stream management",{"text":1248,"config":1305},{"href":1306,"dataGaName":1251,"dataGaLocation":1166},"/solutions/gitops/",{"text":855,"config":1308},{"href":858,"dataGaName":859,"dataGaLocation":1166},{"text":1310,"config":1311},"Small business",{"href":864,"dataGaName":865,"dataGaLocation":1166},{"text":1313,"config":1314},"Public sector",{"href":870,"dataGaName":871,"dataGaLocation":1166},{"text":1316,"config":1317},"Education",{"href":1318,"dataGaName":1319,"dataGaLocation":1166},"/solutions/education/","education",{"text":1321,"config":1322},"Financial services",{"href":1323,"dataGaName":1324,"dataGaLocation":1166},"/solutions/finance/","financial services",{"title":878,"links":1326},[1327,1329,1331,1333,1336,1338,1341,1343,1345,1347,1349,1351,1353,1355],{"text":891,"config":1328},{"href":893,"dataGaName":894,"dataGaLocation":1166},{"text":896,"config":1330},{"href":898,"dataGaName":899,"dataGaLocation":1166},{"text":901,"config":1332},{"href":903,"dataGaName":904,"dataGaLocation":1166},{"text":906,"config":1334},{"href":908,"dataGaName":1335,"dataGaLocation":1166},"docs",{"text":928,"config":1337},{"href":930,"dataGaName":931,"dataGaLocation":1166},{"text":1339,"config":1340},"What's new",{"href":988,"dataGaName":989,"dataGaLocation":1166},{"text":923,"config":1342},{"href":925,"dataGaName":926,"dataGaLocation":1166},{"text":942,"config":1344},{"href":944,"dataGaName":945,"dataGaLocation":1166},{"text":950,"config":1346},{"href":952,"dataGaName":953,"dataGaLocation":1166},{"text":955,"config":1348},{"href":957,"dataGaName":958,"dataGaLocation":1166},{"text":960,"config":1350},{"href":962,"dataGaName":963,"dataGaLocation":1166},{"text":965,"config":1352},{"href":967,"dataGaName":968,"dataGaLocation":1166},{"text":970,"config":1354},{"href":972,"dataGaName":973,"dataGaLocation":1166},{"text":975,"config":1356},{"href":977,"dataGaName":978,"dataGaLocation":1166},{"title":991,"links":1358},[1359,1361,1363,1365,1367,1369,1373,1378,1380,1382,1384],{"text":999,"config":1360},{"href":1001,"dataGaName":993,"dataGaLocation":1166},{"text":1004,"config":1362},{"href":1006,"dataGaName":1007,"dataGaLocation":1166},{"text":1012,"config":1364},{"href":1014,"dataGaName":1015,"dataGaLocation":1166},{"text":1017,"config":1366},{"href":1019,"dataGaName":1020,"dataGaLocation":1166},{"text":1022,"config":1368},{"href":1024,"dataGaName":1025,"dataGaLocation":1166},{"text":1370,"config":1371},"Sustainability",{"href":1372,"dataGaName":1370,"dataGaLocation":1166},"/sustainability/",{"text":1374,"config":1375},"Diversity, inclusion and belonging (DIB)",{"href":1376,"dataGaName":1377,"dataGaLocation":1166},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":1027,"config":1379},{"href":1029,"dataGaName":1030,"dataGaLocation":1166},{"text":1037,"config":1381},{"href":1039,"dataGaName":1040,"dataGaLocation":1166},{"text":1042,"config":1383},{"href":1044,"dataGaName":1045,"dataGaLocation":1166},{"text":1385,"config":1386},"Modern Slavery Transparency Statement",{"href":1387,"dataGaName":1388,"dataGaLocation":1166},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":1390},[1391,1394,1397],{"text":1392,"config":1393},"Terms",{"href":1217,"dataGaName":1218,"dataGaLocation":1166},{"text":1395,"config":1396},"Cookies",{"dataGaName":1227,"dataGaLocation":1166,"id":1228,"isOneTrustButton":388},{"text":1398,"config":1399},"Privacy",{"href":1222,"dataGaName":1223,"dataGaLocation":1166},[1401],{"id":1402,"title":7,"body":705,"config":1403,"content":1405,"description":705,"extension":1409,"meta":1410,"navigation":388,"path":1411,"seo":1412,"stem":1413,"__hash__":1414},"blogAuthors/en-us/blog/authors/fernando-diaz.yml",{"template":1404},"BlogAuthor",{"name":7,"config":1406},{"headshot":1407,"ctfId":1408},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659556/Blog/Author%20Headshots/fern_diaz.png","fjdiaz","yml",{},"/en-us/blog/authors/fernando-diaz",{},"en-us/blog/authors/fernando-diaz","lxRJIOydP4_yzYZvsPcuQevP9AYAKREF7i8QmmdnOWc",[1416,1424,1432],{"title":1417,"description":1418,"heroImage":1419,"category":701,"date":1420,"authors":1421,"slug":1423,"externalUrl":705},"How GitLab tracks vulnerabilities through refactors and reformatting","Learn how GitLab's improved Scope+Offset fingerprinting keeps vulnerability tracking stable across comments, blank lines, and reformatting.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1759320418/xjmqcozxzt4frx0hori3.png","2026-08-12",[1422],"Julian Thome","improved-scope-offset-fingerprinting",{"title":1425,"description":1426,"heroImage":1419,"category":701,"date":1427,"authors":1428,"slug":1431,"externalUrl":705},"GitLab Secrets Manager adds ESO, Terraform, API support","Simplify credential management across your stack. GitLab Secrets Manager provides secure retrieval in Kubernetes, Terraform, and external workflows.","2026-08-06",[1429,1430],"Erick Bajao","Joe Randazzo","gitlab-secrets-manager-add-eso-terraform-api-support",{"title":1433,"description":1434,"heroImage":1435,"category":701,"date":1436,"authors":1437,"slug":1439,"externalUrl":705},"Secure every commit to production with Claude and GitLab","Claude Security catches vulnerabilities inside a coding session. GitLab picks up from there, scanning, enforcing policy, and producing audit evidence for the software lifecycle. ","https://res.cloudinary.com/about-gitlab-com/image/upload/v1756122536/akivvcnafog9c4dhhzkp.png","2026-08-03",[1438],"Alisa Ho","claude-security-and-gitlab",{"promotions":1441},[1442,1456,1468,1479],{"id":1443,"categories":1444,"header":1446,"text":1447,"button":1448,"image":1453},"ai-modernization",[1445],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":1449,"config":1450},"Get your AI maturity score",{"href":1451,"dataGaName":1452,"dataGaLocation":931},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":1454},{"src":1455},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1457,"categories":1458,"header":1460,"text":1447,"button":1461,"image":1465},"devops-modernization",[1459,1265],"product","Are you just managing tools or shipping innovation?",{"text":1462,"config":1463},"Get your DevOps maturity score",{"href":1464,"dataGaName":1452,"dataGaLocation":931},"/assessments/devops-modernization-assessment/",{"config":1466},{"src":1467},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1469,"categories":1470,"header":1471,"text":1447,"button":1472,"image":1476},"security-modernization",[701],"Are you trading speed for security?",{"text":1473,"config":1474},"Get your security maturity score",{"href":1475,"dataGaName":1452,"dataGaLocation":931},"/assessments/security-modernization-assessment/",{"config":1477},{"src":1478},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1480,"paths":1481,"header":1484,"text":1485,"button":1486,"image":1491},"github-azure-migration",[1482,1483],"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":1487,"config":1488},"See how GitLab compares to GitHub",{"href":1489,"dataGaName":1490,"dataGaLocation":931},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1492},{"src":1467},{"header":1494,"blurb":1495,"button":1496,"secondaryButton":1501},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":1497,"config":1498},"Get your free trial",{"href":1499,"dataGaName":733,"dataGaLocation":1500},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":1203,"config":1502},{"href":1056,"dataGaName":738,"dataGaLocation":1500},1786803775184]