<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://about.gitlab.com/blog</id>
    <title>GitLab</title>
    <updated>2025-01-13T00:00:00.000Z</updated>
    <generator>https://github.com/nuxt-community/feed-module</generator>
    <author>
        <name>The GitLab Team</name>
    </author>
    <link rel="alternate" href="https://about.gitlab.com/blog/"/>
    <entry>
        <title type="html"><![CDATA[Deploy a NodeJS Express app with GitLab's Cloud Run integration]]></title>
        <id>https://about.gitlab.com/blog/2025/01/13/deploy-a-nodejs-express-app-with-gitlabs-cloud-run-integration</id>
        <link href="https://about.gitlab.com/blog/2025/01/13/deploy-a-nodejs-express-app-with-gitlabs-cloud-run-integration"/>
        <updated>2025-01-13T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>Are you looking to deploy your NodeJS app to Google Cloud with the least maintenance possible? This tutorial will show you how to utilize GitLab’s Google Cloud integration to deploy your NodeJS app in less than 10 minutes.</p>
<p>Traditionally, deploying an application often requires assistance from production or DevOps engineers. This integration now empowers developers to handle deployments independently. Whether you’re a solo developer or part of a large team, this setup gives everyone the ability to deploy their applications efficiently.</p>
<h2>Overview</h2>
<ul>
<li>Create a new project in GitLab</li>
<li>Set up your NodeJS application</li>
<li>Use the Google Cloud integration to create a Service account</li>
<li>Use the Google Cloud integration to configure Cloud Run via Merge Request</li>
<li>Enjoy your newly deployed Java Spring Boot app</li>
<li>Follow the cleanup guide</li>
</ul>
<h2>Prerequisites</h2>
<ul>
<li>Owner access on a Google Cloud Platform project</li>
<li>Working knowledge of JavaScript/TypeScript (not playing favorites here!)</li>
<li>Working knowledge of GitLab CI</li>
<li>10 minutes</li>
</ul>
<h2>Step-by-step guide</h2>
<h3>1. Create a new project in GitLab</h3>
<p>We decided to call our project <code>nodejs–express-cloud-run</code> for simplicity.</p>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/58du8DdOUEqAOpwTOkbHGQ/8a1a793aeae9babd9042c59ed2e13e71/image1.png" alt="Create a new project"></p>
<h3>2. Upload your NodeJS app or use this example to get started.</h3>
<p><a href="https://gitlab.com/demos/templates/nodejs-cloud-run">Demo</a></p>
<p><strong>Note:</strong> Make sure to include the <code>cloud-run</code> <a href="https://gitlab.com/gitlab-org/incubation-engineering/five-minute-production/library/-/raw/main/gcp/cloud-run.gitlab-ci.yml">CI template</a> within your project.</p>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/3BeRRhtMDzTMhrjCTcWwkw/bdebb221bf688c8a7810d1d7eeadba65/image6.png" alt="cloud-run CI template include"></p>
<h3>3. Use the Google Cloud integration to create a Service account.</h3>
<p>Navigate to <strong>Operate &gt; Google Cloud &gt; Create Service account</strong>.</p>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/1nekQNPGU3RbPKQyUDwFsN/76c448239122fa0a9951544373395302/image10.png" alt="Create Service account screen"></p>
<p>Also configure the region you would like the Cloud Run instance deployed to.</p>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/2BRD9frHRugvFm54nGLC3J/8caa584233eb372b84df0f6f5611727d/image2.png" alt="Cloud Run instance deployment region selection"></p>
<h3>4. Go to the Deployments tab and use the Google Cloud integration to configure <strong>Cloud Run via Merge Request</strong>.</h3>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/4A78xJvstOZudEljO3dxFn/8f250dca0a8d57fc4c5256d14141e792/image5.png" alt="Deployments - Configuration of Cloud Run via Merge Request"></p>
<p>This will open a merge request – immediately merge it.</p>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/7l7jg8eL9bAWwOvnH9w4JY/8fa24ef53d76ff4e806b8dcb3388bfe6/image8.png" alt="Merge request for deployment"></p>
<p><strong>Note:</strong> <code>GCP_PROJECT_ID</code>, <code>GCP_REGION</code>, <code>GCP_SERVICE_ACCOUNT</code>, and <code>GCP_SERVICE_ACCOUNT_KEY</code> will all be automatically populated from the previous steps.</p>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/2c4MdEkUU0ygyB1bosE5HP/b630fb43eaac5aafa4ae519baf332907/image4.png" alt="Variables listing"></p>
<h3>5. Voila! Check your pipeline and you will see you have successfully deployed to Google Cloud Run using GitLab CI.</h3>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/2qyph9FGS71wGpMt2eJ7ZX/c2c13275937c2576d7dffd143203b430/image3.png" alt="Successful deployment to Google Cloud Run"></p>
<p>Click the Service URL to view your newly deployed Node server.</p>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/36o64dX1H8ijuNbpiXCf9L/3ada79b96d570dbd57739c41c1324368/image7.png" alt="View newly deployed Node server"></p>
<p>In addition, you can navigate to <strong>Operate &gt; Environments</strong> to see a list of deployments for your environments.</p>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/5M8Iy1yxkF3vatHc6htkBV/5eacb4762df8183a8eb07514c7dbaa12/image12.png" alt="Environments view of deployment list"></p>
<p>By clicking on the environment called <code>main</code>, you’ll be able to view a complete list of deployments specific to that environment.</p>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/6byXvhfYCnbysIlMZ48Ejz/41aab96d281a43d75409636c449ec396/image9.png" alt="Main view of deployments to specific environment"></p>
<h3>6. Next steps</h3>
<p>To get started with developing your Node application, try adding another endpoint. For instance, in your <code>index.js</code> file, you can add a <strong>/bye</strong> endpoint as shown below:</p>
<pre><code>app.get('/bye', (req, res) =&gt; {
  res.send(`Have a great day! See you!`);
});

</code></pre>
<p>Push the changes to the repo, and watch the <code>deploy-to-cloud-run</code> job deploy the updates. Once it’s complete, go back to the Service URL and navigate to the <strong>/bye</strong> endpoint to see the new functionality in action.</p>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/1Wao8In9CGlte4CtnzzRPm/607a3c11a070a57815ad05b6988245ef/image11.png" alt="Bye message"></p>
<h2>Follow the cleanup guide</h2>
<p>To prevent incurring charges on your Google Cloud account for the resources used in this tutorial, you can either delete the specific resources or delete the entire Google Cloud project. For detailed instructions, refer to the <a href="https://docs.gitlab.com/ee/tutorials/create_and_deploy_web_service_with_google_cloud_run_component/#clean-up">cleanup guide here</a>.</p>
<blockquote>
<p>Read more of these helpful <a href="https://about.gitlab.com/blog/tags/solutions-architecture/">tutorials from GitLab solutions architects</a>.</p>
</blockquote>
]]></content>
        <author>
            <name>Noah Ing</name>
            <uri>https://about.gitlab.com/blog/authors/noahing</uri>
        </author>
        <author>
            <name>Sarah Matthies</name>
            <uri>https://about.gitlab.com/blog/authors/2Giv8NnS4VVAq9RsHYqHkg</uri>
        </author>
        <published>2025-01-13T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[What’s new in Git 2.48.0?]]></title>
        <id>https://about.gitlab.com/blog/2025/01/10/whats-new-in-git-2-48-0</id>
        <link href="https://about.gitlab.com/blog/2025/01/10/whats-new-in-git-2-48-0"/>
        <updated>2025-01-10T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>The Git project recently released <a href="https://lore.kernel.org/git/xmqqplku7cvm.fsf@gitster.g/">Git 2.48.0</a>. Let's look at a few notable highlights from this release, which includes contributions from GitLab's Git team and the wider Git community.</p>
<h2>Meson build system</h2>
<p>For a long time, Git could be built using either a <a href="https://en.wikipedia.org/wiki/GNU_Make">Makefile</a>-based build system or an <a href="https://en.wikipedia.org/wiki/Autoconf">Autoconf</a>-based build system. Git developers have been using mostly the Makefile-based build system, so
<a href="https://lore.kernel.org/git/GV1PR02MB848925A79A9DD733848182D58D662@GV1PR02MB8489.eurprd02.prod.outlook.com/">the Autoconf-based build system has lagged behind</a> in features and maintenance. Another issue was that a lot of Windows
developers use integrated development environments (IDEs) that don’t
have good support for Makefile- and Autoconf-based build systems.</p>
<p>In 2020, support for building Git using <a href="https://cmake.org/">CMake</a> was added. CMake added better Windows support and IDE integration, especially for Visual
Studio. Some modern build system features like out-of-source builds were also included.</p>
<p>Recently, it appeared the CMake support was also lagging
behind and that it might never be a good option to replace the two other
build systems. So <a href="https://gitlab.com/pks-gitlab">Patrick Steinhardt</a>, GitLab Git Engineering Manager, implemented support for the <a href="https://mesonbuild.com/">Meson</a> build
system with the goal of eventually replacing the Autoconf-, CMake-, and
maybe the Makefile-based build systems.</p>
<p>The new Meson-based build system has the following advantages:</p>
<ul>
<li>Allows users to easily find the available build options, something which is difficult with Makefiles and CMake</li>
<li>Has a simple syntax compared to Autoconf and CMake</li>
<li>Supports many different operating systems, compilers, and IDEs</li>
<li>Supports modern build system features like out-of-source builds</li>
</ul>
<p>Here is an example of how it can actually be used to build Git:</p>
<pre><code class="language-shell">$ cd git             	# go into the root of Git's source code
$ meson setup build/ 	# setup &quot;build&quot; as a build directory
$ cd build           	# go into the &quot;build&quot; directory
$ meson compile      	# actually build Git
$ meson test         	# test the new build
$ meson install      	# install the new build

</code></pre>
<p>Multiple build directories can be set up using <code>meson setup &lt;build_dir&gt;</code>, and the configuration of the build inside a build directory can be viewed or changed by running <code>meson configure</code> inside the build directory.</p>
<p>More information on how to build Git using Meson can be found at the top of the <a href="https://gitlab.com/gitlab-org/git/-/blob/master/meson.build"><code>meson.build</code> file</a> in the Git code repository. A
<a href="https://gitlab.com/gitlab-org/git/-/blob/master/Documentation/technical/build-systems.txt">comparison of the different build systems</a> for Git is available as part of Git's technical documentation.</p>
<p>This project was led by <a href="https://gitlab.com/pks-gitlab">Patrick Steinhardt</a>.</p>
<h2>Git is now memory-leak-free (as exercised by the test suite)</h2>
<p>In our Git release blog post about the previous Git 2.47.0 release, we
talked about our <a href="https://about.gitlab.com/blog/2024/10/07/whats-new-in-git-2-47-0/#code-refactoring-and-maintainability-improvements">ongoing effort to fix all memory leaks</a> surfaced by existing tests in the project. We said that prior to the Git 2.47.0 release, the project had 223 test files containing memory
leaks, and that this had been whittled down to just 60.</p>
<p>We are pleased to report that the memory leaks in all 60 remaining test files have been resolved. As a result, Git, as exercised by the test suite, is now free of memory leaks. This is an important step towards the longstanding goal of “libifying” Git internal components (which means converting those components into internal libraries). It will also help with optimizing Git for memory usage.</p>
<p>Now, any newly added test must be leak-free by default. It's still
possible to have leaking tests, but the authors will have to use an
escape hatch for that and provide good arguments why their test cannot
be made leak free.</p>
<p>This project was led by <a href="https://gitlab.com/pks-gitlab">Patrick Steinhardt</a>.</p>
<h2>Improved bundle URI checks</h2>
<p>In our Git release blog post about the Git 2.46.0 release, we talked
about some <a href="https://about.gitlab.com/blog/2024/07/29/whats-new-in-git-2-46-0/#bundle-uri-fixes">bundle URI fixes</a>
by <a href="https://lore.kernel.org/git/pull.1730.git.1715742069966.gitgitgadget@gmail.com/">Xing Xin</a>.
After those fixes, Xing Xin worked on making it possible for <a href="https://lore.kernel.org/git/pull.1730.v8.git.1718770053.gitgitgadget@gmail.com/">fetches using bundles to be fully checked</a>
using the <a href="https://git-scm.com/docs/git-fsck">fsck</a> mechanism like regular fetches.</p>
<p>When validating regular fetches, it's possible to specify
<a href="https://git-scm.com/docs/git-fsck#Documentation/git-fsck.txt-fsckltmsg-idgt">different severities</a> for <a href="https://git-scm.com/docs/git-fsck#_fsck_messages">different fsck issues</a>
to have fine-grained handling of what is accepted and what is rejected in a specific repository. This wasn't possible for fetches using bundles previously.</p>
<p>To further increase the usefulness and safety of <a href="https://git-scm.com/docs/bundle-uri">bundle-uri</a>, we <a href="https://lore.kernel.org/git/20241121204119.1440773-1-jltobler@gmail.com/">addressed this problem</a> so that the different severities specified for different fsck issues
are now used when checking fetches using bundles, too.</p>
<p>This project was led by <a href="https://gitlab.com/justintobler">Justin Tobler</a>.</p>
<h2>Add reference consistency checks</h2>
<p>In our Git release blog post about the Git 2.47.0 release, we mentioned Jialuo She's work on
<a href="https://about.gitlab.com/blog/2024/10/07/whats-new-in-git-2-47-0/#new-subcommand-for-git-refs(1)">adding a new 'verify' subcommand</a> to git-refs(1) which was part of the
<a href="https://summerofcode.withgoogle.com/archive/2024/projects/ukm4PTEF">Google Summer of Code 2024</a> (GSoC 2024).</p>
<p>In that blog post, we said that eventually the goal was to integrate this new subcommand as part of git-fsck(1) to provide a unified way to execute repository consistency checks. Jialuo She has decided to work on that after his GSoC was over.</p>
<p>The result from <a href="https://lore.kernel.org/git/ZrtrT1CPI4YUf5db@ArchLinux/">this effort</a>
is that git-fsck(1) can now detect and handle a number of reference-related issues, like when the content of a reference is bad, when a symbolic link is used as a symbolic reference, or when the target of a symbolic reference doesn't point to a valid reference. We still need to call <code>git refs verify</code> as part of git-fsck(1), and have the former perform all non-backend-specific checks that the latter currently does, but we are closer to our end goal of a unified way to execute all refs consistency checks.</p>
<p>This project was led by Jialuo She.</p>
<h2>Iterator reuse in reftables</h2>
<p>In the <a href="https://gitlab.com/gitlab-org/git/-/raw/master/Documentation/RelNotes/2.45.0.txt">Git 2.45.0</a> release, the 'reftables' format was introduced as a new backend for storing references (mostly branches and tags). If you are not yet
familiar with the reftables backend, check out our previous <a href="https://about.gitlab.com/blog/2024/04/30/whats-new-in-git-2-45-0/">Git release blog post</a> where the feature was introduced and our beginner’s guide to <a href="https://about.gitlab.com/blog/2024/05/30/a-beginners-guide-to-the-git-reftable-format/">learn more about how reftables work</a>.</p>
<p>Since that release, we continued to improve this backend, and we recently focused on improving its performance by <a href="https://lore.kernel.org/git/cover.1730732881.git.ps@pks.im/">reusing some internal iterators</a> when reading random references. Before these changes, reading a single reference required us to create a whole new iterator, seek it to the correct location in the respective tables, and then read the next value from it, which can be quite inefficient when reading many references in quick succession. After the change we now only create a single iterator and reuse it to read multiple references, thus saving some overhead.</p>
<p>The result of this work is increased performance in a number of reftables-related use cases, especially a 7% speedup when creating many references in a transaction that performs many random reads. Furthermore, this creates the possibility for more optimizations as we can continue to reuse more state kept in the iterators.</p>
<p>This project was led by <a href="https://gitlab.com/pks-gitlab">Patrick Steinhardt</a>.</p>
<h2>Support for reflogs in <code>git-refs migrate</code></h2>
<p>After the 'reftables' backend was introduced in Git 2.45.0 (see the section above), we worked on tooling to migrate reference backends in Git 2.46.0, which consisted of adding a new <code>migrate</code> subcommand to git-refs(1).</p>
<p>Our article about Git 2.46.0 <a href="https://about.gitlab.com/blog/2024/07/29/whats-new-in-git-2-46-0/#tooling-to-migrate-reference-backends">talked about this work</a> and mentioned some limitations that still existed. In particular, the article said:</p>
<p>&quot;The reflogs in a repository are a component of a reference backend and would also require migration between formats. Unfortunately, the tooling is not yet capable of converting reflogs between the files and reftables backends.&quot;</p>
<p>We are pleased to report that we have <a href="https://lore.kernel.org/git/20241216-320-git-refs-migrate-reflogs-v4-0-d7cd3f197453@gmail.com/">lifted this limitation in Git 2.48.0</a>.
Reflogs can now also be migrated with <code>git refs migrate</code>. The migration tool is not yet capable of handling a repository with multiple worktrees, but this is the only limitation left. If you
don't use worktrees, you can already take advantage of the reftables backend in your existing repositories.</p>
<p>This project was led by <a href="https://gitlab.com/knayakgl">Karthik Nayak</a>.</p>
<h2>Ref-filter optimization</h2>
<p>The 'ref-filter' subsystem is some formatting code used by commands like <code>git for-each-ref</code>, <code>git branch</code> and <code>git tag</code> to sort, filter, format, and display information related to Git references.</p>
<p>As repositories grow, they can contain a huge number of references. This is why there is work not only on improving backends that store references, like the reftables backend (see above), but
also on optimizing formatting code, like the 'ref-filter' subsystem.</p>
<p>We recently <a href="https://lore.kernel.org/git/d23c3e3ee7fdb49fcd05b4f2e52dd2a1cfdc10f2.1729510342.git.ps@pks.im/">found a way</a>
to avoid temporarily buffering references and iterating several times on them in the ref-filter code when they should be processed in the same sorting order as the order the backends provide them. This results in memory savings and makes certain commands up to 770 times faster in some
cases.</p>
<p>This project was led by <a href="https://gitlab.com/pks-gitlab">Patrick Steinhardt</a>.</p>
<h2>Read more</h2>
<p>This blog post highlighted just a few of the contributions made by GitLab and the wider Git community for this latest release. You can learn about these from the official release announcement of the Git project. Also, check out <a href="https://about.gitlab.com/blog/tags/git/">our previous Git release blog posts</a> to see other past highlights of contributions from GitLab team members.</p>
<ul>
<li><a href="https://about.gitlab.com/blog/2024/10/07/whats-new-in-git-2-47-0/">What’s new in Git 2.47.0?</a></li>
<li><a href="https://about.gitlab.com/blog/2024/07/29/whats-new-in-git-2-46-0/">What’s new in Git 2.46.0?</a></li>
<li><a href="https://about.gitlab.com/blog/2024/04/30/whats-new-in-git-2-45-0/">What’s new in Git 2.45.0</a></li>
<li><a href="https://about.gitlab.com/blog/2024/05/30/a-beginners-guide-to-the-git-reftable-format/">A beginner's guide to the Git reftable format</a></li>
</ul>
]]></content>
        <author>
            <name>Christian Couder</name>
            <uri>https://about.gitlab.com/blog/authors/chriscool</uri>
        </author>
        <published>2025-01-10T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[GitLab supports banks in navigating regulatory challenges]]></title>
        <id>https://about.gitlab.com/blog/2025/01/09/gitlab-supports-banks-in-navigating-regulatory-challenges</id>
        <link href="https://about.gitlab.com/blog/2025/01/09/gitlab-supports-banks-in-navigating-regulatory-challenges"/>
        <updated>2025-01-09T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>The risk of cyber attacks in the banking industry has reached unprecedented levels. Studies by the <a href="https://www.imf.org/-/media/Files/Publications/GFSR/2024/April/English/ch3.ashx">International Monetary Fund</a> reveal that the financial sector is particularly vulnerable to cyber threats, with nearly one-fifth of reported incidents in the past two decades targeting this industry alone. As these threats continue to escalate, they drive the need for a regulatory response, prompting the banking and financial services industry to prepare for significant changes. GitLab enables financial institutions to proactively tackle these challenges, supporting banks on their regulatory journey while ensuring the operational resilience needed to protect the sensitive data pervasive throughout the banking ecosystem.</p>
<h2>Understanding the upcoming regulatory changes</h2>
<p>Acknowledging that the regulatory landscape frequently changes, this article will concentrate on key frameworks in the EU poised to shape the future of banking and financial services. These frameworks not only address current industry challenges but also set the foundation for the development of a more secure and resilient financial ecosystem.</p>
<p>Here are several regulations that are demanding the attention of the financial services industry.</p>
<h3><a href="https://digital-strategy.ec.europa.eu/en/policies/cyber-resilience-act">European Cyber Resilience Act (CRA)</a></h3>
<p>Implemented as of <strong>January 2024,</strong> with a grace period extending for two years, the CRA establishes a comprehensive framework to enhance cybersecurity standards for digital products and services within the EU. This regulation seeks to mitigate the risks of vulnerabilities in software and hardware by ensuring that security is integrated throughout the entire product lifecycle, promoting a proactive “shift left” approach to security. By embedding security measures from the design phase onward, the CRA aims to safeguard the digital economy and bolster consumer trust in digital services.</p>
<h3><a href="https://www.eiopa.europa.eu/digital-operational-resilience-act-dora_en">Digital Operational Resilience Act (DORA)</a></h3>
<p>Taking effect on <strong>January 17, 2025</strong>, the Digital Operations Resilience Act aims to ensure that financial institutions can withstand, respond to, and recover from all types of information and communication technology related disruptions and threats. The goal is to unify and strengthen the resilience of the financial sector across Europe.</p>
<h3><a href="https://digital-strategy.ec.europa.eu/en/policies/data-act">European Data Act</a></h3>
<p>Anticipated to become applicable on <strong>September 12, 2025</strong>, this regulation seeks to provide clearer rules regarding data use and sharing for AI and the internet of things, or IoT, enhancing data access and fostering innovation in various sectors, including finance.</p>
<h2>Implications for banks and financial institutions</h2>
<p>As financial institutions adapt to these evolving regulatory frameworks, the implications are significant and far-reaching. For instance, PYMNTS reports <a href="https://www.pymnts.com/digital-first-banking/2024/three-quarters-of-banks-face-digital-banking-infrastructure-issues/">59% of bankers see their legacy systems as a major business challenge</a>. These challenges present obstacles in the delivery of modern services, while hindering their ability to both detect and respond to modern cyber threats. According to the <a href="https://www.ibm.com/downloads/cas/1KZ3XE9D">2024 IBM Data Breach Report</a>, the average cost of a data breach in the financial services sector is a staggering $6.08 million, with breaches taking an average of 258 days to identify and contain. Unfortunately for banks, the most common type of data stolen or compromised was customer personally identifiable information, or PII. This highlights the urgent need for organizations to modernize their security practices and infrastructure.</p>
<p>Here are four ways to address this challenge.</p>
<ol>
<li>
<p><strong>Increase investment in technology:</strong> Banks will need to significantly increase their investments in technology and infrastructure. This involves evaluating current systems and processes to ensure they align with the stringent requirements of CRA, DORA, the European Data Act, and other regulations.</p>
</li>
<li>
<p><strong>Heighten risk management practices:</strong> A cultural shift will be necessary within organizations, as teams will need to prioritize risk management and resilience strategies. DORA, in particular, emphasizes not just compliance but the ability to anticipate and recover from disruptions.</p>
</li>
<li>
<p><strong>Enhance data governance:</strong> Many of these new regulations will require banks to prepare for new approaches to data sharing and governance. Banks will have to rethink how data is collected, stored, and analyzed, with a strong focus on transparency, accountability, and collaboration across departments.</p>
</li>
<li>
<p><strong>Strengthen cybersecurity:</strong> As cyber threats evolve, the importance of robust cybersecurity measures cannot be overstated. The CRA mandates that financial institutions implement comprehensive security protocols, requiring banks to prioritize cybersecurity investments at every phase of the software development lifecycle.</p>
</li>
</ol>
<h2>How GitLab can help</h2>
<p>With years of experience working with some of the <a href="https://about.gitlab.com/customers/all/?industry=financial-services">largest financial organizations in the world</a>, GitLab stands ready to support banks and other financial institutions in their compliance efforts. Our integrated suite of features empowers development teams to streamline their workflows, allowing them to concentrate on software development rather than becoming bogged down by the manual tracking and monitoring of evolving compliance regulations.</p>
<p><strong><a href="https://about.gitlab.com/dedicated/">GitLab Dedicated</a></strong>, our fully isolated, single-tenant SaaS solution, is designed to meet the complex compliance and data residency requirements of highly regulated industries. Hosted and managed by GitLab, in your chosen cloud region, GitLab Dedicated ensures that sensitive data remains secure and compliant with local regulations. GitLab can help banks navigate these challenges effectively with:</p>
<ol>
<li><a href="https://about.gitlab.com/stages-devops-lifecycle/secure/">Comprehensive application security and compliance features</a></li>
</ol>
<ul>
<li>
<p><strong>Security scanning built into developer workflows:</strong> Many financial institutions still rely on disparate tools for security checks, which can lead to gaps in coverage and oversight. GitLab offers built-in security scanning tools that automatically identify vulnerabilities and provide remediation guidance throughout the application lifecycle. By embedding security checks into <a href="https://about.gitlab.com/topics/ci-cd/cicd-pipeline/">CI/CD pipelines</a>, banks can detect and resolve issues early in the development process, where they are less costly and less risky to fix, ensuring that they adhere to necessary security protocols. GitLab offers the following <a href="https://docs.gitlab.com/ee/user/application_security/secure_your_application.html">security scanner types</a>:</p>
<ol>
<li>
<p><a href="https://docs.gitlab.com/ee/user/application_security/sast/index.html">Static Application Security Testing (SAST)</a></p>
</li>
<li>
<p><a href="https://docs.gitlab.com/ee/user/application_security/dast/index.html">Dynamic Application Security Testing (DAST)</a></p>
</li>
<li>
<p><a href="https://docs.gitlab.com/ee/user/application_security/secret_detection/index.html">Secret Detection</a></p>
</li>
<li>
<p><a href="https://docs.gitlab.com/ee/user/application_security/iac_scanning/index.html">Infrastructure as Code (IaC) Scanning</a></p>
</li>
<li>
<p><a href="https://docs.gitlab.com/ee/user/application_security/dependency_scanning/index.html">Dependency (+ License) Scanning</a></p>
</li>
<li>
<p><a href="https://docs.gitlab.com/ee/user/application_security/coverage_fuzzing/index.html">Coverage-guided Fuzz Testing</a></p>
</li>
<li>
<p><a href="https://docs.gitlab.com/ee/user/application_security/api_fuzzing/">Web API Fuzz Testing</a></p>
</li>
<li>
<p><a href="https://docs.gitlab.com/ee/user/application_security/container_scanning/index.html">Container Scanning</a></p>
</li>
<li>
<p><a href="https://docs.gitlab.com/ee/user/application_security/api_security/index.html">API Security Scanning</a></p>
</li>
</ol>
</li>
<li>
<p><strong>Compliance and enforceable policies:</strong> Our platform enables <a href="https://about.gitlab.com/blog/2022/04/04/ensuring-compliance/">separation of duties</a>, by allowing security and compliance teams to manage security policies independently, allowing developers to focus purely on development. This approach supports the <a href="https://about.gitlab.com/blog/2024/03/06/the-ultimate-guide-to-least-privilege-access-with-gitlab/">principle of least privilege</a>, where developers access only what they need. For multinational banks or financial institutions who operate globally, GitLab’s policies and compliance dashboards assist in meeting strict geographical and regulatory requirements. These tools help maintain consistent adherence to compliance regulations, giving organizations clear visibility into their security posture across regions, industries, and regulations.</p>
</li>
<li>
<p><strong><a href="https://about.gitlab.com/solutions/supply-chain/">Software supply chain security</a>:</strong> GitLab ensures the security of the entire build, development, and deployment environment through a comprehensive approach to software supply chain security. Our <a href="https://about.gitlab.com/blog/2025/01/07/reduce-supply-chain-risk-with-smarter-vulnerability-prioritization/">software composition analysis (SCA)</a> provides deep insights into component versions, licenses, and known vulnerabilities in dependencies which can be proactively remediated to reduce enterprise risk. This comprehensive approach also includes <a href="https://docs.gitlab.com/ee/user/application_security/dependency_list/">software bill of materials (SBOM)</a> generation, ensuring transparency and compliance with industry standards. Finally, as highlighted above, GitLab provides controls to enforce the principle of least privilege to mitigate threats that compromise the software development environment itself.</p>
</li>
</ul>
<ol start="2">
<li><a href="https://docs.gitlab.com/ee/user/application_security/">Robust risk management tools</a></li>
</ol>
<ul>
<li>
<p><strong>Issue tracking and management:</strong> Within a bank, ineffective risk management can lead to overlooked vulnerabilities and inefficient mitigation strategies. GitLab’s issue tracking capabilities allow security vulnerabilities to appear alongside feature requests in the backlog, creating full visibility across teams. Sensitive issues can also be marked as confidential, so that only those who have sufficient permissions can access. This combination of transparency and controlled access supports a culture of collaboration and accountability, as development, security, and operations teams work together seamlessly on risk management. This cultural shift is crucial; rather than merely purchasing tools or one-off solutions, organizations must embed collaboration into their workflows to ensure security becomes a key part of the development process.</p>
</li>
<li>
<p><strong><a href="https://about.gitlab.com/blog/2024/08/26/how-to-choose-the-right-security-scanning-approach/">Automated testing</a>:</strong> A common challenge in the financial services industry is centered around the fact that homegrown solutions that were once robust processes become slow and cumbersome over time, leading to reduced agility. So much so that <a href="https://www.aba.com/-/media/documents/industry-insights/2023-thoughtmachine-banking-at-a-crossroads-the-threat-of-legacy-infrastructure.pdf?rev=6ce18fa56f0547e5a8c8433b50aef931">Forbes</a> found that 60% of banking leaders consider legacy infrastructure to be the major factor keeping them from unlocking incremental growth. To compensate, the industry has shifted toward giving developers more freedom, but often at the cost of maintaining high security standards.
&lt;br&gt;&lt;/br&gt;
GitLab solves this challenge by <a href="https://about.gitlab.com/topics/devops/devops-test-automation/">automating testing within CI/CD pipelines</a>, enabling financial institutions to maintain both speed and security. Developers can configure pipelines to fit their workflows, while security and compliance teams retain control over policies, ensuring adherence to critical security measures. By automating testing processes, GitLab helps banks remain resilient and functional, reducing the likelihood of disruptions.</p>
</li>
</ul>
<ol start="3">
<li><a href="https://about.gitlab.com/stages-devops-lifecycle/govern/">Enhanced data governance</a></li>
</ol>
<ul>
<li>
<p><strong>Data management and compliance:</strong> GitLab’s data management features enable organizations to securely handle sensitive information. With embedded <a href="https://docs.gitlab.com/ee/user/compliance/audit_events.html">audit logs</a>, banks can track data access and changes, ensuring transparency and accountability in their data practices. These logs can show actions such as who changed the permission level of a particular user for a project, and when.</p>
</li>
<li>
<p><strong><a href="https://about.gitlab.com/topics/gitops/gitops-gitlab-collaboration/">Collaboration tools</a>:</strong> GitLab promotes collaboration among cross-departmental teams, facilitating communication between IT, compliance, and business units. This integrated approach is essential for effective data governance, allowing banks to align their data practices with organizational goals.</p>
</li>
</ul>
<ol start="4">
<li><a href="https://docs.gitlab.com/ee/operations/incident_management/">Efficient incident reporting and response</a></li>
</ol>
<ul>
<li>
<p><strong><a href="https://handbook.gitlab.com/handbook/engineering/infrastructure/incident-management/">Centralized incident management</a>:</strong> GitLab provides centralized project management capabilities for logging and tracking significant incidents. This allows teams to respond quickly and effectively, ensuring that incidents are managed in a timely manner.</p>
</li>
<li>
<p><strong><a href="https://handbook.gitlab.com/handbook/security/security-operations/sirt/sec-incident-response/">Incident response guides</a>:</strong> With GitLab, organizations can develop and maintain incident response plans within the platform. By simulating potential incidents and testing response protocols, banks can ensure preparedness and resilience in the face of unexpected challenges.</p>
</li>
</ul>
<ol start="5">
<li><a href="https://docs.gitlab.com/ee/administration/compliance.html">Documentation and audit readiness</a></li>
</ol>
<ul>
<li>
<p><strong>Continuous compliance documentation:</strong> Traditionally, banks have been locked into rigid 12-month audit cycles, preparing documentation to meet stringent regulations like the Bank Secrecy Act (BSA), Automated Clearing House (ACH) rules, and Anti-Money Laundering (AML) requirements. However, as the pace and complexity of threats grow, the financial industry is shifting from reactive, periodic audits to a proactive, <a href="https://about.gitlab.com/blog/2023/08/17/meet-regulatory-standards-with-gitlab/">continuous compliance model</a>. With GitLab, teams know exactly where they stand at any given moment, leveraging real-time compliance data to their advantage. This continuous insight empowers teams to address issues as they arise, rather than waiting for an audit, creating a more agile and resilient compliance posture.</p>
</li>
<li>
<p><strong>Customizable reporting:</strong> With GitLab’s customizable reporting features, organizations can generate detailed reports that showcase compliance violations based on severity levels, violation types, and merge request titles. These reports provide valuable insights for both internal stakeholders and external parties, ensuring transparency and accountability.</p>
</li>
</ul>
<h2>Connect with GitLab today</h2>
<p>As banks and financial institutions embrace these regulatory changes, GitLab not only provides the technology necessary to ensure compliance, but also fosters a culture of continuous improvement. This proactive approach allows financial institutions to release software with confidence, knowing they have the systems in place to mitigate risks and respond quickly to incidents.</p>
<p>GitLab’s commitment to supporting the financial sector through these transitions ensures that organizations are not only compliant but also resilient and prepared for the challenges ahead. Together, we can build a safer and more secure financial future.</p>
<blockquote>
<p><strong><a href="https://about.gitlab.com/solutions/finance/">Reach out</a> to learn more about how we can help meet your regulatory challenges.</strong></p>
</blockquote>
]]></content>
        <author>
            <name>Allie Holland</name>
            <uri>https://about.gitlab.com/blog/authors/4Sc66Y8dwHEHwBNuJSh4Mv</uri>
        </author>
        <published>2025-01-09T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Streamline the path to CMMC Level 2 compliance with GitLab]]></title>
        <id>https://about.gitlab.com/blog/2025/01/07/streamline-the-path-to-cmmc-level-2-compliance-with-gitlab</id>
        <link href="https://about.gitlab.com/blog/2025/01/07/streamline-the-path-to-cmmc-level-2-compliance-with-gitlab"/>
        <updated>2025-01-07T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>The <a href="https://dodcio.defense.gov/cmmc/About/">Cybersecurity Maturity Model Certification (CMMC)</a> Program is a framework developed by the U.S. Department of Defense (DoD) to enforce cybersecurity requirements and protect sensitive unclassified information shared by the DoD with contractors and subcontractors.</p>
<p>With the release of the CMMC <a href="https://www.federalregister.gov/documents/2024/10/15/2024-22905/cybersecurity-maturity-model-certification-cmmc-program">final rule</a>, DoD contractors can begin to assess and align their controls and processes to be compliant with CMMC’s requirements.</p>
<p>This article explains how GitLab customers can leverage the GitLab platform to help satisfy relevant NIST SP 800-171 R2 requirements to achieve CMMC Level 2 compliance.</p>
<h3>Access Control</h3>
<h4>3.1.1, 3.1.2, 3.1.4 - 3.1.8, 3.1.11 - 3.1.13, 3.1.15</h4>
<p>GitLab’s access management features broadly support CMMC access control requirements.</p>
<p>GitLab’s <a href="https://docs.gitlab.com/ee/user/permissions.html">role-based access control (RBAC) model</a> enables customers to limit access to authorized users, implement separation of duties, and ensure such users are only granted the permissions they require to perform their responsibilities.</p>
<p>GitLab also supports <a href="https://docs.gitlab.com/ee/user/custom_roles.html">custom roles</a> enabling organizations to craft roles that more accurately meet their needs.</p>
<p>GitLab’s <a href="https://docs.gitlab.com/ee/user/compliance/audit_events.html">audit events</a> capture different actions within GitLab, including administrative actions. With RBAC and audit events, organizations can prevent non-privileged users from performing administrative actions and log such actions when they do occur.</p>
<p>To address the National Institute of Standards and Technology (NIST) requirement for limiting unsuccessful logon attempts, GitLab addresses this in <a href="https://docs.gitlab.com/ee/security/unlock_user.html">a few different ways</a> depending on the particular service offering a customer is subscribed to.</p>
<p>By default, GitLab implements limits on how long user sessions can remain valid without activity. Self-managed customers can configure this <a href="https://docs.gitlab.com/ee/administration/settings/account_and_limit_settings.html#customize-the-default-session-duration">setting</a> to meet their organizational needs.</p>
<p>GitLab secures data in transit through <a href="https://docs.gitlab.com/ee/security/tls_support.html">encryption</a> and offers options for organizations to limit how their users connect to their GitLab namespace or instance.
Organizations can restrict access to their top level group by <a href="https://docs.gitlab.com/ee/user/group/access_and_permissions.html">IP address</a>, and GitLab Dedicated customers can take a step further by using <a href="https://docs.gitlab.com/ee/administration/dedicated/#aws-privatelink-connection-optional">AWS PrivateLink</a> as a connection gateway.</p>
<h3>Audit and Accountability</h3>
<h4>3.3.1, 3.3.2, 3.3.8, 3.3.9</h4>
<p>As mentioned, GitLab <a href="https://docs.gitlab.com/ee/user/compliance/audit_events.html">audit events</a> capture different actions within GitLab, including administrative actions. Audit events in GitLab are associated with an individual user responsible for the event, and the audit events themselves are immutable.</p>
<p>For organizations with a GitLab Ultimate license, <a href="https://docs.gitlab.com/ee/user/compliance/audit_event_streaming.html">audit event streaming</a> enables them to set a streaming destination for their top-level group’s audit events. GitLab Self-managed (Ultimate) and GitLab Dedicated customers can utilize the same functionality for streaming their GitLab <a href="https://docs.gitlab.com/ee/administration/audit_event_streaming/index.html">instance audit events</a> as well.</p>
<h3>Configuration Management</h3>
<h4>3.4.1 - 3.4.3, 3.4.5</h4>
<p>GitLab’s <a href="https://about.gitlab.com/features/?stage=create">Create stage</a> enables organizations to design, develop, and securely manage code and project data. Configurations for organizational systems can be stored, managed, and deployed leveraging GitLab’s <a href="https://about.gitlab.com/features/?stage=deploy#infrastructure_as_code">infrastructure as code features</a>.</p>
<p>By managing configuration changes through code, organizations can track the lineage of each change request. <a href="https://docs.gitlab.com/ee/user/project/merge_requests/approvals/rules.html">Merge request approval rules</a> enable organizations to enforce how many approvals a merge request must receive before it can be merged, and which users are authorized to approve such requests. The history of each request is retained and can be reviewed through git.</p>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/5iM984Q2OKWWlECsfGhpDE/0158794e76969307873a111ed1a0de7b/image1.png" alt="CMMC - Multiple approvals"></p>
<p>&lt;center&gt;&lt;i&gt;Multiple approval rules&lt;/i&gt;&lt;/center&gt;</p>
<h3>Identification and Authentication</h3>
<h4>3.5.1 - 3.5.3</h4>
<p>GitLab supports SAML SSO integrations for <a href="https://docs.gitlab.com/ee/user/group/saml_sso/">GitLab.com groups</a>, <a href="https://docs.gitlab.com/ee/integration/saml.html">GitLab Dedicated, and Self-managed instances</a>. Organizations can further simplify their GitLab identity and access management (IAM) processes by configuring System for Cross-domain Identity Management (SCIM).</p>
<p>GitLab also supports the use of <a href="https://docs.gitlab.com/ee/user/profile/account/two_factor_authentication.html">multi-factor authentication</a>, thereby enabling organizations to choose the IAM controls that fit their organizational needs.</p>
<h3>Risk Assessment</h3>
<h4>3.11.2 - 3.11.3</h4>
<p>GitLab supports a powerful suite of scanning features to help create holistic and robust application development and supply chain management processes.</p>
<p>GitLab enables organizations to discover vulnerabilities through <a href="https://about.gitlab.com/features/?stage=secure#static_application_security_testing">Static Application Security Testing (SAST)</a>, <a href="https://docs.gitlab.com/ee/user/application_security/iac_scanning/">Infrastructure as Code Security Scanning</a>, <a href="https://about.gitlab.com/features/?stage=secure#dynamic_application_security_testing">Dynamic Application Security Testing (DAST)</a>, <a href="https://about.gitlab.com/features/?stage=secure#container_scanning">Container Scanning</a>, and <a href="https://docs.gitlab.com/ee/user/application_security/dependency_scanning/">Dependency Scanning</a>.</p>
<p>Discovered vulnerabilities on the default branch can be viewed in aggregate through GitLab’s <a href="https://docs.gitlab.com/ee/user/application_security/vulnerability_report/">Vulnerability Report</a>. From there, organizations can dive into each finding’s <a href="https://docs.gitlab.com/ee/user/application_security/vulnerabilities/">Vulnerability page</a> to <a href="https://docs.gitlab.com/ee/user/application_security/vulnerabilities/index.html#create-a-gitlab-issue-for-a-vulnerability">create issues</a> to track and discuss the vulnerability, and <a href="https://docs.gitlab.com/ee/user/application_security/vulnerabilities/#resolve-a-vulnerability">resolve the vulnerability</a>, either manually or via a merge request.</p>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/3JdRfvnMjvrJP2tfrjDgvG/81fe9f2286ae6d1dc62b7bb4ffc38558/image2.png" alt="CMMC - Vulnerability report"></p>
<p>Additionally, GitLab Duo’s <a href="https://docs.gitlab.com/ee/user/gitlab_duo/#vulnerability-explanation">Vulnerability Explanation</a> feature can be leveraged to better understand discovered vulnerabilities, how they can be exploited, and how to fix them.</p>
<p>To go a step further, AWS recently <a href="https://about.gitlab.com/blog/2024/12/03/gitlab-duo-with-amazon-q-devsecops-meets-agentic-ai/">announced GitLab Duo with Amazon Q</a>. Within a GitLab merge request, Amazon Q developer scans all changes looking for security vulnerabilities, quality issues such as code that doesn’t follow best practices, and any other potential problems with the code. After it’s finished, it will add each finding as a comment that includes a snippet of the problematic code found, a description of the issue, and a severity rating. Amazon Q with GitLab Duo will also recommend a code security fix.</p>
<p>&lt;div style=&quot;padding:56.25% 0 0 0;position:relative;&quot;&gt;&lt;iframe src=&quot;https://player.vimeo.com/video/1033653810?badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; fullscreen; picture-in-picture; clipboard-write&quot; style=&quot;position:absolute;top:0;left:0;width:100%;height:100%;&quot; title=&quot;GitLab Duo and Amazon Q&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;script src=&quot;https://player.vimeo.com/api/player.js&quot;&gt;&lt;/script&gt;</p>
<h3>System and Information Integrity</h3>
<h4>3.14.1</h4>
<p>As mentioned above, GitLab provides numerous features to identify vulnerabilities. Organizations can structure <a href="https://docs.gitlab.com/ee/user/application_security/policies/scan_execution_policies.html">scan execution policies</a> to help ensure vulnerabilities are identified expediently when commits are pushed and on a regular schedule. Identified vulnerabilities can be <a href="https://docs.gitlab.com/ee/user/application_security/vulnerabilities/#link-a-vulnerability-to-existing-gitlab-issues">linked</a> to issues for identified software flaws to support a more informed and unified remediation process.</p>
<p>Here is an at-a-glance look at GitLab's companion features for CMMC Level 2:</p>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/7BaJjRn9ibpRXbRJXZBlzi/2df8c4bb1e875c35bd518de820ea01e3/cmmctable.png" alt="Table of CMMC Level 2 compliance capabilities in GitLab"></p>
<h3>Learn more</h3>
<p>As the most comprehensive AI-powered DevSecOps platform, GitLab enables its customers to meet a broad range of regulatory and compliance requirements through an extensive and rich feature set. You can dig deeper into these features with our <a href="https://docs.gitlab.com/ee/tutorials/">library of tutorials</a>.</p>
]]></content>
        <author>
            <name>Joseph Longo</name>
            <uri>https://about.gitlab.com/blog/authors/jlongogitlab</uri>
        </author>
        <published>2025-01-07T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Reduce supply chain risk with smarter vulnerability prioritization]]></title>
        <id>https://about.gitlab.com/blog/2025/01/07/reduce-supply-chain-risk-with-smarter-vulnerability-prioritization</id>
        <link href="https://about.gitlab.com/blog/2025/01/07/reduce-supply-chain-risk-with-smarter-vulnerability-prioritization"/>
        <updated>2025-01-07T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>Application Security teams face a constant uphill battle in risk reduction due to the ever-growing number of vulnerabilities. This year alone, <a href="https://www.cvedetails.com/">36,000 Common Vulnerabilities and Exposures (CVEs)</a> have been reported — a 25% increase from last year. The sharp rise intensifies the challenge of prioritization in vulnerability management, especially for lean AppSec teams.</p>
<p>To help, we’ve introduced several new enhancements to our Software Composition Analysis (SCA) solution. These improvements are available for all GitLab Ultimate customers:</p>
<ul>
<li><strong>Static Reachability Analysis</strong> identifies the <em>exploitable</em> vulnerabilities from open source components in your applications.</li>
<li><strong>Known Exploited Vulnerabilities</strong> (KEV) <strong>Indicator</strong> highlights known, actively exploited vulnerabilities.</li>
<li><strong>Exploit Prediction Scoring System</strong> (EPSS) predicts the likelihood of a vulnerability being exploited.</li>
</ul>
<p>By prioritizing exploitable vulnerabilities, AppSec teams can reduce triage times, accelerate remediation cycles, and improve collaboration with their development counterparts. Powered by our recent acquisitions of <a href="https://about.gitlab.com/blog/2024/03/20/oxeye-joins-gitlab-to-advance-application-security-capabilities/">Oxeye</a> and <a href="https://ir.gitlab.com/news/news-details/2024/GitLab-Reports-First-Quarter-Fiscal-Year-2025-Financial-Results/default.aspx">Rezilion's intellectual property</a>, these new capabilities align with our vision of providing best-in-class application security solutions, natively built into developer workflows.</p>
<h3>What is SCA and why does it matter?</h3>
<p>Software Composition Analysis helps organizations identify and manage open source components within their applications. By scanning the codebase, SCA provides insights into the component versions, licenses, and importantly, known vulnerabilities. With <a href="https://www.nber.org/be/20241/open-source-software-creators-its-not-just-about-money">90% of Fortune 500</a> companies dependent on open source components for their applications, SCA provides much-needed visibility to mitigate software supply chain risk.</p>
<p>High-profile breaches like <a href="https://www.wired.com/story/the-untold-story-of-solarwinds-the-boldest-supply-chain-hack-ever/">SolarWinds</a> and <a href="https://www.ncsc.gov.uk/information/log4j-vulnerability-what-everyone-needs-to-know">Log4Shell</a> highlight how vulnerabilities in third-party components can compromise countless downstream applications. SCA tools act as proactive measures, enabling teams to identify vulnerabilities and enforce compliance early in the software development lifecycle, ensuring software security while maintaining development velocity.</p>
<h3>Filter out the noise for targeted remediation</h3>
<p>With our latest SCA enhancements, GitLab helps you cut through the noise to prioritize real risks, reduce backlogs, and remediate faster – all within your existing workflows.</p>
<p><strong>Focus on vulnerabilities that pose the greatest risk</strong></p>
<ul>
<li>Static Reachability Analysis leverages the proprietary detection engine of our <a href="https://about.gitlab.com/blog/2024/09/19/gitlab-advanced-sast-is-now-generally-available/">Advanced SAST</a> solution to surface vulnerabilities from dependencies that can <em>actually</em> be exploited in your application.</li>
</ul>
<p><strong>Reduce triage times</strong></p>
<ul>
<li>With KEV indicators and EPSS scoring, GitLab gives security teams actionable insights into vulnerabilities that are actively being exploited or likely to be targeted. Incorporating risk-based scoring helps teams effectively triage their vulnerability backlog.</li>
</ul>
<p><strong>Faster remediation to mitigate supply chain risk</strong></p>
<ul>
<li>Our SCA enhancements are built into developer workflows, providing contextual remediation guidance while maintaining developer productivity.</li>
</ul>
<h3>What’s next for SCA</h3>
<p>We’re continuing to integrate Rezilion’s technology into our platform to help teams secure their software supply chains more effectively. Rezilion will be key to powering future innovations, including:</p>
<ul>
<li><strong>Supporting faster remediation</strong> workflows by automatically opening merge requests with fixes for detected vulnerabilities</li>
<li><strong>Enriching package metadata</strong> using <a href="https://openssf.org/projects/scorecard/">OpenSSF scorecard ratings</a> to provide security teams with more information on dependencies such as authors and end-of-life status</li>
<li><strong>Improving open-source software license detection</strong> to ensure compliance and reduce legal risks</li>
</ul>
<h3>Get started with SCA</h3>
<p>If you’re an existing GitLab Ultimate customer and would like to learn more about how Software Composition Analysis can enhance your application security program, visit our <a href="https://docs.gitlab.com/ee/user/application_security/dependency_scanning/">documentation</a>. There, you’ll find details on implementation requirements, use cases, and more. Or if you’re not yet a GitLab Ultimate customer, get started with a <a href="https://about.gitlab.com/free-trial/">free trial</a> today to explore how GitLab enhances your ability to write secure software, achieve compliance goals, and improve development velocity.</p>
<h5><em><strong>Disclaimer</strong>: This blog contains information related to upcoming products, features, and functionality. It is important to note that the information in this blog post is for informational purposes only. Please do not rely on this information for purchasing or planning purposes. As with all projects, the items mentioned in this blog and linked pages are subject to change or delay. The development, release, and timing of any products, features, or functionality remain at the sole discretion of GitLab.</em></h5>
]]></content>
        <author>
            <name>Salman Ladha</name>
            <uri>https://about.gitlab.com/blog/authors/2AYyG99S9PBB8PQIJ6aKuq</uri>
        </author>
        <published>2025-01-07T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[GitLab's 2024 bug bounty year in review]]></title>
        <id>https://about.gitlab.com/blog/2025/01/06/gitlabs-2024-bug-bounty-year-in-review</id>
        <link href="https://about.gitlab.com/blog/2025/01/06/gitlabs-2024-bug-bounty-year-in-review"/>
        <updated>2025-01-06T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>It’s that time again when everyone reflects on the year that just passed, and the <a href="https://handbook.gitlab.com/handbook/security/security-engineering/application-security/">Application Security</a> team at GitLab is no different. We run the bug bounty program at GitLab, and every year we summarize our stats for those who are curious. We wouldn't be where we are without the collaboration of our bug bounty community, and we consider these awards hugely beneficial and money well spent.</p>
<h2>GitLab Bug Bounty Program by the numbers</h2>
<ul>
<li>Awarded over US$1 million in bounties across 275 valid reports.</li>
<li>Received a total of 1,440 reports from 457 researchers in 2024.</li>
<li>Our busiest month was July, when we paid out over US$193,000!</li>
</ul>
<p><em>Note: Data is accurate as of 31st of December, 2024.</em></p>
<p>You can see program statistics updated daily on our <a href="https://hackerone.com/gitlab">HackerOne program page</a>.</p>
<h2>GitLab Bug Bounty Researchers of the Year</h2>
<p>It's time to shine a spotlight on the brilliant minds who have contributed to making GitLab more secure. Our bug bounty program continues to be a crucial part of our security strategy, and we're thrilled to recognize the outstanding efforts of our top researchers.</p>
<h3>Most Valid Reports: joaxcar</h3>
<p>Leading the pack with an impressive 55 valid reports, <a href="https://hackerone.com/joaxcar?type=user">joaxcar</a> has demonstrated exceptional dedication and skill in identifying potential vulnerabilities. joaxcar’s consistent contributions have played a significant role in enhancing GitLab's security posture, and has risen to our No. 1 contributing researcher.</p>
<h3>Newcomer of the Year: a92847865</h3>
<p>We're always excited to welcome fresh talent to our bug bounty program. This year, <a href="https://hackerone.com/a92847865?type=user">a92847865</a> caught our attention by submitting 16 valid reports since their first submission on May 10. Their quick impact showcases the importance of new perspectives in security research.</p>
<h3>Most Innovative Report: yvvdwf</h3>
<p>Innovation is key to staying ahead of potential threats. A report made by <a href="https://hackerone.com/yvvdwf?type=user">yvvdwf</a> stood out for its creative approach to identifying a complex vulnerability. This kind of out-of-the-box thinking is invaluable in our ongoing security efforts.</p>
<h3>Most Impactful Finding: ahacker1</h3>
<p>Sometimes, a single discovery can have far-reaching implications. One of <a href="https://hackerone.com/ahacker1?type=user">ahacker1's</a> reports was particularly impactful this year. This finding led to significant improvements in our pipeline security and API access controls.</p>
<h3>Best Written Report: matanber</h3>
<p>Clearly written communication is crucial in bug bounty reports. This year, <a href="https://hackerone.com/matanber">matanber</a> provided an exceptionally detailed explanation of a complex Web IDE vulnerability. The report included comprehensive technical diagrams, relevant code snippets, and step-by-step explanations that showcased the issue perfectly. The clarity and thoroughness of the report made it easier for our team to understand, validate, and promptly fix the issue.</p>
<h3>Special swag</h3>
<p>As a token of our gratitude (in addition to the monetary reward, of course), we are sending our top bug bounty researchers some limited edition swag! Psst, winners, make sure to check your HackerOne emails!</p>
<h2>Other highlights</h2>
<p>We continued running our 90-day challenges where researchers focused on different areas of GitLab in return for an extra bug bounty bonus payout. We saw a great turnout for these, and it’s something we will look into continuing in 2025.</p>
<p>We also hosted another &quot;Ask a hacker AMA&quot; – this time with @ahacker1. <a href="https://hackerone.com/ahacker1?type=user">Read the recap blog</a> or watch the interview:</p>
<p>&lt;!-- blank line --&gt;
&lt;figure class=&quot;video_container&quot;&gt;
&lt;iframe src=&quot;https://www.youtube.com/embed/EPV0eNOOfv4?si=byNqXWKZzZLXfLfW&quot; title=&quot;GitLab Ask a Hacker AMA with Alexander Siyou Tan (@ahacker1)&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;/iframe&gt;
&lt;/figure&gt;
&lt;!-- blank line --&gt;</p>
<h2>Looking ahead</h2>
<p>As we move into 2025, we're excited to see the new discoveries of our bug bounty community. Your efforts continue to be a cornerstone of our security strategy, helping us build a more secure platform for developers around the world.</p>
<p>To all our researchers: Thank you for your hard work, creativity, and commitment to security. Here's to another year of smashing bugs!</p>
<blockquote>
<h4>Learn how to participate in the <a href="https://hackerone.com/gitlab?type=team">GitLab 2025 Bug Bounty program</a>.</h4>
</blockquote>
]]></content>
        <author>
            <name>Ottilia Westerlund</name>
            <uri>https://about.gitlab.com/blog/authors/ottiliawesterlund</uri>
        </author>
        <published>2025-01-06T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Ultimate guide to CI/CD: Fundamentals to advanced implementation]]></title>
        <id>https://about.gitlab.com/blog/2025/01/06/ultimate-guide-to-ci-cd-fundamentals-to-advanced-implementation</id>
        <link href="https://about.gitlab.com/blog/2025/01/06/ultimate-guide-to-ci-cd-fundamentals-to-advanced-implementation"/>
        <updated>2025-01-06T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>Continuous integration/continuous delivery (<a href="https://about.gitlab.com/topics/ci-cd/">CI/CD</a>) has revolutionized how software teams create value for their users. Gone are the days of manual deployments and integration headaches — modern development demands automation, reliability, and speed.</p>
<p>At its core, CI/CD is about creating a seamless pipeline that takes code from a developer's environment all the way to production and incorporates feedback in real time. <a href="https://about.gitlab.com/topics/ci-cd/benefits-continuous-integration/">CI</a> helps teams catch issues early — before they become costly problems — by ensuring that code changes are frequently merged into a shared repository, automatically tested, and validated. <a href="https://about.gitlab.com/topics/ci-cd/#what-is-continuous-delivery-cd">CD</a> extends this by automating deployments, making releases predictable and stress-free.</p>
<p>Rather than relying on manual processes and complex toolchains for software development, teams can use a robust CI/CD pipeline to build, test, and deploy software. And AI can streamline the process even further, automatically engineering CI/CD pipelines for consistent quality, compliance, and security checks.</p>
<p>This guide explains modern CI/CD pipelines, from basic principles to best practices to advanced strategies. You'll also discover how leading organizations use CI/CD for impactful results. What you learn in this guide will help you scale your DevSecOps environment to develop and deliver software in an <a href="https://about.gitlab.com/topics/ci-cd/continuous-integration-agile/">agile</a>, automated, and efficient manner.</p>
<p>What you'll learn:</p>
<ul>
<li><a href="#what-is-continuous-integration%3F">What is continuous integration?</a></li>
<li><a href="#what-is-continuous-delivery%3F">What is continuous delivery?</a></li>
<li><a href="#how-source-code-management-relates-to-cicd">How source code management relates to CI/CD</a></li>
<li><a href="#the-benefits-of-cicd-in-modern-software-development">The benefits of CI/CD in modern software development</a>
<ul>
<li><a href="#key-differences-between-cicd-and-traditional-development">Key differences between CI/CD and traditional development</a></li>
</ul>
</li>
<li><a href="#understanding-cicd-fundamentals">Understanding CI/CD fundamentals</a>
<ul>
<li><a href="#what-is-a-cicd-pipeline%3F">What is a CI/CD pipeline?</a></li>
</ul>
</li>
<li><a href="#best-practices-for-cicd-implementation-and-management">Best practices for CI/CD implementation and management</a>
<ul>
<li><a href="#ci-best-practices">CI best practices</a></li>
<li><a href="#cd-best-practices">CD best practices</a></li>
</ul>
</li>
<li><a href="#how-to-get-started-with-cicd">How to get started with CI/CD</a></li>
<li><a href="#security-compliance%2C-and-cicd">Security, compliance, and CI/CD</a></li>
<li><a href="#cicd-and-the-cloud">CI/CD and the cloud</a></li>
<li><a href="#advanced-cicd">Advanced CI/CD</a>
<ul>
<li><a href="#reuse-and-automation-in-cicd">Reuse and automation in CI/CD</a></li>
<li><a href="#troubleshooting-pipelines-with-ai">Troubleshooting pipelines with AI</a></li>
</ul>
</li>
<li><a href="#how-to-migrate-to-gitlab-cicd">How to migrate to GitLab CI/CD</a></li>
<li><a href="#lessons-from-leading-organizations">Lessons from leading organizations</a></li>
<li><a href="#cicd-tutorials">CI/CD tutorials</a></li>
</ul>
<h2>What is continuous integration?</h2>
<p><a href="https://about.gitlab.com/topics/ci-cd/benefits-continuous-integration/">Continuous integration</a> (CI) is the practice of integrating all your code changes into the main branch of a shared source code repository early and often, automatically testing changes when you commit or merge them, and automatically kicking off a build. With continuous integration, teams can identify and fix errors and security issues more easily and much earlier in the development process.</p>
<h2>What is continuous delivery?</h2>
<p><a href="https://about.gitlab.com/topics/ci-cd/#what-is-continuous-delivery-cd">Continuous delivery</a> (CD) – sometimes called <em>continuous deployment</em> – enables organizations to deploy their applications automatically, allowing more time for developers to focus on monitoring deployment status and assure success. With continuous delivery, DevSecOps teams set the criteria for code releases ahead of time and when those criteria are met and validated, the code is deployed into the production environment. This allows organizations to be more nimble and get new features into the hands of users faster.</p>
<h2>How source code management relates to CI/CD</h2>
<p>Source code management (<a href="https://about.gitlab.com/solutions/source-code-management/">SCM</a>) and CI/CD form the foundation of modern software development practices. SCM systems like <a href="https://about.gitlab.com/blog/2024/11/14/what-is-git-the-ultimate-guide-to-gits-role-and-functionality/">Git</a> provide a centralized way to track changes, manage different versions of code, and facilitate collaboration among team members. When developers work on new features or bug fixes, they create branches from the main codebase, make their changes, and then <a href="https://docs.gitlab.com/ee/user/project/merge_requests/">merge them through merge requests</a>. This branching strategy allows multiple developers to work simultaneously without interfering with each other's code, while maintaining a stable main branch that always contains production-ready code.</p>
<p>CI/CD takes the code managed by SCM systems and automatically builds, tests, and validates it whenever changes are pushed. When a developer submits their code changes, the CI/CD system automatically retrieves the latest code, combines it with the existing codebase, and runs through a series of automated checks. These typically include compiling the code, running unit tests, performing static code analysis, and checking code coverage. If any of these steps fail, the team is immediately notified, allowing them to address issues before they impact other developers or make their way to production. This tight integration between source control and continuous integration creates a feedback loop that helps maintain code quality and prevents integration problems from accumulating.</p>
<h2>The benefits of CI/CD in modern software development</h2>
<p><a href="https://about.gitlab.com/blog/2022/02/15/ten-reasons-why-your-business-needs-ci-cd/">CI/CD brings transformative benefits to modern software development</a> by dramatically reducing the time and risk associated with delivering new features and fixes. The continuous feedback loop gives DevSecOps teams confidence their changes are automatically validated against the entire codebase. The result is higher quality software, faster delivery times, and more frequent releases that can quickly respond to user needs and market demands.</p>
<p>Perhaps most importantly, CI/CD fosters a culture of collaboration and transparency within software development teams. When everyone can see the status of builds, tests, and deployments in real time, it becomes easier to identify and resolve bottlenecks in the delivery process. The automation provided by CI/CD also reduces the cognitive load on developers, freeing them to focus on writing code rather than managing manual deployment processes. This leads to improved developer satisfaction and productivity, while also reducing the risk traditionally associated with the entire software release process. Teams can experiment more freely knowing rapid code reviews are part of the process and they can quickly roll back changes if needed, which encourages innovation and continuous improvement.</p>
<blockquote>
<p>Get started with GitLab CI/CD. <a href="https://about.gitlab.com/free-trial/devsecops/">Sign up for GitLab Ultimate</a> and try the AI-powered DevSecOps platform free for 60 days.</p>
</blockquote>
<h3>Key differences between CI/CD and traditional development</h3>
<p>CI/CD differs from traditional software development in many ways, including:</p>
<p><strong>Frequent code commits</strong></p>
<p>Developers often work independently and infrequently upload their code to a main codebase, causing merge conflicts and other time-consuming issues. With CI/CD, developers push commits throughout the day, ensuring that conflicts are caught early and the codebase remains up to date.</p>
<p><strong>Reduced risk</strong></p>
<p>Lengthy testing cycles and extensive pre-release planning are hallmarks of traditional software development. This is done to minimize risk but often hinders the ability to find and fix problems. Risk is managed in CI/CD by applying small, incremental changes that are closely monitored and easily reverted.</p>
<p><strong>Automated and continuous testing</strong></p>
<p>In traditional software development, testing is done once development is complete. However, this causes problems, including delayed delivery and costly bug fixes. CI/CD supports automated testing that occurs continuously throughout development, sparked by each code commit. Developers also receive feedback they can take fast action on.</p>
<p><strong>Automated, repeatable, and frequent deployments</strong></p>
<p>With CI/CD, deployments are automated processes that reduce the typical stress and effort associated with big software rollouts. The same deployment process can be repeated across environments, which saves time and reduces errors and inconsistencies.</p>
<h2>Understanding CI/CD fundamentals</h2>
<p>CI/CD serves as a framework for building scalable, maintainable delivery processes, so it's critical for DevSecOps teams to firmly grasp its core concepts. A solid understanding of CI/CD principles enables teams to adapt strategies and practices as technology evolves, rather than being tied to legacy approaches. Here are some of the basics.</p>
<h3>What is a CI/CD pipeline?</h3>
<p>A <a href="https://about.gitlab.com/topics/ci-cd/cicd-pipeline/">CI/CD pipeline</a> is a series of steps, such as build, test, and deploy, that automate and streamline the software delivery process. <a href="https://about.gitlab.com/blog/2019/07/12/guide-to-ci-cd-pipelines/">Each stage serves as a quality gate</a>, ensuring that only validated code moves forward. Early stages typically handle basic checks like compilation and unit testing, while later stages may include integration testing, performance testing, compliance testing, and staged deployments to various environments.</p>
<p>The pipeline can be configured to require manual approvals at critical points, such as before deploying to production, while automating routine tasks and providing quick feedback to developers about the health of their changes. This structured approach ensures consistency, reduces human error, and provides a clear audit trail of how code changes move from development to production. Modern pipelines are often implemented as code, allowing them to be version controlled, tested, and maintained just like application code.</p>
<p>These are other terms associated with CI/CD that are important to know:</p>
<ul>
<li><strong>Commit:</strong> a code change</li>
<li><strong>Job:</strong> instructions a runner has to execute</li>
<li><strong>Runner:</strong> an agent or server that executes each job individually that can spin up or down as needed</li>
<li><strong>Stages:</strong> a keyword that defines certain job stages, such as &quot;build&quot; and &quot;deploy.&quot; Jobs of the same stage are executed in parallel. Pipelines are configured using a version-controlled YAML file, <code>.gitlab-ci.yml</code>, at the root level of a project.</li>
</ul>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/3IWoIXqmaabGr2JwGy0Pxi/7dfe5f608d2427d4ec5ea409a72efaed/1690824533476.png" alt="CI/CD pipeline diagram"></p>
<h2>Best practices for CI/CD implementation and management</h2>
<p>How successful you are with CI/CD depends greatly on the <a href="https://about.gitlab.com/blog/2022/02/03/how-to-keep-up-with-ci-cd-best-practices/">best practices</a> you implement.</p>
<h4>CI best practices</h4>
<ul>
<li>Commit early, commit often.</li>
<li>Optimize pipeline stages.</li>
<li>Make builds fast and simple.</li>
<li>Use failures to improve processes.</li>
<li>Make sure the test environment mirrors production.</li>
</ul>
<h4>CD best practices</h4>
<ul>
<li>Start where you are – you can always iterate.</li>
<li>Understand the best continuous delivery is done with minimal tools.</li>
<li>Track what’s happening so issues and merge requests don't get out of hand.</li>
<li>Streamline user acceptance testing and staging with automation.</li>
<li>Manage the release pipeline through automation.</li>
<li>Implement monitoring for visibility and efficiency.</li>
</ul>
<blockquote>
<h3>Bookmark this!</h3>
<p>Watch our <a href="https://www.youtube.com/watch?v=sQ7Nw3o0izc">&quot;Intro to CI/CD&quot; webinar</a>!</p>
</blockquote>
<p>&lt;!-- blank line --&gt;
&lt;figure class=&quot;video_container&quot;&gt;
&lt;iframe src=&quot;https://www.youtube.com/embed/sQ7Nw3o0izc?si=3HpNqIClrc2ncr7Y&quot; title=&quot;Intro to CI/CD webinar&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;/iframe&gt;
&lt;/figure&gt;
&lt;!-- blank line --&gt;</p>
<h2>How to get started with CI/CD</h2>
<p>Getting started with CI/CD begins with identifying a simple but representative project to serve as your pilot. Choose a straightforward application with basic testing requirements, as this allows you to focus on learning the pipeline mechanics rather than dealing with complex deployment scenarios. Begin by ensuring your code is in <a href="https://about.gitlab.com/topics/version-control/">version control</a> and has some <a href="https://about.gitlab.com/blog/2024/07/02/develop-c-unit-testing-with-catch2-junit-and-gitlab-ci/">basic automated tests</a> — even a few unit tests will suffice. The goal is to <a href="https://about.gitlab.com/blog/2022/04/13/how-to-learn-ci-cd-fast/">create a minimal pipeline</a> that you can gradually enhance as your understanding grows.</p>
<p>For GitLab specifically, the process starts with creating a <code>.gitlab-ci.yml</code> file in your project's root directory. This YAML file defines your pipeline stages (basic ones like build, test, and deploy) and jobs. A simple pipeline might look like this: The build stage compiles your code and creates artifacts, the test stage runs your unit tests, and the deploy stage pushes your application to a staging environment. GitLab will automatically detect this file and start running your pipeline whenever changes are pushed to your repository. The platform provides <a href="https://docs.gitlab.com/runner/">built-in runners</a> to execute your pipeline jobs, though you can also set up your own runners for more control.</p>
<p>As you become comfortable with the basics, gradually add more sophisticated elements to your pipeline. This might include adding code quality checks, <a href="https://docs.gitlab.com/ee/user/application_security/#security-scanning">security scanning</a>, or automated deployment to production. GitLab's DevSecOps platform includes features like <a href="https://about.gitlab.com/blog/2023/08/17/meet-regulatory-standards-with-gitlab/">compliance management</a>, <a href="https://about.gitlab.com/blog/2021/04/09/demystifying-ci-cd-variables/">deployment variables</a>, and manual approval gates that you can incorporate as your pipeline matures. Pay attention to pipeline execution time and look for opportunities to run jobs in parallel where possible. Remember to add proper error handling and notifications so team members are promptly alerted of any pipeline failures. Start documenting common issues and solutions as you encounter them — this will become invaluable as your team grows.</p>
<blockquote>
<h3>Want to learn more about getting started with CI/CD? Register for a <a href="https://university.gitlab.com/courses/continuous-integration-and-delivery-ci-cd-with-gitlab">free CI/CD course on GitLab University</a>.</h3>
</blockquote>
<h2>Security, compliance, and CI/CD</h2>
<p>One of the greatest advantages of CI/CD is the ability to embed security and compliance checks early and often in the software development lifecycle. In GitLab, teams can use the <code>.gitlab-ci.yml</code> configuration to automatically trigger security scans at multiple stages, from initial code commit to production deployment. The platform's container scanning, dependency scanning, and security scanning capabilities (<a href="https://docs.gitlab.com/ee/user/application_security/dast/">Dynamic Application Security Testing</a> and <a href="https://about.gitlab.com/blog/2024/09/19/gitlab-advanced-sast-is-now-generally-available/">Advanced SAST</a>) can be configured to run automatically with each code change, checking for vulnerabilities, compliance violations, and security misconfigurations. The platform's API enables integration with <a href="https://about.gitlab.com/blog/2024/04/08/integrate-external-security-scanners-into-your-devsecops-workflow/">external security tools</a>, while the test coverage features ensure security tests meet required thresholds.</p>
<p>GitLab's security test reports provide detailed information about findings, enabling quick remediation of security issues before they reach production. The Security Dashboard provides a centralized view of vulnerabilities across projects, while <a href="https://about.gitlab.com/blog/2023/09/19/how-gitlab-supports-the-nsa-and-cisa-cicd-security-guidance/">security policies can be enforced</a> through merge request approvals and pipeline gates. In addition, GitLab provides multiple layers of secrets management to protect sensitive information throughout the CI/CD process, audit logs to track access to secrets, and role-based access control (RBAC) to ensure only authorized users can view or modify sensitive configuration data.</p>
<p>GitLab also supports software bill of materials (<a href="https://about.gitlab.com/blog/2022/10/25/the-ultimate-guide-to-sboms/">SBOM</a>) generation, providing a comprehensive inventory of all software components, dependencies, and licenses in an application and enabling teams to quickly identify and respond to vulnerabilities and comply with regulatory mandates.</p>
<h2>CI/CD and the cloud</h2>
<p>GitLab's CI/CD platform provides robust integration with major cloud providers including <a href="https://about.gitlab.com/partners/technology-partners/aws/">Amazon Web Services</a>, <a href="https://about.gitlab.com/blog/2024/11/19/provision-group-runners-with-google-cloud-platform-and-gitlab-ci/">Google Cloud Platform</a>, and <a href="https://docs.gitlab.com/ee/install/azure/">Microsoft Azure</a>, enabling teams to automate their cloud deployments directly from their pipelines. Through GitLab's cloud integrations, teams can manage cloud resources, deploy applications, and monitor cloud services all within the GitLab interface. The platform's built-in cloud deployment templates and <a href="https://docs.gitlab.com/ee/topics/autodevops/">Auto DevOps</a> features significantly reduce the complexity of cloud deployments, allowing teams to focus on application development rather than infrastructure management. For organizations that want to automate their IT   infrastructure using GitOps, GitLab has a <a href="https://about.gitlab.com/blog/2023/02/08/why-did-we-choose-to-integrate-fluxcd-with-gitlab/">Flux CD integration</a>.</p>
<p>GitLab's cloud capabilities extend beyond basic deployment automation. The platform's <a href="https://about.gitlab.com/blog/2024/06/20/kubernetes-overview-operate-cluster-data-on-the-frontend/">Kubernetes integration</a> enables teams to manage container orchestration across multiple cloud providers, while the <a href="https://about.gitlab.com/topics/ci-cd/cloud-native-continuous-integration/">cloud native GitLab installation options</a> allow the platform itself to run in cloud environments. Through GitLab's cloud-native features, teams can implement auto-scaling runners that dynamically provision cloud resources for pipeline execution, optimizing costs and performance. The platform's integration with cloud provider security services ensures that security and compliance requirements are met throughout the deployment process.</p>
<p>For multi-cloud environments, GitLab provides consistent workflows and tooling regardless of the underlying cloud provider. Teams can use GitLab's environment management features to handle different cloud configurations across development, staging, and production environments. The platform's <a href="https://docs.gitlab.com/ee/user/infrastructure/iac/">infrastructure as code</a> support, particularly its native integration with Terraform, enables teams to version control and automate their cloud infrastructure provisioning. GitLab's monitoring and observability features integrate with cloud provider metrics, providing comprehensive visibility into application and infrastructure health across cloud environments.</p>
<h2>Advanced CI/CD</h2>
<p>CI/CD has evolved far beyond simple build and deploy pipelines. In advanced implementations, CI/CD involves sophisticated orchestration of automated testing, security scanning, infrastructure provisioning, AI, and more. Here are a few advanced CI/CD strategies that can help engineering teams scale their pipelines and troubleshoot issues even as architectural complexity grows.</p>
<h3>Reuse and automation in CI/CD</h3>
<p>GitLab is transforming how development teams create and manage CI/CD pipelines with two major innovations: the <a href="https://about.gitlab.com/blog/2024/05/08/ci-cd-catalog-goes-ga-no-more-building-pipelines-from-scratch/">CI/CD Catalog</a> and <a href="https://about.gitlab.com/blog/2024/08/06/introducing-ci-cd-steps-a-programming-language-for-devsecops-automation/">CI/CD steps</a>, a new programming language for DevSecOps automation currently in experimental phase. The CI/CD Catalog is a centralized platform where developers can discover, reuse, and contribute CI/CD components. Components function as reusable, single-purpose building blocks that simplify pipeline configuration — similar to Lego pieces for CI/CD workflows. Meanwhile, CI/CD steps support complex workflows by allowing developers to compose inputs and outputs for a CI/CD job. With the CI/CD Catalog and CI/CD steps, DevSecOps teams can easily standardize CI/CD and its components, simplifying the process of developing and maintaining CI/CD pipelines.</p>
<blockquote>
<p>Learn more in our <a href="https://about.gitlab.com/blog/2024/08/01/faq-gitlab-ci-cd-catalog/">CI/CD Catalog FAQ</a> and <a href="https://docs.gitlab.com/ee/ci/steps/">CI/CD steps documentation</a>.</p>
</blockquote>
<h3>Troubleshooting pipelines with AI</h3>
<p>While CI/CD pipelines can and do break, troubleshooting the issue quickly can minimize the impact. GitLab Duo Root Cause Analysis, part of a suite of AI-powered features, removes the guesswork by <a href="https://about.gitlab.com/blog/2024/12/03/quickly-resolve-broken-ci-cd-pipelines-with-ai/">determining the root cause for a failed CI/CD pipeline</a>. When a pipeline fails, GitLab provides detailed job logs, error messages, and execution traces that show exactly where and why the failure occurred. Root Cause Analysis then uses AI to suggest a fix.
Watch GitLab Duo Root Cause Analysis in action:</p>
<p>&lt;!-- blank line --&gt;
&lt;figure class=&quot;video_container&quot;&gt;
&lt;iframe src=&quot;https://www.youtube.com/embed/sTpSLwX5DIs?si=J6-0Bf6PtYjrHX1K&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;/iframe&gt;
&lt;/figure&gt;
&lt;!-- blank line --&gt;</p>
<h2>How to migrate to GitLab CI/CD</h2>
<p>Migrating to the DevSecOps platform and its built-in CI/CD involves a systematic approach of analyzing your existing pipeline configurations, dependencies, and deployment processes to map them to GitLab's equivalent features and syntax. Use these guides to help make the move.</p>
<ul>
<li><a href="https://about.gitlab.com/blog/2023/10/26/migrating-from-bamboo-to-gitlab-cicd/">How to migrate from Bamboo to GitLab CI/CD</a></li>
<li><a href="https://about.gitlab.com/blog/2023/11/01/jenkins-gitlab-ultimate-guide-to-modernizing-cicd-environment/">Jenkins to GitLab: The ultimate guide to modernizing your CI/CD environment</a></li>
<li><a href="https://about.gitlab.com/blog/2023/07/11/github-to-gitlab-migration-made-easy/">GitHub to GitLab migration the easy way</a></li>
</ul>
<h2>Lessons from leading organizations</h2>
<p>These leading organizations migrated to GitLab and are enjoying the myriad benefits of CI/CD. Read their stories.</p>
<ul>
<li><a href="https://about.gitlab.com/customers/lockheed-martin/">Lockheed Martin</a></li>
<li><a href="https://about.gitlab.com/blog/2024/08/27/how-indeed-transformed-its-ci-platform-with-gitlab/">Indeed</a></li>
<li><a href="https://about.gitlab.com/customers/carfax/">CARFAX</a></li>
<li><a href="https://about.gitlab.com/customers/hackerone/">HackerOne</a></li>
<li><a href="https://about.gitlab.com/blog/2023/12/06/betstudios-cto-on-improving-ci-cd-capabilities-with-gitlab-premium/">Betstudios</a></li>
<li><a href="https://about.gitlab.com/blog/2024/02/05/how-carrefour-and-thales-are-evolving-their-ci-cd-platforms/">Thales and Carrefour</a></li>
</ul>
<h2>CI/CD tutorials</h2>
<p>Become a CI/CD expert with these easy-to-follow tutorials.</p>
<ul>
<li><a href="https://about.gitlab.com/blog/2020/12/10/basics-of-gitlab-ci-updated/">Basics of CI: How to run jobs sequentially, in parallel, or out of order</a></li>
<li><a href="https://about.gitlab.com/blog/2024/11/12/tutorial-how-to-set-up-your-first-gitlab-ci-cd-component/">How to set up your first GitLab CI/CD component</a></li>
<li><a href="https://about.gitlab.com/blog/2024/07/30/building-a-gitlab-ci-cd-pipeline-for-a-monorepo-the-easy-way/">Building a GitLab CI/CD pipeline for a monorepo the easy way</a></li>
<li><a href="https://about.gitlab.com/blog/2024/09/26/using-child-pipelines-to-continuously-deploy-to-five-environments/">Using child pipelines to continuously deploy to five environments</a></li>
<li><a href="https://about.gitlab.com/blog/2024/02/08/ci-cd-automation-maximize-deploy-freeze-impact-across-gitlab-groups/">CI/CD automation: Maximize 'deploy freeze' impact across GitLab groups</a></li>
<li><a href="https://about.gitlab.com/blog/2024/03/04/refactoring-a-ci-cd-template-to-a-ci-cd-component/">Refactoring a CI/CD template to a CI/CD component</a></li>
<li><a href="https://about.gitlab.com/blog/2024/09/04/annotate-container-images-with-build-provenance-using-cosign-in-gitlab-ci-cd">Annotate container images with build provenance using Cosign in GitLab CI/CD</a></li>
</ul>
<blockquote>
<h4>Get started with GitLab CI/CD. <a href="https://about.gitlab.com/free-trial/devsecops/">Sign up for GitLab Ultimate</a> and try the AI-powered DevSecOps platform free for 60 days.</h4>
</blockquote>
]]></content>
        <author>
            <name>Sandra Gittlen</name>
            <uri>https://about.gitlab.com/blog/authors/sgittlen</uri>
        </author>
        <published>2025-01-06T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[3 signs your team is ready to uplevel security controls in GitLab]]></title>
        <id>https://about.gitlab.com/blog/2024/12/18/3-signs-your-team-is-ready-to-uplevel-security-controls-in-gitlab</id>
        <link href="https://about.gitlab.com/blog/2024/12/18/3-signs-your-team-is-ready-to-uplevel-security-controls-in-gitlab"/>
        <updated>2024-12-18T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>Most teams start with basic security practices, such as branch protection and simple access controls. But, there's often a moment when teams realize they need more. It could be when they land their first enterprise client, when they start handling sensitive data, or when they experience their first security incident.</p>
<p>If you’re unsure whether you’re ready to upgrade your security, here are a few signs you’ve outgrown your security needs:</p>
<ul>
<li>You spend more time managing permissions than writing code.</li>
<li>Security reviews create development bottlenecks.</li>
<li>You can't definitively say who changed what and when.</li>
<li>You're unsure if security policies are consistently followed.</li>
</ul>
<p>Do any of these signs resonate with you? Let's explore how teams typically mature their security practices as they grow.</p>
<h2>1. Your organization requires advanced access controls.</h2>
<p>Manual permission management can be tedious and prone to errors. While it’s manageable for a team of three, it becomes much more complex as your team grows to 15, 30, or 100 developers.</p>
<p>The disadvantages of an intricate permission system are two-fold:</p>
<ol>
<li>It becomes more likely that accidental or unauthorized changes are made to critical parts of the codebase.</li>
<li>Managing complex permissions takes time that could be spent developing valuable software for the business.</li>
</ol>
<h3>Features that automate permission management</h3>
<p>Scaling teams need features that automate permission management. GitLab Premium offers enterprise-grade Agile planning features that provide <a href="https://about.gitlab.com/blog/2024/07/22/best-practices-to-set-up-organizational-hierarchies-that-scale/">organizational hierarchies</a>, enabling advanced permissions management at the group or sub-group level.</p>
<p>This, alongside features like <a href="https://docs.gitlab.com/ee/user/project/repository/branches/protected.html">Protected Branches</a> and restricted push and merge access, save growing teams time while providing an additional layer of security.</p>
<h2>2. You need to build a robust review process.</h2>
<p>Many teams have senior developers review security-sensitive code. However, as your codebase expands, it becomes more challenging to ensure the right people are reviewing the right changes. This can lead to an elongated review process or the release of insecure code before it’s been reviewed by the right parties.</p>
<p>When you notice security reviews becoming inconsistent or creating bottlenecks, it’s time to consider solutions that give you tighter control over your merge request pipelines.</p>
<h3>Features that enhance the review process</h3>
<p>GitLab Premium helps teams mature beyond manual processes with capabilities like <a href="https://docs.gitlab.com/ee/user/project/merge_requests/approvals/">Multiple Approvers</a> and <a href="https://docs.gitlab.com/ee/user/project/repository/push_rules.html">push rules</a>. These features improve your code by ensuring it’s reviewed before it is merged, preventing errors from occurring late in the development process. It also requires higher levels of authorization and verification to those who push or commit to a git branch.</p>
<h2>3. You need to strengthen compliance adherence.</h2>
<p>When your team is small, you know who is working on what projects and when deployments will occur. But, as your team grows it becomes more challenging (if not impossible) to follow all code changes and activities. It’s also easy to lose sight of security policies and whether all team members are consistently following them.</p>
<p>These are signs that you need tools to help you track changes and ensure code quality meets regulatory requirements.</p>
<h3>Features that improve compliance efforts</h3>
<p>With GitLab Premium’s <a href="https://docs.gitlab.com/ee/administration/audit_event_reports.html">Audit Events</a>, you can track and review changes, such as who performed certain actions at what time within the repository. At the same time, <a href="https://docs.gitlab.com/ee/ci/testing/code_quality.html">Code Quality Reports</a> can check for adherence to compliance standards. This can help teams more readily prove compliance while also quickly identifying and fixing problems within the code.</p>
<h2>Scale your security efforts with GitLab Premium</h2>
<p>If you’re experiencing security-related growing pains as your business scales, consider upleveling your security needs before it’s too late. Empower your team with features that prioritize security and compliance, and accelerate software delivery.</p>
<blockquote>
<h4><a href="https://about.gitlab.com/pricing/premium/why-upgrade/">Upgrade to GitLab Premium today!</a></h4>
</blockquote>
]]></content>
        <author>
            <name>Julie Griffin</name>
            <uri>https://about.gitlab.com/blog/authors/3djBidFIW3or5K9uhi9LE5</uri>
        </author>
        <published>2024-12-18T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[5 GitLab Premium features to help your team scale]]></title>
        <id>https://about.gitlab.com/blog/2024/12/18/5-gitlab-premium-features-to-help-your-team-scale</id>
        <link href="https://about.gitlab.com/blog/2024/12/18/5-gitlab-premium-features-to-help-your-team-scale"/>
        <updated>2024-12-18T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>As development teams grow, what once worked for a small team often becomes a bottleneck. Code standards become inconsistent, operational silos develop, and technical debt accumulates faster. What was a well-oiled machine is now dysfunctional as more team members, projects, and tools are added on.</p>
<p>Many teams experience these challenges as they grow, but how you handle and address these growing pains can save you time, energy, and money in the long run. In this article, we’ll explore the common pitfalls growing teams face and how successful organizations address them.</p>
<h2>1. Consistent code quality</h2>
<p>One of the challenges growing teams face is <a href="https://about.gitlab.com/blog/2024/12/13/transform-code-quality-and-compliance-with-automated-processes/">maintaining consistent code quality</a> as more developers contribute to the codebase. Quality issues that were once caught quickly now take longer to identify and fix.</p>
<p>Successful teams address these challenges through automated code analysis throughout their development workflow. Instead of relying solely on manual reviews, they implement systems to identify potential issues and enforce consistent standards before code even reaches human reviewers. This approach helps detect complexity issues early and flags potential security vulnerabilities, allowing reviewers to focus on more strategic aspects of code review.</p>
<h3>Features that maintain consistent code quality</h3>
<ul>
<li>Start by automating code analysis in your workflow. With GitLab Premium, you can set up <a href="https://docs.gitlab.com/ee/ci/testing/code_quality.html">Code Quality Reports</a> in your merge requests. This helps catch issues early by analyzing code complexity and quality before review begins. For example, when a developer submits changes that might increase technical debt, the report will flag these issues automatically.</li>
<li>Next, establish automated quality standards. Configure Quality Gates to define what &quot;good code&quot; means for your team. This could include test coverage requirements, complexity limits, or specific coding patterns. When code doesn't meet these standards, merges are automatically blocked until issues are addressed.</li>
<li>Finally, prevent issues before they even reach review. <a href="https://docs.gitlab.com/ee/user/project/repository/push_rules.html">Push Rules</a> let you enforce standards right at commit time. You might start with simple rules like requiring certain commit message formats, then gradually add more sophisticated checks as your team adapts.</li>
</ul>
<h2>2. Improve collaboration and productivity</h2>
<p>The priorities for startups are often budget and speed, but as businesses grow, tracking DevSecOps workflows across a patchwork of tools can actually deter productivity.</p>
<p>Disparate tools cause developers to context switch between platforms, decreasing focus time and development speed. Toolchain sprawl also limits visibility among teams, creating operational silos that lead to miscommunication.</p>
<p>To address these challenges, teams often turn to Agile solutions to help with project management, align timelines, and improve cross-team collaboration. When combined with a DevSecOps environment, <a href="https://about.gitlab.com/topics/agile-devsecops/">Agile</a> creates a powerful system for software development that marries the iterative Agile approach with a security-first mindset.</p>
<h3>Features that improve collaboration and productivity</h3>
<ul>
<li>With GitLab Premium, teams can access enterprise-grade Agile tools within their DevSecOps platforms. You can start by creating <a href="http://%20epics">groups and projects</a>, assigning team members roles, and determining their level of permission.</li>
<li><a href="https://docs.gitlab.com/ee/user/project/milestones/">Milestones</a> and <a href="https://docs.gitlab.com/ee/user/group/epics/index.html">epics</a> help teams plan large-scale initiatives across multiple projects to track dependencies, progress, and align on deliverables. This gives everyone clear visibility into the process.</li>
<li>Then, dive deeper into each task with <a href="https://docs.gitlab.com/ee/user/project/issue_board.html">issues</a>. With customizable workflows and multi-assignee capabilities, teams can visualize project progress, dynamically adjust priorities, and collaborate on issue resolution.</li>
</ul>
<h2>3. Increase deployment velocity</h2>
<p>In theory, teams should be more productive as they scale. However, if tools aren’t updated to accommodate a growing team, the CI/CD pipeline can feel clunky and inefficient.</p>
<p>Teams turn to tools that help them automate and optimize the <a href="https://about.gitlab.com/topics/ci-cd/cicd-pipeline/">CI/CD pipeline</a>. By automating components like code reviews, merge trains, and permissions, teams can streamline the CI/CD pipeline and improve deployment speed.</p>
<h3>Features that increase deployment velocity</h3>
<p>GitLab Premium offers advanced features that help you build, maintain, deploy, and monitor complex pipelines. Increase the speed of deployment through the CI/CD pipeline with more control over code reviews and merge request processes.</p>
<ul>
<li>You can automate the merging of multiple changes in a controlled sequence with Merge Trains. This reduces integration issues and improves deployment efficiency.</li>
<li>Gain visibility into whether your jobs passed or failed with Multi-Project Pipeline Graphs. Access all related jobs for a single commit and the net result of each stage of your pipeline to quickly see what failed and fix it.</li>
<li>Team leaders can access comprehensive insights and make data-informed decisions with <a href="https://docs.gitlab.com/ee/user/analytics/code_review_analytics.html">Code Review Analytics</a> that provide detailed metrics and merge request analytics. This helps teams identify bottlenecks, optimize review cycles, and establish data-driven process improvements.</li>
</ul>
<h2>4. Enhance security and compliance controls</h2>
<p>Without rigorous governance policies, inefficient and insecure code may be released. With smaller companies, security reviews are often manual and the reviews often take a backseat to speed. This can lead to teams releasing incorrect or unsafe code to production causing costly delays.</p>
<p>To <a href="https://about.gitlab.com/blog/2024/12/18/3-signs-your-team-is-ready-to-uplevel-security-controls-in-gitlab/">evolve their security practices</a>, teams turn to stricter access controls, a more refined and delineated review process, as well as features that enable teams to review and track changes.</p>
<h3>Features that enhance security and compliance controls</h3>
<ul>
<li>With stricter access controls, such as <a href="https://docs.gitlab.com/ee/user/project/repository/branches/protected.html">Protected Branches and Protected Environments</a>, you can restrict push and merge access, securing those areas from unwanted changes by unauthorized users.</li>
<li>To strengthen security review processes, implement <a href="https://docs.gitlab.com/ee/user/project/merge_requests/approvals/">Multiple Approvers in Merge Requests</a>. This requires team members to review and approve code changes before they’re pushed through.</li>
<li>Review who performed a certain action within the repository and at what time with <a href="https://docs.gitlab.com/ee/administration/audit_event_reports.html">Audit Events</a>. By tracking changes, you’re able to stay on top of compliance requirements.</li>
</ul>
<h2>5. Avoid downtime and delays</h2>
<p>Without support, teams are left to troubleshoot issues themselves. This can lead to major delays or periods of downtime where the company is unable to deliver value. As companies grow, this downtime becomes more and more detrimental to the business.</p>
<p>It’s important to evaluate what your company’s threshold is for downtime. When the value of the downtime outweighs the cost of support, it’s time to scale your DevSecOps platform to meet those needs.</p>
<h3>Support services to avoid downtime and delays</h3>
<p>With GitLab Premium, customers of both SaaS and self-managed instances have access to <a href="https://about.gitlab.com/support/#priority-support">Priority Support</a>. GitLab customer support offers Tiered Support response times, ranging from emergency to low-impact services, and can help you resolve issues quickly, minimizing downtime and disruption to your development cycle.</p>
<p>Plus, for self-managed customers moving to Premium, GitLab offers support for any issues that occur after implementation and upgrade assistance to provide a seamless transition.</p>
<h2>Build today, scale for tomorrow with GitLab Premium</h2>
<p>Instead of struggling with the challenges that growing teams face, scale your DevSecOps platform with GitLab Premium.</p>
<p>GitLab Premium provides teams with the project management, pipeline tools, security, and support needed to work efficiently and effectively across the software development lifecycle.</p>
<blockquote>
<h4>Learn more about <a href="https://about.gitlab.com/pricing/premium/why-upgrade/">why you should upgrade to GitLab Premium</a>.</h4>
</blockquote>
]]></content>
        <author>
            <name>Julie Griffin</name>
            <uri>https://about.gitlab.com/blog/authors/3djBidFIW3or5K9uhi9LE5</uri>
        </author>
        <published>2024-12-18T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Automating with GitLab Duo, Part 3: Validating testing]]></title>
        <id>https://about.gitlab.com/blog/2024/12/17/automating-with-gitlab-duo-part-3-validating-testing</id>
        <link href="https://about.gitlab.com/blog/2024/12/17/automating-with-gitlab-duo-part-3-validating-testing"/>
        <updated>2024-12-17T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>In previous entries in this series, we covered <a href="https://about.gitlab.com/blog/2024/12/02/automating-with-gitlab-duo-part-1-generating-tests/">how we used GitLab Duo to generate tests for our code</a> as well as <a href="https://about.gitlab.com/blog/2024/12/10/automating-with-gitlab-duo-part-2-complex-testing/">what we learned while using GitLab Duo for generating automated tests</a>. We also shared some of the ways we addressed making changes to GitLab Duo generated tests. This last article in the series will cover a test we ran to validate the impact of GitLab Duo on our team’s automated testing and discuss the impressive results we have achieved thus far.</p>
<h3>Validation testing results</h3>
<p>To validate that our usage of GitLab Duo to generate tests was adding value the way we expected, we challenged ourselves and GitLab Duo to replace and increase test coverage. The team removed all previously written tests to get our test coverage to 0% and then methodically went through the repository and created new test files to store GitLab Duo-generated tests.</p>
<p>From this starting point, the team followed the steps outlined in <a href="https://about.gitlab.com/blog/2024/12/02/automating-with-gitlab-duo-part-1-generating-tests/">the first blog</a> to generate tests. Tests and test files were unmodified by humans to provide a stable control group and a <code>Tests Generated by Duo</code> comment at the top of them were suffixed by <code>duo.py</code> to indicate where the tests came from.</p>
<p>All iterations of the tests were only done through interactions with GitLab Duo through the <code>Generate Tests</code> and GitLab Duo Chat window as outlined in <a href="https://about.gitlab.com/blog/2024/12/10/automating-with-gitlab-duo-part-2-complex-testing/">the second blog in the series</a>. As we shared, we requested GitLab Duo to make updates based on encountered errors, test failures, and example code snippets for GitLab Duo to use as added context.</p>
<p>At all times. when testing with GitLab Duo, we were running tests and coverage reports so we could see if our GitLab Duo-generated tests were increasing testing coverage and adding value as we expected. Taking advantage of <a href="https://docs.gitlab.com/ee/ci/testing/test_coverage_visualization/">GitLab's test coverage visualization</a>, we were able to continuously monitor the results of our work.</p>
<p>Ultimately, after using GitLab Duo to regenerate tests for code previously covered through our mostly manual testing, we were able to achieve test coverage of 84%. This was a great accomplishment for the team because:</p>
<ol>
<li>It was a significant improvement from prior coverage, which was at 74%.</li>
<li>It took approximately two days by one engineer to achieve 84%, compared to the approximately four weeks across multiple engineers that the 74% had taken.</li>
</ol>
<p>Since this experiment, the team has increased coverage even further to 89% with the help of GitLab Duo, while continuing to introduce new features.</p>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/4LEGVc0QFPMtBF286gqjcT/538103d1d316c306b2849e78f09061b0/image2.png" alt="image of achievements"></p>
<p>Using GitLab Duo allowed for increased testing efficiency and coverage, and also allowed developers with lower context around existing code to write valuable tests, quickly. This has resulted in increased confidence on the team to develop new features without worrying about introducing errors.</p>
<blockquote>
<p>If you'd like to <a href="https://about.gitlab.com/solutions/gitlab-duo-pro/sales/">try GitLab Duo</a>, sign up for a free, 60-day trial today!</p>
</blockquote>
]]></content>
        <author>
            <name>Byron Boots</name>
            <uri>https://about.gitlab.com/blog/authors/7ezFbRYF2Cu5JTBQXRp7mw</uri>
        </author>
        <published>2024-12-17T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Git command line on Windows with Git Bash]]></title>
        <id>https://about.gitlab.com/blog/2024/12/16/git-command-line-on-windows-with-git-bash</id>
        <link href="https://about.gitlab.com/blog/2024/12/16/git-command-line-on-windows-with-git-bash"/>
        <updated>2024-12-16T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>Git commands allow developers to manage different versions of code and collaborate as a team. If you're in a Windows environment, you may have heard of Git Bash, a Bash terminal emulator that includes a Windows-friendly version of Git. Discover everything you need to know about installing Git Bash in this guide.</p>
<h2>How does Git Bash work?</h2>
<p>Git Bash is an application that you can install on Windows operating systems using Git for Windows. This application acts as an emulator to use the <a href="https://about.gitlab.com/topics/version-control/what-is-git-version-control/#what-is-git">Git version control tool</a> on a Bash command terminal.</p>
<p>Bash is an acronym for Bourne Again SHell. SHell refers to the command terminal application of an operating system (OS). Bourne Again SHell is actually an upgraded version of Bourne SHell (also referred to as shell sh), the command line interface for UNIX developed by Stephen Bourne in 1977.</p>
<p>Bash is the default shell for Linux and MacOS operating systems. With Git Bash, Windows users can install Bash, run Bash commands and use Git commands.</p>
<h2>How to install Git Bash</h2>
<p>To download Git Bash, it is necessary to install Git for Windows. To do this, go to the official <a href="https://gitforwindows.org/">Git for Windows</a> website and click &quot;Download&quot; to install the full Git package. When the download is complete, open the .exe file and begin the installation.</p>
<p>To install Git Bash on Windows, please follow these step-by-step instructions:</p>
<ol>
<li>Open the .exe file and click <strong>Next</strong>. Select the appropriate folder for the installation.</li>
<li>Accept the terms of use and click <strong>Next</strong> to start the installation.</li>
<li>In this step, select the components to install. The pre-selected settings are relevant, but you can change them according to your preferences. Click <strong>Next</strong> again.</li>
<li>Then, choose the editor you prefer to use with Git. The tool recognizes editors already installed on your computer.</li>
<li>A window is displayed with three settings of the PATH environment. Depending on your needs, choose whether Git should only be used by Git Bash or if you want to use it from other third-party software.</li>
<li>Finally, keep the default settings by clicking <strong>Next</strong> and install Git Bash by clicking <strong>Install</strong>.</li>
</ol>
<h2>What are Bash commands?</h2>
<p>First of all, the <code>pwd</code> (Print Working Directory) command allows you to view the absolute path. This means that it displays the path of the folder we are in at the time of typing the command.<br>
<strong>Remember:</strong> When you open the Git Bash terminal, you are in a folder on your computer. Usually, this is the folder with your username.</p>
<p>The <code>ls</code> command gives access to the list of files present in the current folder. You can also add options to the <code>ls</code> command with a dash <code>-</code>. For example, the <code>-l</code> option after <code>ls</code> lists the contents of a folder with more information about each file.</p>
<p>Bash also has a <code>cd</code> (Change Directory) command to move around your computer. To indicate the directory you want to go to, please specify the relative or absolute path after <code>cd</code>. The relative path is the location relative to the current directory while the absolute path is its location relative to the root folder.</p>
<h2>How to use Git Bash with GitLab</h2>
<p>Using Git Bash with <a href="https://about.gitlab.com/">GitLab</a> is like using the terminal emulator with another source code management platform. In order to push and retrieve your changes from GitLab, add the URL of your GitLab remote repository with the command: <code>git remote add origin &lt;repository_url&gt;</code>.</p>
<p>If your project is private, Git Bash asks you to authenticate yourself. Enter your credentials when the terminal requests your username and password. If you're having trouble logging in, check your authorization settings directly in GitLab.</p>
<p>Then use the basic Git commands like <code>git clone</code>, <code>git commit</code>, <code>git push</code>, <code>git branch</code>, as well as <code>git checkout</code>, to name a few. To learn more, visit our <a href="https://about.gitlab.com/images/press/git-cheat-sheet.pdf">Git Cheat Sheet</a>.</p>
<h2>Git Bash FAQ</h2>
<p><strong>Are Git Bash and GitLab compatible?</strong></p>
<p>Yes. Using Git Bash with GitLab is similar to working with another source code management platform. Be sure to set up GitLab as a remote repository and authenticate yourself during the initial setup.</p>
<p><strong>Why use Git Bash?</strong></p>
<p>Git Bash acts as a terminal emulator to use the Git and Bash commands in a Windows environment.</p>
<p><strong>What's the point of a shell?</strong></p>
<p>Using a shell allows you to automate tasks through scripts, effectively control your computer and benefit from direct access to system functions.</p>
<h2>Read more</h2>
<ul>
<li><a href="https://about.gitlab.com/topics/version-control/what-is-git-version-control/">What is Git version control?</a></li>
<li><a href="https://about.gitlab.com/blog/2024/10/07/whats-new-in-git-2-47-0/">What's new in Git 2.47.0?</a></li>
<li><a href="https://about.gitlab.com/blog/2024/09/24/git-pull-vs-git-fetch-whats-the-difference/">Git pull vs. git fetch: What's the difference?</a></li>
</ul>
]]></content>
        <author>
            <name>GitLab</name>
            <uri>https://about.gitlab.com/blog/authors/GitLab</uri>
        </author>
        <published>2024-12-16T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Transform code quality and compliance with automated processes]]></title>
        <id>https://about.gitlab.com/blog/2024/12/13/transform-code-quality-and-compliance-with-automated-processes</id>
        <link href="https://about.gitlab.com/blog/2024/12/13/transform-code-quality-and-compliance-with-automated-processes"/>
        <updated>2024-12-13T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>While manual code review processes may suffice for a small team, as DevSecOps teams scale, the processes create significant bottlenecks that impede software development velocity and quality. Often slow, inconsistent, and frequently failing to catch critical vulnerabilities, the manual approach leads to technical debt and increased security risks.</p>
<p>To mitigate risks and drive innovation, organizations must prioritize automated code quality and compliance systems. The financial implications of poor code management are substantial, with technical debt consuming up to 40% of IT budgets (<a href="https://www.mckinsey.com/capabilities/mckinsey-digital/our-insights/tech-debt-reclaiming-tech-equity">McKinsey Digital: Tech Debt Report</a>) and software vulnerabilities costing an average of $4.88 million per security breach (<a href="https://www.ibm.com/reports/data-breach">IBM Cost of a Data Breach Report</a>).</p>
<p>Modern software development requires a strategic approach to code management and compliance that goes beyond traditional review processes. With more robust review systems and compliance controls, organizations can innovate and secure software faster than their competitors.</p>
<h2>The power of code review and approval processes</h2>
<p>According to the <a href="https://about.gitlab.com/developer-survey/">GitLab 2024 Global DevSecOps Report</a>, C-level executives rank code quality as one of the top benefits of DevSecOps. With executives recognizing code quality as a strategic priority, systematic review processes have emerged as a cornerstone of modern development practices.</p>
<p><a href="https://about.gitlab.com/topics/version-control/what-is-code-review/">Code review</a> processes benefit developers through knowledge sharing, the discovery of bugs earlier in the process, and improved security. However, developers say the top changes that could be made to improve job satisfaction are increasing automation and collaboration, according to our survey.</p>
<p>As code quality and code review processes are embedded into the software development lifecycle, focusing on systems that remove manual code review and enhance collaboration across teams will help keep developer workflows running smoothly.</p>
<h3>Code review processes increase collaboration and development speed</h3>
<p>The improvement in organizational efficiency can be seen in this example with <a href="https://about.gitlab.com/customers/airbus/">Airbus Intelligence</a>, a leader in the geospatial industry. The development teams at Airbus struggled with inefficient processes and needed tools that could help their team collaborate efficiently across the globe. After adopting GitLab Premium, Airbus quickly noticed the improvement in code quality.</p>
<p>GitLab CI’s built-in security testing meant developers could identify bugs and vulnerabilities before they reached production. Instead of spending a full day setting up for production and doing manual tests, those simple tasks are now automated.</p>
<p>Airbus’ release time dramatically decreased from 24 hours to just 10 minutes.</p>
<p>“What used to happen is we would touch one part of the code and it would break another part. Now, each time a developer pushes code, we can immediately identify problems,” said Logan Weber, Software Automation Engineer at Airbus Defense and Space, Intelligence.</p>
<h3>Features that enable higher code quality</h3>
<p>Powerful GitLab Premium features like <a href="https://docs.gitlab.com/ee/user/project/merge_requests/approvals/rules.html">Multiple Approvers for Merge Requests</a>, <a href="https://docs.gitlab.com/ee/ci/testing/code_quality.html">Code Quality</a> checks, and <a href="https://docs.gitlab.com/ee/user/project/repository/branches/protected.html">Protected Branches</a>, enable companies to innovate faster than their competitors.</p>
<p>By reducing review cycle times while strengthening code integrity and compliance, DevSecOps teams address both the technical debt and security vulnerability challenges that plague traditional approaches. These security benefits help teams like AirBus Intelligence develop faster, more secure solutions.</p>
<h2>Why enhanced compliance controls matter</h2>
<p>The implementation of effective code compliance strategies is constantly evolving due to <a href="https://about.gitlab.com/blog/2023/08/17/meet-regulatory-standards-with-gitlab/">changing regulations</a>, and keeping up with these regulations is a challenge for most companies.</p>
<p>By developing code compliance strategies and automated control mechanisms, companies ensure that quality and compliance policies are met.</p>
<p>For Airbus Intelligence, security and vulnerability scans built into integration testing enabled teams to catch security and compliance issues earlier in the process.</p>
<p><a href="https://about.gitlab.com/topics/ci-cd/#what-is-continuous-integration-ci">Continuous integration</a> gives teams visibility into more projects and allows all team members to manage deployments. Expanded access controls improve cross-team collaboration and accountability.</p>
<h3>Features that increase accountability</h3>
<p>GitLab Premium's <a href="https://about.gitlab.com/solutions/security-compliance/">advanced compliance controls</a> create an unbroken chain of accountability throughout the development process, enabling organizations to systematically track and validate every code change.</p>
<p>Users have greater auditability of any change and can track commits. This is in addition to strict <a href="https://docs.gitlab.com/ee/administration/settings/visibility_and_access_controls.html">access controls</a> that provide specific people with the ability to push and merge changes. With <a href="https://docs.gitlab.com/ee/user/compliance/audit_event_types.html">audit logs</a>, users can track and review changes and activities within the repository.</p>
<h2>Ship software faster with GitLab Premium</h2>
<p>“It’s simple. All teams operate around this one tool. Instantly, that made communication easier. We wouldn’t be where we are today if we didn’t have GitLab in our stack,” according to Airbus' Weber.</p>
<p>GitLab Premium represents more than just a tool — it's a comprehensive approach to software engineering that empowers development teams to deliver high-quality, secure, and efficient software solutions.</p>
<blockquote>
<h4>Discover why <a href="https://about.gitlab.com/pricing/premium/why-upgrade/">customers are upgrading to GitLab Premium</a>.</h4>
</blockquote>
]]></content>
        <author>
            <name>Jessica Hurwitz</name>
            <uri>https://about.gitlab.com/blog/authors/6c35XpCSITw8fPmcAX67of</uri>
        </author>
        <published>2024-12-13T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Ask a hacker: A conversation with ahacker1]]></title>
        <id>https://about.gitlab.com/blog/2024/12/12/ask-a-hacker-a-conversation-with-ahacker1</id>
        <link href="https://about.gitlab.com/blog/2024/12/12/ask-a-hacker-a-conversation-with-ahacker1"/>
        <updated>2024-12-12T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>At GitLab we have a tradition: Every year, we invite a bug bounty hunter to join us for an AMA. This year, we met with Alexander Siyou Tan, also known as <a href="https://hackerone.com/ahacker1?type=user">ahacker1</a>, and did a deep dive into all aspects of bug bounty hunting.</p>
<h2>About Alexander (ahacker1)</h2>
<p>Alexander is passionate about hacking complex SaaS applications, with a particular interest in authorization-based vulnerabilities. Currently, he's focusing on <a href="https://about.gitlab.com/blog/2023/09/14/the-ultimate-guide-to-enabling-saml/">SAML and SSO</a> research. His hacking journey began during the Covid-19 pandemic, when he transitioned from gaming to exploring game hacks and easter eggs.</p>
<h2>Highlights from the AMA</h2>
<p>Here are some of the questions AMA attendees asked Alexander, and his responses.</p>
<p><strong>What are the tools you use in your research?</strong></p>
<p>I use RubyMine as my IDE, as I find it helps with analyzing code. You can jump to  different parts of the code, and that helps with efficiency and allows you to search quickly and determine interesting behavior. I used to just use BurpSuite, but not so much anymore. I mainly focus on using JetBrains to review repositories on GitLab.</p>
<p><strong>Have you explored using AI to assist in finding and/or exploiting vulnerabilities?</strong></p>
<p>Yes! When I learn about a new feature or subject, I may ask ChatGPT how it works. It may give some insights or leads – when I do SAML research I use it.</p>
<p><strong>Tell us about moving into SAML and the experience of finding the awesome bugs in that area.</strong></p>
<p>SAML is like a SaaS application within a SaaS application. There's a 100-page document on how SAML works, offering infinite possibilities. I focus on code analysis, reviewing the approximately 20 libraries available. While hacking SAML can be time-consuming due to setup and configuration, the payoff can be significant.</p>
<p><strong>What’s next after SAML? Will you keep digging?</strong></p>
<p>I will fix SAML. I want to fix libraries. Not sure what’s next - maybe SSO stuff!</p>
<h3>Alexander's tips for the GitLab Bug Bounty Program</h3>
<p>Alexander offered the following advice for those interested in GitLab's Bug Bounty Program:</p>
<ol>
<li>Leverage GitLab's open source nature for code analysis.</li>
<li>Study patch releases to learn reverse-engineering techniques.</li>
<li>Review GitLab's public issues and disclosed reports for insights.</li>
</ol>
<h3>Getting to know our hacker</h3>
<p><strong>What do you do when you don't hack?</strong></p>
<p>I play games, I also go out on walks and explore nature/hike. It’s a nice break from sitting at the computer.</p>
<p><strong>How long do you think you would survive in a zombie apocalypse?</strong></p>
<p>Not long. Without the internet, I don’t think I'd be able to adapt.</p>
<p><strong>Is cereal a type of soup?</strong></p>
<p>It most definitely is. It has both liquid and food in it.</p>
<h2>Watch the replay</h2>
<p>For those interested in the full AMA, check out the YouTube live playback.</p>
<p>&lt;!-- blank line --&gt;
&lt;figure class=&quot;video_container&quot;&gt;
&lt;iframe src=&quot;https://www.youtube.com/embed/EPV0eNOOfv4?si=byNqXWKZzZLXfLfW&quot; title=&quot;GitLab Ask a Hacker AMA with Alexander Siyou Tan (@ahacker1)&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;/iframe&gt;
&lt;/figure&gt;
&lt;!-- blank line --&gt;</p>
<p>We extend our gratitude to all participants and, of course, to Alexander for sharing his insights. Keep up with Alexander's latest activities on his <a href="https://hackerone.com/ahacker1">HackerOne profile</a>.</p>
<h2>More &quot;Ask a Hacker&quot; AMAs</h2>
<ul>
<li><a href="https://about.gitlab.com/blog/2023/10/02/ask-a-hacker/">Ask a hacker - 0xn3va</a></li>
<li><a href="https://about.gitlab.com/blog/2021/03/04/ajxchapman-ask-a-hacker/">Ask a hacker - ajxchapman</a></li>
<li><a href="https://about.gitlab.com/blog/2020/11/10/rpadovani-ask-a-hacker/">Ask a hacker - rpadovani</a></li>
</ul>
<h2>About the GitLab Bug Bounty Program</h2>
<p>The GitLab Bug Bounty Program aims to enhance the security of our products and services. Managed by our Application Security team, the program has achieved significant milestones since its public launch in December 2018, including:</p>
<ul>
<li>Resolved 1,684 reports</li>
<li>Awarded over $4.7 million in bounties</li>
<li>Thanked 655 hackers for their findings</li>
</ul>
<blockquote>
<p>Learn more about the <a href="https://hackerone.com/gitlab">GitLab Bug Bounty Program</a>.</p>
</blockquote>
]]></content>
        <author>
            <name>Ottilia Westerlund</name>
            <uri>https://about.gitlab.com/blog/authors/ottiliawesterlund</uri>
        </author>
        <published>2024-12-12T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Modernizing a simple C++ application to Java with GitLab Duo]]></title>
        <id>https://about.gitlab.com/blog/2024/12/11/modernizing-a-simple-c-application-to-java-with-gitlab-duo</id>
        <link href="https://about.gitlab.com/blog/2024/12/11/modernizing-a-simple-c-application-to-java-with-gitlab-duo"/>
        <updated>2024-12-11T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>Memory unsafe languages are those that do not handle any memory management on behalf of the developer. For example, when programming in C or C++, if you need memory during runtime, you will need to allocate and deallocate the memory yourself, running the risk of ending up with memory leaks in cases when you inadvertently forget to deallocate it. Other languages like Ada and FORTRAN provide some memory management but may not prevent memory leaks. Many organizations, including those in the public sector, have applications that have been developed using languages that are memory unsafe and are often looking to modernize these to a memory safe language, such as Java, Python, JavaScript, or Golang.</p>
<p>This tutorial focuses on a specific example of modernizing a simple C++ application to Java by refactoring it with the help of <a href="https://about.gitlab.com/gitlab-duo/">GitLab Duo</a>, our suite of AI capabilities, and shows how much time and effort you can save in the migration.</p>
<h2>Understanding the simple C++ application</h2>
<p>Let’s make the assumption that we have been tasked with the migration of a C++ application to a memory safe language, namely Java. The C++ application can be found in the following project (thank you to <a href="https://gitlab.com/sugaroverflow">@sugaroverflow</a> for contributing this sample application):</p>
<p><a href="https://gitlab.com/gitlab-da/use-cases/ai/ai-applications/refactor-to-java/air-quality-application">https://gitlab.com/gitlab-da/use-cases/ai/ai-applications/refactor-to-java/air-quality-application</a></p>
<p>Since this is the first time we are seeing this application, let’s invoke GitLab Duo Code explanation to better understand what it does. We open file <code>main.cpp</code> in Visual Studio Code and select the entirety of this file. We then right-click and select <strong>GitLab Duo Chat &gt; Explain selected snippet</strong> from the popup menu.</p>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/18vrGTIjMuOByYSRIowhr0/bd2bd8a31cdadf73757f265714bdf3dc/code-explanation-menu-option.png" alt="duo-code-explanation-menu-option"></p>
<p>The GitLab Duo Chat window opens up and the slash command <code>/explain</code> is executed for the selected code. Chat returns a very thorough and detailed description and explanation in natural language form of what each function does in the file as well as examples on how to run the compiled program.</p>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/7t53q0zQ4PYKoOMcexLUx7/08dfe137fe2fdbbec868872fe34df78a/code-explanation-text.png" alt="code-explanation-text"></p>
<p>In short, the simple C++ application takes a U.S. zip code as input and returns the air quality index for that zip code.</p>
<h2>Compiling and running the C++ application</h2>
<p>To further understand this simple C++ application, we proceed to compile and run it. We could have asked Chat how to do this, however, the project has a README file that provides the commands to compile the project, so we go ahead and use those by entering them in the Terminal window of VS Code.</p>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/jnS8QMd3YaJEsU8v49G4w/25065bd3bce9eec30b7a1a50301836fd/compile-command.png" alt="compile-command"></p>
<p>After the compilation finishes, we change directory to the <code>build</code> subdirectory in the project, which is where the compilation process places the executable file for this application. Then, we run the executable by entering the following command:</p>
<p><code>./air_quality_app 32836</code></p>
<p>And we see the response as follows:</p>
<p><code>Air Quality Index (AQI) for Zip Code 32836: 2 (Fair)</code></p>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/4KZ2WtEGmXvj0QudG0X60p/e3a1fe946e8a79bbca771c451a0c5f71/cplus-plus-app-execution-output.png" alt="cplus-plus-app-execution-output"></p>
<p>This confirms to us that the application was successfully compiled and it’s executing appropriately.</p>
<h2>Refactoring the application to Java</h2>
<p>Let’s start migrating this C++ application to Java. We take advantage of GitLab Duo Chat and its refactoring capabilities by using the slack command <code>/refactor</code>. We qualify the slash command with specific instructions on what to do for the refactoring. We enter the following command in the Chat input field:</p>
<blockquote>
<p>/refactor this entire application to Java. Provide its associated pom.xml to build and run the Java application. Also, provide the directory structure showing where all the resulting files should reside for the Java application.</p>
</blockquote>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/dJ0RJ9oY0MFfo4I991fOF/652e507160fefd7f01b3d9e3907ca29a/refactor-chat-output.png" alt="refactor-chat-output"></p>
<p>Chat returns a set of Java files that basically refactor the entire C++ application to the memory safe language. In addition and per the prompt, Chat returns the pom.xml file, needed by <a href="https://docs.gitlab.com/ee/api/packages/maven.html">maven</a> for the building and execution of the refactored application as well as its directory structure, indicating where each generated file should reside.</p>
<p>We copy and save all the generated files to our local directory.</p>
<h2>Creating the Java project</h2>
<p>In VS Code, we now proceed to open an empty project in which we will set up the directory structure of the new Java application and its contents.</p>
<p>We create all the previously generated Java files in their corresponding directories in the new project and paste their contents in each.</p>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/To1yAXGM0aHvfqCTHwNpa/47e93379eca044fd7cf1761ce23c761a/java-files-created.png" alt="java-files-created"></p>
<p>Lastly, we save all the files to our local disk.</p>
<h2>Asking for help to build and run the Java application</h2>
<p>At this point, we have an entire Java application that has been refactored from C++. Now, we need to build it but we don’t quite remember what maven command we need to use to accomplish this.</p>
<p>So we ask GitLab Duo Chat about this. We enter the following prompt in the Chat input field:</p>
<blockquote>
<p>How do you build and run this application using maven?</p>
</blockquote>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/2s87d5LTF4GM3wIjQqq4uT/cc40607673c2f59b3eda89d9f201e924/maven-info-output.png" alt="maven-info-output"></p>
<p>Chat returns with a thorough explanation on how to do this, including examples of the maven command to build and run the newly created Java application.</p>
<h2>Building and running the Java application</h2>
<p>GitLab Duo Chat understands the application and environment context and responds that we first need to create an environment variable called <code>API_KEY</code> before we can run the application.</p>
<p>It also provides the maven command to execute to build the application, which we enter in the Terminal window:</p>
<pre><code class="language-unset">mvn clean package
</code></pre>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/6sjDplbMvWylBq4ATMCaT4/adc24bb1197269748485e6d7bda3edfa/java-build-output.png" alt="java-build-output"></p>
<p>Once the build finishes successfully, we copy the generated command to run the application from the Chat window and paste it in the Terminal window:</p>
<pre><code class="language-unset">java -jar target/air-quality-checker-1.0-SNAPSHOT-jar-with-dependencies.jar 90210
</code></pre>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/29wcsmJwpLS7t9EyMoEjqU/6c08a56ccc077d31eb09bc657cf2b611/java-app-execution-output.png" alt="java-app-execution-output"></p>
<p>The application successfully executes and returns the string:</p>
<pre><code class="language-unset">Air Quality Index (AQI) for Zip Code 90210: 2 (Fair)
</code></pre>
<p>We have confirmed that the modernized version of the application, now refactored in Java, runs just like its original C++ version.</p>
<h2>Watch this tutorial in action</h2>
<p>We have seen that by leveraging the power of GitLab Duo in your modernization activities, you can save a great deal of time and effort, freeing you to spend more time innovating and creating value to your organization.</p>
<p>Here is a video to show you, in action, the tutorial you just read:</p>
<p>&lt;!-- blank line --&gt;
&lt;figure class=&quot;video_container&quot;&gt;
&lt;iframe src=&quot;https://www.youtube.com/embed/LJ7GOr_P0xs?si=_ZjF75DAXEQnY2Mn&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;/iframe&gt;
&lt;/figure&gt;
&lt;!-- blank line --&gt;</p>
<blockquote>
<h4>Want to get started with GitLab Duo? <a href="https://about.gitlab.com/solutions/gitlab-duo-pro/sales/">Start a free, 60-day trial today!</a></h4>
</blockquote>
<h2>Learn more</h2>
<ul>
<li><a href="https://about.gitlab.com/blog/2024/08/26/refactor-code-into-modern-languages-with-ai-powered-gitlab-duo/">Refactor code into modern languages with AI-powered GitLab Duo</a></li>
<li><a href="https://about.gitlab.com/blog/2024/06/05/secure-by-design-principles-meet-devsecops-innovation-in-gitlab-17/">Secure by Design principles meet DevSecOps innovation in GitLab 17</a></li>
<li><a href="https://about.gitlab.com/blog/2023/03/14/memory-safe-vs-unsafe/">How to secure memory-safe vs. manually managed languages</a></li>
</ul>
]]></content>
        <author>
            <name>Cesar Saavedra</name>
            <uri>https://about.gitlab.com/blog/authors/csaavedra1</uri>
        </author>
        <published>2024-12-11T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Automating with GitLab Duo, Part 2: Complex testing]]></title>
        <id>https://about.gitlab.com/blog/2024/12/10/automating-with-gitlab-duo-part-2-complex-testing</id>
        <link href="https://about.gitlab.com/blog/2024/12/10/automating-with-gitlab-duo-part-2-complex-testing"/>
        <updated>2024-12-10T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>The first part of our three-part series on <a href="https://about.gitlab.com/blog/2024/12/02/automating-with-gitlab-duo-part-1-generating-tests/">test generation with GitLab Duo</a> focused on how to automate code testing. Now, we will share the lessons we learned while using AI for test generation.</p>
<h2>Situations we encountered and how we handled them</h2>
<p>Overall, we were pleased with the results using <a href="https://about.gitlab.com/gitlab-duo/">GitLab Duo</a> to generate tests on our code. As is the case with any language generation, some cases required minor adjustments such as fixing import paths or editing contents in datasets. For the more complex cases, we had to remember that AI solutions often lack context. Here's how we handled the more complex testing situations with GitLab Duo.</p>
<h3>Updating existing test cases</h3>
<p>As is often the case when developing a software product, we encountered instances that required updates to existing tests. Rather than manually making adjustments to a full test suite for a common issue, we took full advantage of the GitLab Duo Chat window in VS Code. For example, to refactor tests, we used the Chat prompt “Please update the provided tests to use unittest rather than pytest” followed by pasting in the tests we wanted GitLab Duo to update.</p>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/eSDIEGqi7Wz45wWjqjWeE/d082b52e703eba3142164f8f2d203c11/image5.png" alt="Automated test generation"></p>
<p>&lt;br&gt;&lt;/br&gt;</p>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/6H0edPtZPc5TpoS0q4vhG6/b37a7eb3e1de35c05efd907b395e88f4/image3.png" alt="Chat prompt requesting use of unittest rather than pytest"></p>
<p><strong>Note:</strong> We copy-and-pasted GitLab Duo's recommendations into our code.</p>
<h3>Creating tests for legacy code</h3>
<p>Creating tests for legacy code we knew worked was another challenging situation we encountered. In such circumstances, it was valuable to provide error snippets alongside failing tests and ask GitLab Duo to provide new tests. A full copy-and-paste from the terminal window of noted failures and errors to Chat, along with a request to “Please explain and fix this failing test” or similar prompts, yielded a summary of the issues the test was encountering as well as a new test addressing the problem. We did find this sometimes required multiple rounds of refactoring as new test failures were identified. However, the efficiency of GitLab Duo to provide various refactored solutions was fast and a net positive on team and developer efficiency.</p>
<h3>Working with complex or abstracted code</h3>
<p>In other instances, the modularization or complexity of our code led to variance in GitLab Duo’s results. For instance, when generating tests, GitLab Duo sometimes generated a series of passing and failing tests caused by differences in testing approach (e.g. usage of Mock and which objects were mocked). We provided GitLab Duo its own example of a passing test and asked it to modify individual tests one at a time to match the style of the passing tests to maintain consistency. We also would provide GitLab Duo a file of functioning tests for a similar object or task so it could mirror the structure.</p>
<h3>Ensuring generated code follows our standards</h3>
<p>While developing a Python module, GitLab Duo generated many tests using Mock and often they required refactoring, particularly around naming standardization. In such cases, we could leverage GitLab Duo Chat to refactor tests with instructions as to which specific test components to update. Prompting GitLab Duo for these changes was immensely faster than refactoring tests individually, as we had previousy done.</p>
<h3>Addressing uncovered test cases</h3>
<p>GitLab Duo generated tests for additional test cases the team had not previously considered, thus increasing coverage. Luckily, we could use GitLab Duo to quickly and efficiently address these edge cases and expand testing coverage, which is a key value-add for our team to build quickly and ensure a robust product.</p>
<h2>What we learned</h2>
<p>Here are few key lessons that have been important to our success with GitLab Duo:</p>
<ul>
<li><strong>Fast and efficient for rapid development and iteration -</strong> GitLab Duo’s role in generating automated tests has been a key accelerator in development for our team and allowed us to work faster and with greater confidence in our changes.</li>
<li><strong>Important to use appropriate prompts -</strong> When using GitLab Duo for our use case, we touched on a key topic for machine learning optimization: prompt engineering. Sometimes we needed to modify our question by just a few keywords to lead to the ideal generated answer.</li>
<li><strong>Need understanding of underlying frameworks and code -</strong> When it comes to any AI-generated code that makes it into a product, even if only as testing, it’s critical that we understand how the code functions so we can adequately debug as well as request informed changes.</li>
<li><strong>Need understanding of desired end state and standards -</strong> Similar to following coding standards for formatting and library usage while developing without AI, it’s important to maintain the vision of what the intended outcomes look like and what standards are being adhered to when using AI. GitLab Duo needs the context to understand code standards, so it’s critical for team members using GitLab Duo to provide adequate oversight of its outputs to ensure quality and other expectations are met.</li>
<li><strong>GitLab Duo is not a replacement for all tests -</strong> While we use GitLab Duo significantly for generating automated tests, it does not replace our other tests and human oversight. Functional tests, integration tests, and more still serve a valuable place in the QA process and overall software development lifecycle.</li>
</ul>
<p>In our next article in this series, we’ll cover a test we ran to validate the impact of GitLab Duo on our team’s automated testing and discuss the impressive results we have achieved thus far.</p>
]]></content>
        <author>
            <name>Byron Boots</name>
            <uri>https://about.gitlab.com/blog/authors/7ezFbRYF2Cu5JTBQXRp7mw</uri>
        </author>
        <published>2024-12-10T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[How to deploy a PHP app using GitLab's Cloud Run integration]]></title>
        <id>https://about.gitlab.com/blog/2024/12/10/how-to-deploy-a-php-app-using-gitlabs-cloud-run-integration</id>
        <link href="https://about.gitlab.com/blog/2024/12/10/how-to-deploy-a-php-app-using-gitlabs-cloud-run-integration"/>
        <updated>2024-12-10T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>Writing PHP application code and ensuring the application is running smoothly in production are often two different skills sets owned by two different engineers. GitLab aims to bridge the gap by enabling the engineer who has written the PHP application code to also deploy it into Google Cloud Platform with little effort.</p>
<p>Whether you own event-driven, long-running services or deploy containerized jobs to process data, Google Cloud Run automatically scales your containers up and down from zero — this means you only pay when your code is running.</p>
<p>If you are a PHP developer who would like to deploy your application with minimal effort to Google Cloud Platform, this guide will show you how using the GitLab Google Cloud Run integration.</p>
<h1>Overview</h1>
<ul>
<li>Create a new project in GitLab</li>
<li>Set up your PHP application</li>
<li>Utilizing the Google Cloud integration, create a Service account</li>
<li>Utilizing the Google Cloud integration, configure Cloud Run via merge request</li>
<li>Try adding another endpoint</li>
<li>Clean up</li>
</ul>
<h2>Prerequisites</h2>
<ul>
<li>Owner access on a Google Cloud Platform project</li>
<li>Working knowledge of <a href="https://www.php.net/manual/en/introduction.php">PHP</a>, an open-source, general-purpose scripting language</li>
<li>Working knowledge of <a href="https://about.gitlab.com/topics/ci-cd/#what-is-continuous-integration-ci">GitLab CI</a></li>
<li>10 minutes</li>
</ul>
<h2>1. Create a new project in GitLab.</h2>
<p>We decided to call our project <code>PHP cloud-run</code> for simplicity.</p>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/5zvHbq2hYShOUa0eDpAj7u/a239eca41ebe546dde43e62f5a339d67/image4.png" alt="PHP cloud- run project"></p>
<p>Then, create an index.php app<a href="https://gitlab.com/demos/templates/php-cloud-run/-/blob/main/index.php">https://gitlab.com/demos/templates/php-cloud-run/-/blob/main/index.php</a>.</p>
<pre><code class="language-php">&lt;?php

$name = getenv('NAME', true) ?: 'World';
echo sprintf('Hello %s!', $name);
</code></pre>
<h2>2. Utilizing the Google Cloud integration, create a Service account.</h2>
<p>Navigate to <strong>Operate &gt; Google Cloud &gt; Create Service account</strong>.</p>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/58NQZOmfYRSDda0bLXBwUm/dd614f7b14b84311e5d4147581107e93/image10.png" alt="Create Service account screen"></p>
<p>Then configure the region you would like the Cloud Run instance deployed to.</p>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/4c9wwYQ0Ed0BgFsi9zcv3J/5b68cb5b3d342cbb61b6317b65ead76f/image5.png" alt="Configure region screen"></p>
<h2>3. Utilizing the Google Cloud integration, configure <strong>Cloud Run via merge request</strong>.</h2>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/7BP2tD3jdyDATOyG0AtuOg/21e47c833cf9bfb3861f900fb9267b49/image6.png" alt="Deployment configuration screen"></p>
<p>This will open a merge request. Immediately merge this merge request.</p>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/2lkQJVDEWYwQ9ZVKlxb0i5/c22f6f50f5337ad232e95a969c003e23/image3.png" alt="Enable Deployments to Cloud run screen"></p>
<p><strong>Note:</strong> <code>GCP_PROJECT_ID</code>, <code>GCP_REGION</code>,  <code>GCP_SERVICE_ACCOUNT</code>, and <code>GCP_SERVICE_ACCOUNT_KEY</code> will all be automatically populated from the previous steps.</p>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/6ZdVzLReOn0kb2OWuR8qW9/9c7c664835d41b9413067632db0ca53b/image1.png" alt="Variables screen"></p>
<p>Check your pipeline and you will see you have successfully deployed to Google Cloud Run utilizing GitLab CI.</p>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/5W2vK07Xpu9E9zIwgwsQbQ/2e3849bc7c34236c949b9185c31b8a98/image7.png" alt="merge branch screen"></p>
<p>&lt;br&gt;&lt;/br&gt;</p>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/Oe93r0MQuh0o0pruk8SmG/8bf2707a861e991fb1d19e2c4d7492e2/image2.png" alt="Google Cloud Run deployed with GitLab CI"></p>
<h2>4. Click the <strong>Service URL</strong> to view your newly deployed Flask server.</h2>
<p>In addition, you can navigate to <strong>Operate &gt; Environments</strong> to see a list of deployments for your environments.</p>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/1gAGuE8H4Mqs2kTaxKNirC/66d29efb8e271c4e9a8412714c01b0d7/image9.png" alt="Environments screen"></p>
<p>By clicking on the environment called <strong>main</strong>, you’ll be able to view a complete list of deployments specific to that environment.</p>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/7cDS1f5hT6D8Vfsnzk9Dvk/c51f203194c6d0a14a1a661541728633/image8.png" alt="Main environment"></p>
<h2>5. Add another endpoint</h2>
<p>To get started with developing your PHP application, try adding another endpoint. For example, in your main file, you can add a <code>/bye</code> endpoint like this:</p>
<pre><code>
&lt;?php

$name = getenv('NAME', true) ?: 'World';

if ($_SERVER['REQUEST_URI'] == '/bye') {
    echo sprintf('Goodbye %s!', $name);
} else {
    echo sprintf('Hello %s!', $name);
}

</code></pre>
<p>Push the changes to the repo, and watch the <code>deploy-to-cloud-run</code> job deploy the updates. Once the job is complete, go back to the Service URL and navigate to the <code>/bye</code> endpoint to see the new functionality in action.</p>
<h3>Clean up</h3>
<p>To prevent incurring charges on your Google Cloud account for the resources used in this tutorial, you can either delete the specific resources or delete the entire Google Cloud project. For detailed instructions, refer to the <a href="https://docs.gitlab.com/ee/tutorials/create_and_deploy_web_service_with_google_cloud_run_component/#clean-up">cleanup guide here</a>.</p>
<blockquote>
<p>Check out more <a href="https://about.gitlab.com/blog/tags/solutions-architecture/">easy-to-follow tutorials from our Solutions Architecture team</a>.</p>
</blockquote>
]]></content>
        <author>
            <name>Noah Ing</name>
            <uri>https://about.gitlab.com/blog/authors/noahing</uri>
        </author>
        <author>
            <name>Christian Nnachi</name>
            <uri>https://about.gitlab.com/blog/authors/6pE7HjtzzpRhBFVdwTFjEX</uri>
        </author>
        <published>2024-12-10T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[How GitLab empowers translators with more context]]></title>
        <id>https://about.gitlab.com/blog/2024/12/09/how-gitlab-empowers-translators-with-more-context</id>
        <link href="https://about.gitlab.com/blog/2024/12/09/how-gitlab-empowers-translators-with-more-context"/>
        <updated>2024-12-09T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>GitLab is continuously translated by our global community of translators and proofreaders. Through <a href="https://docs.gitlab.com/ee/development/i18n/translation.html">Crowdin</a>, they help make our product more accessible to the world by translating it into 78 languages. GitLab translation community members are volunteer translators, working professionals who are GitLab users, and even <a href="https://about.gitlab.com/blog/2023/10/05/behind-the-scenes-of-gitlab-korean-translation/">university students contributing to translators as part of their classroom projects</a>.</p>
<h3>How the GitLab open-core model supports translators</h3>
<p>While this community collaboration is powerful, translators often face a crucial challenge: understanding the full context of the text that they are translating.</p>
<p>Great translation isn't just about converting words – it's about preserving meaning, intent, and usability in a target language. Software translation requires a unique blend of skills. Great translators usually specialize in multiple linguistic domains as well as the technical domain of the product itself. They perform myriad translation-adjacent tasks such as:</p>
<ul>
<li>ensuring accuracy and consistency of technical terminology</li>
<li>creating new glossary terms for new concepts</li>
<li>adhering to the style and tone</li>
<li>navigating the complexity of <a href="https://www.unicode.org/cldr/charts/46/supplemental/language_plural_rules.html">CLDR pluralization rules</a></li>
<li>understanding the translatability of composite messages and how to provide feedback to improve the source by making it localizable</li>
</ul>
<p>Translators spend lots of time researching context, asking questions, and reading <a href="https://docs.gitlab.com/">GitLab product documentation</a>. Without proper context, even simple phrases can be mistranslated, potentially confusing or disrupting user workflows. What sets <a href="https://about.gitlab.com/blog/2016/07/20/gitlab-is-open-core-github-is-closed-source/">GitLab apart is its open-core model</a>, which allows translators to access most of the product development context directly at the source. This transparency empowers them to actively contribute as true <a href="https://handbook.gitlab.com/handbook/company/mission/#mission">co-creators of the GitLab global product</a>.</p>
<h3>Introducing our new context-enhancement feature</h3>
<p>To support these needs and empower translators with context, GitLab has developed a new feature: we now <a href="https://docs.gitlab.com/ee/development/i18n/translation.html#context">embed into each translatable string a contextual link</a> (more specifically, a link to our global in-product search) that lets translators locate all instances of that string in the codebase. These links allow translators to rely on <a href="https://docs.gitlab.com/ee/user/project/repository/files/git_blame.html">Git blame</a> to trace every string's history – from its current location in code, through commits in merge requests, and all the way up to the original planning discussions.</p>
<p>For example, when you are translating <strong>Rotate</strong>, the <strong>AccessTokens|</strong> <a href="https://docs.gitlab.com/ee/development/i18n/externalization.html#namespaces">namespace</a> suggests that the context is, well, <em>access tokens</em>. However, there is no additional visual context for what <strong>Rotate</strong> means, and translators are left to wonder, guess, and provide the best possible assumption in a target language.</p>
<p>With the new context enhancement, here is what translators are now able to do:</p>
<ol>
<li>Click the URL in the <strong>See where this string is used in code</strong> section.</li>
</ol>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/51sveAEk34z4ZAXPmF4KE6/61f6a98458785a4151599be5a3fb327f/image3.png" alt="see where this string is used in code section"></p>
<ol start="2">
<li>Review the <a href="https://gitlab.com/search?project_id=278964&amp;search=%22%28%5B%5E%3A%5D%28+%29%2B%3F%7C_%5C%5C%28%29%5B%27%5C%22%60%5DAccessTokens%5C%5C%7CRotate%5B%27%5C%22%60%5D%22+%28file%3A%5C.js%24+or+file%3A%5C.vue%24+or+file%3A%5C.rb%24+or+file%3A%5C.erb%24+or+file%3A%5C.haml%24%29+%28file%3A%5Eee%2Fapp%2F+or+file%3A%5Eee%2Flib%2F+or+file%3A%5Eee%2Fconfig%2F+or+file%3A%5Eee%2Flocale%2F+or+file%3A%5Eapp%2F+or+file%3A%5Elib%2F+or+file%3A%5Econfig%2F+or+file%3A%5Elocale%2F%29&amp;regex=true">result of the code search</a>, and click the <strong>View blame</strong> icon:</li>
</ol>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/5GTN8p8UyotWv1297Fz20i/5f9a1fc0cdacbc1462de08202b04c29c/image6.png" alt="Screen with View blame icon"></p>
<ol start="3">
<li>Follow the link with the relevant merge request (<a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/169954">Introduce rotation of personal tokens in UI</a>):</li>
</ol>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/5Q7SEN6tDq1JdAoeJ5Ccbe/a521b967ca4fcb35e1292ffd7ec5a6a0/image7.png" alt="Link with relevant merge request"></p>
<ol start="4">
<li>On the <strong>Commits</strong> page, follow the link to the actual merge request:</li>
</ol>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/5pJ05XH1d8GDfEtVsUULQl/2a52e063e3f258d1703c4ec47d544947/image1.png" alt="Commits page with link"></p>
<ol start="5">
<li>Watch the screen recording that the software engineer added to the merge request:</li>
</ol>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/4kwm321zND7pnAoWBav2o3/978eb2661c3f85841201fda680f5fb5e/image5.png" alt="screen recording in merge request"></p>
<ol start="6">
<li>Research even further by going to:<br>
a. The linked issue <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/241523">Introduce renew expired token capability in UI</a> or its parent epic <a href="https://gitlab.com/groups/gitlab-org/-/epics/14563">Rotate Token through the UI</a>:</li>
</ol>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/7dqX7PAkCtTvK2smxtLkNe/db07008f3045f4f6d6cb168285bf5c9b/image4.png" alt="linked issue and parent epic"></p>
<p>b. The <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/172916">related merge request that updates the GitLab product documentation</a>:</p>
<p><img src="//images.ctfassets.net/r9o86ar0p03f/Eth5PEDRJLT6boeNmg0wH/98ddeb594acc346611477c6ec54cdb2a/image2.png" alt="related merge request to update GitLab product documentation"></p>
<p>All these research steps will lead translators to better understand the technical concept of <em>access token rotation</em> and why the token rotation functionality was added, how it works, and what problem it solves for users.</p>
<p>With this rich research trail, translators get the maximum amount of context that will help provide the technically accurate and linguistically correct translation for the seemingly simple word <strong>Rotate</strong>.</p>
<p>This approach goes far beyond traditional translation aids like providing screenshots or exploring the product user interface. Translators can now fully understand the context by:</p>
<ul>
<li>deriving context from paths and naming conventions used in code</li>
<li>viewing screenshots or video recordings that are added to original merge requests</li>
<li>reading original planning and development discussions</li>
<li>following the engineering, copywriting, and product management decision-making process that has led to specific wording</li>
</ul>
<h3>More AI-powered contextual features coming up</h3>
<p>The GitLab Localization team isn't stopping here. We are working on <a href="https://gitlab.com/groups/gitlab-com/localization/-/epics/81">more context-enhancement features</a>, including AI-powered tools to help translators understand string usage and placement. Imagine a system where translators could interact with an agent by asking questions or proactively receiving immediate code-aware responses about where and how strings are used in the product UI.</p>
<blockquote>
<h3>Join our <a href="https://docs.gitlab.com/ee/development/i18n/">community on Crowdin</a> as a translator or a <a href="https://docs.gitlab.com/ee/development/i18n/#proofreading">proofreader</a>, try these new context features, and let us know how we can make the <a href="https://gitlab.com/gitlab-com/localization/localization-team/-/issues/259">translation experience and our product even better</a>.</h3>
</blockquote>
]]></content>
        <author>
            <name>Oleksandr Pysaryuk</name>
            <uri>https://about.gitlab.com/blog/authors/5EbCnvbwgeZKYOUug8fFFO</uri>
        </author>
        <published>2024-12-09T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[GitLab names Bill Staples as new CEO]]></title>
        <id>https://about.gitlab.com/blog/2024/12/05/gitlab-names-bill-staples-as-new-ceo</id>
        <link href="https://about.gitlab.com/blog/2024/12/05/gitlab-names-bill-staples-as-new-ceo"/>
        <updated>2024-12-05T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p><strong>This message from Sid Sijbrandij and Bill Staples was shared with GitLab team members earlier today.</strong></p>
<p><strong>Sid:</strong> On today’s earnings call, I announced that I am stepping down as CEO and will remain Executive Chair of the Board. I also introduced GitLab’s new CEO, <a href="https://www.linkedin.com/in/williamstaples/">Bill Staples</a>.</p>
<p>As a Board, we routinely do succession planning. This includes conversations with a number of top executives. We’ve been having these conversations in greater earnest since my cancer returned. Through these discussions, we identified someone uniquely qualified to lead GitLab. I want more time to focus on my cancer treatment and health. My treatments are going well, my cancer is not metastatic, and I'm working towards making a full recovery. Stepping down from a role that I love is not easy, but I believe that it is the right decision for GitLab.</p>
<p>I couldn't be more excited to introduce you to Bill Staples, who will be leading GitLab into its next chapter. Bill will be GitLab’s CEO, effective today. He will also join the GitLab Board as a Director. Bill was most recently a public company CEO at New Relic. During his time there, he significantly increased the value of the company by accelerating revenue and driving increased profitability. He also brings decades of experience in leadership roles at Adobe and Microsoft. When I began speaking with Bill, I was immediately drawn to his customer-centric approach and deep product expertise. As I got to know him further, I knew that his shared value system made him the right person for this role, for our team members, for our customers, and for our shareholders. I feel fortunate that GitLab has found someone with a great leadership track record and strong DevOps expertise to lead GitLab into the future.</p>
<p>We have come so far from the early days when we launched GitLab.com. We have created the DevOps category and are the leader in the Gartner Magic Quadrant for both vision and execution. Millions of people now use GitLab to deliver software faster and more efficiently. We have integrated AI, Security, and Compliance into our platform to offer our enterprise customers the strongest AI-powered DevSecOps solution. We have also built GitLab in collaboration with our contributors. Last quarter, we had an all-time high of an estimated 1,800 code contributions from the wider community. It is incredible that as GitLab grew, our contributor community grew with us. We have done all of this while being a values-driven company, leading in all-remote work, championing transparency through our public handbook and culture, and co-creating with the wider community.</p>
<p>I feel many things today, but more than anything else, I am grateful. I want to thank our customers. Driving results for them has been at the core of GitLab’s values, and I greatly appreciate their trust in us. I want to thank the wider GitLab community for their trust and enthusiasm. Their tens of thousands of contributions have greatly enhanced GitLab and its value for all users. Thank you, GitLab team members. Your contributions are at the core of GitLab’s success and the value we drive for our customers. Thank you, E-Group. You are amazing partners and collaborators in leading GitLab and our team members to achieve our very best. Thank you, GitLab Board. I have appreciated your support throughout my time as CEO and look forward to our ongoing partnership as I continue to serve as Executive Chair. And, thank you, Bill. I am excited for you to lead our next phase of growth. I am here to support you and the company in GitLab’s next chapter!</p>
<p>I couldn't be more thrilled about Bill and what's ahead for GitLab with him at the helm. We have an incredible opportunity in front of us. Software has never mattered more, and GitLab is well-positioned to be the platform that best enables folks to create, secure, and operate it. I look forward to staying part of the company and being actively involved wherever Bill can use me.</p>
<p><strong>Bill:</strong> Thanks, Sid, for the warm welcome! I greatly admire you and what you have accomplished. Very few people in the world have built a $10B market-cap technology company, taken it public, and scaled it to $750M in run-rate revenue. You have done incredible things with GitLab, and I’m grateful you will continue to play a meaningful role in the company. I appreciate your trust in me and commit to building upon the successes you and others should rightfully celebrate.</p>
<p>I am so excited about GitLab and the opportunity ahead of us. Over the coming decade, we will see software-driven transformation around the world as AI accelerates and transforms the software revolution already in motion. GitLab and our mission are going to be more important than ever. I look forward to working with this team to scale GitLab well beyond where it is today.</p>
]]></content>
        <author>
            <name>Sid Sijbrandij</name>
            <uri>https://about.gitlab.com/blog/authors/sytses</uri>
        </author>
        <published>2024-12-05T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[ICYMI: Key AI and security insights from our developer community]]></title>
        <id>https://about.gitlab.com/blog/2024/12/05/icymi-key-ai-and-security-insights-from-our-developer-community</id>
        <link href="https://about.gitlab.com/blog/2024/12/05/icymi-key-ai-and-security-insights-from-our-developer-community"/>
        <updated>2024-12-05T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>In our <a href="https://www.linkedin.com/feed/update/urn:li:activity:7265408726696697857">November LinkedIn Live broadcast</a>, we brought together field CTOs, developer advocates, and community leaders to discuss industry trends and showcase features making a difference in developer workflows.</p>
<p>Here are 5 key highlights:</p>
<h3>1. AI adoption trends from the field</h3>
<p>Our field CTOs shared insights on how organizations are embracing AI across their development workflows. For instance, Field CTO Cherry Han highlighted how financial organizations are thinking beyond individual developer tools.</p>
<p>&lt;div style=&quot;padding:56.25% 0 0 0;position:relative;&quot;&gt;&lt;iframe src=&quot;https://player.vimeo.com/video/1035388263?badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; fullscreen; picture-in-picture; clipboard-write&quot; style=&quot;position:absolute;top:0;left:0;width:100%;height:100%;&quot; title=&quot;Ai Adoption Trends from the Field&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;script src=&quot;https://player.vimeo.com/api/player.js&quot;&gt;&lt;/script&gt;</p>
<p>&lt;br&gt;&lt;/br&gt;
Andrew Hasker, Field CTO for Asia Pacific and Japan, offered valuable perspective on AI adoption.</p>
<p>&lt;div style=&quot;padding:56.25% 0 0 0;position:relative;&quot;&gt;&lt;iframe src=&quot;https://player.vimeo.com/video/1035388277?badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; fullscreen; picture-in-picture; clipboard-write&quot; style=&quot;position:absolute;top:0;left:0;width:100%;height:100%;&quot; title=&quot;From Field CTOs&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;script src=&quot;https://player.vimeo.com/api/player.js&quot;&gt;&lt;/script&gt;</p>
<h3>2. Security coverage that makes a difference</h3>
<p>Staff Developer Advocate Fernando Diaz demonstrated how GitLab's security scanners cover the complete application lifecycle, showing how easy it is to implement <a href="https://about.gitlab.com/solutions/security-compliance/">comprehensive security scanning</a> with just a few lines of code.</p>
<p>&lt;div style=&quot;padding:56.25% 0 0 0;position:relative;&quot;&gt;&lt;iframe src=&quot;https://player.vimeo.com/video/1035388297?badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; fullscreen; picture-in-picture; clipboard-write&quot; style=&quot;position:absolute;top:0;left:0;width:100%;height:100%;&quot; title=&quot;Security Coverage&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;script src=&quot;https://player.vimeo.com/api/player.js&quot;&gt;&lt;/script&gt;</p>
<h3>3. AI-powered language migration made simple</h3>
<p>In an impressive demonstration, Senior Technical Marketing Manager Cesar Saavedra showed how GitLab Duo can assist in migrating applications between programming languages.</p>
<p>&lt;div style=&quot;padding:56.25% 0 0 0;position:relative;&quot;&gt;&lt;iframe src=&quot;https://player.vimeo.com/video/1036170482?badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; fullscreen; picture-in-picture; clipboard-write&quot; style=&quot;position:absolute;top:0;left:0;width:100%;height:100%;&quot; title=&quot;AI-Powered Language Migration Made Simple&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;script src=&quot;https://player.vimeo.com/api/player.js&quot;&gt;&lt;/script&gt;</p>
<h3>4. Making DevSecOps work smarter</h3>
<p>Developer Advocate Abubakar Siddiq Ango showcased how GitLab's triage features can automate routine tasks.
&lt;div style=&quot;padding:56.25% 0 0 0;position:relative;&quot;&gt;&lt;iframe src=&quot;https://player.vimeo.com/video/1035388290?badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; fullscreen; picture-in-picture; clipboard-write&quot; style=&quot;position:absolute;top:0;left:0;width:100%;height:100%;&quot; title=&quot;Making DEvOps Work Smarter&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;script src=&quot;https://player.vimeo.com/api/player.js&quot;&gt;&lt;/script&gt;</p>
<h3>5. Community contributions making an impact</h3>
<p>Director of Contributor Success Nick Veenhof shared how community contributions are shaping GitLab's development:
&lt;div style=&quot;padding:56.25% 0 0 0;position:relative;&quot;&gt;&lt;iframe src=&quot;https://player.vimeo.com/video/1035395211?badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; fullscreen; picture-in-picture; clipboard-write&quot; style=&quot;position:absolute;top:0;left:0;width:100%;height:100%;&quot; title=&quot;Community Contributions Making an Impact&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;script src=&quot;https://player.vimeo.com/api/player.js&quot;&gt;&lt;/script&gt;</p>
<h2>Watch on-demand</h2>
<p><a href="https://www.linkedin.com/feed/update/urn:li:activity:7265408726696697857">Watch the complete broadcast recording</a> for step-by-step demonstrations and insights from our experts. Also, be sure to <a href="https://www.linkedin.com/company/gitlab-com">follow GitLab on LinkedIn</a> to stay up to date on our monthly broadcasts and get insights into our platform, DevSecOps, and software development.</p>
]]></content>
        <author>
            <name>Fatima Sarah Khalid</name>
            <uri>https://about.gitlab.com/blog/authors/sugaroverflow</uri>
        </author>
        <published>2024-12-05T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Streamline DevSecOps engineering workflows with GitLab Duo]]></title>
        <id>https://about.gitlab.com/blog/2024/12/05/streamline-devsecops-engineering-workflows-with-gitlab-duo</id>
        <link href="https://about.gitlab.com/blog/2024/12/05/streamline-devsecops-engineering-workflows-with-gitlab-duo"/>
        <updated>2024-12-05T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>It's 9 a.m. somewhere, and a DevOps engineer is starting their day. They check their <a href="https://docs.gitlab.com/ee/user/todos.html">GitLab todo list</a> to see any mentions or tasks assigned to them, collaborating with other stakeholders in their organization. These tasks can include:</p>
<ul>
<li>managing infrastructure</li>
<li>maintaining the configuration of resources</li>
<li>maintaining CI/CD pipelines</li>
<li>automating processes for efficiency</li>
<li>maintaining monitoring and alerting systems</li>
<li>ensuring applications are securely built and deployed</li>
<li>modernizing applications with containerization</li>
</ul>
<p>To carry out these tasks, DevOps engineers spend a lot of time reading documentation, writing configuration files, and searching for help in forums, issues boards, and blogs. Time is spent studying and understanding concepts, and how tools and technologies work. When they don't work as expected, a lot more time is spent investigating why. New tools are released regularly to solve niche or existing problems differently, which introduces more things to learn and maintain context for.</p>
<p><a href="https://about.gitlab.com/gitlab-duo/">GitLab Duo</a>, our AI-powered suite of capabilities, fits into the workflow of DevSecOps engineers, enabling them to reduce time spent solving problems while increasing their efficiency.</p>
<p>Let's explore how GitLab Duo helps streamline workflows.</p>
<h2>Collaboration and communication</h2>
<p>Discussions or requests for code reviews require spending time reading comments from everyone and carefully reviewing the work shared. GitLab Duo capabilities like Discussion Summary, Code Review Summary, and Merge Request Summary increase the effectiveness of collaboration by reducing the time required to get caught up on activities and comments, with more time spent getting the actual work done.</p>
<h3>Merge Request Summary</h3>
<p>Writing a detailed and clear summary of the change a merge request introduces is crucial for every stakeholder to understand what, why, and how a change was made. It's more difficult than it sounds to effectively articulate every change made, especially in a large merge request. <a href="https://docs.gitlab.com/ee/user/project/merge_requests/duo_in_merge_requests.html#generate-a-description-by-summarizing-code-changes">Merge Request Summary</a> analyzes the change's diff and provides a detailed summary of the changes made.</p>
<p>&lt;!-- blank line --&gt;
&lt;figure class=&quot;video_container&quot;&gt;
&lt;iframe src=&quot;https://www.youtube.com/embed/4muvSFuWWL4?si=1i2pkyqXZGn2dSbd&quot; title=&quot;GitLab Duo Chat is now aware of Merge Requests&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;/iframe&gt;
&lt;/figure&gt;
&lt;!-- blank line --&gt;</p>
<h3>Discussion Summary</h3>
<p>Imagine getting pulled into an issue with more than 100 comments and a lengthy description, with different perspectives and opinions shared. GitLab Duo <a href="https://docs.gitlab.com/ee/user/discussions/index.html#summarize-issue-discussions-with-duo-chat">Discussion Summary</a> summarizes all the conversations in the issue and identifies tasks that need to be done, reducing time spent.</p>
<p>&lt;!-- blank line --&gt;
&lt;figure class=&quot;video_container&quot;&gt;
&lt;iframe src=&quot;https://www.youtube.com/embed/IcdxLfTIUgc?si=WXlINow3pLoKHBVM&quot; title=&quot;GitLab Duo Dicussion Summary&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;/iframe&gt;
&lt;/figure&gt;
&lt;!-- blank line --&gt;</p>
<h4>Code Review Summary</h4>
<p>A merge request has been assigned to a DevOps engineer for review in preparation for deployment, and they have spent time reviewing several parts of the change with multiple comments and suggestions. When <a href="https://docs.gitlab.com/ee/user/project/merge_requests/reviews/index.html#submit-a-review">submitting a review</a>, a text box is presented to summarize the review, which often requires taking a pause and articulating the review. With <a href="https://docs.gitlab.com/ee/user/project/merge_requests/reviews/index.html#submit-a-review">Code Review Summary</a>, they get a concise summary automatically drafted leading to efficiency.</p>
<h2>Manage infrastructure changes</h2>
<p>Part of a DevOps engineer's workflow is managing infrastructure changes. Infrastructure as code (<a href="https://docs.gitlab.com/ee/user/infrastructure/iac/">IaC</a>) revolutionized this process, allowing for documentation, consistency, faster recovery, accountability, and collaboration. A challenge with IaC is understanding the requirements and syntax of the chosen tool and provider where the infrastructure will be created. A lot of time is then spent reviewing documentation and tweaking configuration files until they meet expectations.</p>
<p>With GitLab Duo <a href="https://docs.gitlab.com/ee/user/gitlab_duo/index.html#code-explanation">Code Explanation</a> and <a href="https://docs.gitlab.com/ee/user/project/repository/code_suggestions/index.html">Code Suggestions</a>, you can prompt GitLab Duo to create configuration files in your tool of choice and learn about the syntax of those tools. With Code Suggestions, you can either leverage <a href="https://docs.gitlab.com/ee/user/project/repository/code_suggestions/index.html#code-generation">code generation</a>, where you prompt GitLab Duo to generate the configuration, or code completion, which provides suggestions as you type while maintaining the context of your existing configurations.</p>
<p>As of the time this article was published, Terraform is <a href="https://docs.gitlab.com/ee/user/project/repository/code_suggestions/supported_extensions.html#supported-languages">supported by default</a> with the right extensions for your IDEs. Other technologies can be supported with <a href="https://docs.gitlab.com/ee/user/project/repository/code_suggestions/supported_extensions.html#add-support-for-more-languages">additional language support configuration</a> for the <a href="https://docs.gitlab.com/ee/editor_extensions/visual_studio_code/index.html">GitLab Workflow extension</a>.</p>
<p>Where a technology is not officially supported, <a href="https://docs.gitlab.com/ee/user/gitlab_duo_chat/examples.html">GitLab Duo Chat</a> is the powerful AI assistant that can help generate, explain, clarify, and troubleshoot your configuration, while maintaining context from selected text or opened files. Here are two demos where GitLab Duo helped create IaC with Terraform and AWS CloudFormation.</p>
<p>&lt;!-- blank line --&gt;
&lt;figure class=&quot;video_container&quot;&gt;
&lt;iframe src=&quot;https://www.youtube.com/embed/saa2JJ57UaQ?si=Bu9jyQWwuSUcw8vr&quot; title=&quot;Manage your Infrastructure with Terraform and AI using GitLab Duo&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;/iframe&gt;
&lt;/figure&gt;
&lt;!-- blank line --&gt;</p>
<p>&lt;br&gt;&lt;/br&gt;</p>
<p>&lt;!-- blank line --&gt;
&lt;figure class=&quot;video_container&quot;&gt;
&lt;iframe src=&quot;https://www.youtube.com/embed/KSLk2twXqiI?si=QDdERjbM0f7X2p23&quot; title=&quot;Deploying AWS Lambda function using AWS Cloudformation with help from GitLab Duo&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;/iframe&gt;
&lt;/figure&gt;
&lt;!-- blank line --&gt;</p>
<h3>Configuration management</h3>
<p>Once your infrastructure is up, GitLab Duo Chat can also help create configuration files and refactor existing ones. These can be Ansible configurations for infrastructure or cloud-native configurations using Docker, Kubernetes, or Helm resource files. In the videos below, I demonstrate how GitLab Duo helps with Ansible, containerization, and application deployment to Kubernetes.</p>
<p>&lt;!-- blank line --&gt;
&lt;figure class=&quot;video_container&quot;&gt;
&lt;iframe src=&quot;https://www.youtube.com/embed/t6ZCq_jkBwY?si=awCUdu1wCgOO21XR&quot; title=&quot;Configuring your Infrastructure with Ansible &amp; GitLab Duo&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;/iframe&gt;
&lt;/figure&gt;
&lt;!-- blank line --&gt;</p>
<p>&lt;br&gt;&lt;/br&gt;</p>
<p>&lt;!-- blank line --&gt;
&lt;figure class=&quot;video_container&quot;&gt;
&lt;iframe src=&quot;https://www.youtube.com/embed/KSLk2twXqiI?si=QDdERjbM0f7X2p23&quot; title=&quot;Containerizing your application with GitLab Duo&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;/iframe&gt;
&lt;/figure&gt;
&lt;!-- blank line --&gt;</p>
<p>&lt;br&gt;&lt;/br&gt;</p>
<p>&lt;!-- blank line --&gt;
&lt;figure class=&quot;video_container&quot;&gt;
&lt;iframe src=&quot;https://www.youtube.com/embed/uroSxvMFqPU?si=GMNC7f2b7i_cjn6F&quot; title=&quot;Deploying your application to Kubernetes with Help from GitLab Duo&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;/iframe&gt;
&lt;/figure&gt;
&lt;!-- blank line --&gt;</p>
<p>&lt;br&gt;&lt;/br&gt;</p>
<p>&lt;!-- blank line --&gt;
&lt;figure class=&quot;video_container&quot;&gt;
&lt;iframe src=&quot;https://www.youtube.com/embed/9yGDM00RlUA?si=kE5JZD_OEFcxeR7E&quot; title=&quot;Deploying to Kubernetes using Helm with help from GitLab Duo&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;/iframe&gt;
&lt;/figure&gt;
&lt;!-- blank line --&gt;</p>
<h3>Test, test, test</h3>
<p>Writing tests is an important part of building secure software, but it can be a chore and often becomes an afterthought. You can leverage the power of GitLab Duo to <a href="https://docs.gitlab.com/ee/user/application_security/vulnerabilities/index.html#vulnerability-resolution">generate tests for your code</a> by highlighting your code and typing the <code>/tests</code> in the Chat panel of your IDE.</p>
<p>&lt;!-- blank line --&gt;
&lt;figure class=&quot;video_container&quot;&gt;
&lt;iframe src=&quot;https://www.youtube.com/embed/zWhwuixUkYU?si=wI93j90PIiUMyGcV&quot; title=&quot;GitLab Duo Test Generation&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;/iframe&gt;
&lt;/figure&gt;
&lt;!-- blank line --&gt;</p>
<h3>CI/CD pipeline troubleshooting</h3>
<p>Automation is an essential part of the DevOps engineer's workflow, and Continuous Integration/Deployment (<a href="https://about.gitlab.com/topics/ci-cd/">CI/CD</a>) is central to this. You can trigger CI jobs on code push, merge, or on schedule. But, when jobs fail, you spend a lot of time reading through the logs to identify why, and for cryptic errors, it can take more time to figure out. <a href="https://about.gitlab.com/blog/2024/06/06/developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd/">GitLab Duo Root Cause Analysis</a> analyzes your failed job log and errors, and then recommends possible fixes. This reduces the time spent investigating the errors and finding a fix.</p>
<p>&lt;!-- blank line --&gt;
&lt;figure class=&quot;video_container&quot;&gt;
&lt;iframe src=&quot;https://www.youtube.com/embed/Sa0UBpMqXgs?si=IyR-skz9wJMBSicE&quot; title=&quot;GitLab Duo Root Cause Analysis&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;/iframe&gt;
&lt;/figure&gt;
&lt;!-- blank line --&gt;</p>
<h3>Building secure applications</h3>
<p>Part of software development includes discovering vulnerabilities, either in the application or its dependencies. Some vulnerabilities are easy to fix, while others require creating a milestone with planning. GitLab Duo <a href="https://docs.gitlab.com/ee/user/application_security/vulnerabilities/index.html#explaining-a-vulnerability">Vulnerability Explanation</a> and <a href="https://docs.gitlab.com/ee/user/application_security/vulnerabilities/index.html#vulnerability-resolution">Vulnerability Resolution</a> reduce the time spent researching and fixing vulnerabilities. Vulnerability Explanation explains why a vulnerability is happening, its impact, and how to fix it, helping the DevOps engineer to upskill. Vulnerability Resolution takes it further – instead of just suggesting a fix, it creates a merge request with a fix for the vulnerability for you to review.</p>
<p>&lt;!-- blank line --&gt;
&lt;figure class=&quot;video_container&quot;&gt;
&lt;iframe src=&quot;https://www.youtube.com/embed/MMVFvGrmMzw?si=Fxc4SeOkCBKwUk_k&quot; title=&quot;GitLab Duo Vulnerability Explanation&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;/iframe&gt;
&lt;/figure&gt;
&lt;!-- blank line --&gt;</p>
<p>&lt;br&gt;&lt;/br&gt;</p>
<p>&lt;!-- blank line --&gt;
&lt;figure class=&quot;video_container&quot;&gt;
&lt;iframe src=&quot;https://www.youtube.com/embed/VJmsw_C125E?si=XT3Qz5SsX-ISfCyq&quot; title=&quot;GitLab Duo Vulnerability resolution&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;/iframe&gt;
&lt;/figure&gt;
&lt;!-- blank line --&gt;</p>
<h2>More work done with less stress</h2>
<p>With GitLab Duo, DevOps engineers can do more work deploying and maintaining secure applications, while acquiring more skills with the detailed responses from GitLab Duo Chat.</p>
<blockquote>
<p><a href="https://about.gitlab.com/solutions/gitlab-duo-pro/sales/">Sign up for a free 60-day trial of GitLab Duo</a> to get started today!</p>
</blockquote>
]]></content>
        <author>
            <name>Abubakar Siddiq Ango</name>
            <uri>https://about.gitlab.com/blog/authors/abuango</uri>
        </author>
        <published>2024-12-05T00:00:00.000Z</published>
    </entry>
</feed>