CINXE.COM

DevOps Tools - DevOps Automation Tools - GitHub - GitHub Resources

<!DOCTYPE html><html dir="ltr" lang="en-US"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta http-equiv="Content-Security-Policy" content="default-src &#x27;none&#x27;; script-src &#x27;self&#x27; analytics.githubassets.com ghcc.githubassets.com js.monitor.azure.com/scripts/c/ms.analytics-web-4.min.js www.youtube.com; style-src &#x27;self&#x27; &#x27;unsafe-inline&#x27;; connect-src &#x27;self&#x27; browser.events.data.microsoft.com collector.githubapp.com edge.fullstory.com rs.fullstory.com; font-src &#x27;self&#x27; data:; img-src &#x27;self&#x27; data: github.githubassets.com images.ctfassets.net rs.fullstory.com ad.doubleclick.net pixel.quantserve.com sp.analytics.yahoo.com www.facebook.com px.ads.linkedin.com alb.reddit.com px4.ads.linkedin.com adservice.google.com; manifest-src &#x27;self&#x27;; frame-src &#x27;self&#x27; www.youtube.com player.vimeo.com play.vidyard.com octocaptcha.com; media-src &#x27;self&#x27;;"/><link rel="canonical" href="https://resources.github.com/devops/tools/"/><meta name="ha-url" content="https://collector.githubapp.com/resources/collect"/><meta name="ghcc-locale" content="en-US"/><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"/><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"/><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"/><link rel="manifest" href="/site.webmanifest"/><link rel="mask-icon" href="/safari-pinned-tab.svg" color="#ab3f8b"/><meta name="apple-mobile-web-app-title" content="GitHub Resources"/><meta name="application-name" content="GitHub Resources"/><meta name="msapplication-TileColor" content="#ab3f8b"/><meta name="theme-color" content="#151920"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:site" content="@github"/><meta name="twitter:creator" content="@GitHub"/><meta property="og:url" content="https://resources.github.com/devops/tools/"/><meta property="og:type" content="website"/><meta property="og:locale" content="en_US"/><meta property="og:site_name" content="GitHub Resources"/><title>DevOps Tools - DevOps Automation Tools - GitHub - GitHub Resources</title><meta name="robots" content="index,follow"/><meta name="description" content="GitHub DevOps tools play a vital role in DevOps implementation by bridging the gap between development &amp; operations teams, which are key to any business. Learn more."/><meta property="og:title" content="DevOps Tools - DevOps Automation Tools - GitHub"/><meta property="og:description" content="GitHub DevOps tools play a vital role in DevOps implementation by bridging the gap between development &amp; operations teams, which are key to any business. Learn more."/><meta property="og:image" content="https://images.ctfassets.net/wfutmusr1t3h/7Rb5ZoUDOX41PpqAibLo9/344247765e0571d768e511fe686cea98/Productivity-DarkMode-1.webp"/><meta property="og:image:alt" content="A guide to DevOps tools and DevOps automation toolchains"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta name="ha-page-type" content="marketing"/><script type="application/ld+json">{"@context":"https://schema.org","@type":"Article","datePublished":"2022-05-23T12:00+00:00","description":"What are DevOps tools? \nAs an umbrella term, DevOps tools include any number of applications that automate processes within the software development lifecycle (SDLC), improve organizational collaboration, and implement monitoring and alerts. Organizations will often invest in building out a \"DevOps toolchain,\" or collection of tools to use in its DevOps practice, to address each stage of the SDLC.","mainEntityOfPage":{"@type":"WebPage","@id":"https://resources.github.com/devops/tools"},"headline":"A guide to DevOps tools and DevOps automation toolchains","image":["https://images.ctfassets.net/wfutmusr1t3h/7Rb5ZoUDOX41PpqAibLo9/344247765e0571d768e511fe686cea98/Productivity-DarkMode-1.webp"],"dateModified":"2022-05-23T12:00+00:00","author":{"@type":"Person","name":"GitHub"}}</script><meta name="next-head-count" content="33"/><link data-next-font="" rel="preconnect" href="/" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/238ca3e7f90c682f.css" as="style"/><link rel="stylesheet" href="/_next/static/css/238ca3e7f90c682f.css" data-n-g=""/><link rel="preload" href="/_next/static/css/c2a527101433f11d.css" as="style"/><link rel="stylesheet" href="/_next/static/css/c2a527101433f11d.css" data-n-p=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="https://ghcc.githubassets.com/ghcc.min.js" defer="" data-nscript="beforeInteractive"></script><script src="/_next/static/chunks/webpack-38cee4c0e358b1a3.js" defer=""></script><script src="/_next/static/chunks/framework-49c6cecf1f6d5795.js" defer=""></script><script src="/_next/static/chunks/main-43041a92397b9ba5.js" defer=""></script><script src="/_next/static/chunks/pages/_app-4918fa68b0b899e4.js" defer=""></script><script src="/_next/static/chunks/285-f0ec2e7d96e240db.js" defer=""></script><script src="/_next/static/chunks/pages/%5B...path%5D-4685a8a8e88aa8ea.js" defer=""></script><script src="/_next/static/ZokmF09g2SkORXwoG0TZr/_buildManifest.js" defer=""></script><script src="/_next/static/ZokmF09g2SkORXwoG0TZr/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div data-color-mode="light" class="d-flex flex-column"><div id="site-navigation-container" data-color-mode="light" data-light-theme="light" style="z-index:999" class="site-navigation-container position-fixed top-0 width-full color-bg-transparent"><div class="position-relative site-navigation-container--background"><div class="position-absolute nav-dropdown color-bg-white" data-color-mode="light" data-light-theme="light"><div class="container-xl"><form class="d-flex flex-column"><button class="btn-link flex-self-end Link--muted" type="button" aria-label="Close dropdown" data-analytics-click="Search,search pane closed, query: "><svg aria-hidden="true" role="img" class="octicon octicon-x" viewBox="0 0 24 24" width="36" height="36" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path fill-rule="evenodd" d="M5.72 5.72a.75.75 0 011.06 0L12 10.94l5.22-5.22a.75.75 0 111.06 1.06L13.06 12l5.22 5.22a.75.75 0 11-1.06 1.06L12 13.06l-5.22 5.22a.75.75 0 01-1.06-1.06L10.94 12 5.72 6.78a.75.75 0 010-1.06z"></path></svg></button><div class="d-flex flex-column flex-md-row flex-items-center"><input type="text" class="search-input form-control input-lg color-bg-transparent color-fg-muted flex-1 width-full mb-3 mb-md-0 mr-0 mr-md-3" placeholder="What are you looking for?" autofocus="" value=""/><button class="btn-mktg arrow-target-mktg flex-shrink-0 width-full width-md-auto">Search</button></div></form></div></div><ul class="position-absolute nav-dropdown mobile-nav pt-8 pb-4 color-bg-dark color-fg-white d-lg-none" data-color-mode="dark" data-dark-theme="dark"><div class="container-sm px-6 overflow-auto height-full"><div class="d-flex flex-column color-bg-dark height-full flex-justify-between"><div></div><div class="d-flex flex-column d-md-none"></div></div></div></ul><header data-testid="site-navigation-mobile" class="site-navigation d-lg-none"><nav class="container-xl py-1" aria-label="Site navigation"><div class="d-flex flex-items-center flex-justify-between"><a title="Visit GitHub Resources" class="gh-icon Header-link" data-testid="navigation-home-link-mobile" href="/"><svg aria-hidden="true" role="img" class="octicon octicon-mark-github" viewBox="0 0 16 16" width="32" height="32" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path></svg></a><div class="d-none d-md-flex d-lg-none"></div></div></nav></header><header data-testid="site-navigation" class="site-navigation"><nav class="container-xl py-1 d-none d-lg-flex flex-items-center flex-justify-between" aria-label="Site navigation"><ul class="d-flex flex-items-center"><li><a href="https://github.com" target="_blank" rel="noreferrer" class="gh-icon Header-link d-none d-lg-block py-3 position-relative" aria-label="GitHub homepage"><svg aria-hidden="true" role="img" class="nav-back-arrow position-absolute" viewBox="0 0 24 24" width="32" height="32" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path fill-rule="evenodd" d="M15.28 5.22a.75.75 0 00-1.06 0l-6.25 6.25a.75.75 0 000 1.06l6.25 6.25a.75.75 0 101.06-1.06L9.56 12l5.72-5.72a.75.75 0 000-1.06z"></path></svg><svg aria-hidden="true" role="img" class="octicon octicon-mark-github" viewBox="0 0 16 16" width="32" height="32" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path></svg></a></li><li class="d-flex flex-items-center"><span class="ml-3 f1-mktg f2-md-mktg opacity-30">/</span><a data-testid="navigation-home-link" data-analytics-click="Navigation, go to homepage" class="d-none d-lg-inline-block Header-link font-weight-semibold p-3 f2" aria-label="GitHub resources homepage" href="/">Resources</a></li></ul><ul class="d-flex flex-items-center"></ul><div class="site-navigation--background position-absolute top-0 bottom-0 left-0 right-0"></div></nav></header></div></div><main class="flex-1 position-relative"><header class="color-bg-dark color-fg-white text-center pb-10 pt-16 px-3 article-header" data-nav="blur-mode dark-mode"><div class="container-lg"><h1 class="h2-mktg mb-3">A guide to DevOps tools and DevOps automation toolchains</h1><div class="d-flex flex-justify-center"><p>May 23, 2022<!-- --> <!-- -->//<!-- --> <!-- -->14<!-- --> <!-- -->min read</p></div></div><div class="bg-image"><span style="box-sizing:border-box;display:block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:absolute;top:0;left:0;bottom:0;right:0"><img alt="image" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="fill" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover"/><noscript><img alt="image" loading="lazy" decoding="async" data-nimg="fill" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover" sizes="100vw" srcSet="https://images.ctfassets.net/wfutmusr1t3h/7Rb5ZoUDOX41PpqAibLo9/344247765e0571d768e511fe686cea98/Productivity-DarkMode-1.webp?w=544&amp;q=75 544w, https://images.ctfassets.net/wfutmusr1t3h/7Rb5ZoUDOX41PpqAibLo9/344247765e0571d768e511fe686cea98/Productivity-DarkMode-1.webp?w=768&amp;q=75 768w, https://images.ctfassets.net/wfutmusr1t3h/7Rb5ZoUDOX41PpqAibLo9/344247765e0571d768e511fe686cea98/Productivity-DarkMode-1.webp?w=1012&amp;q=75 1012w, https://images.ctfassets.net/wfutmusr1t3h/7Rb5ZoUDOX41PpqAibLo9/344247765e0571d768e511fe686cea98/Productivity-DarkMode-1.webp?w=1280&amp;q=75 1280w" src="https://images.ctfassets.net/wfutmusr1t3h/7Rb5ZoUDOX41PpqAibLo9/344247765e0571d768e511fe686cea98/Productivity-DarkMode-1.webp?w=1280&amp;q=75"/></noscript></span></div></header><section class="section bg-pixel-light bg-contain bg-top" data-nav="light-mode"><div class="container-md" data-nav="light-mode"><p class="f1-mktg font-weight-medium mb-8">What are DevOps tools? As an umbrella term, DevOps tools include any number of applications that automate processes within the software development lifecycle (SDLC), improve organizational collaboration, and implement monitoring and alerts. Organizations will often invest in building out a &quot;DevOps toolchain,&quot; or collection of tools to use in its DevOps practice, to address each stage of the SDLC.</p><span class="border-top-dotted-fancy"></span><div class="markdown-body my-8"><p>A DevOps toolchain is a core tenant of any DevOps practice, helping organizations apply automation to the SDLC and improve their ability to deliver higher-quality software faster. It’s also one of the more tangible aspects of DevOps. </p> <p>Some organizations will invest in an “all-in-one” platform to build their DevOps toolchain. Others will integrate different best-of-breed solutions to create a toolchain. But critically, there is no one-size-fits-all approach to DevOps or building a DevOps toolchain. </p> <p>In this guide, we’ll explore how the best DevOps toolchains address each stage of the SDLC. This includes: </p> <ul> <li>Planning and collaboration tools</li> <li>Build tools</li> <li>Continuous integration tools</li> <li>Continuous deployment tools</li> <li>Operations and continuous monitoring tools</li> <li>Security and DevSecOps tools</li> </ul> <h2>DevOps planning and collaboration tools</h2> <p>In large part, DevOps seeks to bring previously siloed teams together across all stages of the SDLC—and that starts at the planning stage. From chat applications to project management tools, there are a number of tools organizations can implement in their DevOps toolchains to better align and encourage collaboration in an organization during its planning stages. </p> <p>DevOps planning and collaboration tools generally fall into two buckets: </p> <ul> <li><p><strong>Product and roadmap planning:</strong> Having a centralized place to plan, track, and manage work is a foundational capability for any modern development team—and DevOps organizations, too. The best tools help organizations build plans, sprints, and roadmaps while being able to assign and track work from the initial plans to the delivered end product. Need an example? Try looking at <a href="https://github.com/orgs/github/projects/4247">our own public product roadmap plans</a>, which we build using <a href="https://github.com/features/issues">projects on GitHub</a>. </p> </li> <li><p><strong>Team communication:</strong> Maintaining communication throughout the planning process is key to spurring collaboration—and having a preserved record of conversations that led to a given decision can be incredibly helpful. Tools such as <a href="https://resources.github.com/devops/process/planning/discussions">GitHub Discussions</a>, chat applications, and issue trackers that enable team conversations are key here. GitHub provides apps to help your team integrate with <a href="https://slack.github.com/">Slack</a> or <a href="https://teams.github.com/">Microsoft Teams</a>. The best tools will integrate with your project planning, too. That means you can turn a discussion into an executable piece of work, or turn an idea into a discussion if more conversation is needed before work can start.</p> </li> </ul> <h2>DevOps build tools</h2> <p>Once developers commit code changes to a central repository, the build stage begins—and that means using version control to create shared repositories, provisioning development environments, and integrating code, among other things. At this stage, organizations typically leverage the following DevOps tools: </p> <ul> <li><p><strong>Version and source control:</strong> A version control system is designed to automatically record file changes and preserve records of previous file versions, which enables code rollbacks, historical references, and multiple code branches allowing developers to collaboratively code and work in parallel. <br /><br />Platforms such as <a href="https://docs.github.com/en/repositories">GitHub</a> offer version control and source control with features such as <a href="https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests">pull requests</a>, which enable individual developers to get reviews on proposed code changes before they are integrated into the main code branch. The best version and source control platforms integrate with your broader DevOps toolchain, and enable product teams to collaborate across the SDLC. </p> </li> <li><p><strong>Pre-production development environments:</strong> In a DevOps practice, developers need to leverage virtual environments that mirror production as closely as possible. These environments are identical to one another and easy to provision, so that all developers can quickly build and test code changes in consistent environments. <br /><br />Organizations will often leverage containerization platforms and registries such as <a href="https://github.com/features/packages">GitHub Packages</a> to build standardized, pre-production environments for development teams. Ideally, these platforms should integrate into the source control solution so that when a team member commits new code, it triggers the automated provisioning of a pre-production environment. </p> </li> <li><p><strong>Cloud-based integrated developer environments (IDE):</strong> Cloud-based IDEs offer comprehensive development environments that are pre-configured and can be quickly provisioned. These are an increasingly popular tool in DevSecOps (and development circles more broadly, for that matter) since they help standardize developer environments including security configurations across machines. And since they’re centrally managed, cloud-based IDEs also keep code off an individual developer’s computer, which can improve overall development security. <br /><br />Tools such as <a href="https://github.com/features/codespaces">GitHub Codespaces</a> also feature deep integrations into core DevOps platforms. This can improve development speeds by cutting down the amount of time it takes to spin up a developer environment—and reducing the need to wait for running builds and tests locally. </p> </li> <li><p><strong>Infrastructure as code:</strong> The rise in cloud infrastructure, or Infrastructure as a Service (IaaS), has made it simpler to quickly provision resources to meet real-time demand. It’s also introduced a need among organizations to manage complex cloud-based infrastructure at scale—both to provision new resources as they’re needed and to manage resource clusters for pre- and post-production environments. <br /><br />Infrastructure as code (IaC) draws on DevOps best practices to provision and manage cloud infrastructure resources right from a version control system like GitHub via YAML files. These files specify a CI/CD workflow automation that is triggered by an event such as a pull request, code commit, or code merge. Once this event happens, the workflow automates the provisioning and management of cloud infrastructure resources.<br /><br />Since IaC relies on a combination of YAML configuration files that are stored in a shared repository, it’s critical to make sure your version control and CI/CD platform of choice integrate seamlessly. Tools such as <a href="https://github.com/features/actions">GitHub Actions</a> offer this type of integration, which make it easier to manage infrastructure right from your repository with CI/CD.</p> </li> </ul> <h2>DevOps continuous integration tools</h2> <p>Continuous integration (CI) is a mainstay of any DevOps practice and combines the cultural practice of frequent code commits with automation to integrate that code successfully and create builds.</p> <p>To successfully adopt CI, DevOps organizations typically use tools and platforms that do three things: </p> <ul> <li><p><strong>CI:</strong> As a practice, CI often involves committing multiple code changes a day to a shared repository and using automation to integrate these changes, applying a series of automated tests to the merged codebase to ensure its stability, and preparing the codebase for deployment. This level of automation requires deep integration between a version control solution and the larger CI/CD platform, which enables DevOps organizations to build CI/CD pipelines that are triggered by a code commit. <br /><br />When you’re looking for a good CI solution, you’ll want to make sure it easily integrates with your version control solution. This integration is key to making sure you can build an automated pipeline that starts as soon as your development teams commit code changes. <br /><br />A good example of this level of integration comes with the <a href="https://github.com/home">GitHub platform</a>, which features <a href="https://github.com/features/actions">platform-native CI/CD via GitHub Actions</a> and also features a number of <a href="https://github.com/marketplace?type=actions">pre-built integrations for third-party CI/CD services</a>. You’ll also want to make sure that whatever CI/CD platform you choose can automatically apply tests at all stages of the SDLC and includes native support for containerization platforms.</p> </li> <li><p><strong>Automated testing:</strong> Automated testing tools are a core part of any DevOps toolchain. Most platforms will offer automated testing as a capability making it simple to incorporate automated tests into key parts of the pipeline—for instance, after a code change is merged to the main branch. <br /><br />The goal is to have a comprehensive testing strategy with basic unit tests, integration tests, and acceptance tests that are applied at key points in the SDLC. The best testing tools integrate seamlessly with—or are part of—your CI/CD platform and offer built-in code coverage and testing visualization. You’ll also want to look for testing platforms that enable matrix build testing capabilities, or allow you to simultaneously test builds across multiple operating systems and runtime versions. <br /><br />It’s also a good practice to ensure that your automated test solution of choice comes with monitoring and alerts that integrate with your chat application of choice. This means that if something breaks, you can quickly get a notification and work to fix whatever the underlying problem. Tools such as <a href="https://github.com/features/actions">GitHub Actions</a>, for instance, can be used to send alerts to chat applications once a test fails for quicker remediation. </p> </li> <li><p><strong>Packaging:</strong> Once code changes clear all tests in a CI/CD pipeline, they are packaged into independent units of code and prepared for deployment. DevOps organizations will typically leverage a package manager like <a href="https://github.com/features/packages">GitHub Packages</a> to facilitate the delivery of software packages to a shared repository in preparation for a release. <br /><br />Package managers help remove the need for manual installations and help bundle code dependencies within a given project. There are different package managers for different code libraries—but you should ideally look for a solution that integrates with your version control system and your CI/CD platform.</p> </li> </ul> <p><img src="//images.ctfassets.net/wfutmusr1t3h/TdLPy6OEyYXySYKKOdZqo/0a68a08304481769fa853fe55f60d468/Reflect_tools.png" alt="Reflect tools" /></p> <h2>DevOps continuous deployment tools</h2> <p>Continuous deployment builds upon CI/CD by removing the need for human intervention when releasing software. Instead, a continuous deployment practice applies automation to every stage of the SDLC. That means if a code change clears all automated tests, it is deployed to production. </p> <p>DevOps organizations that adopt continuous deployment will typically use tools that fall into two categories: </p> <ul> <li><p><strong>Automated deployment:</strong> Automated deployments are a core part of continuous deployment and having a toolchain that supports automated deployment. These capabilities are typically present in most CI/CD platforms. However, there is no one-size-fits-all approach to building out a continuous deployment pipeline—and it won’t work with every application or environment. <br /><br />If you decide to invest in continuous deployment, look for platforms that readily support the development and management of multiple environments. Importantly, you’ll want a solution that helps protect you from “server drift,” or differences between development, pre-production, and production environments. You’ll also want to consider a platform that supports blue-green deployments, which enables you to slowly migrate traffic from an old version of an application to a new release to ensure its stability in production. <br /><br />At GitHub, we provide deployment dashboards and CI/CD visualization displays as part of our native CI/CD tool <a href="https://github.com/features/actions">GitHub Actions</a>—and we consider these core features for any continuous deployment toolchain. This is meant to give DevOps organizations full visibility into different code branches, automated test results, audit logs, and ongoing deployments as they happen. </p> </li> <li><p><strong>Configuration management:</strong> Configuration management is a process where technology teams manage the different environmental configurations necessary in the core infrastructure and application systems across the life of the product. It’s also something that is frequently paired with CI/CD and versioning control via automation. <br /><br />Just as a CI/CD pipeline applies automation across the SDLC, configuration management tools automatically apply configuration changes in response to trigger-based events. These automated workflows are typically built in a CI/CD tool and stored as text files (like YAML) in a shared Git repository. These can be used to orchestrate and manage container clusters with platforms. They can also be used to manage infrastructure as code (IaC) practices. GitHub <a href="https://docs.github.com/en/repositories">repositories</a> and <a href="https://docs.github.com/en/issues/tracking-your-work-with-issues/about-issues">issues</a> make it easy for IT professionals to work with systems that produce text-based configuration files for both IaC and Configuration as Code (CaC).</p> </li> </ul> <h2>Continuous testing tools</h2> <p>In a DevOps practice, testing doesn’t stop at CI/CD—it’s an ongoing practice that extends throughout the SDLC. And more importantly, DevOps seeks to replace siloed QA teams with a continuous testing practice that leverages automation and holistic testing strategies across the SDLC. </p> <p>Each DevOps organization will design its own continuous testing strategy in accordance with its needs. <a href="https://thenewstack.io/three-ways-ci-cd-adoption-can-benefit-your-devops-team">GitHub Actions</a> provides workflow automation related to testing and supports a rich set of <a href="https://github.com/marketplace?category=testing&amp;type=actions">open source and commercial testing tools</a>. Every continuous testing strategy will leverage a combination of the following test types across the SDLC: </p> <ul> <li><p><strong>Unit testing:</strong> Unit tests are a way of testing small units of code to verify that they are structured correctly with isolated components. They are also the easiest tests to build and the fastest to execute, making them a foundational test to automate in any continuous testing practice. </p> </li> <li><p><strong>Integration testing:</strong> Once you commit code changes to a repository, integration tests ensure build stability and that the codebase continues to work successfully. These tests are used to identify defects that emerge when different application processes and code units are merged together. Integration tests are commonly automated to begin as soon as code changes are committed to a codebase and test the interplay of multiple parts of an application. </p> </li> <li><p><strong>End-to-end and regression testing:</strong> Building on integration testing, end-to-end and regression tests are applied after a codebase is packaged and staged in a pre-production environment. These tests are used to check if any old defects, bugs, or issues are reintroduced by code changes. Regression testing is commonly used before and after deployments to ensure that an application works as expected and does not contain any previously identified issues. </p> </li> <li><p><strong>Production testing:</strong> After an application is deployed, production-level tests monitor application health and stability—and identify any issues before they cause problems for end users. Importantly, these tests help organizations identify any potential problems in a production environment with live user traffic that can’t be fully replicated in a pre-production environment.</p> </li> </ul> <h2>DevOps operations and continuous monitoring tools</h2> <p>A successful DevOps practice touches every stage of the SDLC—and that includes production-level software, too. This means companies need to invest in core operations and continuous monitoring tools to evaluate application and infrastructure performance. If done right, these tools can help continuously identify potential issues across the SDLC. </p> <p>DevOps organizations will be best served by investing in tools that have the following capabilities: </p> <ul> <li><p><strong>Application and infrastructure monitoring:</strong> Application and infrastructure monitoring are core components of a successful continuous monitoring practice. The best tools offer 24/7 automated monitoring of the application and infrastructure health and give DevOps practitioners alerts when something goes wrong—and visibility into what the underlying problem might be. <br /><br />Ideally, you’ll want to monitor application health in pre-production and production environments to track any process issues or areas to improve overall performance. This is also true for your underlying infrastructure where monitoring can lead to insights on how to improve your infrastructure as code (IaC) and configuration management policies. <br /><br />Try looking for a tool that integrates with your version control tool and chat applications so you can immediately send alerts to the right people, and create issues to outline the scope of work for a solution. </p> </li> <li><p><strong>Audit logs:</strong> Auditing is a central part of an effective operations and continuous monitoring practice—and resolving any incidents if and when they happen. They give DevOps practitioners a record of what happened, where it happened, and when it happened and can be critical to build behavioral models that led to an issue and improve application and infrastructure health. <br /><br /> Look for DevOps tools that have live logs and auditing retention periods to equip your teams with the information they need to improve core services and application performance. </p> </li> <li><p><strong>Incident and change tracking:</strong> The primary goal of DevOps is to help organizations ship higher-quality software faster through deep collaboration and automation. And that means tracking incidents and changes as they arise and sharing them with the right people is critical. <br /><br />To build a successful DevOps toolchain, you’ll want to incorporate tools that surface incidents and changes on your core DevOps platform and shared repositories. The more centralized you can keep all reports on incidents and changes, the better. The goal is to create a single source of truth that makes it easier to identify and fix issues. </p> </li> <li><p><strong>Continuous feedback:</strong> A core tenant of DevOps, continuous feedback is a practice that focuses on tracking user behavior and customer feedback about your core products and building actionable data to inform future investments in new features and system updates. This can include NPS survey data about how users are navigating your product. It can also include tracking and modeling user behavior in the product itself. <br /><br /> To build a continuous feedback practice, you’ll want to identify core areas in your product and even outside it in places like social media and reviews where you can identify unexpected user behaviors and customer pain points. Look for tools that enable you to model and analyze user behaviors. You also might consider social listening tools, which you can use to track historical patterns on social media and review sites.</p> </li> </ul> <h2>Security and DevSecOps tools</h2> <p>As DevOps has evolved as practice, it has underscored the need to move past more traditional approaches to security which was often siloed from the core SDLC. To ensure you’re shipping high-quality code, making security a core part of the DevOps practice is important. This practice is commonly called DevSecOps, which seeks to integrate security into every stage of the SDLC and make it a core part of CI/CD pipelines. </p> <p>Companies that invest in DevOps often find the need to invest in also building a DevSecOps practice to ensure software security. This typically involves several tools that help organizations model potential threats and apply automated security testing at key stages of the SDLC. While organizations often try to grab individual tools to create a solution, integrated products like <a href="https://docs.github.com/en/get-started/learning-about-github/about-github-advanced-security">GitHub Advanced Security</a>, can reduce the friction of bringing DevSecOps to your teams. By complementing their DevOps toolchain with DevSecOps tools, companies will often look for the following solutions: </p> <ul> <li><p><strong>Threat modeling:</strong> Here’s a truism: It’s a lot easier to find security vulnerabilities and potential weak points when you’re developing software instead of after you’ve released it. Threat modeling is a practice that DevSecOps practitioners will engage in from the early planning stages of the SDLC to anticipate any issues and develop plans to solve them. <br /><br />DevSecOps organizations today will also invest in threat modeling tools that leverage automation and monitoring to proactively identify threats and mitigation efforts. The best tools survey application and infrastructure threats, and will automatically track changes in the underlying codebase and infrastructure architecture.<br /><br />Look for solutions that can integrate with your core DevOps toolchain to provide updates to relevant people on your team and show risk evaluation scores throughout the SDLC. </p> </li> <li><p><strong>Security dashboards:</strong> Having a single view of your security profile including potential risks, testing coverage, alerts, and more is critical for any DevSecOps practice. Security dashboards are often used to collate and break down all relevant security information and provide a quick way to triage issues and assign tasks. At GitHub, we include <a href="https://docs.github.com/en/code-security/security-overview/about-the-security-overview">a security overview page with GitHub Advanced Security</a> to help showcase risk categories across projects and repositories and alert details, too. Ideally, you should look for tools that integrate with your wider DevSecOps security toolchain and offer a single view of your security profile. </p> </li> <li><p><strong>Static application security testing (SAST):</strong> SAST tools are used to evaluate code before it is run to identify any potential security risks or vulnerabilities. Importantly, these tools do not need a running system to execute but can be performed on a static codebase. <br /><br />The best tools will integrate directly into a shared repository and search out any security vulnerabilities, conduct dependency reviews, scan for any confidential password or secrets, and identify coding errors before they make it into production. These tools will also make it simple to find, triage, and prioritize fixes for any problems in your codebase. <br /><br />You’ll ideally want to look for a solution that integrates with your repository and can be automated to build out issues based on analysis. At GitHub, for instance, we have a SAST tool called <a href="https://github.com/dependabot">Dependabot</a> that analyzes all dependencies for any known security vulnerabilities—and it’s directly integrated into every repository on the platform. </p> </li> <li><p><strong>Dynamic application security testing (DAST):</strong> DAST is used to imitate malicious attacks on an application to find any potential vulnerabilities that might risk its real-world security. DAST tools typically analyze applications in pre-production environments to help DevSecOps practitioners identify any possible security flaws before they make it into production. These flaws typically include underlying issues attackers can exploit to run SQL injection attacks and cross-site scripting (XSS) attacks, among other things.<br /><br />The best DAST tools will integrate with your CI/CD platform of choice so you can automate their deployment within the wider SDLC. </p> </li> <li><p><strong>Interactive application security testing (IAST):</strong> IAST solutions are used to identify and profile risks and vulnerabilities in running applications—most often earlier in the SDLC before a release is made. These solutions leverage software instrumentation to monitor and collect information in pre-production environments through manual and automated tests. The best IAST solutions will include software composition analysis (SCA) tools to identify any open source component vulnerabilities.</p> </li> <li><p><strong>Container image scanning:</strong> Due to their lightweight architectures, containers have made it simpler for DevOps organizations to build, test, deploy, and update applications in a fast and flexible manner. But large-scale container environments also introduce security risks due to the number of surface areas and potential for vulnerabilities. To mitigate against any risks, DevSecOps practitioners will leverage container scanning tools to identify issues in the container registry, scan container clusters at runtime, and prevent vulnerabilities from making it into production. Look for tools that can be integrated into your CI/CD pipeline and automated to run at specific points in your SDLC before a deployment—including the build, integration, and packaging stages.</p> </li> </ul> <p><img src="//images.ctfassets.net/wfutmusr1t3h/6mxmLmOefzKMlIu5LS6Dh1/f46c9d9622c1dbe95890f7216bfef984/GitHub_Features.png" alt="GitHub Features" /></p> <h2>Unify your DevOps tools and processes on GitHub</h2> <p>As the largest and most advanced development platform in the world, GitHub helps millions of developers and companies collaborate, build, and deliver, faster. And with thousands of DevOps integrations, you can build with the tools you know from day one—or discover new ones. </p> <p><em>See all DevOps integrations in <a href="https://github.com/marketplace">GitHub Marketplace</a></em></p> <br /> <blockquote> <p>Our philosophy is to build automation and great DevOps for the company you will be tomorrow.</p> </blockquote> <p>Senior SCM Engineer Todd O'Connor at <a href="https://github.com/customer-stories/adobe">Adobe</a></p> <br /> <p><strong>PLAN</strong></p> <p>Coordinate, manage, and update your work in one place with GitHub issues, discussions, and project boards. Then stay organized and on track by integrating the planning and project management tools you already use. </p> <p><a href="https://github.com/marketplace?category=project-management">Explore project management tools</a> </p> <p><strong>CODE</strong> </p> <p>Collaborate, create, store code, and accelerate development with GitHub and Codespaces. Add in code quality integrations to automate code reviews for style, quality, security, and test‑coverage checks when you need them. </p> <p><a href="https://github.com/marketplace?category=code-quality">Explore code quality tools</a></p> <p><strong>BUILD</strong></p> <p>Ship faster with automated continuous integration powered by <a href="https://github.com/features/actions">GitHub Actions and Packages</a>. Trigger workflows based on GitHub events and publish your packages wherever you like, all with native tooling commands.</p> <p>Explore <a href="https://github.com/marketplace?category=mobile-ci">mobile CI</a>, <a href="https://github.com/marketplace?category=container-ci">container CI</a>, or all <a href="https://github.com/marketplace?category=continuous-integration">CI tools</a></p> <p><strong>TEST</strong> </p> <p>Stop bugs from getting to production by adding testing to your Actions workflows—including testing integrations from our partners and community. </p> <p><a href="https://github.com/marketplace?category=testing">Explore testing tools</a></p> <p><strong>DEPLOY</strong></p> <p>Automate continuous delivery with Actions or trigger deployment integrations from common CI/CD providers and major public clouds with GitHub any event. </p> <p><a href="https://github.com/marketplace?category=deployment">Explore deployment tools</a></p> <p><strong>MANAGE</strong> </p> <p>Connect your code to the management, logging, alerting, and monitoring tools your team uses in production. Easily measure impact, analyze performance, and monitor the impact of your code on your systems and users. </p> <p><a href="https://github.com/marketplace?category=monitoring">Explore analytics, alerting, logging and monitoring tools</a> </p> <p><strong>SECURE</strong> Know your code stays secure at every step with <a href="https://securitylab.github.com/tools/codeql">CodeQL</a>, <a href="https://docs.github.com/en/free-pro-team@latest/github/managing-security-vulnerabilities/configuring-github-dependabot-security-updates">Dependabot</a>, and the security tools you use today.</p> <p>Explore <a href="https://github.com/marketplace?category=security">security</a> and <a href="https://github.com/marketplace?category=dependency-management">dependency management</a> tools</p> <p><a href="https://resources.github.com/devops/tools/compare">Compare DevOps Solutions &gt;</a></p> </div><p class="text-mono gradient-fg-purple-red f4-mktg mb-0 mr-4 float-left">Tags</p><nav class="d-flex flex-items-center flex-wrap"><a class="color-bg-dark color-fg-white text-mono px-3 py-2 rounded-full mr-2 f5 btn-mktg btn-small-mktg font-weight-normal mb-2" data-testid="tag-0" href="/topics/devops/">DevOps</a></nav></div><div class="container-md" data-nav="light-mode"><section id="form" class="section"><form method="POST" action="https://marketing-forms-api.github.com/forms/ContactUs_TemplateForm/submissions" style="max-width:416px" class="mx-auto d-flex flex-column flex-items-stretch" data-nav="light-mode" data-testid="form" aria-label="Wondering how GitHub can help your business?"><h2 class="h4-mktg font-weight-bold mb-2 text-center" data-testid="form-title">Wondering how GitHub can help your business?</h2><p class="f3-mktg color-fg-secondary text-center mb-6" data-testid="form-subtitle">Tell us more about your needs</p><div class="Primer_Brand__Stack-module__Stack___tASKe Primer_Brand__Stack-module__Stack--vertical___CFzE7 Primer_Brand__Stack-module__Stack--gap-normal___JEO7_ Primer_Brand__Stack-module__Stack--padding-condensed___mo7Aq"><section id="FormControl--:Rgpt76:" class="Primer_Brand__FormControl-module__FormControl___ZJtXy Primer_Brand__FormControl-module__FormControl--fullWidth___QyLCS"><label for=":Rgpt76:" class="Primer_Brand__FormControl-module__FormControl-label___meeuB Primer_Brand__FormControl-module__FormControl-label--large___okLn6">Last name<span aria-hidden="true"> <!-- -->*</span></label><span class="Primer_Brand__TextInput-module__TextInput-wrapper___HgxNu Primer_Brand__TextInput-module__TextInput-wrapper--large___lga4f Primer_Brand__TextInput-module__TextInput-wrapper--fullWidth___eclO4"><input type="text" class="Primer_Brand__TextInput-module__TextInput___EtKj3 TextInput Primer_Brand__TextInput-module__TextInput--large___zpUvY Primer_Brand__TextInput-module__TextInput--fullWidth___rbllM" placeholder="Last name" aria-invalid="false" autoComplete="" id=":Rgpt76:" required="" name="lastName"/></span></section><section id="FormControl--:R10pt76:" class="Primer_Brand__FormControl-module__FormControl___ZJtXy Primer_Brand__FormControl-module__FormControl--fullWidth___QyLCS"><label for=":R10pt76:" class="Primer_Brand__FormControl-module__FormControl-label___meeuB Primer_Brand__FormControl-module__FormControl-label--large___okLn6">First name<span aria-hidden="true"> <!-- -->*</span></label><span class="Primer_Brand__TextInput-module__TextInput-wrapper___HgxNu Primer_Brand__TextInput-module__TextInput-wrapper--large___lga4f Primer_Brand__TextInput-module__TextInput-wrapper--fullWidth___eclO4"><input type="text" class="Primer_Brand__TextInput-module__TextInput___EtKj3 TextInput Primer_Brand__TextInput-module__TextInput--large___zpUvY Primer_Brand__TextInput-module__TextInput--fullWidth___rbllM" placeholder="First name" aria-invalid="false" autoComplete="" id=":R10pt76:" required="" name="firstName"/></span></section><section id="FormControl--:R1gpt76:" class="Primer_Brand__FormControl-module__FormControl___ZJtXy Primer_Brand__FormControl-module__FormControl--fullWidth___QyLCS"><label for=":R1gpt76:" class="Primer_Brand__FormControl-module__FormControl-label___meeuB Primer_Brand__FormControl-module__FormControl-label--large___okLn6">Work Email<span aria-hidden="true"> <!-- -->*</span></label><span class="Primer_Brand__TextInput-module__TextInput-wrapper___HgxNu Primer_Brand__TextInput-module__TextInput-wrapper--large___lga4f Primer_Brand__TextInput-module__TextInput-wrapper--fullWidth___eclO4"><input type="email" class="Primer_Brand__TextInput-module__TextInput___EtKj3 TextInput Primer_Brand__TextInput-module__TextInput--large___zpUvY Primer_Brand__TextInput-module__TextInput--fullWidth___rbllM" placeholder="you@company.com" aria-invalid="false" autoComplete="email" id=":R1gpt76:" required="" name="emailAddress"/></span></section><section id="FormControl--:R20pt76:" class="Primer_Brand__FormControl-module__FormControl___ZJtXy"><label for=":R20pt76:" class="Primer_Brand__FormControl-module__FormControl-label___meeuB Primer_Brand__FormControl-module__FormControl-label--medium___inrKd">Phone</label><div class="Primer_Brand__Stack-module__Stack___tASKe Primer_Brand__Stack-module__Stack--horizontal___YJFas Primer_Brand__Stack-module__Stack--gap-condensed___Xe9jx Primer_Brand__Stack-module__Stack--padding-none___RCMh9" style="width:100%"><span class="Primer_Brand__Select-module__Select-wrapper___iV0Tg Primer_Brand__Select-module__Select-wrapper--medium___xjmMc"><select aria-invalid="false" class="Primer_Brand__Select-module__Select___Jqn1f Primer_Brand__Select-module__Select--medium___kckBr Select" name="phoneCountry" required=""><option value="AC">🇦🇨<!-- -->  <!-- -->AC</option><option value="AD">🇦🇩<!-- -->  <!-- -->AD</option><option value="AE">🇦🇪<!-- -->  <!-- -->AE</option><option value="AF">🇦🇫<!-- -->  <!-- -->AF</option><option value="AG">🇦🇬<!-- -->  <!-- -->AG</option><option value="AI">🇦🇮<!-- -->  <!-- -->AI</option><option value="AL">🇦🇱<!-- -->  <!-- -->AL</option><option value="AM">🇦🇲<!-- -->  <!-- -->AM</option><option value="AO">🇦🇴<!-- -->  <!-- -->AO</option><option value="AR">🇦🇷<!-- -->  <!-- -->AR</option><option value="AS">🇦🇸<!-- -->  <!-- -->AS</option><option value="AT">🇦🇹<!-- -->  <!-- -->AT</option><option value="AU">🇦🇺<!-- -->  <!-- -->AU</option><option value="AW">🇦🇼<!-- -->  <!-- -->AW</option><option value="AX">🇦🇽<!-- -->  <!-- -->AX</option><option value="AZ">🇦🇿<!-- -->  <!-- -->AZ</option><option value="BA">🇧🇦<!-- -->  <!-- -->BA</option><option value="BB">🇧🇧<!-- -->  <!-- -->BB</option><option value="BD">🇧🇩<!-- -->  <!-- -->BD</option><option value="BE">🇧🇪<!-- -->  <!-- -->BE</option><option value="BF">🇧🇫<!-- -->  <!-- -->BF</option><option value="BG">🇧🇬<!-- -->  <!-- -->BG</option><option value="BH">🇧🇭<!-- -->  <!-- -->BH</option><option value="BI">🇧🇮<!-- -->  <!-- -->BI</option><option value="BJ">🇧🇯<!-- -->  <!-- -->BJ</option><option value="BL">🇧🇱<!-- -->  <!-- -->BL</option><option value="BM">🇧🇲<!-- -->  <!-- -->BM</option><option value="BN">🇧🇳<!-- -->  <!-- -->BN</option><option value="BO">🇧🇴<!-- -->  <!-- -->BO</option><option value="BQ">🇧🇶<!-- -->  <!-- -->BQ</option><option value="BR">🇧🇷<!-- -->  <!-- -->BR</option><option value="BS">🇧🇸<!-- -->  <!-- -->BS</option><option value="BT">🇧🇹<!-- -->  <!-- -->BT</option><option value="BW">🇧🇼<!-- -->  <!-- -->BW</option><option value="BY">🇧🇾<!-- -->  <!-- -->BY</option><option value="BZ">🇧🇿<!-- -->  <!-- -->BZ</option><option value="CA">🇨🇦<!-- -->  <!-- -->CA</option><option value="CC">🇨🇨<!-- -->  <!-- -->CC</option><option value="CD">🇨🇩<!-- -->  <!-- -->CD</option><option value="CF">🇨🇫<!-- -->  <!-- -->CF</option><option value="CG">🇨🇬<!-- -->  <!-- -->CG</option><option value="CH">🇨🇭<!-- -->  <!-- -->CH</option><option value="CI">🇨🇮<!-- -->  <!-- -->CI</option><option value="CK">🇨🇰<!-- -->  <!-- -->CK</option><option value="CL">🇨🇱<!-- -->  <!-- -->CL</option><option value="CM">🇨🇲<!-- -->  <!-- -->CM</option><option value="CN">🇨🇳<!-- -->  <!-- -->CN</option><option value="CO">🇨🇴<!-- -->  <!-- -->CO</option><option value="CR">🇨🇷<!-- -->  <!-- -->CR</option><option value="CU">🇨🇺<!-- -->  <!-- -->CU</option><option value="CV">🇨🇻<!-- -->  <!-- -->CV</option><option value="CW">🇨🇼<!-- -->  <!-- -->CW</option><option value="CX">🇨🇽<!-- -->  <!-- -->CX</option><option value="CY">🇨🇾<!-- -->  <!-- -->CY</option><option value="CZ">🇨🇿<!-- -->  <!-- -->CZ</option><option value="DE">🇩🇪<!-- -->  <!-- -->DE</option><option value="DJ">🇩🇯<!-- -->  <!-- -->DJ</option><option value="DK">🇩🇰<!-- -->  <!-- -->DK</option><option value="DM">🇩🇲<!-- -->  <!-- -->DM</option><option value="DO">🇩🇴<!-- -->  <!-- -->DO</option><option value="DZ">🇩🇿<!-- -->  <!-- -->DZ</option><option value="EC">🇪🇨<!-- -->  <!-- -->EC</option><option value="EE">🇪🇪<!-- -->  <!-- -->EE</option><option value="EG">🇪🇬<!-- -->  <!-- -->EG</option><option value="EH">🇪🇭<!-- -->  <!-- -->EH</option><option value="ER">🇪🇷<!-- -->  <!-- -->ER</option><option value="ES">🇪🇸<!-- -->  <!-- -->ES</option><option value="ET">🇪🇹<!-- -->  <!-- -->ET</option><option value="FI">🇫🇮<!-- -->  <!-- -->FI</option><option value="FJ">🇫🇯<!-- -->  <!-- -->FJ</option><option value="FK">🇫🇰<!-- -->  <!-- -->FK</option><option value="FM">🇫🇲<!-- -->  <!-- -->FM</option><option value="FO">🇫🇴<!-- -->  <!-- -->FO</option><option value="FR">🇫🇷<!-- -->  <!-- -->FR</option><option value="GA">🇬🇦<!-- -->  <!-- -->GA</option><option value="GB">🇬🇧<!-- -->  <!-- -->GB</option><option value="GD">🇬🇩<!-- -->  <!-- -->GD</option><option value="GE">🇬🇪<!-- -->  <!-- -->GE</option><option value="GF">🇬🇫<!-- -->  <!-- -->GF</option><option value="GG">🇬🇬<!-- -->  <!-- -->GG</option><option value="GH">🇬🇭<!-- -->  <!-- -->GH</option><option value="GI">🇬🇮<!-- -->  <!-- -->GI</option><option value="GL">🇬🇱<!-- -->  <!-- -->GL</option><option value="GM">🇬🇲<!-- -->  <!-- -->GM</option><option value="GN">🇬🇳<!-- -->  <!-- -->GN</option><option value="GP">🇬🇵<!-- -->  <!-- -->GP</option><option value="GQ">🇬🇶<!-- -->  <!-- -->GQ</option><option value="GR">🇬🇷<!-- -->  <!-- -->GR</option><option value="GT">🇬🇹<!-- -->  <!-- -->GT</option><option value="GU">🇬🇺<!-- -->  <!-- -->GU</option><option value="GW">🇬🇼<!-- -->  <!-- -->GW</option><option value="GY">🇬🇾<!-- -->  <!-- -->GY</option><option value="HK">🇭🇰<!-- -->  <!-- -->HK</option><option value="HN">🇭🇳<!-- -->  <!-- -->HN</option><option value="HR">🇭🇷<!-- -->  <!-- -->HR</option><option value="HT">🇭🇹<!-- -->  <!-- -->HT</option><option value="HU">🇭🇺<!-- -->  <!-- -->HU</option><option value="ID">🇮🇩<!-- -->  <!-- -->ID</option><option value="IE">🇮🇪<!-- -->  <!-- -->IE</option><option value="IL">🇮🇱<!-- -->  <!-- -->IL</option><option value="IM">🇮🇲<!-- -->  <!-- -->IM</option><option value="IN">🇮🇳<!-- -->  <!-- -->IN</option><option value="IO">🇮🇴<!-- -->  <!-- -->IO</option><option value="IQ">🇮🇶<!-- -->  <!-- -->IQ</option><option value="IR">🇮🇷<!-- -->  <!-- -->IR</option><option value="IS">🇮🇸<!-- -->  <!-- -->IS</option><option value="IT">🇮🇹<!-- -->  <!-- -->IT</option><option value="JE">🇯🇪<!-- -->  <!-- -->JE</option><option value="JM">🇯🇲<!-- -->  <!-- -->JM</option><option value="JO">🇯🇴<!-- -->  <!-- -->JO</option><option value="JP">🇯🇵<!-- -->  <!-- -->JP</option><option value="KE">🇰🇪<!-- -->  <!-- -->KE</option><option value="KG">🇰🇬<!-- -->  <!-- -->KG</option><option value="KH">🇰🇭<!-- -->  <!-- -->KH</option><option value="KI">🇰🇮<!-- -->  <!-- -->KI</option><option value="KM">🇰🇲<!-- -->  <!-- -->KM</option><option value="KN">🇰🇳<!-- -->  <!-- -->KN</option><option value="KP">🇰🇵<!-- -->  <!-- -->KP</option><option value="KR">🇰🇷<!-- -->  <!-- -->KR</option><option value="KW">🇰🇼<!-- -->  <!-- -->KW</option><option value="KY">🇰🇾<!-- -->  <!-- -->KY</option><option value="KZ">🇰🇿<!-- -->  <!-- -->KZ</option><option value="LA">🇱🇦<!-- -->  <!-- -->LA</option><option value="LB">🇱🇧<!-- -->  <!-- -->LB</option><option value="LC">🇱🇨<!-- -->  <!-- -->LC</option><option value="LI">🇱🇮<!-- -->  <!-- -->LI</option><option value="LK">🇱🇰<!-- -->  <!-- -->LK</option><option value="LR">🇱🇷<!-- -->  <!-- -->LR</option><option value="LS">🇱🇸<!-- -->  <!-- -->LS</option><option value="LT">🇱🇹<!-- -->  <!-- -->LT</option><option value="LU">🇱🇺<!-- -->  <!-- -->LU</option><option value="LV">🇱🇻<!-- -->  <!-- -->LV</option><option value="LY">🇱🇾<!-- -->  <!-- -->LY</option><option value="MA">🇲🇦<!-- -->  <!-- -->MA</option><option value="MC">🇲🇨<!-- -->  <!-- -->MC</option><option value="MD">🇲🇩<!-- -->  <!-- -->MD</option><option value="ME">🇲🇪<!-- -->  <!-- -->ME</option><option value="MF">🇲🇫<!-- -->  <!-- -->MF</option><option value="MG">🇲🇬<!-- -->  <!-- -->MG</option><option value="MH">🇲🇭<!-- -->  <!-- -->MH</option><option value="MK">🇲🇰<!-- -->  <!-- -->MK</option><option value="ML">🇲🇱<!-- -->  <!-- -->ML</option><option value="MM">🇲🇲<!-- -->  <!-- -->MM</option><option value="MN">🇲🇳<!-- -->  <!-- -->MN</option><option value="MO">🇲🇴<!-- -->  <!-- -->MO</option><option value="MP">🇲🇵<!-- -->  <!-- -->MP</option><option value="MQ">🇲🇶<!-- -->  <!-- -->MQ</option><option value="MR">🇲🇷<!-- -->  <!-- -->MR</option><option value="MS">🇲🇸<!-- -->  <!-- -->MS</option><option value="MT">🇲🇹<!-- -->  <!-- -->MT</option><option value="MU">🇲🇺<!-- -->  <!-- -->MU</option><option value="MV">🇲🇻<!-- -->  <!-- -->MV</option><option value="MW">🇲🇼<!-- -->  <!-- -->MW</option><option value="MX">🇲🇽<!-- -->  <!-- -->MX</option><option value="MY">🇲🇾<!-- -->  <!-- -->MY</option><option value="MZ">🇲🇿<!-- -->  <!-- -->MZ</option><option value="NA">🇳🇦<!-- -->  <!-- -->NA</option><option value="NC">🇳🇨<!-- -->  <!-- -->NC</option><option value="NE">🇳🇪<!-- -->  <!-- -->NE</option><option value="NF">🇳🇫<!-- -->  <!-- -->NF</option><option value="NG">🇳🇬<!-- -->  <!-- -->NG</option><option value="NI">🇳🇮<!-- -->  <!-- -->NI</option><option value="NL">🇳🇱<!-- -->  <!-- -->NL</option><option value="NO">🇳🇴<!-- -->  <!-- -->NO</option><option value="NP">🇳🇵<!-- -->  <!-- -->NP</option><option value="NR">🇳🇷<!-- -->  <!-- -->NR</option><option value="NU">🇳🇺<!-- -->  <!-- -->NU</option><option value="NZ">🇳🇿<!-- -->  <!-- -->NZ</option><option value="OM">🇴🇲<!-- -->  <!-- -->OM</option><option value="PA">🇵🇦<!-- -->  <!-- -->PA</option><option value="PE">🇵🇪<!-- -->  <!-- -->PE</option><option value="PF">🇵🇫<!-- -->  <!-- -->PF</option><option value="PG">🇵🇬<!-- -->  <!-- -->PG</option><option value="PH">🇵🇭<!-- -->  <!-- -->PH</option><option value="PK">🇵🇰<!-- -->  <!-- -->PK</option><option value="PL">🇵🇱<!-- -->  <!-- -->PL</option><option value="PM">🇵🇲<!-- -->  <!-- -->PM</option><option value="PR">🇵🇷<!-- -->  <!-- -->PR</option><option value="PS">🇵🇸<!-- -->  <!-- -->PS</option><option value="PT">🇵🇹<!-- -->  <!-- -->PT</option><option value="PW">🇵🇼<!-- -->  <!-- -->PW</option><option value="PY">🇵🇾<!-- -->  <!-- -->PY</option><option value="QA">🇶🇦<!-- -->  <!-- -->QA</option><option value="RE">🇷🇪<!-- -->  <!-- -->RE</option><option value="RO">🇷🇴<!-- -->  <!-- -->RO</option><option value="RS">🇷🇸<!-- -->  <!-- -->RS</option><option value="RU">🇷🇺<!-- -->  <!-- -->RU</option><option value="RW">🇷🇼<!-- -->  <!-- -->RW</option><option value="SA">🇸🇦<!-- -->  <!-- -->SA</option><option value="SB">🇸🇧<!-- -->  <!-- -->SB</option><option value="SC">🇸🇨<!-- -->  <!-- -->SC</option><option value="SD">🇸🇩<!-- -->  <!-- -->SD</option><option value="SE">🇸🇪<!-- -->  <!-- -->SE</option><option value="SG">🇸🇬<!-- -->  <!-- -->SG</option><option value="SH">🇸🇭<!-- -->  <!-- -->SH</option><option value="SI">🇸🇮<!-- -->  <!-- -->SI</option><option value="SJ">🇸🇯<!-- -->  <!-- -->SJ</option><option value="SK">🇸🇰<!-- -->  <!-- -->SK</option><option value="SL">🇸🇱<!-- -->  <!-- -->SL</option><option value="SM">🇸🇲<!-- -->  <!-- -->SM</option><option value="SN">🇸🇳<!-- -->  <!-- -->SN</option><option value="SO">🇸🇴<!-- -->  <!-- -->SO</option><option value="SR">🇸🇷<!-- -->  <!-- -->SR</option><option value="SS">🇸🇸<!-- -->  <!-- -->SS</option><option value="ST">🇸🇹<!-- -->  <!-- -->ST</option><option value="SV">🇸🇻<!-- -->  <!-- -->SV</option><option value="SX">🇸🇽<!-- -->  <!-- -->SX</option><option value="SY">🇸🇾<!-- -->  <!-- -->SY</option><option value="SZ">🇸🇿<!-- -->  <!-- -->SZ</option><option value="TA">🇹🇦<!-- -->  <!-- -->TA</option><option value="TC">🇹🇨<!-- -->  <!-- -->TC</option><option value="TD">🇹🇩<!-- -->  <!-- -->TD</option><option value="TG">🇹🇬<!-- -->  <!-- -->TG</option><option value="TH">🇹🇭<!-- -->  <!-- -->TH</option><option value="TJ">🇹🇯<!-- -->  <!-- -->TJ</option><option value="TK">🇹🇰<!-- -->  <!-- -->TK</option><option value="TL">🇹🇱<!-- -->  <!-- -->TL</option><option value="TM">🇹🇲<!-- -->  <!-- -->TM</option><option value="TN">🇹🇳<!-- -->  <!-- -->TN</option><option value="TO">🇹🇴<!-- -->  <!-- -->TO</option><option value="TR">🇹🇷<!-- -->  <!-- -->TR</option><option value="TT">🇹🇹<!-- -->  <!-- -->TT</option><option value="TV">🇹🇻<!-- -->  <!-- -->TV</option><option value="TW">🇹🇼<!-- -->  <!-- -->TW</option><option value="TZ">🇹🇿<!-- -->  <!-- -->TZ</option><option value="UA">🇺🇦<!-- -->  <!-- -->UA</option><option value="UG">🇺🇬<!-- -->  <!-- -->UG</option><option value="US" selected="">🇺🇸<!-- -->  <!-- -->US</option><option value="UY">🇺🇾<!-- -->  <!-- -->UY</option><option value="UZ">🇺🇿<!-- -->  <!-- -->UZ</option><option value="VA">🇻🇦<!-- -->  <!-- -->VA</option><option value="VC">🇻🇨<!-- -->  <!-- -->VC</option><option value="VE">🇻🇪<!-- -->  <!-- -->VE</option><option value="VG">🇻🇬<!-- -->  <!-- -->VG</option><option value="VI">🇻🇮<!-- -->  <!-- -->VI</option><option value="VN">🇻🇳<!-- -->  <!-- -->VN</option><option value="VU">🇻🇺<!-- -->  <!-- -->VU</option><option value="WF">🇼🇫<!-- -->  <!-- -->WF</option><option value="WS">🇼🇸<!-- -->  <!-- -->WS</option><option value="XK">🇽🇰<!-- -->  <!-- -->XK</option><option value="YE">🇾🇪<!-- -->  <!-- -->YE</option><option value="YT">🇾🇹<!-- -->  <!-- -->YT</option><option value="ZA">🇿🇦<!-- -->  <!-- -->ZA</option><option value="ZM">🇿🇲<!-- -->  <!-- -->ZM</option><option value="ZW">🇿🇼<!-- -->  <!-- -->ZW</option></select></span><input type="tel" class="flex-1 form-control" style="border-color:var(--brand-control-color-border-default)" id="gated-phone-1" placeholder="12 3456 7890" name="phone1"/></div></section><section id="FormControl--:R2gpt76:" class="Primer_Brand__FormControl-module__FormControl___ZJtXy Primer_Brand__FormControl-module__FormControl--fullWidth___QyLCS"><label for=":R2gpt76:" class="Primer_Brand__FormControl-module__FormControl-label___meeuB Primer_Brand__FormControl-module__FormControl-label--large___okLn6">Company<span aria-hidden="true"> <!-- -->*</span></label><span class="Primer_Brand__TextInput-module__TextInput-wrapper___HgxNu Primer_Brand__TextInput-module__TextInput-wrapper--large___lga4f Primer_Brand__TextInput-module__TextInput-wrapper--fullWidth___eclO4"><input type="text" class="Primer_Brand__TextInput-module__TextInput___EtKj3 TextInput Primer_Brand__TextInput-module__TextInput--large___zpUvY Primer_Brand__TextInput-module__TextInput--fullWidth___rbllM" placeholder="Acme, Inc" aria-invalid="false" autoComplete="" id=":R2gpt76:" required="" name="company"/></span></section><section id="FormControl--:R30pt76:" class="Primer_Brand__FormControl-module__FormControl___ZJtXy"><label for=":R30pt76:" class="Primer_Brand__FormControl-module__FormControl-label___meeuB Primer_Brand__FormControl-module__FormControl-label--large___okLn6">What can we help you with?</label><span class="Primer_Brand__Textarea-module__Textarea-wrapper___A4lsG" data-testid="Textarea-outer-container"><textarea class="Primer_Brand__Textarea-module__Textarea___xmKD5 Textarea Primer_Brand__Textarea-module__Textarea--large___wCPXA Primer_Brand__Textarea-module__Textarea-resize--both___bDJp5 form-control input-block py-3 px-3 color-bg-white input-lg" placeholder="Tell us how we can help. For support questions, head to github.com/contact " aria-invalid="false" rows="7" cols="30" id=":R30pt76:" name="contactComments"></textarea></span></section><input type="hidden" class="test" name="elqCookieWrite" value="0"/><section id="FormControl--country" class="Primer_Brand__FormControl-module__FormControl___ZJtXy"><label for="country" class="Primer_Brand__FormControl-module__FormControl-label___meeuB Primer_Brand__FormControl-module__FormControl-label--large___okLn6">Country<span aria-hidden="true"> <!-- -->*</span></label><span class="Primer_Brand__Select-module__Select-wrapper___iV0Tg Primer_Brand__Select-module__Select-wrapper--large___Q4_2q"><select aria-invalid="false" class="Primer_Brand__Select-module__Select___Jqn1f Primer_Brand__Select-module__Select--large___A7u6F Select" name="country" required="" data-testid="countrySelect" id="country"><option value="" disabled="">Select your country</option><option value="AL">Albania</option><option value="AX">Åland Islands</option><option value="DZ">Algeria</option><option value="AS">American Samoa</option><option value="AD">Andorra</option><option value="AO">Angola</option><option value="AI">Anguilla</option><option value="AQ">Antarctica</option><option value="AG">Antigua and Barbuda</option><option value="AR">Argentina</option><option value="AM">Armenia</option><option value="AW">Aruba</option><option value="AU">Australia</option><option value="AT">Austria</option><option value="AZ">Azerbaijan</option><option value="BS">Bahamas (the)</option><option value="BH">Bahrain</option><option value="BD">Bangladesh</option><option value="BB">Barbados</option><option value="BE">Belgium</option><option value="BZ">Belize</option><option value="BJ">Benin</option><option value="BM">Bermuda</option><option value="BT">Bhutan</option><option value="BO">Bolivia (Plurinational State of)</option><option value="BQ">Bonaire, Sint Eustatius and Saba</option><option value="BA">Bosnia and Herzegovina</option><option value="BW">Botswana</option><option value="BV">Bouvet Island</option><option value="BR">Brazil</option><option value="IO">British Indian Ocean Territory (the)</option><option value="BN">Brunei Darussalam</option><option value="BG">Bulgaria</option><option value="BF">Burkina Faso</option><option value="BI">Burundi</option><option value="CV">Cabo Verde</option><option value="KH">Cambodia</option><option value="CM">Cameroon</option><option value="CA">Canada</option><option value="KY">Cayman Islands (the)</option><option value="CF">Central African Republic (the)</option><option value="TD">Chad</option><option value="CL">Chile</option><option value="CN">China</option><option value="CX">Christmas Island</option><option value="CC">Cocos (Keeling) Islands (the)</option><option value="CO">Colombia</option><option value="KM">Comoros (the)</option><option value="CD">Congo (the Democratic Republic of the)</option><option value="CG">Congo (the)</option><option value="CK">Cook Islands (the)</option><option value="CR">Costa Rica</option><option value="HR">Croatia</option><option value="CW">Curaçao</option><option value="CY">Cyprus</option><option value="CZ">Czechia</option><option value="CI">Côte d&#x27;Ivoire</option><option value="DK">Denmark</option><option value="DJ">Djibouti</option><option value="DM">Dominica</option><option value="DO">Dominican Republic (the)</option><option value="EC">Ecuador</option><option value="EG">Egypt</option><option value="SV">El Salvador</option><option value="GQ">Equatorial Guinea</option><option value="ER">Eritrea</option><option value="EE">Estonia</option><option value="SZ">Eswatini</option><option value="ET">Ethiopia</option><option value="FK">Falkland Islands (the) [Malvinas]</option><option value="FO">Faroe Islands (the)</option><option value="FJ">Fiji</option><option value="FI">Finland</option><option value="FR">France</option><option value="GF">French Guiana</option><option value="PF">French Polynesia</option><option value="TF">French Southern Territories (the)</option><option value="GA">Gabon</option><option value="GM">Gambia (the)</option><option value="GE">Georgia</option><option value="DE">Germany</option><option value="GH">Ghana</option><option value="GI">Gibraltar</option><option value="GR">Greece</option><option value="GL">Greenland</option><option value="GD">Grenada</option><option value="GP">Guadeloupe</option><option value="GU">Guam</option><option value="GT">Guatemala</option><option value="GG">Guernsey</option><option value="GN">Guinea</option><option value="GW">Guinea-Bissau</option><option value="GY">Guyana</option><option value="HT">Haiti</option><option value="HM">Heard Island and McDonald Islands</option><option value="VA">Holy See (the)</option><option value="HN">Honduras</option><option value="HK">Hong Kong</option><option value="HU">Hungary</option><option value="IS">Iceland</option><option value="IN">India</option><option value="ID">Indonesia</option><option value="IE">Ireland</option><option value="IM">Isle of Man</option><option value="IL">Israel</option><option value="IT">Italy</option><option value="JM">Jamaica</option><option value="JP">Japan</option><option value="JE">Jersey</option><option value="JO">Jordan</option><option value="KZ">Kazakhstan</option><option value="KE">Kenya</option><option value="KI">Kiribati</option><option value="KR">Korea (the Republic of)</option><option value="KW">Kuwait</option><option value="KG">Kyrgyzstan</option><option value="LA">Lao People&#x27;s Democratic Republic (the)</option><option value="LV">Latvia</option><option value="LB">Lebanon</option><option value="LS">Lesotho</option><option value="LR">Liberia</option><option value="LI">Liechtenstein</option><option value="LT">Lithuania</option><option value="LU">Luxembourg</option><option value="MO">Macao</option><option value="MG">Madagascar</option><option value="MW">Malawi</option><option value="MY">Malaysia</option><option value="MV">Maldives</option><option value="ML">Mali</option><option value="MT">Malta</option><option value="MH">Marshall Islands (the)</option><option value="MQ">Martinique</option><option value="MR">Mauritania</option><option value="MU">Mauritius</option><option value="YT">Mayotte</option><option value="MX">Mexico</option><option value="FM">Micronesia (Federated States of)</option><option value="MD">Moldova (the Republic of)</option><option value="MC">Monaco</option><option value="MN">Mongolia</option><option value="ME">Montenegro</option><option value="MS">Montserrat</option><option value="MA">Morocco</option><option value="MZ">Mozambique</option><option value="NA">Namibia</option><option value="NR">Nauru</option><option value="NP">Nepal</option><option value="NL">Netherlands (the)</option><option value="NC">New Caledonia</option><option value="NZ">New Zealand</option><option value="NI">Nicaragua</option><option value="NE">Niger (the)</option><option value="NG">Nigeria</option><option value="NU">Niue</option><option value="NF">Norfolk Island</option><option value="MP">Northern Mariana Islands (the)</option><option value="NO">Norway</option><option value="OM">Oman</option><option value="PK">Pakistan</option><option value="PW">Palau</option><option value="PS">Palestine, State of</option><option value="PA">Panama</option><option value="PG">Papua New Guinea</option><option value="PY">Paraguay</option><option value="PE">Peru</option><option value="PH">Philippines (the)</option><option value="PN">Pitcairn</option><option value="PL">Poland</option><option value="PT">Portugal</option><option value="PR">Puerto Rico</option><option value="QA">Qatar</option><option value="MK">Republic of North Macedonia</option><option value="RO">Romania</option><option value="RW">Rwanda</option><option value="RE">Réunion</option><option value="BL">Saint Barthélemy</option><option value="SH">Saint Helena, Ascension and Tristan da Cunha</option><option value="KN">Saint Kitts and Nevis</option><option value="LC">Saint Lucia</option><option value="MF">Saint Martin (French part)</option><option value="PM">Saint Pierre and Miquelon</option><option value="VC">Saint Vincent and the Grenadines</option><option value="WS">Samoa</option><option value="SM">San Marino</option><option value="ST">Sao Tome and Principe</option><option value="SA">Saudi Arabia</option><option value="SN">Senegal</option><option value="RS">Serbia</option><option value="SC">Seychelles</option><option value="SL">Sierra Leone</option><option value="SG">Singapore</option><option value="SX">Sint Maarten (Dutch part)</option><option value="SK">Slovakia</option><option value="SI">Slovenia</option><option value="SB">Solomon Islands</option><option value="SO">Somalia</option><option value="ZA">South Africa</option><option value="GS">South Georgia and the South Sandwich Islands</option><option value="SS">South Sudan</option><option value="ES">Spain</option><option value="LK">Sri Lanka</option><option value="SD">Sudan (the)</option><option value="SR">Surilabel</option><option value="SJ">Svalbard and Jan Mayen</option><option value="SE">Sweden</option><option value="CH">Switzerland</option><option value="SY">Syrian Arab Republic</option><option value="TW">Taiwan</option><option value="TJ">Tajikistan</option><option value="TZ">Tanzania, United Republic of</option><option value="TH">Thailand</option><option value="TL">Timor-Leste</option><option value="TG">Togo</option><option value="TK">Tokelau</option><option value="TO">Tonga</option><option value="TT">Trinidad and Tobago</option><option value="TN">Tunisia</option><option value="TR">Turkey</option><option value="TM">Turkmenistan</option><option value="TC">Turks and Caicos Islands (the)</option><option value="TV">Tuvalu</option><option value="UG">Uganda</option><option value="UA">Ukraine</option><option value="AE">United Arab Emirates (the)</option><option value="GB">United Kingdom of Great Britain and Northern Ireland (the)</option><option value="UM">United States Minor Outlying Islands (the)</option><option value="US" selected="">United States of America (the)</option><option value="UY">Uruguay</option><option value="UZ">Uzbekistan</option><option value="VU">Vanuatu</option><option value="VE">Venezuela (Bolivarian Republic of)</option><option value="VN">Viet Nam</option><option value="VG">Virgin Islands (British)</option><option value="VI">Virgin Islands (U.S.)</option><option value="WF">Wallis and Futuna</option><option value="YE">Yemen</option><option value="ZM">Zambia</option><option value="ZW">Zimbabwe</option></select></span></section><section id="FormControl--:R1pt76:" class="Primer_Brand__FormControl-module__FormControl___ZJtXy Primer_Brand__FormControl-module__FormControl--checkbox___R2ng7" data-testid="marketingConsentContainer"><label for=":R1pt76:" class="Primer_Brand__FormControl-module__FormControl-label___meeuB Primer_Brand__FormControl-module__FormControl-label--large___okLn6 Primer_Brand__FormControl-module__FormControl-label--checkbox___x2U9X" data-testid="consent-label-default">Yes please, I’d like GitHub and affiliates to use my information for personalized communications, targeted advertising and campaign effectiveness. See the<!-- --> <a href="https://docs.github.com/en/site-policy/privacy-policies/github-privacy-statement">GitHub Privacy Statement</a> <!-- -->for more details.</label><span class="Primer_Brand__Checkbox-module__Checkbox-wrapper___qo8KL"><input id=":R1pt76:" aria-invalid="false" aria-required="false" class="Primer_Brand__Checkbox-module__Checkbox-input___sux6s" name="marketingConsent" type="checkbox" data-testid="marketingConsent" value="optInExplicit"/><label for=":R1pt76:" class="Primer_Brand__Checkbox-module__Checkbox___T8FJa"><svg viewBox="0 0 100 100" class="Primer_Brand__Checkbox-module__Checkbox-checkmark___atiwt"><path class="Primer_Brand__Checkbox-module__Checkbox-checkmark-path___qgsjb" fill="none" stroke="#000" stroke-width="13" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M12.1 52.1l24.4 24.4 53-53"></path></svg></label></span></section><div class="mb-3 mt-3 d-flex position-relative" style="min-height:310px"><div class="d-flex flex-justify-center flex-items-center border rounded-1 js-octocaptcha-spinner width-full"><img alt="octocaptcha spinner" loading="lazy" width="64" height="64" decoding="async" data-nimg="1" style="color:transparent" srcSet="/assets/images/octocat-spinner-128.gif?w=64&amp;q=75 1x, /assets/images/octocat-spinner-128.gif?w=128&amp;q=75 2x" src="/assets/images/octocat-spinner-128.gif?w=128&amp;q=75"/></div><div class="js-octocaptcha-frame-container octocaptcha-element width-full v-hidden zero-height position-absolute top-0 bottom-0"><iframe title="Octocaptcha iframe" src="https://octocaptcha.com?origin=&amp;origin_page=marketing_forms&amp;responsive=true" class="js-octocaptcha-frame border-0 width-full height-full octocaptcha-frame d-block"></iframe></div><input class="d-none" name="octocaptcha-token" required="" value=""/></div><input name="elqSiteId" type="hidden" value="88570519"/><input name="elqFormName" type="hidden" value="ContactUs_TemplateForm"/><input name="sfcampaignid" id="sfcampaignid" type="hidden"/><input id="redirect_url" name="redirect_url" type="hidden"/><input type="hidden" name="elqCampaignId" id="elqCampaignId"/><input name="cDLProgramName" type="hidden" data-testid="cDLProgramName" value="406214"/><input name="source" type="hidden" data-testid="source" value="Contact Request"/><input name="sFDCLastCampaignStatus" type="hidden" data-testid="sFDCLastCampaignStatus" value="Responded"/><button class="Primer_Brand__Button-module__Button___lDruK Primer_Brand__Button-module__Button--primary___xIC7G Primer_Brand__Button-module__Button--size-medium___EyCyw Primer_Brand__Button-module__Button--disabled___Ba17E mt-4" disabled="" type="submit"><span class="Primer_Brand__Button-module__Button__text___Z3ocU"><span class="Primer_Brand__Text-module__Text___pecHN Primer_Brand__Text-module__Text-font--mona-sans___GpzSG Primer_Brand__Text-module__Text--default___DChoE Primer_Brand__Text-module__Text--200___XAIGT Primer_Brand__Text-module__Text--weight-semibold___Ns19j Primer_Brand__Button-module__Button--label___lUBc0 Primer_Brand__Button-module__Button--label-primary___Leisi Primer_Brand__Button-module__Button-label--disabled___ZBpbj">Contact GitHub</span></span><span class="Primer_Brand__Button-module__Button__trailing-visual___zg8jd"><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___rkfek Primer_Brand__Button-module__Button-arrow___SkJXQ Primer_Brand__Button-module__Button-arrow--disabled____UgPq" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false" data-testid="Button-expandable-arrow"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___g4mdy" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></span></button></div></form></section></div></section></main></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"page":{"metadata":{"tags":[],"concepts":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"wfutmusr1t3h"}},"id":"1XyrkF1mxwuVXhLa1MMBT0","type":"Entry","createdAt":"2023-08-24T13:16:37.352Z","updatedAt":"2024-02-21T16:26:21.539Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"publishedVersion":5,"revision":3,"contentType":{"sys":{"type":"Link","linkType":"ContentType","id":"page"}}},"fields":{"path":"/devops/tools","content":{"metadata":{"tags":[],"concepts":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"wfutmusr1t3h"}},"id":"1pT6eTVHagEiq2OosRTWMZ","type":"Entry","createdAt":"2022-05-25T16:54:28.781Z","updatedAt":"2024-10-17T17:51:25.280Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"publishedVersion":152,"revision":26,"contentType":{"sys":{"type":"Link","linkType":"ContentType","id":"resourceContainer"}}},"fields":{"internalTitle":"Resource Page for /devops/tools","path":"/devops/tools","title":"A guide to DevOps tools and DevOps automation toolchains","description":"What are DevOps tools? \nAs an umbrella term, DevOps tools include any number of applications that automate processes within the software development lifecycle (SDLC), improve organizational collaboration, and implement monitoring and alerts. Organizations will often invest in building out a \"DevOps toolchain,\" or collection of tools to use in its DevOps practice, to address each stage of the SDLC.","body":"A DevOps toolchain is a core tenant of any DevOps practice, helping organizations apply automation to the SDLC and improve their ability to deliver higher-quality software faster. It’s also one of the more tangible aspects of DevOps. \n\nSome organizations will invest in an “all-in-one” platform to build their DevOps toolchain. Others will integrate different best-of-breed solutions to create a toolchain. But critically, there is no one-size-fits-all approach to DevOps or building a DevOps toolchain. \n\nIn this guide, we’ll explore how the best DevOps toolchains address each stage of the SDLC. This includes: \n\n* Planning and collaboration tools\n* Build tools\n* Continuous integration tools\n* Continuous deployment tools\n* Operations and continuous monitoring tools\n* Security and DevSecOps tools\n\n## DevOps planning and collaboration tools\n\nIn large part, DevOps seeks to bring previously siloed teams together across all stages of the SDLC—and that starts at the planning stage. From chat applications to project management tools, there are a number of tools organizations can implement in their DevOps toolchains to better align and encourage collaboration in an organization during its planning stages. \n\nDevOps planning and collaboration tools generally fall into two buckets: \n\n- **Product and roadmap planning:**\nHaving a centralized place to plan, track, and manage work is a foundational capability for any modern development team—and DevOps organizations, too. The best tools help organizations build plans, sprints, and roadmaps while being able to assign and track work from the initial plans to the delivered end product. Need an example? Try looking at [our own public product roadmap plans](https://github.com/orgs/github/projects/4247), which we build using [projects on GitHub](https://github.com/features/issues). \n\n- **Team communication:**\nMaintaining communication throughout the planning process is key to spurring collaboration—and having a preserved record of conversations that led to a given decision can be incredibly helpful. Tools such as [GitHub Discussions](https://resources.github.com/devops/process/planning/discussions), chat applications, and issue trackers that enable team conversations are key here. GitHub provides apps to help your team integrate with [Slack](https://slack.github.com/) or [Microsoft Teams](https://teams.github.com/). The best tools will integrate with your project planning, too. That means you can turn a discussion into an executable piece of work, or turn an idea into a discussion if more conversation is needed before work can start. \n\n## DevOps build tools\n\nOnce developers commit code changes to a central repository, the build stage begins—and that means using version control to create shared repositories, provisioning development environments, and integrating code, among other things. At this stage, organizations typically leverage the following DevOps tools: \n\n- **Version and source control:** \nA version control system is designed to automatically record file changes and preserve records of previous file versions, which enables code rollbacks, historical references, and multiple code branches allowing developers to collaboratively code and work in parallel. \u003cbr /\u003e\u003cbr /\u003ePlatforms such as [GitHub](https://docs.github.com/en/repositories) offer version control and source control with features such as [pull requests](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests), which enable individual developers to get reviews on proposed code changes before they are integrated into the main code branch. The best version and source control platforms integrate with your broader DevOps toolchain, and enable product teams to collaborate across the SDLC. \n\n- **Pre-production development environments:**\nIn a DevOps practice, developers need to leverage virtual environments that mirror production as closely as possible. These environments are identical to one another and easy to provision, so that all developers can quickly build and test code changes in consistent environments. \u003cbr /\u003e\u003cbr /\u003eOrganizations will often leverage containerization platforms and registries such as [GitHub Packages](https://github.com/features/packages) to build standardized, pre-production environments for development teams. Ideally, these platforms should integrate into the source control solution so that when a team member commits new code, it triggers the automated provisioning of a pre-production environment. \n\n- **Cloud-based integrated developer environments (IDE):**\nCloud-based IDEs offer comprehensive development environments that are pre-configured and can be quickly provisioned. These are an increasingly popular tool in DevSecOps (and development circles more broadly, for that matter) since they help standardize developer environments including security configurations across machines. And since they’re centrally managed, cloud-based IDEs also keep code off an individual developer’s computer, which can improve overall development security. \u003cbr /\u003e\u003cbr /\u003eTools such as [GitHub Codespaces](https://github.com/features/codespaces) also feature deep integrations into core DevOps platforms. This can improve development speeds by cutting down the amount of time it takes to spin up a developer environment—and reducing the need to wait for running builds and tests locally. \n\n- **Infrastructure as code:**\nThe rise in cloud infrastructure, or Infrastructure as a Service (IaaS), has made it simpler to quickly provision resources to meet real-time demand. It’s also introduced a need among organizations to manage complex cloud-based infrastructure at scale—both to provision new resources as they’re needed and to manage resource clusters for pre- and post-production environments. \u003cbr /\u003e\u003cbr /\u003eInfrastructure as code (IaC) draws on DevOps best practices to provision and manage cloud infrastructure resources right from a version control system like GitHub via YAML files. These files specify a CI/CD workflow automation that is triggered by an event such as a pull request, code commit, or code merge. Once this event happens, the workflow automates the provisioning and management of cloud infrastructure resources.\u003cbr /\u003e\u003cbr /\u003eSince IaC relies on a combination of YAML configuration files that are stored in a shared repository, it’s critical to make sure your version control and CI/CD platform of choice integrate seamlessly. Tools such as [GitHub Actions](https://github.com/features/actions) offer this type of integration, which make it easier to manage infrastructure right from your repository with CI/CD. \n\n## DevOps continuous integration tools\n\nContinuous integration (CI) is a mainstay of any DevOps practice and combines the cultural practice of frequent code commits with automation to integrate that code successfully and create builds.\n\nTo successfully adopt CI, DevOps organizations typically use tools and platforms that do three things: \n\n- **CI:**\nAs a practice, CI often involves committing multiple code changes a day to a shared repository and using automation to integrate these changes, applying a series of automated tests to the merged codebase to ensure its stability, and preparing the codebase for deployment. This level of automation requires deep integration between a version control solution and the larger CI/CD platform, which enables DevOps organizations to build CI/CD pipelines that are triggered by a code commit. \u003cbr /\u003e\u003cbr /\u003eWhen you’re looking for a good CI solution, you’ll want to make sure it easily integrates with your version control solution. This integration is key to making sure you can build an automated pipeline that starts as soon as your development teams commit code changes. \u003cbr /\u003e\u003cbr /\u003eA good example of this level of integration comes with the [GitHub platform](https://github.com/home), which features [platform-native CI/CD via GitHub Actions](https://github.com/features/actions) and also features a number of [pre-built integrations for third-party CI/CD services](https://github.com/marketplace?type=actions). You’ll also want to make sure that whatever CI/CD platform you choose can automatically apply tests at all stages of the SDLC and includes native support for containerization platforms.\n\n- **Automated testing:**\nAutomated testing tools are a core part of any DevOps toolchain. Most platforms will offer automated testing as a capability making it simple to incorporate automated tests into key parts of the pipeline—for instance, after a code change is merged to the main branch. \u003cbr /\u003e\u003cbr /\u003eThe goal is to have a comprehensive testing strategy with basic unit tests, integration tests, and acceptance tests that are applied at key points in the SDLC. The best testing tools integrate seamlessly with—or are part of—your CI/CD platform and offer built-in code coverage and testing visualization. You’ll also want to look for testing platforms that enable matrix build testing capabilities, or allow you to simultaneously test builds across multiple operating systems and runtime versions. \u003cbr /\u003e\u003cbr /\u003eIt’s also a good practice to ensure that your automated test solution of choice comes with monitoring and alerts that integrate with your chat application of choice. This means that if something breaks, you can quickly get a notification and work to fix whatever the underlying problem. Tools such as [GitHub Actions](https://github.com/features/actions), for instance, can be used to send alerts to chat applications once a test fails for quicker remediation. \n\n- **Packaging:**\nOnce code changes clear all tests in a CI/CD pipeline, they are packaged into independent units of code and prepared for deployment. DevOps organizations will typically leverage a package manager like [GitHub Packages](https://github.com/features/packages) to facilitate the delivery of software packages to a shared repository in preparation for a release. \u003cbr /\u003e\u003cbr /\u003ePackage managers help remove the need for manual installations and help bundle code dependencies within a given project. There are different package managers for different code libraries—but you should ideally look for a solution that integrates with your version control system and your CI/CD platform. \n\n![Reflect tools](//images.ctfassets.net/wfutmusr1t3h/TdLPy6OEyYXySYKKOdZqo/0a68a08304481769fa853fe55f60d468/Reflect_tools.png)\n\n## DevOps continuous deployment tools\n\nContinuous deployment builds upon CI/CD by removing the need for human intervention when releasing software. Instead, a continuous deployment practice applies automation to every stage of the SDLC. That means if a code change clears all automated tests, it is deployed to production. \n\nDevOps organizations that adopt continuous deployment will typically use tools that fall into two categories: \n\n- **Automated deployment:**\nAutomated deployments are a core part of continuous deployment and having a toolchain that supports automated deployment. These capabilities are typically present in most CI/CD platforms. However, there is no one-size-fits-all approach to building out a continuous deployment pipeline—and it won’t work with every application or environment. \u003cbr /\u003e\u003cbr /\u003eIf you decide to invest in continuous deployment, look for platforms that readily support the development and management of multiple environments. Importantly, you’ll want a solution that helps protect you from “server drift,” or differences between development, pre-production, and production environments. You’ll also want to consider a platform that supports blue-green deployments, which enables you to slowly migrate traffic from an old version of an application to a new release to ensure its stability in production. \u003cbr /\u003e\u003cbr /\u003eAt GitHub, we provide deployment dashboards and CI/CD visualization displays as part of our native CI/CD tool [GitHub Actions](https://github.com/features/actions)—and we consider these core features for any continuous deployment toolchain. This is meant to give DevOps organizations full visibility into different code branches, automated test results, audit logs, and ongoing deployments as they happen. \n\n- **Configuration management:**\nConfiguration management is a process where technology teams manage the different environmental configurations necessary in the core infrastructure and application systems across the life of the product. It’s also something that is frequently paired with CI/CD and versioning control via automation. \u003cbr /\u003e\u003cbr /\u003eJust as a CI/CD pipeline applies automation across the SDLC, configuration management tools automatically apply configuration changes in response to trigger-based events. These automated workflows are typically built in a CI/CD tool and stored as text files (like YAML) in a shared Git repository. These can be used to orchestrate and manage container clusters with platforms. They can also be used to manage infrastructure as code (IaC) practices. GitHub [repositories](https://docs.github.com/en/repositories) and [issues](https://docs.github.com/en/issues/tracking-your-work-with-issues/about-issues) make it easy for IT professionals to work with systems that produce text-based configuration files for both IaC and Configuration as Code (CaC).\n\n## Continuous testing tools\n\nIn a DevOps practice, testing doesn’t stop at CI/CD—it’s an ongoing practice that extends throughout the SDLC. And more importantly, DevOps seeks to replace siloed QA teams with a continuous testing practice that leverages automation and holistic testing strategies across the SDLC. \n\nEach DevOps organization will design its own continuous testing strategy in accordance with its needs. [GitHub Actions](https://thenewstack.io/three-ways-ci-cd-adoption-can-benefit-your-devops-team) provides workflow automation related to testing and supports a rich set of [open source and commercial testing tools](https://github.com/marketplace?category=testing\u0026type=actions). Every continuous testing strategy will leverage a combination of the following test types across the SDLC: \n\n- **Unit testing:** \nUnit tests are a way of testing small units of code to verify that they are structured correctly with isolated components. They are also the easiest tests to build and the fastest to execute, making them a foundational test to automate in any continuous testing practice. \n\n- **Integration testing:**\nOnce you commit code changes to a repository, integration tests ensure build stability and that the codebase continues to work successfully. These tests are used to identify defects that emerge when different application processes and code units are merged together. Integration tests are commonly automated to begin as soon as code changes are committed to a codebase and test the interplay of multiple parts of an application. \n\n- **End-to-end and regression testing:**\nBuilding on integration testing, end-to-end and regression tests are applied after a codebase is packaged and staged in a pre-production environment. These tests are used to check if any old defects, bugs, or issues are reintroduced by code changes. Regression testing is commonly used before and after deployments to ensure that an application works as expected and does not contain any previously identified issues. \n\n- **Production testing:**\nAfter an application is deployed, production-level tests monitor application health and stability—and identify any issues before they cause problems for end users. Importantly, these tests help organizations identify any potential problems in a production environment with live user traffic that can’t be fully replicated in a pre-production environment. \n\n## DevOps operations and continuous monitoring tools\n\nA successful DevOps practice touches every stage of the SDLC—and that includes production-level software, too. This means companies need to invest in core operations and continuous monitoring tools to evaluate application and infrastructure performance. If done right, these tools can help continuously identify potential issues across the SDLC. \n\nDevOps organizations will be best served by investing in tools that have the following capabilities: \n\n- **Application and infrastructure monitoring:**\nApplication and infrastructure monitoring are core components of a successful continuous monitoring practice. The best tools offer 24/7 automated monitoring of the application and infrastructure health and give DevOps practitioners alerts when something goes wrong—and visibility into what the underlying problem might be. \u003cbr /\u003e\u003cbr /\u003eIdeally, you’ll want to monitor application health in pre-production and production environments to track any process issues or areas to improve overall performance. This is also true for your underlying infrastructure where monitoring can lead to insights on how to improve your infrastructure as code (IaC) and configuration management policies. \u003cbr /\u003e\u003cbr /\u003eTry looking for a tool that integrates with your version control tool and chat applications so you can immediately send alerts to the right people, and create issues to outline the scope of work for a solution. \n\n- **Audit logs:**\nAuditing is a central part of an effective operations and continuous monitoring practice—and resolving any incidents if and when they happen. They give DevOps practitioners a record of what happened, where it happened, and when it happened and can be critical to build behavioral models that led to an issue and improve application and infrastructure health. \u003cbr /\u003e\u003cbr /\u003e Look for DevOps tools that have live logs and auditing retention periods to equip your teams with the information they need to improve core services and application performance. \n\n- **Incident and change tracking:**\nThe primary goal of DevOps is to help organizations ship higher-quality software faster through deep collaboration and automation. And that means tracking incidents and changes as they arise and sharing them with the right people is critical. \u003cbr /\u003e\u003cbr /\u003eTo build a successful DevOps toolchain, you’ll want to incorporate tools that surface incidents and changes on your core DevOps platform and shared repositories. The more centralized you can keep all reports on incidents and changes, the better. The goal is to create a single source of truth that makes it easier to identify and fix issues. \n\n- **Continuous feedback:**\nA core tenant of DevOps, continuous feedback is a practice that focuses on tracking user behavior and customer feedback about your core products and building actionable data to inform future investments in new features and system updates. This can include NPS survey data about how users are navigating your product. It can also include tracking and modeling user behavior in the product itself. \u003cbr /\u003e\u003cbr /\u003e To build a continuous feedback practice, you’ll want to identify core areas in your product and even outside it in places like social media and reviews where you can identify unexpected user behaviors and customer pain points. Look for tools that enable you to model and analyze user behaviors. You also might consider social listening tools, which you can use to track historical patterns on social media and review sites. \n\n## Security and DevSecOps tools\n\nAs DevOps has evolved as practice, it has underscored the need to move past more traditional approaches to security which was often siloed from the core SDLC. To ensure you’re shipping high-quality code, making security a core part of the DevOps practice is important. This practice is commonly called DevSecOps, which seeks to integrate security into every stage of the SDLC and make it a core part of CI/CD pipelines. \n\nCompanies that invest in DevOps often find the need to invest in also building a DevSecOps practice to ensure software security. This typically involves several tools that help organizations model potential threats and apply automated security testing at key stages of the SDLC. While organizations often try to grab individual tools to create a solution, integrated products like [GitHub Advanced Security](https://docs.github.com/en/get-started/learning-about-github/about-github-advanced-security), can reduce the friction of bringing DevSecOps to your teams. By complementing their DevOps toolchain with DevSecOps tools, companies will often look for the following solutions: \n\n- **Threat modeling:**\nHere’s a truism: It’s a lot easier to find security vulnerabilities and potential weak points when you’re developing software instead of after you’ve released it. Threat modeling is a practice that DevSecOps practitioners will engage in from the early planning stages of the SDLC to anticipate any issues and develop plans to solve them. \u003cbr /\u003e\u003cbr /\u003eDevSecOps organizations today will also invest in threat modeling tools that leverage automation and monitoring to proactively identify threats and mitigation efforts. The best tools survey application and infrastructure threats, and will automatically track changes in the underlying codebase and infrastructure architecture.\u003cbr /\u003e\u003cbr /\u003eLook for solutions that can integrate with your core DevOps toolchain to provide updates to relevant people on your team and show risk evaluation scores throughout the SDLC. \n\n- **Security dashboards:**\nHaving a single view of your security profile including potential risks, testing coverage, alerts, and more is critical for any DevSecOps practice. Security dashboards are often used to collate and break down all relevant security information and provide a quick way to triage issues and assign tasks. At GitHub, we include [a security overview page with GitHub Advanced Security](https://docs.github.com/en/code-security/security-overview/about-the-security-overview) to help showcase risk categories across projects and repositories and alert details, too. Ideally, you should look for tools that integrate with your wider DevSecOps security toolchain and offer a single view of your security profile. \n\n- **Static application security testing (SAST):**\nSAST tools are used to evaluate code before it is run to identify any potential security risks or vulnerabilities. Importantly, these tools do not need a running system to execute but can be performed on a static codebase. \u003cbr /\u003e\u003cbr /\u003eThe best tools will integrate directly into a shared repository and search out any security vulnerabilities, conduct dependency reviews, scan for any confidential password or secrets, and identify coding errors before they make it into production. These tools will also make it simple to find, triage, and prioritize fixes for any problems in your codebase. \u003cbr /\u003e\u003cbr /\u003eYou’ll ideally want to look for a solution that integrates with your repository and can be automated to build out issues based on analysis. At GitHub, for instance, we have a SAST tool called [Dependabot](https://github.com/dependabot) that analyzes all dependencies for any known security vulnerabilities—and it’s directly integrated into every repository on the platform. \n\n- **Dynamic application security testing (DAST):**\nDAST is used to imitate malicious attacks on an application to find any potential vulnerabilities that might risk its real-world security. DAST tools typically analyze applications in pre-production environments to help DevSecOps practitioners identify any possible security flaws before they make it into production. These flaws typically include underlying issues attackers can exploit to run SQL injection attacks and cross-site scripting (XSS) attacks, among other things.\u003cbr /\u003e\u003cbr /\u003eThe best DAST tools will integrate with your CI/CD platform of choice so you can automate their deployment within the wider SDLC. \n\n- **Interactive application security testing (IAST):**\nIAST solutions are used to identify and profile risks and vulnerabilities in running applications—most often earlier in the SDLC before a release is made. These solutions leverage software instrumentation to monitor and collect information in pre-production environments through manual and automated tests. The best IAST solutions will include software composition analysis (SCA) tools to identify any open source component vulnerabilities.\n\n- **Container image scanning:**\nDue to their lightweight architectures, containers have made it simpler for DevOps organizations to build, test, deploy, and update applications in a fast and flexible manner. But large-scale container environments also introduce security risks due to the number of surface areas and potential for vulnerabilities. To mitigate against any risks, DevSecOps practitioners will leverage container scanning tools to identify issues in the container registry, scan container clusters at runtime, and prevent vulnerabilities from making it into production. Look for tools that can be integrated into your CI/CD pipeline and automated to run at specific points in your SDLC before a deployment—including the build, integration, and packaging stages. \n\n![GitHub Features](//images.ctfassets.net/wfutmusr1t3h/6mxmLmOefzKMlIu5LS6Dh1/f46c9d9622c1dbe95890f7216bfef984/GitHub_Features.png)\n\n## Unify your DevOps tools and processes on GitHub\n\nAs the largest and most advanced development platform in the world, GitHub helps millions of developers and companies collaborate, build, and deliver, faster. And with thousands of DevOps integrations, you can build with the tools you know from day one—or discover new ones. \n\n*See all DevOps integrations in [GitHub Marketplace](https://github.com/marketplace)*\n\n\u003cbr /\u003e\n\n\u003e Our philosophy is to build automation and great DevOps for the company you will be tomorrow.\n\nSenior SCM Engineer Todd O'Connor at [Adobe](https://github.com/customer-stories/adobe)\n\n\u003cbr /\u003e\n\n**PLAN**\n\nCoordinate, manage, and update your work in one place with GitHub issues, discussions, and project boards. Then stay organized and on track by integrating the planning and project management tools you already use. \n\n[Explore project management tools](https://github.com/marketplace?category=project-management) \n\n**CODE** \n\nCollaborate, create, store code, and accelerate development with GitHub and Codespaces. Add in code quality integrations to automate code reviews for style, quality, security, and test‑coverage checks when you need them. \n\n[Explore code quality tools](https://github.com/marketplace?category=code-quality)\n\n**BUILD**\n\nShip faster with automated continuous integration powered by [GitHub Actions and Packages](https://github.com/features/actions). Trigger workflows based on GitHub events and publish your packages wherever you like, all with native tooling commands.\n\nExplore [mobile CI](https://github.com/marketplace?category=mobile-ci), [container CI](https://github.com/marketplace?category=container-ci), or all [CI tools](https://github.com/marketplace?category=continuous-integration)\n\n**TEST** \n\nStop bugs from getting to production by adding testing to your Actions workflows—including testing integrations from our partners and community. \n\n[Explore testing tools](https://github.com/marketplace?category=testing)\n\n**DEPLOY**\n\nAutomate continuous delivery with Actions or trigger deployment integrations from common CI/CD providers and major public clouds with GitHub any event. \n\n[Explore deployment tools](https://github.com/marketplace?category=deployment)\n\n**MANAGE** \n\nConnect your code to the management, logging, alerting, and monitoring tools your team uses in production. Easily measure impact, analyze performance, and monitor the impact of your code on your systems and users. \n\n[Explore analytics, alerting, logging and monitoring tools](https://github.com/marketplace?category=monitoring) \n\n**SECURE**\nKnow your code stays secure at every step with [CodeQL](https://securitylab.github.com/tools/codeql), [Dependabot](https://docs.github.com/en/free-pro-team@latest/github/managing-security-vulnerabilities/configuring-github-dependabot-security-updates), and the security tools you use today.\n\nExplore [security](https://github.com/marketplace?category=security) and [dependency management](https://github.com/marketplace?category=dependency-management) tools\n\n[Compare DevOps Solutions \u003e](https://resources.github.com/devops/tools/compare)","resource":{"metadata":{"tags":[],"concepts":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"wfutmusr1t3h"}},"id":"01Kzt6XmsfcPbC6jbjliFX","type":"Entry","createdAt":"2022-05-25T01:42:20.555Z","updatedAt":"2022-05-25T01:42:20.555Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"publishedVersion":2,"revision":1,"contentType":{"sys":{"type":"Link","linkType":"ContentType","id":"article"}}},"fields":{}},"gated":false,"sfCampaignID":"7015c000001SNN7AAO","campaign":"Resources_Contact_Us","contentForm":{"metadata":{"tags":[],"concepts":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"wfutmusr1t3h"}},"id":"3qHQ6eSp20iGQrFIfaBJnn","type":"Entry","createdAt":"2022-09-29T19:33:25.277Z","updatedAt":"2024-11-26T11:30:01.409Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"publishedVersion":248,"revision":113,"contentType":{"sys":{"type":"Link","linkType":"ContentType","id":"form"}}},"fields":{"name":"Form_Ungated_Contact","title":"Wondering how GitHub can help your business?","subtitle":"Tell us more about your needs","eloquaFormName":"ContactUs_TemplateForm","formCTA":"Contact GitHub","formElements":[{"metadata":{"tags":[],"concepts":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"wfutmusr1t3h"}},"id":"3Euizanl72D7hjUPBu1cz4","type":"Entry","createdAt":"2023-04-04T12:27:44.815Z","updatedAt":"2024-11-26T11:37:30.225Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"publishedVersion":372,"revision":186,"contentType":{"sys":{"type":"Link","linkType":"ContentType","id":"formElement"}}},"fields":{"label":"Last name","htmlName":"lastName","type":"text","placeholder":"Last name","required":true}},{"metadata":{"tags":[],"concepts":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"wfutmusr1t3h"}},"id":"6FMPEpNvfZnVg5o5pNdmAz","type":"Entry","createdAt":"2023-04-04T12:27:23.053Z","updatedAt":"2024-11-26T11:37:14.334Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"publishedVersion":373,"revision":186,"contentType":{"sys":{"type":"Link","linkType":"ContentType","id":"formElement"}}},"fields":{"label":"First name","htmlName":"firstName","type":"text","placeholder":"First name","required":true}},{"metadata":{"tags":[],"concepts":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"wfutmusr1t3h"}},"id":"6s0zB2lwQZz6ZhWkZQd5r0","type":"Entry","createdAt":"2022-09-29T18:54:51.900Z","updatedAt":"2024-11-26T11:36:43.185Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"publishedVersion":234,"revision":112,"contentType":{"sys":{"type":"Link","linkType":"ContentType","id":"formElement"}}},"fields":{"label":"Work Email","htmlName":"emailAddress","type":"email","placeholder":"you@company.com","required":true}},{"metadata":{"tags":[],"concepts":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"wfutmusr1t3h"}},"id":"3IumXBD9IQf1aCt2cTCoVh","type":"Entry","createdAt":"2023-06-23T19:25:51.253Z","updatedAt":"2024-11-26T11:36:56.805Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"publishedVersion":212,"revision":105,"contentType":{"sys":{"type":"Link","linkType":"ContentType","id":"formElement"}}},"fields":{"label":"Phone","htmlName":"phone1","type":"tel","placeholder":"12 3456 7890","required":false}},{"metadata":{"tags":[],"concepts":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"wfutmusr1t3h"}},"id":"5HOQnFx9120Wj4hlsjXaJn","type":"Entry","createdAt":"2022-03-12T20:19:03.843Z","updatedAt":"2024-11-26T11:37:58.388Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"publishedVersion":374,"revision":186,"contentType":{"sys":{"type":"Link","linkType":"ContentType","id":"formElement"}}},"fields":{"label":"Company","htmlName":"company","type":"text","placeholder":"Acme, Inc","required":true}},{"metadata":{"tags":[],"concepts":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"wfutmusr1t3h"}},"id":"1MS9X9RNVd6BmPN91fMsVg","type":"Entry","createdAt":"2022-09-29T19:31:39.832Z","updatedAt":"2024-11-26T11:37:05.764Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"publishedVersion":209,"revision":104,"contentType":{"sys":{"type":"Link","linkType":"ContentType","id":"formElement"}}},"fields":{"label":"What can we help you with?","htmlName":"contactComments","type":"textarea","placeholder":"Tell us how we can help. For support questions, head to github.com/contact ","required":false}},{"metadata":{"tags":[],"concepts":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"wfutmusr1t3h"}},"id":"5zNCZ4hVsez1AWpp6Fga7h","type":"Entry","createdAt":"2022-03-12T20:23:32.191Z","updatedAt":"2024-11-20T14:58:44.487Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"publishedVersion":16,"revision":10,"contentType":{"sys":{"type":"Link","linkType":"ContentType","id":"formElement"}}},"fields":{"htmlName":"elqCustomerGUID","type":"hidden","required":false}},{"metadata":{"tags":[],"concepts":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"wfutmusr1t3h"}},"id":"7a3HDjJcLkWmsPKHATLvna","type":"Entry","createdAt":"2022-03-12T20:24:00.556Z","updatedAt":"2024-11-20T14:58:44.527Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"publishedVersion":18,"revision":10,"contentType":{"sys":{"type":"Link","linkType":"ContentType","id":"formElement"}}},"fields":{"htmlName":"elqCookieWrite","type":"hidden","required":false,"defaultValue":"0"}}]}},"headerImage":{"metadata":{"tags":[],"concepts":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"wfutmusr1t3h"}},"id":"7Rb5ZoUDOX41PpqAibLo9","type":"Asset","createdAt":"2022-11-07T10:15:15.233Z","updatedAt":"2024-03-22T14:04:07.436Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"publishedVersion":16,"revision":5},"fields":{"title":"DevOps - Productivity pillar - Dark 1","description":"","file":{"url":"//images.ctfassets.net/wfutmusr1t3h/7Rb5ZoUDOX41PpqAibLo9/344247765e0571d768e511fe686cea98/Productivity-DarkMode-1.webp","details":{"size":407100,"image":{"width":2400,"height":1260}},"fileName":"Productivity-DarkMode-1.webp","contentType":"image/webp"}}},"buttonCTA":"Contact GitHub","publicationDate":"2022-05-23T12:00+00:00","hidden":false,"rendersRichText":false,"marketoCampaign":{"metadata":{"tags":[],"concepts":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"wfutmusr1t3h"}},"id":"2ywGzPlFH9kTdiOBF75ggA","type":"Entry","createdAt":"2023-09-15T23:09:46.917Z","updatedAt":"2024-11-20T14:58:44.542Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"publishedVersion":14,"revision":7,"contentType":{"sys":{"type":"Link","linkType":"ContentType","id":"marketoCampaign"}}},"fields":{"title":"CO-GHG-CONTACT-FY23-10Oct-01-WW-Resources-Contact-Request/406214","cDLProgramName":"406214","source":"Contact Request","formFields":[{"metadata":{"tags":[],"concepts":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"wfutmusr1t3h"}},"id":"6z2cGa4cuvoWqGxS3Ejhv4","type":"Entry","createdAt":"2023-09-12T16:31:47.760Z","updatedAt":"2024-11-26T11:32:18.468Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"publishedVersion":127,"revision":59,"contentType":{"sys":{"type":"Link","linkType":"ContentType","id":"formElement"}}},"fields":{"label":"sFDCLastCampaignStatus","htmlName":"sFDCLastCampaignStatus","type":"hidden","required":false,"defaultValue":"Responded"}}],"active":true}}}},"seo":{"metadata":{"tags":[],"concepts":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"wfutmusr1t3h"}},"id":"7khLzxB3dmcNCm5sYh4vSI","type":"Entry","createdAt":"2022-05-25T01:43:07.425Z","updatedAt":"2024-10-17T17:52:09.876Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"publishedVersion":16,"revision":6,"contentType":{"sys":{"type":"Link","linkType":"ContentType","id":"seo"}}},"fields":{"metaTitle":"DevOps Tools - DevOps Automation Tools - GitHub","metaDescription":"GitHub DevOps tools play a vital role in DevOps implementation by bridging the gap between development \u0026 operations teams, which are key to any business. Learn more."}},"topics":[{"metadata":{"tags":[],"concepts":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"wfutmusr1t3h"}},"id":"2rym8Y8A56ngjMrr6oSlmh","type":"Entry","createdAt":"2024-01-11T21:00:35.775Z","updatedAt":"2024-11-26T10:53:25.505Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"publishedVersion":194,"revision":98,"contentType":{"sys":{"type":"Link","linkType":"ContentType","id":"topic"}}},"fields":{"slug":"devops","label":"DevOps"}}]}},"path":"/devops/tools","indexData":null,"type":"resourceContainer","featureFlags":{"featureEnabledNewFormsService":false,"featureEnabledNewAppNavigation":true,"featureEnableSearch":false},"config":{"formsEndpoint":"https://marketing-forms-api.github.com/"}},"__N_SSP":true},"page":"/[...path]","query":{"path":["devops","tools"]},"buildId":"ZokmF09g2SkORXwoG0TZr","isFallback":false,"isExperimentalCompile":false,"gssp":true,"locale":"en-US","locales":["en-US","ja","pt-BR","es-419","ko-KR"],"defaultLocale":"en-US","scriptLoader":[]}</script><div id="ghcc" style="position:sticky;bottom:0;z-index:99999"></div></body></html>

Pages: 1 2 3 4 5 6 7 8 9 10