Files
nexus/sreweekly/articles/33/01-growing-your-tech-stack-when-to-say-no.html
2026-09-12 17:23:01 +08:00

1800 lines
164 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html><!-- Last Published: Thu Sep 10 2026 16:27:10 GMT+0000 (Coordinated Universal Time) --><html data-wf-domain="webflow.cloudbees.com" data-wf-page="6a1fe2a5a11dca1afc48dd2b" data-wf-site="695e1939655d6c0175b126da" data-wf-intellimize-customer-id="117374858" lang="en" data-wf-collection="6a1fe2a4a11dca1afc48dd15" data-wf-item-slug="ci-cd-pipeline"><head><meta charset="utf-8"/><link href="https://cdn.prod.website-files.com" rel="preconnect" crossorigin="anonymous"/><title>Key Components of a CI/CD Pipeline</title><meta content="Learn to master the CI/CD pipeline and discover the benefits of Continuous Integration and Continuous Delivery/Deployment for software development." name="description"/><meta content="Key Components of a CI/CD Pipeline" property="og:title"/><meta content="Learn to master the CI/CD pipeline and discover the benefits of Continuous Integration and Continuous Delivery/Deployment for software development." property="og:description"/><meta content="Key Components of a CI/CD Pipeline" name="twitter:title"/><meta content="Learn to master the CI/CD pipeline and discover the benefits of Continuous Integration and Continuous Delivery/Deployment for software development." name="twitter:description"/><meta property="og:type" content="website"/><meta content="summary_large_image" name="twitter:card"/><meta content="width=device-width, initial-scale=1" name="viewport"/><link href="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/css/cloudbees-staging.shared.de709e9b8.min.css" rel="stylesheet" type="text/css" integrity="sha384-3nCem4UuiZHajW+HR0KDQRVI46PykPFAtPxnct426b/xTCCmlGUsL0dDDMM+wvJt" crossorigin="anonymous"/><style>@media (min-width:992px) {html.w-mod-js:not(.w-mod-ix) [data-w-id="0199c7fc-edc8-ee9f-99d2-5aa4a810855b"] {-webkit-transform:translate3d(0, 2rem, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-moz-transform:translate3d(0, 2rem, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-ms-transform:translate3d(0, 2rem, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);transform:translate3d(0, 2rem, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);opacity:0;}html.w-mod-js:not(.w-mod-ix) [data-w-id="0199c7fc-edc8-ee9f-99d2-5aa4a810855d"] {-webkit-transform:translate3d(0, 1rem, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-moz-transform:translate3d(0, 1rem, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-ms-transform:translate3d(0, 1rem, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);transform:translate3d(0, 1rem, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);opacity:0;}html.w-mod-js:not(.w-mod-ix) [data-w-id="e08e7190-573b-1ed5-0f56-04bb938f6aff"] {-webkit-transform:translate3d(0, 2rem, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-moz-transform:translate3d(0, 2rem, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-ms-transform:translate3d(0, 2rem, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);transform:translate3d(0, 2rem, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);opacity:0;}}@media (max-width:991px) and (min-width:768px) {html.w-mod-js:not(.w-mod-ix) [data-w-id="0199c7fc-edc8-ee9f-99d2-5aa4a810855b"] {-webkit-transform:translate3d(0, 2rem, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-moz-transform:translate3d(0, 2rem, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-ms-transform:translate3d(0, 2rem, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);transform:translate3d(0, 2rem, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);opacity:0;}html.w-mod-js:not(.w-mod-ix) [data-w-id="0199c7fc-edc8-ee9f-99d2-5aa4a810855d"] {-webkit-transform:translate3d(0, 1rem, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-moz-transform:translate3d(0, 1rem, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-ms-transform:translate3d(0, 1rem, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);transform:translate3d(0, 1rem, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);opacity:0;}html.w-mod-js:not(.w-mod-ix) [data-w-id="e08e7190-573b-1ed5-0f56-04bb938f6aff"] {-webkit-transform:translate3d(0, 2rem, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-moz-transform:translate3d(0, 2rem, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-ms-transform:translate3d(0, 2rem, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);transform:translate3d(0, 2rem, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);opacity:0;}}@media (max-width:767px) and (min-width:480px) {html.w-mod-js:not(.w-mod-ix) [data-w-id="0199c7fc-edc8-ee9f-99d2-5aa4a810855b"] {-webkit-transform:translate3d(0, 2rem, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-moz-transform:translate3d(0, 2rem, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-ms-transform:translate3d(0, 2rem, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);transform:translate3d(0, 2rem, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);opacity:0;}html.w-mod-js:not(.w-mod-ix) [data-w-id="0199c7fc-edc8-ee9f-99d2-5aa4a810855d"] {-webkit-transform:translate3d(0, 1rem, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-moz-transform:translate3d(0, 1rem, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-ms-transform:translate3d(0, 1rem, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);transform:translate3d(0, 1rem, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);opacity:0;}html.w-mod-js:not(.w-mod-ix) [data-w-id="e08e7190-573b-1ed5-0f56-04bb938f6aff"] {-webkit-transform:translate3d(0, 2rem, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-moz-transform:translate3d(0, 2rem, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-ms-transform:translate3d(0, 2rem, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);transform:translate3d(0, 2rem, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);opacity:0;}}</style><link href="https://fonts.googleapis.com" rel="preconnect"/><link href="https://fonts.gstatic.com" rel="preconnect" crossorigin="anonymous"/><script src="https://ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js" type="text/javascript"></script><script type="text/javascript">WebFont.load({ google: { families: ["Inconsolata:400,700","Inter:300,400,500,600,700"] }});</script><script type="text/javascript">!function(o,c){var n=c.documentElement,t=" w-mod-";n.className+=t+"js",("ontouchstart"in o||o.DocumentTouch&&c instanceof DocumentTouch)&&(n.className+=t+"touch")}(window,document);</script><link href="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/69712fa082fbe845b939a243_CloudBees-favicon.png" rel="shortcut icon" type="image/x-icon"/><link href="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/69712fc6dc61f354e7d8715e_CloudBees-webclip.svg" rel="apple-touch-icon"/><link href="https://www.cloudbees.com/blog/ci-cd-pipeline" rel="canonical"/><script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Key Components of a CI/CD Pipeline",
"name": "Key Components of a CI/CD Pipeline - dce1da32-1d6a-4d32-a43c-1febd3008ca5",
"description": "Learn to master the CI/CD pipeline and discover the benefits of Continuous Integration and Continuous Delivery/Deployment for software development.",
"url": "/blog/ci-cd-pipeline",
"image": "https://cdn.prod.website-files.com/6964c3f9b6de03a57eb64454/6a1ff5ae0d8160344bb3f816_Blog-hero-mastering-cicd-pipelines.jpeg",
"datePublished": "2024-02-20",
"dateModified": "2026-06-05T08:52:26.087Z",
"author": {
"@type": "Person",
"name": "Samantha Frost",
"image": "",
"jobTitle": "Product Marketing Manager"
},
"publisher": {
"@type": "Organization",
"name": "CloudBees",
"logo": {
"@type": "ImageObject",
"url": "https://cdn.prod.website-files.com/695e1939655d6c0175b126da/696254cf9924a1df0698d83e_Brand%20Logo.svg"
}
},
"articleSection": "How-tos and Support",
"inLanguage": "en"
}
</script><style>.anti-flicker, .anti-flicker * {visibility: hidden !important; opacity: 0 !important;}</style><style>[data-wf-hidden-variation], [data-wf-hidden-variation] * {
display: none !important;
}</style><script type="text/javascript">if (localStorage.getItem('intellimize_data_tracking_type') !== 'disabled') { localStorage.setItem('intellimize_opt_out_117374858', 'true'); } if (localStorage.getItem('intellimize_data_tracking_type') !== 'disabled') { localStorage.setItem('intellimize_data_tracking_type', 'disabled'); }</script><script type="text/javascript">(function(e){var s={r:[]};e.wf={r:s.r,ready:t=>{s.r.push(t)}}})(window)</script><script type="text/javascript">(function(e,t,p){var n=document.documentElement,s={p:[],r:[]},u={p:s.p,r:s.r,push:function(e){s.p.push(e)},ready:function(e){s.r.push(e)}};e.intellimize=u,n.className+=" "+p,setTimeout(function(){n.className=n.className.replace(RegExp(" ?"+p),"")},t)})(window, 4000, 'anti-flicker')</script><link href="https://cdn.intellimize.co/snippet/117374858.js" rel="preload" as="script"/><script type="text/javascript">var wfClientScript=document.createElement("script");wfClientScript.src="https://cdn.intellimize.co/snippet/117374858.js",wfClientScript.async=!0,wfClientScript.onerror=function(){document.documentElement.className=document.documentElement.className.replace(RegExp(" ?anti-flicker"),"")},document.head.appendChild(wfClientScript);</script><link href="https://api.intellimize.co" rel="preconnect" crossorigin="true"/><link href="https://log.intellimize.co" rel="preconnect" crossorigin="true"/><link href="https://117374858.intellimizeio.com" rel="preconnect"/><link href="rss.xml" rel="alternate" title="RSS Feed" type="application/rss+xml"/><!-- OneTrust Cookies Consent Notice start for cloudbees.com -->
<script src="https://cdn.cookielaw.org/scripttemplates/otSDKStub.js" type="text/javascript" charset="UTF-8" data-domain-script="30e8c8b5-5f2b-4d72-a544-f68ac4b5ebe8" ></script>
<script type="text/javascript">
function OptanonWrapper() {
// Get initial OnetrustActiveGroups ids
if(typeof OptanonWrapperCount == "undefined"){
otGetInitialGrps();
}
//Delete cookies
otDeleteCookie(otIniGrps);
// Assign OnetrustActiveGroups to custom variable
function otGetInitialGrps(){
OptanonWrapperCount = '';
otIniGrps = OnetrustActiveGroups;
// console.log("otGetInitialGrps", otIniGrps)
}
function otDeleteCookie(iniOptGrpId)
{
var otDomainGrps = JSON.parse(JSON.stringify(Optanon.GetDomainData().Groups));
var otDeletedGrpIds = otGetInactiveId(iniOptGrpId, OnetrustActiveGroups);
if(otDeletedGrpIds.length != 0 && otDomainGrps.length !=0){
for(var i=0; i < otDomainGrps.length; i++){
//Check if CustomGroupId matches
if(otDomainGrps[i]['CustomGroupId'] != '' && otDeletedGrpIds.includes(otDomainGrps[i]['CustomGroupId'])){
for(var j=0; j < otDomainGrps[i]['Cookies'].length; j++){
// console.log("otDeleteCookie",otDomainGrps[i]['Cookies'][j]['Name'])
//Delete cookie
eraseCookie(otDomainGrps[i]['Cookies'][j]['Name']);
}
}
//Check if Hostid matches
if(otDomainGrps[i]['Hosts'].length != 0){
for(var j=0; j < otDomainGrps[i]['Hosts'].length; j++){
//Check if HostId presents in the deleted list and cookie array is not blank
if(otDeletedGrpIds.includes(otDomainGrps[i]['Hosts'][j]['HostId']) && otDomainGrps[i]['Hosts'][j]['Cookies'].length !=0){
for(var k=0; k < otDomainGrps[i]['Hosts'][j]['Cookies'].length; k++){
//Delete cookie
eraseCookie(otDomainGrps[i]['Hosts'][j]['Cookies'][k]['Name']);
}
}
}
}
}
}
otGetInitialGrps(); //Reassign new group ids
}
//Get inactive ids
function otGetInactiveId(customIniId, otActiveGrp){
//Initial OnetrustActiveGroups
// console.log("otGetInactiveId",customIniId)
customIniId = customIniId.split(",");
customIniId = customIniId.filter(Boolean);
//After action OnetrustActiveGroups
otActiveGrp = otActiveGrp.split(",");
otActiveGrp = otActiveGrp.filter(Boolean);
var result=[];
for (var i=0; i < customIniId.length; i++){
if ( otActiveGrp.indexOf(customIniId[i]) <= -1 ){
result.push(customIniId[i]);
}
}
return result;
}
//Delete Cookies by Name Pattern
function findCookiesByPattern(cookieNamePattern){
var cookies = document.cookie.split(';');
var dataCookies = cookies.filter(function(cookie){
if (cookie.trim().indexOf(cookieNamePattern) === 0) {
var cookieName = cookie.substr(0,cookie.indexOf('='));
eraseCookie(cookieName)
return true;
} else {
return false;
}
});
}
//Delete cookie
function eraseCookie(name) {
if (name === '_ga_xxxxxxxxxx') {
findCookiesByPattern('_ga_')
}
if (name === '_gclxxxx') {
findCookiesByPattern('_gcl')
}
//Delete root path cookies
domainName = window.location.hostname;
domainNameDot = '.'+domainName.replace(/www./g, "");
document.cookie = name+'=; Max-Age=-99999999; Path=/;Domain='+ domainNameDot;
document.cookie = name+'=; Max-Age=-99999999; Path=/;Domain='+ domainName;
document.cookie = name+'=; Max-Age=-99999999; Path=/;';
//Delete LSO incase LSO being used, cna be commented out.
localStorage.removeItem(name);
//Check for the current path of the page
pathArray = window.location.pathname.split('/');
//Loop through path hierarchy and delete potential cookies at each path.
for (var i=0; i < pathArray.length; i++){
if (pathArray[i]){
//Build the path string from the Path Array e.g /site/login
var currentPath = pathArray.slice(0,i+1).join('/');
document.cookie = name+'=; Max-Age=-99999999; Path=' + currentPath + ';Domain='+ domainNameDot;
document.cookie = name+'=; Max-Age=-99999999; Path=' + currentPath + ';Domain='+ domainName;
document.cookie = name+'=; Max-Age=-99999999; Path=' + currentPath + ';';
//Maybe path has a trailing slash!
document.cookie = name+'=; Max-Age=-99999999; Path=' + currentPath + '/;Domain='+ domainNameDot;
document.cookie = name+'=; Max-Age=-99999999; Path=' + currentPath + '/;Domain='+ domainName;
document.cookie = name+'=; Max-Age=-99999999; Path=' + currentPath + '/;';
}
}
}
}
</script>
<!-- OneTrust Cookies Consent Notice end for cloudbees.com -->
<!-- WebFlow OneTrust Cookies Consent Integration -->
<script>
const runConsentMode = () => {
wf.ready(() => {
// Function to opt in or out based on consent preferences
const handleWebflowAnalyticsConsent = () => {
try {
// Logic to check consent groups from the OneTrust cookie
const otCookieKey = 'OptanonConsent=';
const otCookie = document.cookie.split('; ').find(row => row.startsWith(otCookieKey));
if (!otCookie) {
throw new Error('OneTrust cookie not found.');
}
const otGroupsKey = 'groups=';
const otGroups = decodeURIComponent(otCookie.split('&').find(row => row.startsWith(otGroupsKey)).split('=')[1]);
// OneTrust groups: 1 = necessary, 2 = performance, 3 = functional, 4 = targeting
const OT_FUNCTIONAL_CONSENT = 'C0003:1'; // Ensure this matches your expected consent group
// Check for functional cookies group
const hasOptedIn = otGroups.indexOf(OT_FUNCTIONAL_CONSENT) !== -1;
// Adjust Webflow Analytics opt-in/out based on consent
if (hasOptedIn) {
wf.allowUserTracking();
} else {
wf.denyUserTracking();
}
} catch (e) {
console.error('Error handling OneTrust consent:', e);
}
};
// Set up the OneTrust consent change listener to check when preferences change
if (typeof OneTrust !== 'undefined' && OneTrust.OnConsentChanged) {
OneTrust.OnConsentChanged(() => {
handleWebflowAnalyticsConsent();
});
}
// Initial check when the page loads
handleWebflowAnalyticsConsent();
});
};
if (typeof window.wf !== "undefined" && typeof window.wf.ready === "function") {
window.wf.ready(runConsentMode);
} else {
// fallback so your code still runs
document.addEventListener("DOMContentLoaded", runConsentMode);
console.warn("wf is not defined; using DOMContentLoaded fallback");
}
</script>
<!-- WebFlow OneTrust Cookies Consent Integration -->
<!-- Initial Google Consent Set to denied to match OneTrust -->
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
// Default is DENIED (matches your OneTrust default reject)
gtag('consent', 'default', {
ad_storage: 'denied',
ad_user_data: 'denied',
ad_personalization: 'denied',
analytics_storage: 'denied',
functionality_storage: 'denied',
personalization_storage: 'denied',
security_storage: 'granted',
wait_for_update: 500
});
</script>
<!-- End Initial Google Consent Set to denied to match OneTrust -->
<!-- Navattic JS (MKT-2104) — queue stub + async SDK, loaded for ALL visitors.
Moved here from the GTM "Navattic JS" tag so consent can be signalled via
setCookieConsent (see the OneTrust->Google sync below). Remove the GTM tag when this ships. -->
<script>
void 0===window.navatticQueue&&(window.navatticQueue=[],window.navattic=new Proxy({},{get:function n(t,u,e){return function(){for(var n=arguments.length,t=Array(n),e=0;e<n;e++)t[e]=arguments[e];return navatticQueue.push({function:u,arguments:t})}}}));
</script>
<script async src="https://js.navattic.com/sdk.js?key=pkey_cm9vjdepy000j04l4hexl9p18"></script>
<!-- End Navattic JS -->
<!-- Update Google Consent to match OneTrust Consent Categories-->
<script>
(function(){
const OT_ANALYTICS = "C0002"; // OneTrust Performance Cookies Group ID
const OT_FUNCTIONALITY = "C0003"; // OneTrust Functional Cookies Group ID
const OT_ADS_PERSONALIZATION = "C0004"; // OneTrust Targeting Cookies Group ID
function getGroups() {
const oc = document.cookie.split("; ").find(x => x.startsWith("OptanonConsent="));
if (!oc) return "";
const groupsParam = oc.split("&").find(x => x.startsWith("groups="));
return groupsParam ? decodeURIComponent(groupsParam.split("=")[1]) : "";
}
function syncConsentToGoogle() {
const groups = getGroups();
const analyticsOn = groups.includes(`${OT_ANALYTICS}:1`);
const functionalityOn = groups.includes(`${OT_FUNCTIONALITY}:1`);
const targettingOn = groups.includes(`${OT_ADS_PERSONALIZATION}:1`);
gtag("consent", "update", {
ad_storage: targettingOn ? "granted" : "denied",
ad_user_data: targettingOn ? "granted" : "denied",
ad_personalization: targettingOn ? "granted" : "denied",
analytics_storage: analyticsOn ? "granted" : "denied",
functionality_storage: functionalityOn ? "granted" : "denied",
personalization_storage: targettingOn ? "granted" : "denied",
});
// MKT-2104: mirror Targeting (C0004) consent to Navattic — runs anonymously (no cookies/PII) when denied,
// but still emits events so the Google Ads conversion can send a cookieless (modeled) ping.
try { navattic.setCookieConsent(targettingOn); } catch (e) {}
}
window.addEventListener("OneTrustGroupsUpdated", syncConsentToGoogle);
syncConsentToGoogle();
})();
</script>
<!-- End Update Google Consent to match OneTrust Consent Categories-->
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-KMJ7D77');</script>
<!-- End Google Tag Manager -->
<!-- Ad Attribution Session Storage -->
<script>
(function () {
const params = new URLSearchParams(window.location.search);
const utms = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term'];
const captured = {};
utms.forEach((key) => {
if (params.get(key)) captured[key] = params.get(key);
});
if (Object.keys(captured).length > 0) {
// Tag the originating page so we know where the session started
captured.utm_landing_page = window.location.pathname;
sessionStorage.setItem('cb_ad_attribution', JSON.stringify(captured));
}
})();
</script>
<!-- End Ad Attribution Session Storage -->
<style>
.nav__banner {
display: none;
}
.nav__banner.show {
display: block;
}
</style>
<!-- Privacy-friendly analytics by Plausible -->
<script async src="https://plausible.io/js/pa-hcJukO43tqwUkZ00jY7P2.js"></script>
<script>
window.plausible=window.plausible||function(){(plausible.q=plausible.q||[]).push(arguments)},plausible.init=plausible.init||function(i){plausible.o=i||{}};
plausible.init()
</script><!--head code-->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Roboto+Mono:wght@400&display=swap" rel="stylesheet">
<!-- <meta
property="og:image"
content="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/6a8569f061da12045317c7d2_OG%20-%20%20CloudBees%20Blog.png"
> --></head><body><div class="page-wrapper"><div class="styles"><div class="global-styles w-embed"><style>
/* Make text look crisper and more legible in all browsers */
body {
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
font-smoothing: antialiased;
text-rendering: optimizeLegibility;
}
/* Focus state style for keyboard navigation for the focusable elements */
*[tabindex]:focus-visible,
input[type="file"]:focus-visible {
outline: 0.125rem solid #4d65ff;
outline-offset: 0.125rem;
}
/* Get rid of top margin on first element in any rich text element */
.w-richtext > :not(div):first-child, .w-richtext > div:first-child > :first-child {
margin-top: 0 !important;
}
/* Get rid of bottom margin on last element in any rich text element */
.w-richtext>:last-child, .w-richtext ol li:last-child, .w-richtext ul li:last-child {
margin-bottom: 0 !important;
}
/* Create a class of .div-square which maintains a 1:1 dimension of a div */
.div-square::after {
content: "";
display: block;
padding-bottom: 100%;
}
/* Make sure containers never lose their center alignment */
.container-medium,.container-small, .container-large, .container-huge {
margin-right: auto !important;
margin-left: auto !important;
}
/*
Make the following elements inherit typography styles from the parent and not have hardcoded values.
Important: You will not be able to style for example "All Links" in Designer with this CSS applied.
Uncomment this CSS to use it in the project. Leave this message for future hand-off.
*/
/*
a,
.w-input,
.w-select,
.w-tab-link,
.w-nav-link,
.w-dropdown-btn,
.w-dropdown-toggle,
.w-dropdown-link {
color: inherit;
text-decoration: inherit;
font-size: inherit;
}
*/
/* Apply "..." after 3 lines of text */
.ts-3lines {
display: -webkit-box;
overflow: hidden;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
}
/* Apply "..." after 2 lines of text */
.ts-2lines {
display: -webkit-box;
overflow: hidden;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
/* Apply "..." after 1 lines of text */
.ts-1line {
display: -webkit-box;
overflow: hidden;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
}
/* Adds inline flex display */
.display-inlineflex {
display: inline-flex;
}
/* These classes are never overwritten */
.hide {
display: none !important;
}
@media screen and (max-width: 991px),
@media screen and (max-width: 767px),
@media screen and (max-width: 479px){
.hide, .hide-tablet{
display: none !important;
}
}
@media screen and (max-width: 767px)
.hide-mobile-landscape{
display: none !important;
}
}
@media screen and (max-width: 479px)
.hide-mobile{
display: none !important;
}
}
/* Removes native scrollbar */
.no-scrollbar,
[data-scrollbar="none"] {
-ms-overflow-style: none; /* For Internet Explorer and Edge */
overflow: -moz-scrollbars-none; /* For Firefox */
}
.no-scrollbar::-webkit-scrollbar,
[data-scrollbar="none"]::-webkit-scrollbar {
display: none; /* For Chrome, Safari, and Opera */
}
[x-clip] {
overflow-x: clip;
}
body.popup-open {
overflow: hidden;
padding-right: var(--scrollbar-width);
}
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border: 0;
}
.mktoCaptchaDisclaimer {
color: #666;
}
</style></div><div class="project-styles w-embed"><style>
.button:hover .button-arrow {
transform: translateX(2px);
}
.btn-contrast .btn-icon {
filter: invert(6%) sepia(12%) saturate(420%) hue-rotate(200deg) brightness(20%) contrast(110%);
}
.btn-sm .btn-icon {
width: 1.25rem;
height: 1.25rem;
}
.swiper-arrow.swiper-button-disabled {
pointer-events: none;
color: var(--_tokens---button--secondary-disabled);
border-color: var(--_tokens---button--secondary-disabled);
}
.contact_rte ul > li:before,
.tabs_rte ul > li:before,
.main_rte ul > li:before,
.main_rte-p2 ul > li:before {
content: '';
height: 1.25rem;
width: 1.25rem;
min-width: 1.25rem;
margin-top: 0.125rem;
display: block;
position: absolute;
left: -2rem;
background: url('https://cdn.prod.website-files.com/695e1939655d6c0175b126da/6965dcada9cbb61894fcd729_check-circle-secondary.svg') center no-repeat;
background-size: contain;
}
.contact_rte p:has(+ ul),
.contact_rte p:has(+ ol) {
margin-bottom: 1rem !important;
}
.white_rte ul > li:before,
.article_white_rte ul > li:before {
content: '';
height: 1.5rem;
width: 1.5rem;
min-width: 1.5rem;
margin-top: 0.125rem;
display: block;
background: url('https://cdn.prod.website-files.com/695e1939655d6c0175b126da/69611147c4643f011be05298_check-circle.svg') center no-repeat;
background-size: contain;
}
.global_section:has(.global_frame) {
padding: 0 var(--_spacing---padding--side-20);
}
.global_section:has(.global_frame-no-border) {
padding-left: var(--_spacing---padding--side-20);
padding-right: var(--_spacing---padding--side-20);
}
.story_bg-wr {
overflow-x: clip;
}
.side_layout:last-child {
margin-bottom: 0;
}
.product_swiper-tab-bullet .product_tab_logo {
opacity: 0.4;
}
.product_swiper-tab-bullet.is-active .product_tab_logo {
opacity: 0.7;
}
@media (min-width: 480px) {
.product_tab-link_logo {
display: none;
}
}
.logo-ribbon-wr {
-webkit-mask: linear-gradient(90deg, #00000000 0%, #000000 10% 90%, #00000000 100%);
mask: linear-gradient(90deg, #00000000 0%, #000000 10% 90%, #00000000 100%);
}
#popup-content .wistia_embed {
width: 100% !important;
aspect-ratio: 16/9 !important;
}
.story_img-wr .ts-cap {
margin: 0 auto;
max-width: 90%;
text-align: center;
}
.cms_share-link.is-copied .is-url {
opacity: 0;
}
.cms_share-link.is-copied .is-url-check {
opacity: 1;
}
</style></div><div class="w-embed"><style>
.logo-ribbon-wr.is-investor .logo-ribbon_row-wr {
opacity: 1;
}
/* Logo Ribbon Animation */
@keyframes scroll {
from {
transform: translateX(0);
}
to {
transform: translateX(calc(-100% - 6.25rem));
}
}
.logo-ribbon_row-wr {
animation: scroll 35s linear infinite;
}
/* Mobile Styles */
@media (max-width: 767px) { /* Adjust the max-width as needed */
@keyframes scroll {
from {
transform: translateX(0);
}
to {
transform: translateX(calc(-100% - 3.5rem));
}
}
.logo-ribbon_row-wr {
animation: scroll 30s linear infinite;
}
}
</style></div></div><div data-banner="show" class="nav__banner"><div class="top-banner_code w-embed w-script"><script>
document.addEventListener('DOMContentLoaded', function () {
const banner = document.querySelector('.nav__banner');
const closeButton = document.getElementById('banner-close');
// 👀 Check if banner should be shown based on attribute
const bannerState = banner?.getAttribute('data-banner');
if (bannerState === 'hide') {
banner?.classList.remove('show');
return; // skip all logic
}
const lastShown = localStorage.getItem('bannerLastShown');
const now = new Date();
let shouldShow = true;
if (lastShown) {
const lastShownDate = new Date(lastShown);
const diffDays = Math.floor((now - lastShownDate) / (1000 * 60 * 60 * 24));
if (diffDays <= 7) {
shouldShow = false;
}
}
const bannerClosed = localStorage.getItem('bannerClosed');
if (bannerClosed === 'true') {
shouldShow = false;
}
if (shouldShow) {
banner?.classList.add('show');
}
closeButton?.addEventListener('click', function () {
banner?.classList.remove('show');
localStorage.setItem('bannerClosed', 'true');
localStorage.setItem('bannerLastShown', now.toISOString());
});
});
</script></div><div id="banner-close" class="nav-banner__close-button"><div class="nav-banner__close-button__image w-embed"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M6.4 19L5 17.6L10.6 12L5 6.4L6.4 5L12 10.6L17.6 5L19 6.4L13.4 12L19 17.6L17.6 19L12 13.4L6.4 19Z" fill="currentcolor"/>
</svg></div></div><div href="#" class="nav-banner__content__wrapper"><div class="nav-banner__content"><div class="banner_label">New</div><p id="nav-banner-text" class="nav-banner-text">A note from our new CEO Moritz Plassnig</p><a data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a856:065b8505-25cf-4b0e-3cb3-92c9f08f6f13" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="065b8505-25cf-4b0e-3cb3-92c9f08f6f13" data-wf-component-context="%5B%7B%22componentId%22%3A%22065b8505-25cf-4b0e-3cb3-92c9f08f6f09%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a856%22%7D%5D" href="https://www.cloudbees.com/blog/introducing-moritz-plassnig-cloudbees-ceo/" class="btn is-text-sm is-nav-banner w-inline-block"><div>Read the announcement</div><div class="icon-regular w-embed"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5137 6.46826C13.8078 6.17663 14.2825 6.17816 14.5742 6.47217L19.5322 11.4722C19.8219 11.7646 19.8221 12.2365 19.5322 12.5288L14.5742 17.5288C14.2826 17.8225 13.8077 17.824 13.5137 17.5327C13.2198 17.2411 13.2175 16.7663 13.5088 16.4722L17.2002 12.7505H5C4.58595 12.7505 4.25026 12.4145 4.25 12.0005C4.25 11.5863 4.58579 11.2505 5 11.2505H17.2002L13.5088 7.52881C13.2173 7.2348 13.2199 6.75994 13.5137 6.46826Z" fill="currentcolor"/>
</svg></div></a></div></div></div><div class="header-wr"><div class="nav-styles w-embed"><style>
.header.scroll .header__bg {
opacity: 1;
}
.nav__dd-trigger.w--open .nav__dd_arrow {
transform: rotateZ(180deg);
}
.nav__dd_menu-wr .nav__dd_group:last-child {
border-right: none;
}
@media screen and (min-width: 1280px) {
.nav__menu-list:has(.nav__dd-trigger[dd="small"].w--open) {
position: relative;
}
.nav__menu-list:not(:has(.nav__dd-trigger[dd="small"].w--open)) {
position: static;
}
.nav__dd-trigger[dd="small"] + .nav__dd-content {
top: 28px;
}
}
@media (max-width: 767px) {
.btn-nav .btn-text {
font-size: var(--_typography---size--p3);
line-height: var(--_typography---height--p3);
}
</style></div><header id="header" class="header"><div class="header__container"><a aria-label="Go to Home page" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b3e" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="82ab6d2f-ec31-6cad-cafc-b3b1e8663b3e" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%5D" href="/" class="header__brand w-inline-block"><img loading="eager" src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/696254cf9924a1df0698d83e_Brand%20Logo.svg" alt="CloudBees Logo" class="company-logo_img"/></a><div class="nav__layout"><nav class="nav__menu-list"><div class="mobile_header"><a aria-label="Go to Home page" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b43" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="82ab6d2f-ec31-6cad-cafc-b3b1e8663b43" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%5D" href="/" class="header__brand w-inline-block"><img loading="eager" src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/696254cf9924a1df0698d83e_Brand%20Logo.svg" alt="CloudBees Logo" class="company-logo_img"/></a><div class="mobile_header-btn-wr"><div class="header__buttons-wr"><a data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b47" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="82ab6d2f-ec31-6cad-cafc-b3b1e8663b47" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%5D" href="https://www.cloudbees.com/contact-us" class="btn-nav btn-primary w-inline-block"><div class="btn-text">Book a demo</div></a></div><a data-w-id="82ab6d2f-ec31-6cad-cafc-b3b1e8663b4c" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b4c" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="82ab6d2f-ec31-6cad-cafc-b3b1e8663b4c" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%5D" href="#" class="nav__menu-button w-inline-block"><div class="nav__menu-icon is-cross w-embed"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14.4697 4.46985C14.7626 4.17696 15.2374 4.17696 15.5303 4.46985C15.8231 4.76275 15.8231 5.23754 15.5303 5.5304L11.0605 10.0001L15.5303 14.4698C15.8231 14.7628 15.8231 15.2375 15.5303 15.5304C15.2374 15.8233 14.7626 15.8232 14.4697 15.5304L10 11.0607L5.53027 15.5304C5.23742 15.8233 4.76263 15.8232 4.46973 15.5304C4.17683 15.2375 4.17683 14.7627 4.46973 14.4698L8.93945 10.0001L4.46973 5.5304C4.17683 5.2375 4.17683 4.76274 4.46973 4.46985C4.76262 4.17696 5.23738 4.17696 5.53027 4.46985L10 8.93958L14.4697 4.46985Z" fill="white"/>
</svg></div></a></div></div><ul data-scrollbar="none" role="list" class="nav__menu"><li class="nav__list-item"><div data-delay="0" data-hover="false" class="nav__dd w-dropdown"><div dd="small" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b51" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="82ab6d2f-ec31-6cad-cafc-b3b1e8663b51" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%5D" class="nav__dd-trigger w-dropdown-toggle"><div>Product</div><div class="nav__dd_arrow w-embed"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false">
<path d="M14.4697 6.96985C14.7626 6.67696 15.2374 6.67696 15.5303 6.96985C15.8231 7.26275 15.8231 7.73754 15.5303 8.0304L10.5303 13.0304C10.2374 13.3233 9.76263 13.3232 9.46973 13.0304L4.46973 8.0304C4.17683 7.7375 4.17683 7.26274 4.46973 6.96985C4.76262 6.67696 5.23738 6.67696 5.53027 6.96985L10 11.4396L14.4697 6.96985Z" fill="white" fill-opacity="0.5"/>
</svg></div></div><nav class="nav__dd-content w-dropdown-list"><div class="nav__dd_menu-wr is-small"><div id="w-node-f74b5068-adc7-1a9c-53c4-9f2f35f2a1be-35f2a1bd" class="nav__dd_group is-link"><a data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b56:f74b5068-adc7-1a9c-53c4-9f2f35f2a1bf" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="f74b5068-adc7-1a9c-53c4-9f2f35f2a1bf" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%2C%7B%22componentId%22%3A%22f74b5068-adc7-1a9c-53c4-9f2f35f2a1bd%22%2C%22instanceId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b56%22%7D%5D" href="/unify" class="nav__dd_featured-link w-inline-block"><img src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/6984deccc2defde3d4f42ad0_f2942b06ac3aa33a70161ed027fdea6b_Unify-Overview-nav-feature.avif" loading="eager" sizes="100vw" srcset="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/6984deccc2defde3d4f42ad0_f2942b06ac3aa33a70161ed027fdea6b_Unify-Overview-nav-feature-p-500.avif 500w, https://cdn.prod.website-files.com/695e1939655d6c0175b126da/6984deccc2defde3d4f42ad0_f2942b06ac3aa33a70161ed027fdea6b_Unify-Overview-nav-feature.avif 744w" alt="CloudBees Unify Analytics screen." class="nav__dd_featured-img"/><div class="nav__dd_featured_text-group"><div class="nav__dd_featured_text-wr"><div class="nav__dd_link-title">CloudBees Unify Overview</div></div><p class="nav__dd_link-desc">CloudBees Unify gives enterprises one shared language across the SDLC.</p><div class="btn is-text-sm"><div>Explore</div><div class="icon-regular w-embed"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5137 6.46826C13.8078 6.17663 14.2825 6.17816 14.5742 6.47217L19.5322 11.4722C19.8219 11.7646 19.8221 12.2365 19.5322 12.5288L14.5742 17.5288C14.2826 17.8225 13.8077 17.824 13.5137 17.5327C13.2198 17.2411 13.2175 16.7663 13.5088 16.4722L17.2002 12.7505H5C4.58595 12.7505 4.25026 12.4145 4.25 12.0005C4.25 11.5863 4.58579 11.2505 5 11.2505H17.2002L13.5088 7.52881C13.2173 7.2348 13.2199 6.75994 13.5137 6.46826Z" fill="currentcolor"/>
</svg></div></div></div></a></div><div class="nav__dd_group is-small"><ul role="list" class="nav__dd_links_list is-1col is-first"><li><a href="/capabilities/ci-cd-workflows" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b56:f74b5068-adc7-1a9c-53c4-9f2f35f2a1cd" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="f74b5068-adc7-1a9c-53c4-9f2f35f2a1cd" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%2C%7B%22componentId%22%3A%22f74b5068-adc7-1a9c-53c4-9f2f35f2a1bd%22%2C%22instanceId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b56%22%7D%5D" class="nav__dd_link w-inline-block"><div class="nav__dd_link-icon"><img src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/696a0976938a76b54533480c_cd57991f6dbd9328eda91ca192bfeea3_workflow.svg" loading="lazy" alt="" class="nav__dd_link-ic"/></div><div class="nav__dd_link_text-wr"><div class="nav__dd_link-title">CI/CD</div><p class="nav__dd_link-desc">Streamline CI/CD workflows for faster innovation and reliable deployments</p></div></a></li><li><a href="/capabilities/compliance" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b56:f74b5068-adc7-1a9c-53c4-9f2f35f2a1d6" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="f74b5068-adc7-1a9c-53c4-9f2f35f2a1d6" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%2C%7B%22componentId%22%3A%22f74b5068-adc7-1a9c-53c4-9f2f35f2a1bd%22%2C%22instanceId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b56%22%7D%5D" class="nav__dd_link w-inline-block"><div class="nav__dd_link-icon"><img src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/696a0c88dd3eb1f35371ef1f_28cb23b26a1cbf8530073bffa6ab8f59_shield-check.svg" loading="lazy" alt="" class="nav__dd_link-ic"/></div><div class="nav__dd_link_text-wr"><div class="nav__dd_link-title">Security and Compliance</div><p class="nav__dd_link-desc">Continuous security and compliance assessment with control insights</p></div></a></li><li><a href="/capabilities/feature-management" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b56:f74b5068-adc7-1a9c-53c4-9f2f35f2a1df" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="f74b5068-adc7-1a9c-53c4-9f2f35f2a1df" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%2C%7B%22componentId%22%3A%22f74b5068-adc7-1a9c-53c4-9f2f35f2a1bd%22%2C%22instanceId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b56%22%7D%5D" class="nav__dd_link w-inline-block"><div class="nav__dd_link-icon"><img src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/696a09758beb7f5fc8c2d179_6cd04eba7a6b0b34a9e98db62bd08f7e_flag.svg" loading="lazy" alt="" class="nav__dd_link-ic"/></div><div class="nav__dd_link_text-wr"><div class="nav__dd_link-title">Feature Management</div><p class="nav__dd_link-desc">Control feature rollouts with flags for safer, faster releases and testing</p></div></a></li></ul></div><div class="nav__dd_group is-small"><ul role="list" class="nav__dd_links_list is-1col"><li><a href="/capabilities/cloudbees-smart-tests" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b56:f74b5068-adc7-1a9c-53c4-9f2f35f2a1ea" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="f74b5068-adc7-1a9c-53c4-9f2f35f2a1ea" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%2C%7B%22componentId%22%3A%22f74b5068-adc7-1a9c-53c4-9f2f35f2a1bd%22%2C%22instanceId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b56%22%7D%5D" class="nav__dd_link w-inline-block"><div class="nav__dd_link-icon"><img src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/696a0975c1d9a5fab249c9b2_563273da20b713605c4625ca0ba0cc09_flask-conical.svg" loading="lazy" alt="" class="nav__dd_link-ic"/></div><div class="nav__dd_link_text-wr"><div class="nav__dd_link-title">Smart Tests</div><p class="nav__dd_link-desc">AI-driven test intelligence that delivers developer feedback 80% faster</p></div></a></li><li><a href="/capabilities/release-orchestration" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b56:f74b5068-adc7-1a9c-53c4-9f2f35f2a1f3" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="f74b5068-adc7-1a9c-53c4-9f2f35f2a1f3" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%2C%7B%22componentId%22%3A%22f74b5068-adc7-1a9c-53c4-9f2f35f2a1bd%22%2C%22instanceId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b56%22%7D%5D" class="nav__dd_link w-inline-block"><div class="nav__dd_link-icon"><img src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/696a0976e9236cb5e93c4c16_17a9899912c5755e26e2d7362c206518_waypoints.svg" loading="lazy" alt="" class="nav__dd_link-ic"/></div><div class="nav__dd_link_text-wr"><div class="nav__dd_link-title">Release Orchestration</div><p class="nav__dd_link-desc">Orchestrate complex releases with DevOps ecosystem visibility</p></div></a></li><li><a href="/capabilities/analytics" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b56:f74b5068-adc7-1a9c-53c4-9f2f35f2a1fc" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="f74b5068-adc7-1a9c-53c4-9f2f35f2a1fc" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%2C%7B%22componentId%22%3A%22f74b5068-adc7-1a9c-53c4-9f2f35f2a1bd%22%2C%22instanceId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b56%22%7D%5D" class="nav__dd_link w-inline-block"><div class="nav__dd_link-icon"><img src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/696a0975b85d7acb849512d2_f7d862b2e5c030eb99eac717ed65ff00_chart-column.svg" loading="lazy" alt="" class="nav__dd_link-ic"/></div><div class="nav__dd_link_text-wr"><div class="nav__dd_link-title">Analytics</div><p class="nav__dd_link-desc">Single source of truth for software delivery insights and metrics</p></div></a></li></ul></div></div></nav></div></li><li class="nav__list-item"><div data-delay="0" data-hover="false" class="nav__dd w-dropdown"><div dd="small" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b59" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="82ab6d2f-ec31-6cad-cafc-b3b1e8663b59" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%5D" class="nav__dd-trigger w-dropdown-toggle"><div>Solutions</div><div class="nav__dd_arrow w-embed"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false">
<path d="M14.4697 6.96985C14.7626 6.67696 15.2374 6.67696 15.5303 6.96985C15.8231 7.26275 15.8231 7.73754 15.5303 8.0304L10.5303 13.0304C10.2374 13.3233 9.76263 13.3232 9.46973 13.0304L4.46973 8.0304C4.17683 7.7375 4.17683 7.26274 4.46973 6.96985C4.76262 6.67696 5.23738 6.67696 5.53027 6.96985L10 11.4396L14.4697 6.96985Z" fill="white" fill-opacity="0.5"/>
</svg></div></div><nav class="nav__dd-content w-dropdown-list"><div class="nav__dd_menu-wr is-solutions"><div class="nav__dd_group"><div class="nav__dd_group_title-wr"><p class="nav__dd_group-title">Use Cases</p></div><ul role="list" class="nav__dd_links_list"><li><a href="/use-case/jenkins-modernization" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b5e:44a36620-13c5-fbfe-5a1a-6f9877d1bd8d" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="44a36620-13c5-fbfe-5a1a-6f9877d1bd8d" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%2C%7B%22componentId%22%3A%2244a36620-13c5-fbfe-5a1a-6f9877d1bd86%22%2C%22instanceId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b5e%22%7D%5D" class="nav__dd_link w-inline-block"><div class="nav__dd_link-icon"><img src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/696a097657c04ac5445ae13b_1e2655369bf05b4c399a533ce3eb3a04_server-cog.svg" loading="lazy" alt="" class="nav__dd_link-ic"/></div><div class="nav__dd_link_text-wr"><div class="nav__dd_link-title">AI-Powered CI</div></div></a></li><li><a href="/use-case/agentic-devops" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b5e:44a36620-13c5-fbfe-5a1a-6f9877d1bd96" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="44a36620-13c5-fbfe-5a1a-6f9877d1bd96" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%2C%7B%22componentId%22%3A%2244a36620-13c5-fbfe-5a1a-6f9877d1bd86%22%2C%22instanceId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b5e%22%7D%5D" class="nav__dd_link w-inline-block"><div class="nav__dd_link-icon"><img src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/696a097521987fff4d2849a2_3470f8c00f2f5ea8f1e1e7d1d8e380c5_bot.svg" loading="lazy" alt="" class="nav__dd_link-ic"/></div><div class="nav__dd_link_text-wr"><div class="nav__dd_link-title">Governed AI software delivery</div></div></a></li><li><a href="/use-case/orchestration-and-governance" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b5e:44a36620-13c5-fbfe-5a1a-6f9877d1bd9f" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="44a36620-13c5-fbfe-5a1a-6f9877d1bd9f" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%2C%7B%22componentId%22%3A%2244a36620-13c5-fbfe-5a1a-6f9877d1bd86%22%2C%22instanceId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b5e%22%7D%5D" class="nav__dd_link w-inline-block"><div class="nav__dd_link-icon"><img src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/696a0976c8ea52b40d7228ae_d14f4e4bd20ee92db2d44d35057f898e_network.svg" loading="lazy" alt="" class="nav__dd_link-ic"/></div><div class="nav__dd_link_text-wr"><div class="nav__dd_link-title">Multi-tool release orchestration</div></div></a></li><li><a href="/use-case/security-and-compliance" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b5e:44a36620-13c5-fbfe-5a1a-6f9877d1bda8" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="44a36620-13c5-fbfe-5a1a-6f9877d1bda8" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%2C%7B%22componentId%22%3A%2244a36620-13c5-fbfe-5a1a-6f9877d1bd86%22%2C%22instanceId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b5e%22%7D%5D" class="nav__dd_link w-inline-block"><div class="nav__dd_link-icon"><img src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/696a097552e78c474078eae9_2e34c7f0d98b1272a44c7002b60ff4e4_brick-wall-shield.svg" loading="lazy" alt="" class="nav__dd_link-ic"/></div><div class="nav__dd_link_text-wr"><div class="nav__dd_link-title">Continuous Security and Compliance</div></div></a></li></ul></div><div id="w-node-_44a36620-13c5-fbfe-5a1a-6f9877d1bdb0-77d1bd86" class="nav__dd_group is-wide"><div class="nav__dd_group_title-wr"><p class="nav__dd_group-title">Industries</p></div><ul role="list" class="nav__dd_links_list is-2col"><li><a href="/industries/automotive" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b5e:44a36620-13c5-fbfe-5a1a-6f9877d1bdb6" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="44a36620-13c5-fbfe-5a1a-6f9877d1bdb6" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%2C%7B%22componentId%22%3A%2244a36620-13c5-fbfe-5a1a-6f9877d1bd86%22%2C%22instanceId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b5e%22%7D%5D" class="nav__dd_link w-inline-block"><div class="nav__dd_link-icon"><img src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/696a0975d02ebe816d59a6a2_f2a2a13a1181cd590a39ba6b764ec8be_car.svg" loading="lazy" alt="" class="nav__dd_link-ic"/></div><div class="nav__dd_link_text-wr"><div class="nav__dd_link-title">Automotive</div></div></a></li><li><a href="/industries/government" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b5e:44a36620-13c5-fbfe-5a1a-6f9877d1bdbf" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="44a36620-13c5-fbfe-5a1a-6f9877d1bdbf" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%2C%7B%22componentId%22%3A%2244a36620-13c5-fbfe-5a1a-6f9877d1bd86%22%2C%22instanceId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b5e%22%7D%5D" class="nav__dd_link w-inline-block"><div class="nav__dd_link-icon"><img src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/696a09758c5181fd620d8cc0_e1e65c44301b4f93edb9c5043193d1a9_landmark.svg" loading="lazy" alt="" class="nav__dd_link-ic"/></div><div class="nav__dd_link_text-wr"><div class="nav__dd_link-title">Government</div></div></a></li><li><a href="/industries/financial-services" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b5e:44a36620-13c5-fbfe-5a1a-6f9877d1bdc8" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="44a36620-13c5-fbfe-5a1a-6f9877d1bdc8" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%2C%7B%22componentId%22%3A%2244a36620-13c5-fbfe-5a1a-6f9877d1bd86%22%2C%22instanceId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b5e%22%7D%5D" class="nav__dd_link w-inline-block"><div class="nav__dd_link-icon"><img src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/696a097527b3e2ada1f3b27d_9b267388f792400b2c9cf3fe8e57dc75_banknote.svg" loading="lazy" alt="" class="nav__dd_link-ic"/></div><div class="nav__dd_link_text-wr"><div class="nav__dd_link-title">Financial Services</div></div></a></li><li><a href="/industries/insurance" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b5e:44a36620-13c5-fbfe-5a1a-6f9877d1bdd1" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="44a36620-13c5-fbfe-5a1a-6f9877d1bdd1" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%2C%7B%22componentId%22%3A%2244a36620-13c5-fbfe-5a1a-6f9877d1bd86%22%2C%22instanceId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b5e%22%7D%5D" class="nav__dd_link w-inline-block"><div class="nav__dd_link-icon"><img src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/696a0976b084ff39f338a53a_07417b9c5387fb085880b29a50c1441d_umbrella.svg" loading="lazy" alt="" class="nav__dd_link-ic"/></div><div class="nav__dd_link_text-wr"><div class="nav__dd_link-title">Insurance</div></div></a></li><li><a href="/industries/retail" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b5e:44a36620-13c5-fbfe-5a1a-6f9877d1bdda" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="44a36620-13c5-fbfe-5a1a-6f9877d1bdda" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%2C%7B%22componentId%22%3A%2244a36620-13c5-fbfe-5a1a-6f9877d1bd86%22%2C%22instanceId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b5e%22%7D%5D" class="nav__dd_link w-inline-block"><div class="nav__dd_link-icon"><img src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/696a09761ce0ab5e29c71c4d_d0b8cb6b161886e01480db7f4bc2a6ea_store.svg" loading="lazy" alt="" class="nav__dd_link-ic"/></div><div class="nav__dd_link_text-wr"><div class="nav__dd_link-title">Retail</div></div></a></li><li><a href="/industries/software" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b5e:44a36620-13c5-fbfe-5a1a-6f9877d1bde3" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="44a36620-13c5-fbfe-5a1a-6f9877d1bde3" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%2C%7B%22componentId%22%3A%2244a36620-13c5-fbfe-5a1a-6f9877d1bd86%22%2C%22instanceId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b5e%22%7D%5D" class="nav__dd_link w-inline-block"><div class="nav__dd_link-icon"><img src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/696a0a825af84f44d78a96a0_b49b3d53bcc604cf9dd8844268a91d30_code.svg" loading="lazy" alt="" class="nav__dd_link-ic"/></div><div class="nav__dd_link_text-wr"><div class="nav__dd_link-title">Software</div></div></a></li></ul></div></div></nav></div></li><li class="nav__list-item"><div data-delay="0" data-hover="false" class="nav__dd w-dropdown"><div data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b61" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="82ab6d2f-ec31-6cad-cafc-b3b1e8663b61" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%5D" class="nav__dd-trigger w-dropdown-toggle"><div>Resources</div><div class="nav__dd_arrow w-embed"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false">
<path d="M14.4697 6.96985C14.7626 6.67696 15.2374 6.67696 15.5303 6.96985C15.8231 7.26275 15.8231 7.73754 15.5303 8.0304L10.5303 13.0304C10.2374 13.3233 9.76263 13.3232 9.46973 13.0304L4.46973 8.0304C4.17683 7.7375 4.17683 7.26274 4.46973 6.96985C4.76262 6.67696 5.23738 6.67696 5.53027 6.96985L10 11.4396L14.4697 6.96985Z" fill="white" fill-opacity="0.5"/>
</svg></div></div><nav class="nav__dd-content w-dropdown-list"><div class="nav__dd_menu-wr is4col"><div id="w-node-_21a8087d-8638-67de-c541-223e68ebb0b4-68ebb0b3" class="nav__dd_group is-wide-desktop"><div class="nav__dd_group_title-wr"><p class="nav__dd_group-title">Discover</p></div><ul role="list" class="nav__dd_links_list is-2col-desktop"><li><a href="https://ai.cloudbees.com/" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b66:21a8087d-8638-67de-c541-223e68ebb0ba" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="21a8087d-8638-67de-c541-223e68ebb0ba" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%2C%7B%22componentId%22%3A%2221a8087d-8638-67de-c541-223e68ebb0b3%22%2C%22instanceId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b66%22%7D%5D" class="nav__dd_link w-inline-block"><div class="nav__dd_link-icon"><img src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/696a0975be99e833813f5160_cb6c952934afa1d03155a6159f42086b_badge-plus.svg" loading="lazy" alt="" class="nav__dd_link-ic"/></div><div class="nav__dd_link_text-wr"><div class="nav__dd_link-title">AI Design Partner Program</div></div></a></li><li><a href="/resources" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b66:21a8087d-8638-67de-c541-223e68ebb0c3" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="21a8087d-8638-67de-c541-223e68ebb0c3" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%2C%7B%22componentId%22%3A%2221a8087d-8638-67de-c541-223e68ebb0b3%22%2C%22instanceId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b66%22%7D%5D" class="nav__dd_link w-inline-block"><div class="nav__dd_link-icon"><img src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/696a09757234a36b32ee7169_ba0212838c74830ebdf16ad261a51b42_layout-dashboard.svg" loading="lazy" alt="" class="nav__dd_link-ic"/></div><div class="nav__dd_link_text-wr"><div class="nav__dd_link-title">Resources Overview Page</div></div></a></li><li><a href="/blog" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b66:21a8087d-8638-67de-c541-223e68ebb0cc" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="21a8087d-8638-67de-c541-223e68ebb0cc" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%2C%7B%22componentId%22%3A%2221a8087d-8638-67de-c541-223e68ebb0b3%22%2C%22instanceId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b66%22%7D%5D" class="nav__dd_link w-inline-block"><div class="nav__dd_link-icon"><img src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/696a0976869064c0e6744f8c_3c5a6dc0f9fc9395357b740b417f062d_newspaper.svg" loading="lazy" alt="" class="nav__dd_link-ic"/></div><div class="nav__dd_link_text-wr"><div class="nav__dd_link-title">Blog</div></div></a></li><li><a href="/videos" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b66:21a8087d-8638-67de-c541-223e68ebb0d5" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="21a8087d-8638-67de-c541-223e68ebb0d5" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%2C%7B%22componentId%22%3A%2221a8087d-8638-67de-c541-223e68ebb0b3%22%2C%22instanceId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b66%22%7D%5D" class="nav__dd_link w-inline-block"><div class="nav__dd_link-icon"><img src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/696a0976a0447e86bed71d08_d795c7a1294838e19c44f8da0ffe5787_video.svg" loading="lazy" alt="" class="nav__dd_link-ic"/></div><div class="nav__dd_link_text-wr"><div class="nav__dd_link-title">Webinars &amp; Videos</div></div></a></li><li><a href="/events" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b66:21a8087d-8638-67de-c541-223e68ebb0de" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="21a8087d-8638-67de-c541-223e68ebb0de" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%2C%7B%22componentId%22%3A%2221a8087d-8638-67de-c541-223e68ebb0b3%22%2C%22instanceId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b66%22%7D%5D" class="nav__dd_link w-inline-block"><div class="nav__dd_link-icon"><img src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/696a0975938a76b5453347d7_179a2818d919a6d5fef9097c81065d75_calendar-days.svg" loading="lazy" alt="" class="nav__dd_link-ic"/></div><div class="nav__dd_link_text-wr"><div class="nav__dd_link-title">Events</div></div></a></li><li><a href="/guides" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b66:21a8087d-8638-67de-c541-223e68ebb0e7" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="21a8087d-8638-67de-c541-223e68ebb0e7" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%2C%7B%22componentId%22%3A%2221a8087d-8638-67de-c541-223e68ebb0b3%22%2C%22instanceId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b66%22%7D%5D" class="nav__dd_link w-inline-block"><div class="nav__dd_link-icon"><img src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/696df108b936a6f63633120c_7849291e3649d0271f631c42bdcdd886_book-open.svg" loading="lazy" alt="" class="nav__dd_link-ic"/></div><div class="nav__dd_link_text-wr"><div class="nav__dd_link-title">Guides &amp; Reports</div></div></a></li><li><a href="/customers" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b66:21a8087d-8638-67de-c541-223e68ebb0f0" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="21a8087d-8638-67de-c541-223e68ebb0f0" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%2C%7B%22componentId%22%3A%2221a8087d-8638-67de-c541-223e68ebb0b3%22%2C%22instanceId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b66%22%7D%5D" class="nav__dd_link w-inline-block"><div class="nav__dd_link-icon"><img src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/696a097650f2564e14ec0eb3_b802ac4a7e0941a9e356067dfd2c4f12_message-square-quote.svg" loading="lazy" alt="" class="nav__dd_link-ic"/></div><div class="nav__dd_link_text-wr"><div class="nav__dd_link-title">Customer Stories</div></div></a></li></ul></div><div class="nav__dd_group"><div class="nav__dd_group_title-wr"><p class="nav__dd_group-title">Security</p></div><ul role="list" class="nav__dd_links_list"><li><a href="/company/trust-center" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b66:21a8087d-8638-67de-c541-223e68ebb0fe" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="21a8087d-8638-67de-c541-223e68ebb0fe" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%2C%7B%22componentId%22%3A%2221a8087d-8638-67de-c541-223e68ebb0b3%22%2C%22instanceId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b66%22%7D%5D" class="nav__dd_link w-inline-block"><div class="nav__dd_link-icon"><img src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/696df1419d6732a58ee8ce63_94d64edb7b15a61e7804eed6daf31083_check-badge.svg" loading="lazy" alt="" class="nav__dd_link-ic"/></div><div class="nav__dd_link_text-wr"><div class="nav__dd_link-title">Trust Center</div></div></a></li><li><a href="/security-advisories" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b66:21a8087d-8638-67de-c541-223e68ebb107" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="21a8087d-8638-67de-c541-223e68ebb107" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%2C%7B%22componentId%22%3A%2221a8087d-8638-67de-c541-223e68ebb0b3%22%2C%22instanceId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b66%22%7D%5D" class="nav__dd_link w-inline-block"><div class="nav__dd_link-icon"><img src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/696a0975ba9dff321c25ddb7_9a1c14dcbff9ea42680fdaeb3898ea19_bell.svg" loading="lazy" alt="" class="nav__dd_link-ic"/></div><div class="nav__dd_link_text-wr"><div class="nav__dd_link-title">Security Advisories</div></div></a></li></ul></div><div class="nav__dd_group"><div class="nav__dd_group_title-wr"><p class="nav__dd_group-title">Get help</p></div><ul role="list" class="nav__dd_links_list"><li><a href="https://docs.cloudbees.com/" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b66:21a8087d-8638-67de-c541-223e68ebb115" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="21a8087d-8638-67de-c541-223e68ebb115" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%2C%7B%22componentId%22%3A%2221a8087d-8638-67de-c541-223e68ebb0b3%22%2C%22instanceId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b66%22%7D%5D" class="nav__dd_link w-inline-block"><div class="nav__dd_link-icon"><img src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/696a09754634f217840601fe_649681123281e64f9f98cc26c7df78f9_book-marked.svg" loading="lazy" alt="" class="nav__dd_link-ic"/></div><div class="nav__dd_link_text-wr"><div class="nav__dd_link-title">Documentation</div></div></a></li><li><a href="https://support.cloudbees.com/hc/en-us" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b66:21a8087d-8638-67de-c541-223e68ebb11e" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="21a8087d-8638-67de-c541-223e68ebb11e" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%2C%7B%22componentId%22%3A%2221a8087d-8638-67de-c541-223e68ebb0b3%22%2C%22instanceId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b66%22%7D%5D" class="nav__dd_link w-inline-block"><div class="nav__dd_link-icon"><img src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/696a0976b80f2c2e10077fae_d10dce94a66917c7f89f23e94160623b_life-buoy.svg" loading="lazy" alt="" class="nav__dd_link-ic"/></div><div class="nav__dd_link_text-wr"><div class="nav__dd_link-title">Support</div></div></a></li><li><a href="/services" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b66:21a8087d-8638-67de-c541-223e68ebb127" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="21a8087d-8638-67de-c541-223e68ebb127" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%2C%7B%22componentId%22%3A%2221a8087d-8638-67de-c541-223e68ebb0b3%22%2C%22instanceId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b66%22%7D%5D" class="nav__dd_link w-inline-block"><div class="nav__dd_link-icon"><img src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/696a09760bb9a89b4cd2c5b1_8b27954584753d420f4b82dc295da19f_user-check.svg" loading="lazy" alt="" class="nav__dd_link-ic"/></div><div class="nav__dd_link_text-wr"><div class="nav__dd_link-title">Customer Success &amp; Professional Services</div></div></a></li></ul></div></div></nav></div></li><li class="nav__list-item"><div data-delay="0" data-hover="false" class="nav__dd w-dropdown"><div dd="small" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b69" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="82ab6d2f-ec31-6cad-cafc-b3b1e8663b69" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%5D" class="nav__dd-trigger w-dropdown-toggle"><div>About</div><div class="nav__dd_arrow w-embed"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false">
<path d="M14.4697 6.96985C14.7626 6.67696 15.2374 6.67696 15.5303 6.96985C15.8231 7.26275 15.8231 7.73754 15.5303 8.0304L10.5303 13.0304C10.2374 13.3233 9.76263 13.3232 9.46973 13.0304L4.46973 8.0304C4.17683 7.7375 4.17683 7.26274 4.46973 6.96985C4.76262 6.67696 5.23738 6.67696 5.53027 6.96985L10 11.4396L14.4697 6.96985Z" fill="white" fill-opacity="0.5"/>
</svg></div></div><nav class="nav__dd-content w-dropdown-list"><div class="nav__dd_menu-wr is-about"><div class="nav__dd_group"><div class="nav__dd_group_title-wr"><p class="nav__dd_group-title">Company</p></div><ul role="list" class="nav__dd_links_list"><li><a href="/about-us" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b6e:8ee7248b-4f5b-1b67-86b3-dfde38e3ce36" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="8ee7248b-4f5b-1b67-86b3-dfde38e3ce36" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%2C%7B%22componentId%22%3A%228ee7248b-4f5b-1b67-86b3-dfde38e3ce2f%22%2C%22instanceId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b6e%22%7D%5D" class="nav__dd_link w-inline-block"><div class="nav__dd_link-icon"><img src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/697b1a52df58ada7ee5f9df2_8aadef5ab9f241b2aa20fdb150069428_cbinfinity.svg" loading="lazy" alt="" class="nav__dd_link-ic"/></div><div class="nav__dd_link_text-wr"><div class="nav__dd_link-title">About Us</div></div></a></li><li><a href="/newsroom" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b6e:8ee7248b-4f5b-1b67-86b3-dfde38e3ce3f" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="8ee7248b-4f5b-1b67-86b3-dfde38e3ce3f" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%2C%7B%22componentId%22%3A%228ee7248b-4f5b-1b67-86b3-dfde38e3ce2f%22%2C%22instanceId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b6e%22%7D%5D" class="nav__dd_link w-inline-block"><div class="nav__dd_link-icon"><img src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/696a0975d714fe3434073553_706f8a7511a42063d1e10a5885077c15_megaphone.svg" loading="lazy" alt="" class="nav__dd_link-ic"/></div><div class="nav__dd_link_text-wr"><div class="nav__dd_link-title">Press and Recognition</div></div></a></li><li><a href="/partners" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b6e:8ee7248b-4f5b-1b67-86b3-dfde38e3ce48" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="8ee7248b-4f5b-1b67-86b3-dfde38e3ce48" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%2C%7B%22componentId%22%3A%228ee7248b-4f5b-1b67-86b3-dfde38e3ce2f%22%2C%22instanceId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b6e%22%7D%5D" class="nav__dd_link w-inline-block"><div class="nav__dd_link-icon"><img src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/696a0975e3fe7c8e139a90bb_b3de2cd5abd8ac9b64c44ef8d8b42a6a_handshake.svg" loading="lazy" alt="" class="nav__dd_link-ic"/></div><div class="nav__dd_link_text-wr"><div class="nav__dd_link-title">Partners</div></div></a></li><li><a href="/careers" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b6e:8ee7248b-4f5b-1b67-86b3-dfde38e3ce51" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="8ee7248b-4f5b-1b67-86b3-dfde38e3ce51" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%2C%7B%22componentId%22%3A%228ee7248b-4f5b-1b67-86b3-dfde38e3ce2f%22%2C%22instanceId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b6e%22%7D%5D" class="nav__dd_link w-inline-block"><div class="nav__dd_link-icon"><img src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/696a09750bb9a89b4cd2c510_bdd0e13348a8518659eedf4409e714b8_briefcase-business.svg" loading="lazy" alt="" class="nav__dd_link-ic"/></div><div class="nav__dd_link_text-wr"><div class="nav__dd_link-title">Careers</div></div></a></li></ul></div><div class="nav__dd_group"><div class="nav__dd_group_title-wr"><p class="nav__dd_group-title">Compare CloudBees</p></div><ul role="list" class="nav__dd_links_list"><li><a href="/vs" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b6e:8ee7248b-4f5b-1b67-86b3-dfde38e3ce5f" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="8ee7248b-4f5b-1b67-86b3-dfde38e3ce5f" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%2C%7B%22componentId%22%3A%228ee7248b-4f5b-1b67-86b3-dfde38e3ce2f%22%2C%22instanceId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b6e%22%7D%5D" class="nav__dd_link w-inline-block"><div class="nav__dd_link_text-wr"><div class="nav__dd_link-title">CloudBees vs All Competitors</div></div></a></li><li><a href="/blog/cloudbees-vs-github-actions-choosing-a-ci-cd-platform-for-your-business" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b6e:8ee7248b-4f5b-1b67-86b3-dfde38e3ce68" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="8ee7248b-4f5b-1b67-86b3-dfde38e3ce68" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%2C%7B%22componentId%22%3A%228ee7248b-4f5b-1b67-86b3-dfde38e3ce2f%22%2C%22instanceId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b6e%22%7D%5D" class="nav__dd_link w-inline-block"><div class="nav__dd_link_text-wr"><div class="nav__dd_link-title">vs GitHub Actions</div></div></a></li><li><a href="/vs/cloudbees-vs-gitlab" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b6e:2e5052c0-21c9-c12f-736f-07d0f9da71bc" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="2e5052c0-21c9-c12f-736f-07d0f9da71bc" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%2C%7B%22componentId%22%3A%228ee7248b-4f5b-1b67-86b3-dfde38e3ce2f%22%2C%22instanceId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b6e%22%7D%5D" class="nav__dd_link w-inline-block"><div class="nav__dd_link_text-wr"><div class="nav__dd_link-title">vs GitLab</div></div></a></li><li><a href="/vs/cloudbees-vs-harness" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b6e:820dab86-65ae-55c8-e3cd-d57a30f4cb29" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="820dab86-65ae-55c8-e3cd-d57a30f4cb29" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%2C%7B%22componentId%22%3A%228ee7248b-4f5b-1b67-86b3-dfde38e3ce2f%22%2C%22instanceId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b6e%22%7D%5D" class="nav__dd_link w-inline-block"><div class="nav__dd_link_text-wr"><div class="nav__dd_link-title">vs Harness</div></div></a></li><li><a href="/blog/cloudbees-ci-enhancing-jenkins-for-business-and-mission-critical" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b6e:8ee7248b-4f5b-1b67-86b3-dfde38e3ce71" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="8ee7248b-4f5b-1b67-86b3-dfde38e3ce71" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%2C%7B%22componentId%22%3A%228ee7248b-4f5b-1b67-86b3-dfde38e3ce2f%22%2C%22instanceId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b6e%22%7D%5D" class="nav__dd_link w-inline-block"><div class="nav__dd_link_text-wr"><div class="nav__dd_link-title">vs Jenkins Open Source</div></div></a></li><li><a href="/vs/cloudbees-vs-launchdarkly" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b6e:8ee7248b-4f5b-1b67-86b3-dfde38e3ce7a" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="8ee7248b-4f5b-1b67-86b3-dfde38e3ce7a" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%2C%7B%22componentId%22%3A%228ee7248b-4f5b-1b67-86b3-dfde38e3ce2f%22%2C%22instanceId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b6e%22%7D%5D" class="nav__dd_link w-inline-block"><div class="nav__dd_link_text-wr"><div class="nav__dd_link-title">vs LaunchDarkly</div></div></a></li></ul></div><div class="nav__dd_group"><div class="nav__dd_group_title-wr"><p class="nav__dd_group-title">Featured article</p></div><div class="nav__dd_links_list"><a id="w-node-_8ee7248b-4f5b-1b67-86b3-dfde38e3ce87-38e3ce2f" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b6e:8ee7248b-4f5b-1b67-86b3-dfde38e3ce87" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="8ee7248b-4f5b-1b67-86b3-dfde38e3ce87" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%2C%7B%22componentId%22%3A%228ee7248b-4f5b-1b67-86b3-dfde38e3ce2f%22%2C%22instanceId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b6e%22%7D%5D" href="/blog/introducing-moritz-plassnig-cloudbees-ceo" class="nav__dd_featured-link plausible-event-name--navfeaturedarticleclick w-inline-block"><img src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/6a314b83b6ac6b428e1c3ef0_Blog%20Hero-Mo%20Plassnig.jpg" loading="eager" sizes="100vw" srcset="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/6a314b83b6ac6b428e1c3ef0_Blog%20Hero-Mo%20Plassnig-p-500.jpg 500w, https://cdn.prod.website-files.com/695e1939655d6c0175b126da/6a314b83b6ac6b428e1c3ef0_Blog%20Hero-Mo%20Plassnig-p-800.jpg 800w, https://cdn.prod.website-files.com/695e1939655d6c0175b126da/6a314b83b6ac6b428e1c3ef0_Blog%20Hero-Mo%20Plassnig-p-1080.jpg 1080w, https://cdn.prod.website-files.com/695e1939655d6c0175b126da/6a314b83b6ac6b428e1c3ef0_Blog%20Hero-Mo%20Plassnig.jpg 1280w" alt="2026 Winner Cybersecurity Excellence Awards" class="nav__dd_featured-img"/><div class="nav__dd_featured_text-group"><div class="nav__dd_featured_text-wr"><div class="nav__dd_link-title">A Note from CloudBees’ New CEO</div></div><div class="btn is-text-sm"><div>Explore</div><div class="icon-regular w-embed"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5137 6.46826C13.8078 6.17663 14.2825 6.17816 14.5742 6.47217L19.5322 11.4722C19.8219 11.7646 19.8221 12.2365 19.5322 12.5288L14.5742 17.5288C14.2826 17.8225 13.8077 17.824 13.5137 17.5327C13.2198 17.2411 13.2175 16.7663 13.5088 16.4722L17.2002 12.7505H5C4.58595 12.7505 4.25026 12.4145 4.25 12.0005C4.25 11.5863 4.58579 11.2505 5 11.2505H17.2002L13.5088 7.52881C13.2173 7.2348 13.2199 6.75994 13.5137 6.46826Z" fill="currentcolor"/>
</svg></div></div></div></a></div></div></div></nav></div></li></ul></nav><div class="header__buttons-wr"><a data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b74" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="82ab6d2f-ec31-6cad-cafc-b3b1e8663b74" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%5D" href="https://www.cloudbees.com/contact-us" data-wf-event-ids="157073893" class="btn-nav btn-primary w-inline-block"><div class="btn-text">Book a demo</div></a></div><a aria-label="Open navigation menu" data-w-id="82ab6d2f-ec31-6cad-cafc-b3b1e8663b79" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a857:82ab6d2f-ec31-6cad-cafc-b3b1e8663b79" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="82ab6d2f-ec31-6cad-cafc-b3b1e8663b79" data-wf-component-context="%5B%7B%22componentId%22%3A%2282ab6d2f-ec31-6cad-cafc-b3b1e8663b3a%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a857%22%7D%5D" href="#" class="nav__menu-button w-inline-block"><div class="nav__menu-icon is-lines w-embed"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M16.665 15.083C17.0791 15.083 17.4149 15.4189 17.415 15.833C17.415 16.2472 17.0793 16.583 16.665 16.583H3.33203C2.91797 16.5828 2.58203 16.2471 2.58203 15.833C2.58221 15.4191 2.91808 15.0832 3.33203 15.083H16.665ZM16.665 9.25C17.0793 9.25 17.415 9.58579 17.415 10C17.415 10.4142 17.0793 10.75 16.665 10.75H3.33203C2.91797 10.7498 2.58203 10.4141 2.58203 10C2.58203 9.58589 2.91797 9.25018 3.33203 9.25H16.665ZM16.665 3.41699C17.0793 3.41699 17.415 3.75278 17.415 4.16699C17.4149 4.58106 17.0791 4.91699 16.665 4.91699H3.33203C2.91808 4.91682 2.58221 4.58095 2.58203 4.16699C2.58203 3.75289 2.91797 3.41717 3.33203 3.41699H16.665Z" fill="white"/>
</svg></div></a></div></div><div class="header__bg"></div></header></div><div class="page-styles"><div class="w-embed"><style>
.article_rte .w-code-block {
background-color: var(--gray--100) !important;
border-radius: 1rem;
font-size: var(--_typography---size--p2)!important;
}
.article_rte h1 > strong,
.article_rte h2 > strong,
.article_rte h3 > strong,
.article_rte h4 > strong,
.article_rte h5 > strong{
font-weight:normal;
}
.article_rte blockquote > strong {
display: block;
margin-top: 16px;
color: var(--_tokens---text--inverted-primary);
font-size: var(--_typography---size--p2);
line-height: var(--_typography---height--p2);
font-weight: 400;
}
.article_rte blockquote > strong > em {
display: block;
margin-top: 4px;
color: var(--_tokens---text--inverted-secondary);
font-size: var(--_typography---size--p3);
line-height: var(--_typography---height--p3);
font-weight: 400;
font-style: normal;
}
.toc_nav::-webkit-scrollbar {
width: 0.625rem !important;
}
/* Track */
.toc_nav::-webkit-scrollbar-track {
background: transparent;
margin-top: 0.75rem;
margin-bottom: 0.75rem;
}
/* Handle */
.toc_nav::-webkit-scrollbar-thumb {
background: var(--_tokens---border--inverted-default);
border-radius: 6px;
border: 3px solid #FAFAFA;
}
.w-richtext figure.w-richtext-align-fullwidth {
border-radius: 0.75rem;
overflow: hidden;
}
</style></div><div class="cc-element w-embed"><style>
.cms_share-link .is-url,
.cms_share-link .is-url-check {
transition: opacity 200ms ease;
}
.cms_share-link .is-url {
opacity: 1 !important;
}
.cms_share-link .is-url-check {
opacity: 0 !important;
}
.cms_share-link.is-copied .is-url {
opacity: 0 !important;
}
.cms_share-link.is-copied .is-url-check {
opacity: 1 !important;
}
</style></div><div class="cc-element w-embed"><style>
/* === TABLE LAYOUT === */
.w-embed table {
width: 100%;
min-width: 100%;
table-layout: fixed;
border: 1px solid var(--_tokens---border--inverted-default);
border-radius: 0.75rem;
background-color: var(--gray-alpha--02);
overflow: hidden;
border-collapse: separate;
position: relative;
z-index: 0;
margin: 1.5rem 0;
}
.w-embed table td ul {
margin-top: 0rem;
margin-bottom: 0rem;
gap: 0;
}
.w-embed table td ul li {
margin-bottom: 0rem;
}
/* === CELLS === */
.w-embed th,
.w-embed td {
max-width: 33.33%;
padding: 1rem;
position: relative;
z-index: 1;
}
.w-embed td {
border-top: 1px solid var(--_tokens---border--inverted-default);
vertical-align: top;
font-weight: 400;
}
.w-embed th:not(:first-child),
.w-embed td:not(:first-child) {
border-left: 1px solid var(--_tokens---border--inverted-default);
}
/* Remove border on last row and first if there is no header */
.w-embed tbody tr:last-child {
border-bottom: none !important;
}
.w-embed table:not(:has(thead)) tbody tr:first-child td {
border-top: none;
}
/* tight head cells */
.table-feature-comparison th:not(:first-child) {
padding: 1rem 0.375rem;
}
/* Alignment */
.w-embed th {
text-align: left;
vertical-align: middle;
}
/* Header background */
.w-embed thead {
background-color: var(--gray-alpha--02);
}
/* === TEXT === */
.w-embed th {
font-size: var(--_typography---size--p2);
line-height: var(--_typography---height--p2);
color: var(--_tokens---text--inverted-primary);
font-weight: 500;
}
/* First column (feature) */
.w-embed td:first-child {
font-size: var(--_typography---size--p2);
line-height: var(--_typography---height--p2);
color: var(--_tokens---text--inverted-primary);
}
/* Default cells */
.w-embed td {
font-size: var(--_typography---size--p2);
line-height: var(--_typography---height--p2);
color: var(--_tokens---text--inverted-primary);
white-space: normal;
overflow-wrap: break-word;
}
/* Caption */
.w-embed caption {
caption-side: bottom;
padding-top: 0.75rem;
font-size: var(--_typography---size--p3);
line-height: var(--_typography---height--p3);
color: var(--_tokens---text--inverted-secondary);
}
/* === ADDITIONAL COLORS === */
.table-pass {
color: var(--_tokens---text--inverted-success);
font-weight: 700;
}
.table-fail {
color: var(--_tokens---text--inverted-error);
font-weight: 700;
}
.table-high {
color: var(--_tokens---text--inverted-warning);
font-weight: 700;
}
.table-muted {
color: var(--_tokens---text--inverted-misc);
}
.table-check {
color: var(--_tokens---text--inverted-success);
font-weight: 700;
}
.table-cross {
color: var(--_tokens---text--inverted-error);
font-weight: 700;
}
.table-feature-title {
display: block;
font-weight: 600;
}
.table-feature-description {
display: block;
color: var(--_tokens---text--inverted-secondary);
font-size: var(--_typography---size--p3);
line-height: var(--_typography---height--p3);
}
.table-highlight-column {
background: var(--blue--100);
}
/* === COMPARISON TABLE === */
.table-feature-comparison table {
table-layout: fixed;
}
.table-feature-comparison td,
.table-feature-comparison th {
vertical-align: middle;
}
.table-feature-comparison th:first-child,
.table-feature-comparison td:first-child {
text-align: left;
}
.table-feature-comparison th:not(:first-child),
.table-feature-comparison td:not(:first-child) {
text-align: center;
}
.table-feature-comparison tbody tr:nth-child(even) td {
background-color: var(--gray-alpha--02);
}
.table-feature-comparison thead th:nth-child(2) {
background-color: var(--blue--500);
color: white;
}
.table-feature-comparison tbody tr td:nth-child(2) {
background-color: var(--blue--100);
}
/* === STATES === */
@media (max-width: 480px) {
.w-embed table {
min-width: 896px;
}
}
@media (max-width: 1279px) {
.table-scroll-wide {
overflow-x: auto;
overflow-y: hidden;
-webkit-overflow-scrolling: touch;
}
.table-scroll-wide table {
min-width: 720px;
}
}
/* Scrollbar */
.table-scroll-wide::-webkit-scrollbar {
height: 0.625rem;
}
.table-scroll-wide::-webkit-scrollbar-track {
background: transparent;
margin-left: 0.75rem;
margin-right: 0.75rem;
}
.table-scroll-wide::-webkit-scrollbar-thumb {
background: var(--_tokens---border--inverted-default);
border-radius: 6px;
border: 3px solid white;
}
/* Mobile scroll */
@media (max-width: 480px) {
.w-embed:has(table) {
max-width: 100%;
}
/* Make embed a scroll container */
.w-embed:has(table) .table-scroll {
width: 100vw;
overflow-x: auto;
overflow-y: hidden;
-webkit-overflow-scrolling: touch;
margin-left: calc(var(--_spacing---padding--side-no-frame) * -1);
margin-right: calc(var(--_spacing---padding--side-no-frame) * -1);
padding-left: var(--_spacing---padding--side-no-frame);
padding-right: var(--_spacing---padding--side-no-frame);
}
.w-embed:has(table) table {
width: 600px;
min-width: 600px;
}
.table-scroll-wide table {
width: 720px !important;
min-width: 720px !important;
}
}
</style></div><div class="cc-element w-embed"><style>
#content code:not(pre code),
.w-richtext code:not(pre code) {
font-family: 'Roboto Mono', monospace !important;
font-weight: 500 !important;
font-size: 1rem !important;
color: var(--_tokens---text--inverted-primary);
line-height: 1.65 !important;
background: transparent !important;
white-space: nowrap;
}
.code-block p {
margin-top: 0rem;
margin-bottom: 0rem;
color: var(--_tokens---text--inverted-primary);
}
/* Prism override for code blocks */
.code-block pre[class*="language-"] {
padding: 0 1rem 0 0 !important;
margin: 0 !important;
overflow: visible !important;
}
.code-block code[class*="language-"],
.code-block pre[class*="language-"] {
font-family: "Roboto Mono", monospace !important;
font-weight: 400 !important;
font-size: 1rem !important;
line-height: 1.65 !important;
background: transparent !important;
}
/* enable wrapping (Prism disables this by default) */
.code-block pre[class*="language-"],
.code-block code[class*="language-"] {
white-space: pre-wrap !important;
word-break: break-word;
}
/* Comments */
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: #00000099 !important;
}
.token.punctuation {
color: #212121 !important;
}
/* Keywords (if, else, const, return, etc.) */
.token.keyword,
.token.atrule {
color: #9E1891 !important;
}
/* Functions and classes */
.token.function,
.token.class-name {
color: #2A58C5 !important;
}
/* Strings */
.token.string,
.token.char,
.token.attr-value,
.token.inserted {
color: #21770F !important;
}
/* Numbers and booleans */
.token.number,
.token.boolean,
.token.constant {
color: #00777B !important;
}
/* Variables / properties */
.token.property,
.token.symbol,
.token.builtin {
color: #CB3232 !important;
}
/* HTML / CSS selectors and attributes */
.token.selector,
.token.attr-name,
.token.tag {
color: #800000;
}
/* Operators and punctuation */
.token.operator,
.token.entity,
.token.url {
color: #212121 !important;
background: none !important;
}
/* Deleted / diff */
.token.deleted {
color: #b31d28;
}
</style></div></div><main x-clip="" class="main-wrapper"><section class="global_section btm-20"><div class="global_frame bg-alfa"><div class="global_container"><div class="blog_heading-wr"><p class="ts-overline">How-tos and Support</p><h1 data-w-id="e08e7190-573b-1ed5-0f56-04bb938f6aff" class="ts-h3 ts-wrap-balance">Key Components of a CI/CD Pipeline</h1><div data-w-id="0199c7fc-edc8-ee9f-99d2-5aa4a810855d" class="blog_hero_info-row"><p class="ts-p2"><span id="result" class="read-time">15</span> minutes to read</p></div></div></div></div><div class="section_bg"><img src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/696bc00bb646a7a2194a1211_541c0df5f2322e6e94744318be17d15b_bg%20gradient.avif" loading="lazy" alt="" class="section_bg_blur"/></div></section><section x-clip="" class="global_section is-detail-white z-index-1"><div class="global_container"><div class="article_layout"><aside data-toc="" aria-labelledby="toc-heading" class="article_right-wr"><div class="blog_aside-wr"><div class="article_details"><div class="ts-overline in-details">Written by</div><div class="blog_author-wr in-details"><p class="ts-p2 in-details">Samantha Frost</p></div><div class="spacer is-8"></div><div class="ts-overline in-details">Published on</div><p class="ts-p2 in-details">February 20, 2024</p></div><div class="toc_wrapper"><h2 id="toc-heading" class="ts-overline tc-inverted-secondary">Table of contents</h2><nav data-toc-scroll="" aria-label="Page sections" class="toc_nav"><ul data-offset="6rem" data-toc-list="" role="list" class="toc_list"><li data-toc-template="" class="toc_li"><a data-wf-native-id-path="7b3ff569-4297-ec03-dc41-01c5b57e6fba" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="7b3ff569-4297-ec03-dc41-01c5b57e6fba" href="#" class="toc_link w-inline-block"><span data-toc-label="">Introduction</span></a></li></ul></nav></div><div class="blog_share-wr"><h2 id="toc-heading" class="ts-overline tc-inverted-secondary">Share</h2><div class="share-row"><a title="Copy URL" aria-label="Copy URL" data-wf-native-id-path="7b3ff569-4297-ec03-dc41-01c5b57e6fbe" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="7b3ff569-4297-ec03-dc41-01c5b57e6fbe" href="#" class="cms_share-link is-inverted w-inline-block"><div class="icon-medium is-url w-embed"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false">
<path d="M9.99825 13C10.4277 13.5741 10.9756 14.0491 11.6048 14.3929C12.234 14.7367 12.9298 14.9411 13.6449 14.9923C14.36 15.0435 15.0778 14.9403 15.7496 14.6897C16.4214 14.4392 17.0314 14.047 17.5382 13.54L20.5382 10.54C21.449 9.59695 21.953 8.33394 21.9416 7.02296C21.9302 5.71198 21.4044 4.45791 20.4773 3.53087C19.5503 2.60383 18.2962 2.07799 16.9853 2.0666C15.6743 2.0552 14.4113 2.55918 13.4682 3.46997L11.7482 5.17997M13.9982 11C13.5688 10.4258 13.0209 9.95078 12.3917 9.60703C11.7625 9.26327 11.0667 9.05885 10.3516 9.00763C9.63645 8.95642 8.91866 9.0596 8.2469 9.31018C7.57514 9.56077 6.96513 9.9529 6.45825 10.46L3.45825 13.46C2.54746 14.403 2.04348 15.666 2.05488 16.977C2.06627 18.288 2.59211 19.542 3.51915 20.4691C4.44619 21.3961 5.70026 21.9219 7.01124 21.9333C8.32222 21.9447 9.58524 21.4408 10.5282 20.53L12.2382 18.82" stroke="currentcolor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg></div><div class="icon-medium is-url-check w-embed"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false">
<path d="M19.4697 5.46979C19.7626 5.1769 20.2373 5.1769 20.5302 5.46979C20.823 5.76269 20.8231 6.23747 20.5302 6.53034L9.53022 17.5303C9.23735 17.8232 8.76257 17.8232 8.46967 17.5303L3.46967 12.5303C3.17678 12.2374 3.17678 11.7627 3.46967 11.4698C3.76256 11.1769 4.23732 11.1769 4.53022 11.4698L8.99994 15.9395L19.4697 5.46979Z" fill="currentcolor"/>
</svg></div></a><a aria-label="Share on LinkedIn" data-wf-native-id-path="7b3ff569-4297-ec03-dc41-01c5b57e6fc1" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="7b3ff569-4297-ec03-dc41-01c5b57e6fc1" href="#" class="cms_share-link is-inverted w-inline-block"><div class="icon-medium w-embed"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false">
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.5 3C3.67157 3 3 3.67157 3 4.5V19.5C3 20.3284 3.67157 21 4.5 21H19.5C20.3284 21 21 20.3284 21 19.5V4.5C21 3.67157 20.3284 3 19.5 3H4.5ZM8.52076 7.00272C8.52639 7.95897 7.81061 8.54819 6.96123 8.54397C6.16107 8.53975 5.46357 7.90272 5.46779 7.00413C5.47201 6.15897 6.13998 5.47975 7.00764 5.49944C7.88795 5.51913 8.52639 6.1646 8.52076 7.00272ZM12.2797 9.76176H9.75971H9.7583V18.3216H12.4217V18.1219C12.4217 17.742 12.4214 17.362 12.4211 16.9819C12.4203 15.9681 12.4194 14.9532 12.4246 13.9397C12.426 13.6936 12.4372 13.4377 12.5005 13.2028C12.7381 12.3253 13.5271 11.7586 14.4074 11.8979C14.9727 11.9864 15.3467 12.3141 15.5042 12.8471C15.6013 13.1803 15.6449 13.5389 15.6491 13.8863C15.6605 14.9339 15.6589 15.9815 15.6573 17.0292C15.6567 17.399 15.6561 17.769 15.6561 18.1388V18.3202H18.328V18.1149C18.328 17.6629 18.3278 17.211 18.3275 16.7591C18.327 15.6296 18.3264 14.5001 18.3294 13.3702C18.3308 12.8597 18.276 12.3563 18.1508 11.8627C17.9638 11.1286 17.5771 10.5211 16.9485 10.0824C16.5027 9.77019 16.0133 9.5691 15.4663 9.5466C15.404 9.54401 15.3412 9.54062 15.2781 9.53721C14.9984 9.52209 14.7141 9.50673 14.4467 9.56066C13.6817 9.71394 13.0096 10.0641 12.5019 10.6814C12.4429 10.7522 12.3852 10.8241 12.2991 10.9314L12.2797 10.9557V9.76176ZM5.68164 18.3244H8.33242V9.76733H5.68164V18.3244Z" fill="currentcolor"/>
</svg></div></a><a aria-label="Share on Facebook" data-wf-native-id-path="7b3ff569-4297-ec03-dc41-01c5b57e6fc3" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="7b3ff569-4297-ec03-dc41-01c5b57e6fc3" href="#" class="cms_share-link is-inverted w-inline-block"><div class="icon-medium w-embed"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false">
<path d="M22 12.0611C22 6.50451 17.5229 2 12 2C6.47715 2 2 6.50451 2 12.0611C2 17.0828 5.65684 21.2452 10.4375 22V14.9694H7.89844V12.0611H10.4375V9.84452C10.4375 7.32296 11.9305 5.93012 14.2146 5.93012C15.3088 5.93012 16.4531 6.12663 16.4531 6.12663V8.60261H15.1922C13.95 8.60261 13.5625 9.37822 13.5625 10.1739V12.0611H16.3359L15.8926 14.9694H13.5625V22C18.3432 21.2452 22 17.083 22 12.0611Z" fill="currentcolor"/>
</svg></div></a><a aria-label="Share on Twitter" data-wf-native-id-path="7b3ff569-4297-ec03-dc41-01c5b57e6fc5" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="7b3ff569-4297-ec03-dc41-01c5b57e6fc5" href="#" class="cms_share-link is-inverted w-inline-block"><div class="icon-medium w-embed"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false">
<path d="M17.1761 4H19.9362L13.9061 10.7774L21 20H15.4456L11.0951 14.4066L6.11723 20H3.35544L9.80517 12.7508L3 4H8.69545L12.6279 9.11262L17.1761 4ZM16.2073 18.3754H17.7368L7.86441 5.53928H6.2232L16.2073 18.3754Z" fill="currentcolor"/>
</svg></div></a><a aria-label="Share on Reddit" data-wf-native-id-path="65fe0228-b88a-02ec-eceb-5a1bc4126e21" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="65fe0228-b88a-02ec-eceb-5a1bc4126e21" href="#" class="cms_share-link is-inverted w-inline-block"><div class="icon-medium w-embed"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14.797 5.19567C15.0353 6.20602 15.9426 6.95868 17.026 6.95868C18.2908 6.95868 19.3162 5.9333 19.3162 4.66849C19.3162 3.40367 18.2908 2.3783 17.026 2.3783C15.9201 2.3783 14.9978 3.16209 14.783 4.20465C12.9309 4.40328 11.4846 5.9741 11.4846 7.87776C11.4846 7.88205 11.4846 7.88527 11.4846 7.88957C9.47038 7.97439 7.63114 8.54774 6.17091 9.45287C5.6287 9.03305 4.94797 8.78288 4.20927 8.78288C2.4366 8.78288 1 10.2195 1 11.9922C1 13.2784 1.75588 14.3865 2.84783 14.8986C2.95412 18.6244 7.01376 21.621 12.0075 21.621C17.0013 21.621 21.0663 18.6211 21.1672 14.8922C22.2506 14.3768 23 13.272 23 11.9932C23 10.2206 21.5634 8.78396 19.7907 8.78396C19.0552 8.78396 18.3777 9.03198 17.8366 9.44857C16.3635 8.53701 14.5039 7.96365 12.4692 7.88742C12.4692 7.8842 12.4692 7.88205 12.4692 7.87883C12.4692 6.51524 13.4828 5.38357 14.797 5.19782V5.19567ZM6.04207 14.029C6.09575 12.8651 6.86881 11.9718 7.7675 11.9718C8.66618 11.9718 9.35334 12.9155 9.29966 14.0794C9.24597 15.2433 8.57491 15.6663 7.67516 15.6663C6.7754 15.6663 5.98838 15.1928 6.04207 14.029ZM16.2486 11.9718C17.1484 11.9718 17.9214 12.8651 17.974 14.029C18.0277 15.1928 17.2396 15.6663 16.3409 15.6663C15.4423 15.6663 14.7701 15.2444 14.7164 14.0794C14.6628 12.9155 15.3489 11.9718 16.2486 11.9718ZM15.1792 16.7218C15.3478 16.739 15.4551 16.914 15.3897 17.0707C14.8367 18.3925 13.5311 19.3212 12.0075 19.3212C10.4839 19.3212 9.1794 18.3925 8.62538 17.0707C8.55988 16.914 8.66725 16.739 8.83582 16.7218C9.82362 16.6219 10.8919 16.5672 12.0075 16.5672C13.1231 16.5672 14.1903 16.6219 15.1792 16.7218Z" fill="currentcolor"/>
</svg>
</div></a></div></div></div></aside><article class="article_content-wr"><div id="content" data-content="" class="article_rte w-richtext"><p><em>*article updated on September 29, 2024</em></p><p>In the fast-paced, ever-evolving landscape of technology, delivering high-quality software efficiently is paramount. Amidst the plethora of methodologies and tools designed to optimize software development, <a href="/capabilities/continuous-integration" data-wf-native-id-path="bdb127a7-b324-8e0e-c0a1-2741647ce5a0" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="bdb127a7-b324-8e0e-c0a1-2741647ce5a0">continuous integration</a>, and <a href="/blog/what-is-continuous-deployment-a-complete-explanation" data-wf-native-id-path="00606200-bcba-268f-fb29-a49dbf737d15" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="00606200-bcba-268f-fb29-a49dbf737d15">continuous delivery/deployment</a> (CI/CD) has emerged as a game-changer in the realm of CI/CD pipeline.</p><p>Harnessing the power of automation, CI/CD revolutionizes software delivery by ensuring faster, more reliable, and more efficient code releases through a well-implemented CI/CD pipeline. Imagine a well-oiled machine effortlessly harmonizing code changes, executing automated tests, and deploying applications continuously. But what precisely is this enchanting CI/CD sorcery, and how does the CI/CD pipeline unlock the gateway to contemporary software development? Read on to dive deeper into CI/CD and transformative power of the CI/CD pipeline. </p><h2>Key takeaways</h2><ul role="list"><li>CI/CD is a software development practice that automates the processes to enable rapid, reliable code releases.</li><li>Components of an effective CI/CD pipeline include source control, build, and test automation, deployment strategies &amp; tools.</li><li>Best practices for optimizing CI/CD pipelines involve prioritizing speed and accuracy, encouraging collaboration, and continuous learning &amp; improvement.</li></ul><h2>Understanding CI/CD: The key to modern software development</h2><figure class="w-richtext-align-fullwidth w-richtext-figure-type-image"><div><img loading="lazy" alt="Understanding CICD The key to modern software development" src="https://cdn.prod.website-files.com/6964c3f9b6de03a57eb64454/6a21b217c458989b3203e0bd_Understanding_CI_CD-_The_key_to_modern_software_development.png"/></div></figure><p>CI/CD, a combination of Continuous Integration (CI) and Continuous Delivery/Deployment (CD), is a software development practice designed to automate the software development and delivery processes, enabling rapid, efficient, and reliable code releases. In other words, it is a mechanism that ensures your code changes are ready to be deployed to a production environment at any time using a continuous integration server.</p><p>The strength of CI/CD is its automated approach to the software development lifecycle (SDLC), which enables teams to concentrate more on improving applications rather than dealing with the complexities of distribution to various environments. It ensures the delivery of quality code through continuous testing, streamlining the development process, and reducing the time to market.</p><h3>Continuous integration</h3><p>The first element of the CI/CD pipeline, Continuous Integration, is a practice where developers regularly integrate their code changes into a shared repository. Automating code updates with <a href="https://www.cloudbees.com/blog/git-pull-how-it-works-with-detailed-examples" data-wf-native-id-path="caad14f4-7f05-9ebd-ff45-72f587c35724" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="caad14f4-7f05-9ebd-ff45-72f587c35724"><code>git pull</code></a> ensures that the local repository is always in sync with the latest changes from the remote repository. This is followed by automatic builds and tests. The process is like an orchestra conductor, ensuring each section plays its part at the right time to produce a harmonious melody.</p><p>There are multiple/numerous benefits of adopting modern software development practices, including static code, and it facilitates efficient management of code changes, allowing developers to:</p><ul role="list"><li>Focus more on enhancing the software, thus improving developer productivity</li><li>Early detection and resolution of errors, reducing the time and effort spent on debugging</li><li>Promote a high level of software quality</li></ul><h3>Continuous delivery/deployment</h3><p>Automating the release of code changes to various environments to streamline the delivery process is the focus of Continuous Delivery and Deployment, the second component of CI/CD. This is akin to a route planner, ensuring your code reaches its destination efficiently and safely.</p><p><a href="/capabilities/continuous-delivery#contact-us" data-wf-native-id-path="616f00ba-1582-299b-618f-4f147a95e5c4" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="616f00ba-1582-299b-618f-4f147a95e5c4">Continuous Delivery</a> involves automating the release of code changes to different environments, while Continuous Deployment takes it a step further by automatically placing every change that passes automated tests into production. These practices ensure that your software is always production-ready, and any changes can be released to the users quickly and reliably, giving your organization a competitive advantage.</p><h2>Components of an effective CI/CD pipeline</h2><figure class="w-richtext-align-fullwidth w-richtext-figure-type-image"><div><img loading="lazy" alt="Components of an effective CICD pipeline" src="https://cdn.prod.website-files.com/6964c3f9b6de03a57eb64454/6a21b217c458989b3203e0c9_Components_of_an_effective_CI_CD_pipeline.png"/></div></figure><p>Despite its seemingly magical ability to automatically convert your code changes into a high-quality software product, CI/CD is not magic. A CI/CD pipeline is powered by several key components that work together to ensure seamless software development and delivery.</p><p>The three main components of an effective CI/CD pipeline are source control, build and test automation, and deployment strategies. Each component plays a crucial role in the CI/CD process, and understanding how they function can help you make the most of your CI/CD pipeline.</p><h3>Source control</h3><p>The CI/CD pipeline heavily relies on source control. It keeps track of all code changes and triggers the pipeline when changes are detected. It is like a vigilant security guard, monitoring all code changes and ensuring they are processed correctly.</p><p>By managing code versions, source control promotes a collaborative environment where developers can work together without stepping on each other’s toes. It also allows for the rollback of changes if a problem arises, ensuring that your software development process remains smooth even in the face of unforeseen issues.</p><h3>Build and test automation</h3><p>Consider the possibility of detecting and rectifying bugs in your code before they become problematic. That’s precisely what build and test automation in a CI/CD pipeline enables you to do. It combines your code and its dependencies, runs automated tests, and ensures your code is correct and ready to go.</p><p>By automating the build and unit tests processes, you can detect bugs early, design better tests, and improve software quality. The result? Fewer bugs, faster code releases, and a smoother software development process.</p><h3>Deployment strategies</h3><p>The deployment strategy forms the last piece of the CI/CD puzzle. This determines how your code changes are released to the various environments, be it staging or production.</p><p>The most common deployment strategies involve using a staging environment for testing and a production environment for final deployment. By carefully choosing your deployment strategy, you can ensure that your code changes are deployed smoothly and effectively, reducing the chances of deployment-related issues.</p><h2>Implementing CI/CD stools and technologies</h2><figure class="w-richtext-align-fullwidth w-richtext-figure-type-image"><div><img loading="lazy" alt="Implementing CI/CD stools and technologies" src="https://cdn.prod.website-files.com/6964c3f9b6de03a57eb64454/6a21b217c458989b3203e0c0_Implementing_CI_CD_stools_and_technologies.png"/></div></figure><p>Having a solid understanding of CI/CD and its components is a great start, but how do you actually implement it in your project? This is where CI/CD tools and technologies come in. They enable you to put the principles of CI/CD into practice, automating your software development process and ensuring a smooth journey from code to deployment.</p><p>By leveraging these tools, you can streamline your development <a href="/capabilities/ci-cd-workflows" data-wf-native-id-path="318bfa55-a768-2979-b95b-f7231644c813" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="318bfa55-a768-2979-b95b-f7231644c813">CI/CD workflow</a>, increase efficiency, and deliver high-quality software faster through effective software delivery.</p><p>However, selecting the appropriate tools for your project and effectively integrating them might prove challenging. This is where the selection of suitable tools and the integration of security and quality checks become crucial.</p><h3>Selecting the Right CI/CD Tool</h3><p>Choosing the right CI/CD tool is crucial for development teams. It can significantly improve efficiency, reduce errors, and enhance overall productivity. Automating repetitive tasks frees time to improve product features and address technical issues. A good CI/CD tool offers scalability and seamless integration with development tools and contributes to project success. Consider CloudBees for an informed choice.</p><p><a href="/capabilities/continuous-integration" data-wf-native-id-path="271274d3-f55b-455a-9add-f216a3cf1d70" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="271274d3-f55b-455a-9add-f216a3cf1d70">CloudBees Continuous Integration</a> (CloudBees CI) is a flexible and scalable continuous integration solution that enhances enterprise value with the powerful Jenkins® engine. Its centralized management system boosts security, compliance, and automation at scale for efficient software delivery. By balancing developer freedom and administrative oversight, CloudBees CI ensures standardized practices and optimal resource utilization. It seamlessly integrates security, compliance, and governance into the software delivery process, mitigating audit risks and empowering teams to innovate. Whether in the cloud or on-premises, CloudBees CI provides a secure solution with essential enterprise-grade features for comprehensive Jenkins team management.</p><h3>Integrating security and quality checks</h3><p>Constructing an excellent CI/CD pipeline involves more than just speed and efficiency. It’s also about ensuring that your code is secure and high-quality. By integrating security and quality checks into your CI/CD pipeline, you can prevent vulnerabilities and maintain high-quality code.</p><p>Security checks can help you detect and fix vulnerabilities early, reducing the risk of security breaches. On the other hand, quality checks ensure that your code meets high standards and is ready for production.</p><h2>Real-world CI/CD pipeline examples</h2><p>The versatility of CI/CD lies in its adaptability to a wide range of projects, from straightforward web applications to intricate <a href="/blog/documenting-microservices" data-wf-native-id-path="747473b1-551a-1085-c15a-d745c852eee5" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="747473b1-551a-1085-c15a-d745c852eee5">microservices architectures</a>. By examining some real-world examples, we can gain insights into the versatility and adaptability of CI/CD pipelines.</p><p>In the following sections, we’ll dive into three distinct examples: a simple web application, a microservices architecture, and a containerized application. These examples showcase a different facet of CI/CD, illustrating its flexibility and power.</p><h3>Simple web application</h3><p>A straightforward web application serves as an excellent introduction to understanding the workings of a CI/CD pipeline. It is a relatively uncomplicated scenario, but it still benefits greatly from the automation and efficiency that CI/CD brings to the table.</p><p>For example, a CI/CD pipeline for a simple web application might include stages for compiling the application source code, running tests, and deploying the application. Each change is automatically tested and deployed, ensuring the application is always up-to-date and bug-free.</p><h3>Microservices architecture</h3><p>Although a microservices architecture is a more complicated example, it underscores the strength and adaptability of CI/CD pipelines. In a microservices architecture, the application is broken down into smaller, independent services that can be developed, tested, and deployed separately.</p><p>In this context, a CI/CD pipeline allows for the autonomous deployment and testing of individual microservices. This means that changes to one microservice do not require the entire application to be redeployed, leading to faster and more frequent releases.</p><h3>Containerized applications</h3><p>Containerized applications present an intriguing use case for CI/CD pipelines. By encapsulating applications and their dependencies in lightweight, portable containers, the process of deployment and scaling becomes significantly streamlined. This approach not only enhances efficiency but also enables easier management and scalability.</p><p>A CI/CD pipeline for a containerized application might involve creating a Docker image, running tests in a container, and deploying the container to a Kubernetes cluster. This process is entirely automated, ensuring that the application is always ready to be deployed at a moment’s notice.</p><h2>Best practices for optimizing CI/CD pipelines</h2><figure class="w-richtext-align-fullwidth w-richtext-figure-type-image"><div><img loading="lazy" alt="Best practices for optimizing CI/CD pipelines" src="https://cdn.prod.website-files.com/6964c3f9b6de03a57eb64454/6a21b217c458989b3203e0c3_Best_practices_for_optimizing_CI_CD_pipelines.png"/></div></figure><p>Having explored the what, why, and how of CI/CD, it’s time to discuss optimizing its usage. Like any process, CI/CD pipelines can be optimized for maximum efficiency. By following best practices, you can ensure your CI/CD pipeline is as fast, reliable, and effective as possible.</p><p>These best practices include prioritizing speed and accuracy, encouraging collaboration, and fostering a culture of continuous learning and improvement. Let’s explore each of these in detail.</p><h3>Prioritizing and accuracy</h3><p>A CI/CD pipeline thrives on speed and accuracy. After all, the main goal of CI/CD is to speed up the software development process while maintaining high code quality.</p><p>There are several ways to enhance the speed of a CI/CD pipeline, such as using powerful machines, increasing parallelization, optimizing tests, and more. Similarly, accuracy can be ensured by implementing thorough automated testing, monitoring metrics, and establishing feedback loops.</p><h3>Encouraging collaboration</h3><p>Collaboration plays a crucial role in a CI/CD pipeline. By breaking down silos and encouraging open communication between developers, testers, and development teams, you can streamline the development process and improve overall efficiency for both development and operations teams.</p><p>Promoting a culture of communication, integrating feedback and collaboration tools into the CI pipeline, and encouraging open communication are ways to foster collaboration in a CI/CD pipeline.</p><h3>Continuous learning and improvement</h3><p>Finally, cultivating an ongoing learning and enhancement environment is vital for a <a href="/blog/tips-creating-successful-cicd-pipeline" data-wf-native-id-path="9164f560-aba8-1157-bd98-87d8dc453ebd" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="9164f560-aba8-1157-bd98-87d8dc453ebd">successful CI/CD pipeline</a>. Here are some ways to achieve this:</p><ul role="list"><li>Continuously review and refine your processes</li><li>Incorporate feedback from team members and stakeholders</li><li>Stay up-to-date with industry trends and best practices</li></ul><p>By following these steps, you can ensure that your CI/CD pipeline remains effective and efficient.</p><p>Regular reviews, retrospectives, feedback loops, automated testing, and embracing new technologies are some of the ways to ensure continuous learning and improvement in your CI/CD pipeline.</p><h2>Summary</h2><p>In the world of software development, speed, efficiency, and quality are of the essence. That’s why CI/CD has emerged as a game-changer, revolutionizing the software delivery process with its automation and efficiency.</p><p>From understanding the nuts and bolts of CI/CD to exploring real-world examples and best practices, we’ve taken a deep dive into the world of CI/CD. Whether you’re working on a simple web application, a complex microservices architecture, or a containerized application, CI/CD can help you deliver high-quality software faster and more reliably and secure.</p><h2>How CloudBees can help</h2><p><a href="/capabilities/continuous-integration" data-wf-native-id-path="c4da9e96-012a-bbf6-7b78-8e49489fb3f8" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="c4da9e96-012a-bbf6-7b78-8e49489fb3f8">CloudBees CI</a> is a powerful tool for managing CI/CD pipelines, offering significant value through features like <a href="/capabilities/continuous-integration/high-availability-horizontal-scalability" data-wf-native-id-path="c4ffbcce-3034-8ddf-45e5-71788d3a2938" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="c4ffbcce-3034-8ddf-45e5-71788d3a2938">High Availability/Horizontal Scalability (HAHS)</a> and centralized management. CloudBees CI HA/HS features ensure the Jenkins controller remains operational at all times, eliminating downtime and ensuring the continuous movement of the software delivery lifecycle. Moreover, workload division among multiple controllers allows CloudBees CI to handle large workloads efficiently, making it an ideal solution for enterprises with thousands of developers. Its centralized management capabilities provide a holistic view of multiple Jenkins controllers, simplifying administration and promoting governance and security across teams. CloudBees CI also offers built-in security measures, ensuring compliance and consistency across the organization. By standardizing the CI environment, CloudBees CI helps organizations streamline their CI/CD pipelines for efficient, reliable, and secure software delivery.</p><h2>Frequently asked questions</h2><h3>What is meant by CI CD pipeline?</h3><p>A CI/CD pipeline automates the software delivery process by building code, running tests (CI), and safely deploying a new application version (CD). These pipelines allow for fast product iterations, standardized feedback loops, and reduced manual errors.</p><h3>What is the difference between DevOps and CI/CD?</h3><p>DevOps is a culture while CI/CD is the automation of the software build and deployment process. DevOps emphasizes collaboration, communication and integration between development and operations teams while CI/CD focuses on automating the software build and deployment process.</p><h3>What is the GitHub CI/CD pipeline?</h3><p>GitHub CI/CD pipeline is a continuous integration and continuous delivery (CI/CD) platform that allows for automating builds, testing, and deployments to reduce the risk of human error and enable faster iterations. It supports creating custom workflows to build and test every pull request, or deploy merged pull requests to production.</p><h3>Is Jenkins a CI or CD?</h3><p>Jenkins is an open-source automation tool for Continuous Integration (CI) and Continuous Deployment (CD). It is a server-based system that runs in servlet containers and implements CI/CD workflows, making it a powerful CI/CD solution.</p><h3>What is the significance of CI/CD in modern software development?</h3><p>CI/CD is a critical part of modern software development, enabling automation of the software development and delivery processes to ensure faster, more reliable, and efficient code releases.</p></div><template id="code-template" class="code-template"><div class="code-block"><div class="code-header"><div class="code-lang-wr"><div class="code_icon w-embed"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.7841 3.7765C13.9077 3.38125 14.3283 3.16081 14.7236 3.28431C15.1188 3.40784 15.3392 3.82846 15.2157 4.22376L10.2157 20.2238C10.0922 20.6191 9.67163 20.8395 9.27629 20.7159C8.88095 20.5924 8.66059 20.1718 8.7841 19.7765L13.7841 3.7765ZM5.46965 7.46985C5.76254 7.17707 6.23733 7.17704 6.5302 7.46985C6.82306 7.76271 6.82299 8.2375 6.5302 8.5304L3.06047 12.0001L6.5302 15.4699C6.82306 15.7627 6.82299 16.2375 6.5302 16.5304C6.2373 16.8233 5.76254 16.8233 5.46965 16.5304L1.46965 12.5304C1.1768 12.2375 1.17677 11.7627 1.46965 11.4699L5.46965 7.46985ZM17.4696 7.46985C17.7625 7.17708 18.2373 7.17704 18.5302 7.46985L22.5302 11.4699C22.8231 11.7627 22.823 12.2375 22.5302 12.5304L18.5302 16.5304C18.2373 16.8233 17.7625 16.8233 17.4696 16.5304C17.1768 16.2375 17.1768 15.7627 17.4696 15.4699L20.9394 12.0001L17.4696 8.5304C17.1768 8.2375 17.1768 7.76273 17.4696 7.46985Z" fill="#0F0F14"/>
</svg>
</div><p data-lang-code="" class="ts-p1 tc-inverted-primary hide">React</p></div><a aria-label="Copy Code" data-wf-native-id-path="30f24974-5334-06d3-73f0-6705cedbd9c7" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="30f24974-5334-06d3-73f0-6705cedbd9c7" href="#" class="code-copy w-inline-block"><div class="code_icon w-embed"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false">
<path d="M20 7.25C21.5188 7.25 22.75 8.48122 22.75 10V20C22.75 21.5188 21.5188 22.75 20 22.75H10C8.48122 22.75 7.25 21.5188 7.25 20V10C7.25 8.48122 8.48122 7.25 10 7.25H20ZM10 8.75C9.30964 8.75 8.75 9.30964 8.75 10V20C8.75 20.6904 9.30964 21.25 10 21.25H20C20.6904 21.25 21.25 20.6904 21.25 20V10C21.25 9.30964 20.6904 8.75 20 8.75H10ZM14 1.25C15.5142 1.25 16.75 2.48579 16.75 4C16.75 4.41421 16.4142 4.75 16 4.75C15.5858 4.75 15.25 4.41421 15.25 4C15.25 3.31421 14.6858 2.75 14 2.75H4C3.31421 2.75 2.75 3.31421 2.75 4V14C2.75 14.6858 3.31421 15.25 4 15.25C4.41421 15.25 4.75 15.5858 4.75 16C4.75 16.4142 4.41421 16.75 4 16.75C2.48579 16.75 1.25 15.5142 1.25 14V4C1.25 2.48579 2.48579 1.25 4 1.25H14Z" fill="currentcolor"/>
</svg>
</div></a></div><div class="code-body"></div></div></template></article></div></div></section><section class="global_section tb-96"><div class="global_container"><div data-w-id="3673e385-3f2b-0276-7de5-d26c9c2e0219" style="-webkit-transform:translate3d(0, 2rem, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-moz-transform:translate3d(0, 2rem, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-ms-transform:translate3d(0, 2rem, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);transform:translate3d(0, 2rem, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);opacity:0" class="heading-wr is-side"><h2>Read next</h2><a data-wf-native-id-path="3673e385-3f2b-0276-7de5-d26c9c2e021c" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="3673e385-3f2b-0276-7de5-d26c9c2e021c" href="/blog" class="btn-secondary btn-md w-inline-block"><div class="btn-text">Explore All</div></a></div><div class="res_col-wr w-dyn-list"><div fs-list-load="pagination" fs-list-element="list" role="list" class="res_list w-dyn-items"><div role="listitem" class="w-dyn-item"><a data-wf-native-id-path="ddedbf7a-7ece-7a1f-0863-9dcbf0d88200_instance-0" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="ddedbf7a-7ece-7a1f-0863-9dcbf0d88200" data-wf-cms-context="%5B%7B%22collectionId%22%3A%226a1fe2a4a11dca1afc48dd15%22%2C%22itemId%22%3A%226a8c99a9a4b4609f63715f18%22%7D%5D" href="/blog/who-owns-ai-generated-code-failures" class="guide_card w-inline-block"><div class="res_card_text-wr"><div class="res_card_date-wr"><p fs-list-field="tag" class="ts-p2-500">Industry Insights</p><div class="res_card_dot"></div><p fs-list-field="tag" class="ts-p2-500">September 9, 2026</p></div><p fs-list-field="title" class="ts-h5 ts-3lines">When AI breaks production, who is accountable?</p></div></a></div><div role="listitem" class="w-dyn-item"><a data-wf-native-id-path="ddedbf7a-7ece-7a1f-0863-9dcbf0d88200_instance-1" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="ddedbf7a-7ece-7a1f-0863-9dcbf0d88200" data-wf-cms-context="%5B%7B%22collectionId%22%3A%226a1fe2a4a11dca1afc48dd15%22%2C%22itemId%22%3A%226a8c93afb8ce9874256c8b3e%22%7D%5D" href="/blog/every-tool-is-green-can-you-ship" class="guide_card w-inline-block"><div class="res_card_text-wr"><div class="res_card_date-wr"><p fs-list-field="tag" class="ts-p2-500">Industry Insights</p><div class="res_card_dot"></div><p fs-list-field="tag" class="ts-p2-500">September 9, 2026</p></div><p fs-list-field="title" class="ts-h5 ts-3lines">Every tool is green. Can you ship?</p></div></a></div><div role="listitem" class="w-dyn-item"><a data-wf-native-id-path="ddedbf7a-7ece-7a1f-0863-9dcbf0d88200_instance-2" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="ddedbf7a-7ece-7a1f-0863-9dcbf0d88200" data-wf-cms-context="%5B%7B%22collectionId%22%3A%226a1fe2a4a11dca1afc48dd15%22%2C%22itemId%22%3A%226a8605f48a480aa38550e626%22%7D%5D" href="/blog/smart-tests-high-failure-rate-tests-quarantine" class="guide_card w-inline-block"><div class="res_card_text-wr"><div class="res_card_date-wr"><p fs-list-field="tag" class="ts-p2-500">Product Updates</p><div class="res_card_dot"></div><p fs-list-field="tag" class="ts-p2-500">August 20, 2026</p></div><p fs-list-field="title" class="ts-h5 ts-3lines">When red doesn’t mean broken, your pipeline stops meaning anything</p></div></a></div></div></div></div></section><section class="global_section"><div class="cc-element w-embed"><style>
:root {
--mkto-space-xl: 1.5rem;
--mkto-space-lg: 1rem;
--mkto-space-md: 0.75rem;
--mkto-radius-lg: 1.5rem;
--mkto-radius-md: 0.75rem;
--mkto-radius-sm: 1.25rem;
--mkto-field-height: 3rem;
}
@media (max-width: 767px) {
:root {
--mkto-space-xl: 1.25rem;
}
}
/* Loader */
.mkto-loading .mkto-form-wrapper {
display: none;
}
.mkto-loading .mkto-loader {
display: block;
}
.mkto-form-wrapper {
position: relative;
}
.contact_form-wr .mkto-loader {
width: 48px;
height: 48px;
margin: 80px auto;
border-radius: 50%;
border: 3px solid rgba(255, 255, 255, 0.15);
border-top-color: #fff;
animation: mkto-spin 0.9s linear infinite;
}
@keyframes mkto-spin {
to {
transform: rotate(360deg);
}
}
/* Form */
#mktoForm_1037 {
font-family: var(--_typography---text-font) !important;
padding: var(--mkto-space-xl);
width: 100% !important;
display: flex;
flex-direction: row;
flex-wrap: wrap;
gap: var(--mkto-space-xl);
}
#mktoForm_1037 .mktoFormRow {
margin: 0 !important;
width: calc(50% - (var(--mkto-space-xl) / 2));
box-sizing: border-box;
}
@media (max-width: 767px) {
#mktoForm_1037 .mktoFormRow {
width: 100% !important;
}
}
#mktoForm_1037 .mktoOffset,
#mktoForm_1037 .mktoGutter,
#mktoForm_1037 .mktoClear {
display: none !important;
}
#mktoForm_1037 .mktoFormCol {
width: 100% !important;
margin-bottom: 0 !important;
}
#mktoForm_1037 .mktoFormRow:has(input[type='hidden']),
#mktoForm_1037 .mktoFormRow:has(.mktoPlaceholder) {
display: none;
}
#mktoForm_1037 .mktoFieldWrap,
#mktoForm_1037 input,
#mktoForm_1037 label {
width: 100% !important;
}
#mktoForm_1037 .mktoField {
width: 100% !important;
box-sizing: border-box;
}
#mktoForm_1037 .mktoFieldWrap {
display: flex;
flex-direction: column;
gap: 8px;
}
#mktoForm_1037 .mktoLabel {
color: var(--_tokens---text--primary);
font-size: var(--_typography---size--p3);
line-height: var(--_typography---height--p3) !important;
font-weight: 400 !important;
display: flex;
flex-direction: row;
padding-top: 0 !important;
}
#mktoForm_1037 .mktoAsterix {
color: var(--_tokens---text--error) !important;
padding-left: 6px;
order: 99;
}
#mktoForm_1037 input {
width: 100% !important;
box-sizing: border-box;
appearance: none;
background-color: var(--white-alpha--06) !important;
border: 1px solid var(--_tokens---border--default) !important;
border-radius: var(--mkto-radius-lg) !important;
color: var(--_tokens---text--primary) !important;
font-size: var(--_typography---size--p2) !important;
line-height: var(--_typography---height--p2) !important;
padding: var(--mkto-space-md) var(--mkto-space-lg) !important;
box-shadow: none !important;
outline: none !important;
min-height: var(--mkto-field-height) !important;
transition: all 0.3s;
}
#mktoForm_1037 input:hover {
border-color: var(--_tokens---border--accent) !important;
}
#mktoForm_1037 input:focus,
#mktoForm_1037 input:active {
border-color: var(--_tokens---text--misc) !important;
outline: none !important;
}
/* Button */
#mktoForm_1037 .mktoButtonRow {
position: relative;
flex: 0 0 calc(100% + (var(--mkto-space-xl) * 2));
width: calc(100% + (var(--mkto-space-xl) * 2)) !important;
margin:
calc(-1 * var(--mkto-space-xl))
calc(-1 * var(--mkto-space-xl)) !important;
padding:
calc(var(--mkto-space-xl) * 2)
var(--mkto-space-xl)
var(--mkto-space-xl) !important;
background-color: var(--_tokens---surface--default);
border-radius: 0 0 var(--mkto-radius-md) var(--mkto-radius-md);
box-sizing: border-box;
z-index: 2;
}
#mktoForm_1037 .mktoButtonRow::before {
content: "";
position: absolute;
left: 0;
right: 0;
top: 0;
height: var(--mkto-space-xl);
background-color: var(--_tokens---surface--subtle);
border-bottom: 1px solid var(--_tokens---border--default);
border-radius: 0 0 var(--mkto-radius-md) var(--mkto-radius-md);
pointer-events: none;
z-index: 0;
}
#mktoForm_1037 .mktoButtonWrap {
position: relative;
z-index: 1;
margin: 0 !important;
display: block;
width: 100%;
}
#mktoForm_1037 .mktoButton {
position: relative;
z-index: 1;
height: 2.5rem;
width: 100%;
padding: 0.5rem;
border-radius: var(--mkto-radius-sm);
border: none;
background: var(--_tokens---button--default);
color: #fff;
cursor: pointer;
box-shadow: none !important;
text-shadow: none !important;
font-family: var(--_typography---text-font) !important;
font-size: var(--_typography---size--p2) !important;
line-height: var(--_typography---height--p2) !important;
font-weight: 500 !important;
transition: all 0.3s;
}
/* Error */
#mktoForm_1037 .mktoError {
position: static;
right: auto !important;
z-index: 5 !important;
}
#mktoForm_1037 .mktoError .mktoErrorArrowWrap {
display: none;
}
#mktoForm_1037 .mktoError .mktoErrorMsg {
background: none !important;
border: 0 !important;
box-shadow: none !important;
padding: 0 !important;
margin: 6px 0 0 !important;
color: var(--_tokens---text--error) !important;
font-size: var(--_typography---size--cap) !important;
line-height: var(--_typography---height--cap) !important;
text-shadow: none !important;
}
</style></div><div class="global_frame"><div class="global_container"><div class="side_layout full-height"><div class="newsletter_text-wr"><div class="newsletter_icon-wr"><img loading="lazy" src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/696a0976869064c0e6744f8c_3c5a6dc0f9fc9395357b740b417f062d_newspaper.svg" alt="" class="icon-large"/></div><div class="contact_rte w-richtext"><h2>Newsletter</h2><p>Get updates about our latest releases, events, <br/>and more</p></div></div><div class="contact_form-wr is-newsletter"><div class="mkto-form-wrapper w-embed w-script"><script>
document.documentElement.classList.add('mkto-loading');
</script>
<script src="//build.cloudbees.com/js/forms2/js/forms2.min.js"></script>
<form id="mktoForm_1037"></form>
<script>
MktoForms2.loadForm("//build.cloudbees.com", "333-QPV-725", 1037, function(form) {
const attribution = JSON.parse(sessionStorage.getItem('cb_ad_attribution') || 'null');
if (!attribution) return;
// Set vals immediately before submission, not on load
form.onSubmit(function() {
form.vals({
utm_campaign__c: attribution.utm_campaign || '',
utm_content__c: attribution.utm_content || '',
utm_medium__c_lead: attribution.utm_medium || '',
utm_source__c_lead: attribution.utm_source || '',
utm_term__c: attribution.utm_term || ''
});
});
// Fire GTM conversion event on submit
form.onSuccess(function() {
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: 'campaign_conversion',
utm_source: attribution.utm_source,
utm_medium: attribution.utm_medium,
utm_campaign: attribution.utm_campaign,
utm_content: attribution.utm_content || '',
utm_term: attribution.utm_term || '',
conversion_origin: attribution.utm_landing_page
});
sessionStorage.removeItem('cb_ad_attribution');
return true;
});
});
</script>
<script>
MktoForms2.whenReady((mktoForm) => {
const form = document.querySelector('#mktoForm_1037');
if (!form) return;
/* ---------- Label → placeholder ---------- */
form.querySelectorAll('.mktoFieldWrap').forEach(wrap => {
const label = wrap.querySelector('.mktoLabel');
const field = wrap.querySelector('input, textarea');
if (!label || !field) return;
if (field.placeholder) return;
let text = label.textContent || '';
text = text
.replace('*', '')
.replace(/\s*:\s*$/, '')
.replace(/\s+/g, ' ')
.trim();
if (text) {
field.placeholder = text;
}
});
/* ---------- Success State ---------- */
mktoForm.onSuccess(() => {
const wrapper = document.querySelector('.contact_form-wr');
if (!wrapper) return false;
const formWrapper = wrapper.querySelector('.mkto-form-wrapper');
const successState = wrapper.querySelector('.mkto-success-state');
if (formWrapper) {
formWrapper.style.display = 'none';
}
if (successState) {
successState.style.display = 'flex';
}
return false;
});
/* ---------- Loader off ---------- */
requestAnimationFrame(() => {
document.documentElement.classList.remove('mkto-loading');
});
});
</script></div><div class="mkto-loader"></div><div class="mkto-success-state"><img src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/69611147c4643f011be05298_a5735dcd1c3684f9c2dbd36324db6f68_check-circle.svg" loading="lazy" alt="" class="icon-large"/><div class="mkto-success_text-wr"><p class="ts-h6">Subscription confirmed</p><p class="ts-p2">You&#x27;ll now receive our latest news, releases, and event updates by email.</p></div></div></div></div></div><div class="frame_bg"><div class="frame_bg_gradient is-contact"></div></div></div></section></main><footer class="footer"><div class="padding-global"><div class="container-large"><div class="f_top-group"><div class="f_top-left-group"><a href="/" title="CloudBees Homepage" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a859:6712cc61-808c-ccab-0d36-2ccadbfe38f6" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="6712cc61-808c-ccab-0d36-2ccadbfe38f6" data-wf-component-context="%5B%7B%22componentId%22%3A%226712cc61-808c-ccab-0d36-2ccadbfe38f1%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a859%22%7D%5D" class="f_brand w-inline-block"><img loading="lazy" src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/696254cf9924a1df0698d83e_Brand%20Logo.svg" alt=""/></a><div class="f_social-links"><a aria-label="Visit CloudBees on Facebook" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a859:6712cc61-808c-ccab-0d36-2ccadbfe38fc" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="6712cc61-808c-ccab-0d36-2ccadbfe38fc" data-wf-component-context="%5B%7B%22componentId%22%3A%226712cc61-808c-ccab-0d36-2ccadbfe38f1%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a859%22%7D%5D" href="https://www.facebook.com/CloudBees/" target="_blank" class="f_social_link w-inline-block"><div class="icon-medium w-embed"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false">
<path d="M22 12.0611C22 6.50451 17.5229 2 12 2C6.47715 2 2 6.50451 2 12.0611C2 17.0828 5.65684 21.2452 10.4375 22V14.9694H7.89844V12.0611H10.4375V9.84452C10.4375 7.32296 11.9305 5.93012 14.2146 5.93012C15.3088 5.93012 16.4531 6.12663 16.4531 6.12663V8.60261H15.1922C13.95 8.60261 13.5625 9.37822 13.5625 10.1739V12.0611H16.3359L15.8926 14.9694H13.5625V22C18.3432 21.2452 22 17.083 22 12.0611Z" fill="currentcolor"/>
</svg></div></a><a aria-label="Visit CloudBees on Instagram" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a859:6712cc61-808c-ccab-0d36-2ccadbfe38fe" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="6712cc61-808c-ccab-0d36-2ccadbfe38fe" data-wf-component-context="%5B%7B%22componentId%22%3A%226712cc61-808c-ccab-0d36-2ccadbfe38f1%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a859%22%7D%5D" href="https://www.instagram.com/cloudbees_inc/#" target="_blank" class="f_social_link w-inline-block"><div class="icon-medium w-embed"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false">
<path fill-rule="evenodd" clip-rule="evenodd" d="M16 3H8C5.23858 3 3 5.23858 3 8V16C3 18.7614 5.23858 21 8 21H16C18.7614 21 21 18.7614 21 16V8C21 5.23858 18.7614 3 16 3ZM19.25 16C19.2445 17.7926 17.7926 19.2445 16 19.25H8C6.20735 19.2445 4.75549 17.7926 4.75 16V8C4.75549 6.20735 6.20735 4.75549 8 4.75H16C17.7926 4.75549 19.2445 6.20735 19.25 8V16ZM16.75 8.25C17.3023 8.25 17.75 7.80228 17.75 7.25C17.75 6.69772 17.3023 6.25 16.75 6.25C16.1977 6.25 15.75 6.69772 15.75 7.25C15.75 7.80228 16.1977 8.25 16.75 8.25ZM12 7.5C9.51472 7.5 7.5 9.51472 7.5 12C7.5 14.4853 9.51472 16.5 12 16.5C14.4853 16.5 16.5 14.4853 16.5 12C16.5027 10.8057 16.0294 9.65957 15.1849 8.81508C14.3404 7.97059 13.1943 7.49734 12 7.5ZM9.25 12C9.25 13.5188 10.4812 14.75 12 14.75C13.5188 14.75 14.75 13.5188 14.75 12C14.75 10.4812 13.5188 9.25 12 9.25C10.4812 9.25 9.25 10.4812 9.25 12Z" fill="currentcolor"/>
</svg></div></a><a aria-label="Visit CloudBees on YouTube" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a859:6712cc61-808c-ccab-0d36-2ccadbfe3900" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="6712cc61-808c-ccab-0d36-2ccadbfe3900" data-wf-component-context="%5B%7B%22componentId%22%3A%226712cc61-808c-ccab-0d36-2ccadbfe38f1%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a859%22%7D%5D" href="https://www.youtube.com/user/CloudBeesTV" target="_blank" class="f_social_link w-inline-block"><div class="icon-medium w-embed"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false">
<path d="M21.543 6.498C22 8.28 22 12 22 12C22 12 22 15.72 21.543 17.502C21.289 18.487 20.546 19.262 19.605 19.524C17.896 20 12 20 12 20C12 20 6.107 20 4.395 19.524C3.45 19.258 2.708 18.484 2.457 17.502C2 15.72 2 12 2 12C2 12 2 8.28 2.457 6.498C2.711 5.513 3.454 4.738 4.395 4.476C6.107 4 12 4 12 4C12 4 17.896 4 19.605 4.476C20.55 4.742 21.292 5.516 21.543 6.498ZM10 15.5L16 12L10 8.5V15.5Z" fill="currentcolor"/>
</svg></div></a><a aria-label="Visit CloudBees on Twitter" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a859:6712cc61-808c-ccab-0d36-2ccadbfe3902" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="6712cc61-808c-ccab-0d36-2ccadbfe3902" data-wf-component-context="%5B%7B%22componentId%22%3A%226712cc61-808c-ccab-0d36-2ccadbfe38f1%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a859%22%7D%5D" href="https://x.com/cloudbees" target="_blank" class="f_social_link w-inline-block"><div class="icon-medium w-embed"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false">
<path d="M17.1761 4H19.9362L13.9061 10.7774L21 20H15.4456L11.0951 14.4066L6.11723 20H3.35544L9.80517 12.7508L3 4H8.69545L12.6279 9.11262L17.1761 4ZM16.2073 18.3754H17.7368L7.86441 5.53928H6.2232L16.2073 18.3754Z" fill="currentcolor"/>
</svg></div></a><a aria-label="Visit CloudBees on LinkedIn" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a859:6712cc61-808c-ccab-0d36-2ccadbfe3904" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="6712cc61-808c-ccab-0d36-2ccadbfe3904" data-wf-component-context="%5B%7B%22componentId%22%3A%226712cc61-808c-ccab-0d36-2ccadbfe38f1%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a859%22%7D%5D" href="https://www.linkedin.com/company/cloudbees" target="_blank" class="f_social_link w-inline-block"><div class="icon-medium w-embed"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false">
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.5 3C3.67157 3 3 3.67157 3 4.5V19.5C3 20.3284 3.67157 21 4.5 21H19.5C20.3284 21 21 20.3284 21 19.5V4.5C21 3.67157 20.3284 3 19.5 3H4.5ZM8.52076 7.00272C8.52639 7.95897 7.81061 8.54819 6.96123 8.54397C6.16107 8.53975 5.46357 7.90272 5.46779 7.00413C5.47201 6.15897 6.13998 5.47975 7.00764 5.49944C7.88795 5.51913 8.52639 6.1646 8.52076 7.00272ZM12.2797 9.76176H9.75971H9.7583V18.3216H12.4217V18.1219C12.4217 17.742 12.4214 17.362 12.4211 16.9819C12.4203 15.9681 12.4194 14.9532 12.4246 13.9397C12.426 13.6936 12.4372 13.4377 12.5005 13.2028C12.7381 12.3253 13.5271 11.7586 14.4074 11.8979C14.9727 11.9864 15.3467 12.3141 15.5042 12.8471C15.6013 13.1803 15.6449 13.5389 15.6491 13.8863C15.6605 14.9339 15.6589 15.9815 15.6573 17.0292C15.6567 17.399 15.6561 17.769 15.6561 18.1388V18.3202H18.328V18.1149C18.328 17.6629 18.3278 17.211 18.3275 16.7591C18.327 15.6296 18.3264 14.5001 18.3294 13.3702C18.3308 12.8597 18.276 12.3563 18.1508 11.8627C17.9638 11.1286 17.5771 10.5211 16.9485 10.0824C16.5027 9.77019 16.0133 9.5691 15.4663 9.5466C15.404 9.54401 15.3412 9.54062 15.2781 9.53721C14.9984 9.52209 14.7141 9.50673 14.4467 9.56066C13.6817 9.71394 13.0096 10.0641 12.5019 10.6814C12.4429 10.7522 12.3852 10.8241 12.2991 10.9314L12.2797 10.9557V9.76176ZM5.68164 18.3244H8.33242V9.76733H5.68164V18.3244Z" fill="currentcolor"/>
</svg></div></a></div></div><div class="f_top-right-group"><div class="f_links-col"><div class="f_link-title">Product</div><ul role="list" class="f_links-list"><li class="f_link-item"><a href="/unify" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a859:6712cc61-808c-ccab-0d36-2ccadbfe390c" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="6712cc61-808c-ccab-0d36-2ccadbfe390c" data-wf-component-context="%5B%7B%22componentId%22%3A%226712cc61-808c-ccab-0d36-2ccadbfe38f1%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a859%22%7D%5D" class="f_link">CloudBees Unify</a></li><li class="f_link-item"><a href="/capabilities/ci-cd-workflows" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a859:6712cc61-808c-ccab-0d36-2ccadbfe3912" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="6712cc61-808c-ccab-0d36-2ccadbfe3912" data-wf-component-context="%5B%7B%22componentId%22%3A%226712cc61-808c-ccab-0d36-2ccadbfe38f1%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a859%22%7D%5D" class="f_link">CI/CD</a></li><li class="f_link-item"><a href="/capabilities/compliance" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a859:6712cc61-808c-ccab-0d36-2ccadbfe3915" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="6712cc61-808c-ccab-0d36-2ccadbfe3915" data-wf-component-context="%5B%7B%22componentId%22%3A%226712cc61-808c-ccab-0d36-2ccadbfe38f1%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a859%22%7D%5D" class="f_link">Security and Compliance</a></li><li class="f_link-item"><a href="/capabilities/feature-management" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a859:6712cc61-808c-ccab-0d36-2ccadbfe3918" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="6712cc61-808c-ccab-0d36-2ccadbfe3918" data-wf-component-context="%5B%7B%22componentId%22%3A%226712cc61-808c-ccab-0d36-2ccadbfe38f1%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a859%22%7D%5D" class="f_link">Feature Management</a></li><li class="f_link-item"><a href="/capabilities/cloudbees-smart-tests" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a859:6712cc61-808c-ccab-0d36-2ccadbfe391b" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="6712cc61-808c-ccab-0d36-2ccadbfe391b" data-wf-component-context="%5B%7B%22componentId%22%3A%226712cc61-808c-ccab-0d36-2ccadbfe38f1%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a859%22%7D%5D" class="f_link">Smart Tests</a></li><li class="f_link-item"><a href="/capabilities/release-orchestration" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a859:6712cc61-808c-ccab-0d36-2ccadbfe391e" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="6712cc61-808c-ccab-0d36-2ccadbfe391e" data-wf-component-context="%5B%7B%22componentId%22%3A%226712cc61-808c-ccab-0d36-2ccadbfe38f1%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a859%22%7D%5D" class="f_link">Release Orchestration</a></li><li class="f_link-item"><a href="/capabilities/analytics" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a859:6712cc61-808c-ccab-0d36-2ccadbfe3921" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="6712cc61-808c-ccab-0d36-2ccadbfe3921" data-wf-component-context="%5B%7B%22componentId%22%3A%226712cc61-808c-ccab-0d36-2ccadbfe38f1%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a859%22%7D%5D" class="f_link">Analytics</a></li></ul></div><div class="f_links-col"><div class="f_link-title">Solutions</div><ul role="list" class="f_links-list"><li class="f_link-item"><a data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a859:6712cc61-808c-ccab-0d36-2ccadbfe3928" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="6712cc61-808c-ccab-0d36-2ccadbfe3928" data-wf-component-context="%5B%7B%22componentId%22%3A%226712cc61-808c-ccab-0d36-2ccadbfe38f1%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a859%22%7D%5D" href="/use-case/jenkins-modernization" class="f_link">AI-Powered CI</a></li><li class="f_link-item"><a data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a859:6712cc61-808c-ccab-0d36-2ccadbfe392b" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="6712cc61-808c-ccab-0d36-2ccadbfe392b" data-wf-component-context="%5B%7B%22componentId%22%3A%226712cc61-808c-ccab-0d36-2ccadbfe38f1%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a859%22%7D%5D" href="/use-case/agentic-devops" class="f_link">Governed AI software delivery</a></li><li class="f_link-item"><a data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a859:6712cc61-808c-ccab-0d36-2ccadbfe392e" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="6712cc61-808c-ccab-0d36-2ccadbfe392e" data-wf-component-context="%5B%7B%22componentId%22%3A%226712cc61-808c-ccab-0d36-2ccadbfe38f1%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a859%22%7D%5D" href="/use-case/orchestration-and-governance" class="f_link">Multi-tool release orchestration</a></li><li class="f_link-item"><a data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a859:6712cc61-808c-ccab-0d36-2ccadbfe3931" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="6712cc61-808c-ccab-0d36-2ccadbfe3931" data-wf-component-context="%5B%7B%22componentId%22%3A%226712cc61-808c-ccab-0d36-2ccadbfe38f1%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a859%22%7D%5D" href="/use-case/security-and-compliance" class="f_link">Continuous Security and Compliance</a></li></ul></div><div class="f_links-col"><div class="f_link-title">Resources</div><ul role="list" class="f_links-list"><li class="f_link-item"><a data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a859:6712cc61-808c-ccab-0d36-2ccadbfe3938" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="6712cc61-808c-ccab-0d36-2ccadbfe3938" data-wf-component-context="%5B%7B%22componentId%22%3A%226712cc61-808c-ccab-0d36-2ccadbfe38f1%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a859%22%7D%5D" href="/blog" class="f_link">Blog</a></li><li class="f_link-item"><a data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a859:6712cc61-808c-ccab-0d36-2ccadbfe393b" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="6712cc61-808c-ccab-0d36-2ccadbfe393b" data-wf-component-context="%5B%7B%22componentId%22%3A%226712cc61-808c-ccab-0d36-2ccadbfe38f1%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a859%22%7D%5D" href="https://ai.cloudbees.com/" class="f_link">AI Design Partner Program</a></li><li class="f_link-item"><a data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a859:6712cc61-808c-ccab-0d36-2ccadbfe393e" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="6712cc61-808c-ccab-0d36-2ccadbfe393e" data-wf-component-context="%5B%7B%22componentId%22%3A%226712cc61-808c-ccab-0d36-2ccadbfe38f1%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a859%22%7D%5D" href="/company/trust-center" class="f_link">Trust Center</a></li><li class="f_link-item"><a data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a859:6712cc61-808c-ccab-0d36-2ccadbfe3944" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="6712cc61-808c-ccab-0d36-2ccadbfe3944" data-wf-component-context="%5B%7B%22componentId%22%3A%226712cc61-808c-ccab-0d36-2ccadbfe38f1%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a859%22%7D%5D" href="/security-advisories" class="f_link">Security Advisories</a></li><li class="f_link-item"><a data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a859:6712cc61-808c-ccab-0d36-2ccadbfe3947" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="6712cc61-808c-ccab-0d36-2ccadbfe3947" data-wf-component-context="%5B%7B%22componentId%22%3A%226712cc61-808c-ccab-0d36-2ccadbfe38f1%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a859%22%7D%5D" href="https://docs.cloudbees.com/" class="f_link">Documentation</a></li><li class="f_link-item"><a data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a859:6712cc61-808c-ccab-0d36-2ccadbfe394a" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="6712cc61-808c-ccab-0d36-2ccadbfe394a" data-wf-component-context="%5B%7B%22componentId%22%3A%226712cc61-808c-ccab-0d36-2ccadbfe38f1%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a859%22%7D%5D" href="https://support.cloudbees.com/hc/en-us" class="f_link">Support</a></li><li class="f_link-item"><a data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a859:6712cc61-808c-ccab-0d36-2ccadbfe394d" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="6712cc61-808c-ccab-0d36-2ccadbfe394d" data-wf-component-context="%5B%7B%22componentId%22%3A%226712cc61-808c-ccab-0d36-2ccadbfe38f1%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a859%22%7D%5D" href="/services" class="f_link">Customer Success and Professional Services</a></li><li class="f_link-item"><a data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a859:45f652bb-ce51-bb9e-5315-9591f50565be" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="45f652bb-ce51-bb9e-5315-9591f50565be" data-wf-component-context="%5B%7B%22componentId%22%3A%226712cc61-808c-ccab-0d36-2ccadbfe38f1%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a859%22%7D%5D" href="/ci-waste-calculator" class="f_link">CI Waste Calculator</a></li></ul></div><div class="f_links-col"><div class="f_link-title">Company</div><ul role="list" class="f_links-list"><li class="f_link-item"><a data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a859:6712cc61-808c-ccab-0d36-2ccadbfe3954" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="6712cc61-808c-ccab-0d36-2ccadbfe3954" data-wf-component-context="%5B%7B%22componentId%22%3A%226712cc61-808c-ccab-0d36-2ccadbfe38f1%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a859%22%7D%5D" href="/about-us" class="f_link">About Us</a></li><li class="f_link-item"><a data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a859:6712cc61-808c-ccab-0d36-2ccadbfe3957" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="6712cc61-808c-ccab-0d36-2ccadbfe3957" data-wf-component-context="%5B%7B%22componentId%22%3A%226712cc61-808c-ccab-0d36-2ccadbfe38f1%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a859%22%7D%5D" href="/newsroom" class="f_link">Press and Recognition</a></li><li class="f_link-item"><a data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a859:6712cc61-808c-ccab-0d36-2ccadbfe395a" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="6712cc61-808c-ccab-0d36-2ccadbfe395a" data-wf-component-context="%5B%7B%22componentId%22%3A%226712cc61-808c-ccab-0d36-2ccadbfe38f1%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a859%22%7D%5D" href="/partners" class="f_link">Partners</a></li><li class="f_link-item"><a data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a859:6712cc61-808c-ccab-0d36-2ccadbfe395d" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="6712cc61-808c-ccab-0d36-2ccadbfe395d" data-wf-component-context="%5B%7B%22componentId%22%3A%226712cc61-808c-ccab-0d36-2ccadbfe38f1%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a859%22%7D%5D" href="/careers" class="f_link">Careers</a></li><li class="f_link-item"><a href="/pricing" data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a859:d33d1c36-3415-6d11-7870-a106dcea9ba6" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="d33d1c36-3415-6d11-7870-a106dcea9ba6" data-wf-component-context="%5B%7B%22componentId%22%3A%226712cc61-808c-ccab-0d36-2ccadbfe38f1%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a859%22%7D%5D" class="f_link">Pricing</a></li></ul></div></div></div><div class="f_separator"></div><div class="f_bottom-group"><div class="ts-cap tc-tertiary">© 2026 CloudBees, Inc., CloudBees® and the Infinity logo® are registered trademarks of CloudBees, Inc. in the United States and may be registered in other countries. Other products or brand names may be trademarks or registered trademarks of CloudBees, Inc. or their respective holders.</div><div class="footer_bottom-links"><div class="footer_bottom-links"><a data-wf-native-id-path="fac149d5-edf9-39d0-68f9-084a33c3a859:6712cc61-808c-ccab-0d36-2ccadbfe3968" data-wf-ao-click-engagement-tracking="true" data-wf-element-id="6712cc61-808c-ccab-0d36-2ccadbfe3968" data-wf-component-context="%5B%7B%22componentId%22%3A%226712cc61-808c-ccab-0d36-2ccadbfe38f1%22%2C%22instanceId%22%3A%22fac149d5-edf9-39d0-68f9-084a33c3a859%22%7D%5D" href="/company/terms-of-service" class="footer_bottom-link w-inline-block"><div>Terms of Service</div></a></div></div></div></div></div></footer></div><script src="https://d3e54v103j8qbb.cloudfront.net/js/jquery-3.5.1.min.dc5e7f18c8.js?site=695e1939655d6c0175b126da" type="text/javascript" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script><script src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/js/cloudbees-staging.schunk.181a2070a530b302.js" type="text/javascript" integrity="sha384-JWdgqTXFub/8eKOkMquT9MN7nnkFfqj2IsxHNIv8W+n3NdpIA3X+EZEx+ykmtOKR" crossorigin="anonymous"></script><script src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/js/cloudbees-staging.schunk.4bd9a8a936f24217.js" type="text/javascript" integrity="sha384-zCbeDEMPOwW6NN4QH/7/feRaV4oAvhevE2fLMRH0Y7cZBg2ufLb96qHt2eBfI0Vi" crossorigin="anonymous"></script><script src="https://cdn.prod.website-files.com/695e1939655d6c0175b126da/js/cloudbees-staging.218fa848.f809c73b119cb9bd.js" type="text/javascript" integrity="sha384-oBYsZOOWP+A6rKZtP5LzKQK5H44W/cXeUHUppiS1lkGsy/KCHgXg+gnBo018jM4V" crossorigin="anonymous"></script><script>
//NAVBAR
// Check scroll position and toggle class
function checkScroll() {
var scroll = $(window).scrollTop();
if (scroll > 0) {
$("#header").addClass('scroll');
} else {
$("#header").removeClass('scroll');
}
}
// Run on scroll
$(window).on('scroll', checkScroll);
// Run on load
$(document).ready(function() {
checkScroll();
// Toggle header's 'scroll' class only if at top
$(".nav__menu-button").on('click', function() {
if ($(window).scrollTop() === 0) {
$("#header").toggleClass('scroll');
}
// Always toggle page scroll (disable/enable)
$('body').toggleClass('no-scroll');
});
});
</script>
<!-- Prevent CMS filter forms (Finsweet Attributes) from triggering native Webflow form submissions / notification emails. Finsweet filtering runs on input/change events and does not require the form to actually submit. -->
<script>
document.addEventListener('DOMContentLoaded', function () {
document.querySelectorAll('form[fs-list-element="filters"]').forEach(function (form) {
form.addEventListener('submit', function (e) {
e.preventDefault();
});
});
});
</script>
<style>
/* 2. Set all animation and transition times to exactly 0 seconds */
#onetrust-banner-sdk,
#onetrust-banner-sdk * {
animation-duration: 0s !important;
transition-duration: 0s !important;
animation-delay: 0s !important;
transition-delay: 0s !important;
}
/* 3. Use standard system fonts to stop font-swapping layout shifts (CLS) */
#onetrust-banner-sdk,
#onetrust-banner-sdk *,
#onetrust-banner-sdk button {
font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif !important;
}
</style>
<script>
window.addEventListener('load', () => {
const element = document.getElementById('content');
const result = document.getElementById('result');
if (!element || !result) return;
const text = element.textContent || '';
const words = text.trim().match(/\w+/g)?.length || 0;
const minutes = Math.max(1, Math.round(words / 170));
result.textContent = `${minutes}`;
});
</script>
<script>
window.addEventListener('DOMContentLoaded', () => {
const pageUrl = encodeURIComponent(window.location.href);
const pageTitle = encodeURIComponent(document.title);
const shareUrls = {
linkedin: `https://www.linkedin.com/sharing/share-offsite/?url=${pageUrl}`,
facebook: `https://www.facebook.com/sharer/sharer.php?u=${pageUrl}`,
twitter: `https://twitter.com/intent/tweet?url=${pageUrl}&text=${pageTitle}`,
reddit: `https://www.reddit.com/submit?url=${pageUrl}&title=${pageTitle}`,
};
function openSharePopup(url) {
const width = 600;
const height = 600;
const left = window.screenX + (window.outerWidth - width) / 2;
const top = window.screenY + (window.outerHeight - height) / 2;
window.open(url, 'share-window', `width=${width},height=${height},left=${left},top=${top},resizable=yes,scrollbars=yes`);
}
function setupShareButton(selector, url) {
const button = document.querySelector(selector);
if (!button) return;
button.setAttribute('href', url);
button.addEventListener('click', (event) => {
event.preventDefault();
openSharePopup(url);
});
}
setupShareButton('[aria-label="Share on LinkedIn"]', shareUrls.linkedin);
setupShareButton('[aria-label="Share on Facebook"]', shareUrls.facebook);
setupShareButton('[aria-label="Share on Twitter"]', shareUrls.twitter);
setupShareButton('[aria-label="Share on Reddit"]', shareUrls.reddit);
const copyButton = document.querySelector('[aria-label="Copy URL"], [title="Copy URL"]');
if (copyButton) {
copyButton.addEventListener('click', async (event) => {
event.preventDefault();
try {
await navigator.clipboard.writeText(window.location.href);
copyButton.classList.add('is-copied');
setTimeout(() => {
copyButton.classList.remove('is-copied');
}, 2000);
} catch (error) {
console.error('Copy failed:', error);
}
});
}
});
</script>
<link href="https://cdn.jsdelivr.net/npm/prismjs/themes/prism.min.css" rel="stylesheet" />
<script src="https://cdn.jsdelivr.net/npm/prismjs/prism.min.js"></script>
<script>
document.addEventListener('DOMContentLoaded', () => {
const template = document.getElementById('code-template');
if (!template) return;
const LANG_LABELS = {
js: 'JavaScript',
javascript: 'JavaScript',
ts: 'TypeScript',
typescript: 'TypeScript',
jsx: 'React',
tsx: 'React (TS)',
react: 'React',
css: 'CSS',
html: 'HTML',
bash: 'Bash',
shell: 'Shell',
sh: 'Shell',
json: 'JSON',
python: 'Python',
py: 'Python',
makefile: 'Makefile',
make: 'Makefile',
yaml: 'YAML',
yml: 'YAML',
};
function normalizeLang(lang) {
lang = (lang || 'code').toLowerCase().trim();
const aliases = {
javascript: 'js',
typescript: 'ts',
sh: 'bash',
shell: 'bash',
py: 'python',
make: 'makefile',
yml: 'yaml',
};
return aliases[lang] || lang;
}
/* ---------- Webflow imported code fallback ----------
Converts:
<p><code>LANG:makefile<br>...</code></p>
into:
<pre data-lang="makefile"><code>...</code></pre>
*/
function getCodeTextWithBreaks(codeEl) {
let text = '';
codeEl.childNodes.forEach((node) => {
if (node.nodeType === Node.TEXT_NODE) {
text += node.nodeValue;
} else if (node.nodeName === 'BR') {
text += '\n';
}
});
return text;
}
document.querySelectorAll('.w-richtext p > code').forEach((codeEl) => {
const rawText = getCodeTextWithBreaks(codeEl);
const lines = rawText.replace(/\r\n/g, '\n').split('\n');
const firstLine = (lines[0] || '').trim();
const match = firstLine.match(/^LANG:(.+)$/i);
if (!match) return;
const lang = normalizeLang(match[1]);
lines.shift();
const pre = document.createElement('pre');
pre.setAttribute('data-lang', lang);
const code = document.createElement('code');
code.textContent = lines.join('\n').replace(/^\n+|\n+$/g, '');
pre.appendChild(code);
const paragraph = codeEl.closest('p');
if (paragraph) {
paragraph.replaceWith(pre);
}
});
/* ---------- Render code blocks ---------- */
document.querySelectorAll('pre[data-lang]').forEach((pre) => {
const lang = normalizeLang(pre.dataset.lang || 'code');
const clone = template.content.cloneNode(true);
const wrapper = clone.querySelector('.code-block');
const body = clone.querySelector('.code-body');
const langText = clone.querySelector('.code-lang-wr p');
const copyBtn = clone.querySelector('.code-copy');
let code = pre.querySelector('code');
if (!code) {
code = document.createElement('code');
code.textContent = pre.textContent.trim();
pre.innerHTML = '';
pre.appendChild(code);
}
code.className = `language-${lang}`;
pre.setAttribute('data-lang', lang);
if (langText) {
langText.textContent = LANG_LABELS[lang] || lang.toUpperCase();
}
const parent = pre.parentNode;
parent.insertBefore(wrapper, pre);
body.appendChild(pre);
if (copyBtn) {
copyBtn.addEventListener('click', (e) => {
e.preventDefault();
navigator.clipboard.writeText(code.textContent).then(() => {
copyBtn.setAttribute('aria-label', 'Copied');
setTimeout(() => {
copyBtn.setAttribute('aria-label', 'Copy Code');
}, 1500);
});
});
}
if (window.Prism) {
Prism.highlightElement(code);
}
});
});
</script>
<!-- TOC -->
<script src="https://cdn.jsdelivr.net/gh/helenmadeit/webflow-scripts/toc.js"></script></body></html>