2411 lines
105 KiB
HTML
2411 lines
105 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
|
|
<meta charset="utf-8"/>
|
|
|
|
|
|
<meta http-equiv="Content-Security-Policy" content="
|
|
default-src 'self' d3r49iyjzglexf.cloudfront.net dsbai75kcyzl9.cloudfront.net d2qm0z2kzhiwa.cloudfront.net;
|
|
img-src 'self' data: http: https:;
|
|
script-src 'self' d3r49iyjzglexf.cloudfront.net dsbai75kcyzl9.cloudfront.net d2qm0z2kzhiwa.cloudfront.net www2.circleci.com j.6sc.co *.algolianet.com *.algolia.net https://cdn-assets-prod.s3.amazonaws.com/js/preview2/ https://s3-us-west-2.amazonaws.com/b2bjsstore/b/LNKLDHM3E2OJ/reb2b.js.gz cdn.amplitude.com https://www.clarity.ms/tag/uet/ tags.clickagy.com https://a.clickcertain.com/px/li/ cdnjs.cloudflare.com/ajax/libs/ dn1f1hmdujj40.cloudfront.net/js/ consent.cookiebot.com consentcdn.cookiebot.com https://www.datadoghq-browser-agent.com googleads.g.doubleclick.net/pagead/ connect.facebook.net www.google.ca/pagead/ www.google.co.jp/pagead/ www.google.co.uk/pagead/ www.google.com/pagead/ https://www.google.com/recaptcha/ www.google.ie/pagead/ www.google-analytics.com www.googleadservices.com/pagead/ www.googletagmanager.com https://boards.greenhouse.io/embed/job_board/js https://www.gstatic.com/recaptcha/ https://b.st-hatena.com/js/bookmark_button.js *.hotjar.com *.hotjar.io cdn.jsdelivr.net/clipboard.js/ https://cdn.jsdelivr.net/npm/algoliasearch@4.24.0/dist/algoliasearch-lite.umd.js https://cdn.jsdelivr.net/npm/instantsearch.js@4.74.2/dist/instantsearch.production.min.js https://cdn.jsdelivr.net/npm/intl-tel-input@18.1.5/build/js/utils.js https://b-code.liadm.com/lc2.js https://d-code.liadm.com/did-008f.min.js https://i.liadm.com/s/56408 https://www.line-website.com/social-plugins/js/thirdparty/loader.min.js munchkin.marketo.net snap.licdn.com/li.lms-analytics/ in.ml314.com ml314.com cdn.optimizely.com/js/ cdn3.optimizely.com/js/ app.optimizely.com https://master-py3-monolithapp.app.optimizely.com/ https://optimizely.s3.amazonaws.com/js/ platform.twitter.com *.qualified.com a.quora.com https://www.redditstatic.com/ads/pixel.js https://a.remarketstats.com/px/li-co/ cdn.segment.com https://cdn.sprig.com https://tags.srv.stackadapt.com/events.js cookie.sync.usonar.jp cdn.cookie.sync.usonar.jp apis.usonar.jp https://a.usbrowserspeed.com/cs https://opps-widget.getwarmly.com www.youtube.com/iframe_api www.youtube.com/s/player/ https://ws.zoominfo.com/pixel/ 'unsafe-inline' 'unsafe-eval' https://unpkg.com/@highlightjs/ https://js.zi-scripts.com/zi-tag.js https://static.reo.dev *.hsadspixel.net *.hs-analytics.net js.hscta.net js-eu1.hscta.net *.hubspot.com static.hsappstatic.net *.usemessages.com *.hs-banner.com *.hubspotusercontent00.net *.hubspotusercontent10.net *.hubspotusercontent20.net *.hubspotusercontent20.net *.hubspotusercontent30.net *.hubspotusercontent40.net *.hscollectedforms.net *.hsleadflows.net *.hsforms.net *.hsforms.com *.hs-scripts.com *.hubspotfeedback.com feedback.hubapi.com feedback-eu1.hubapi.com 48752163.fs1.hubspotusercontent-na1.net *.hubspot.net https://cdn.jsdelivr.net/npm/ blob: bzrcdn.openai.com;
|
|
style-src 'self' d3r49iyjzglexf.cloudfront.net dsbai75kcyzl9.cloudfront.net d2qm0z2kzhiwa.cloudfront.net www2.circleci.com fonts.googleapis.com www.googletagmanager.com/debug/ https://cdn.jsdelivr.net/npm/instantsearch.css@8.5.1/themes/reset-min.css https://tags.srv.stackadapt.com/sa.css *.qualified.com 'unsafe-inline' https://unpkg.com/@highlightjs/ *.hubspotusercontent00.net *.hubspotusercontent10.net *.hubspotusercontent20.net *.hubspotusercontent30.net *.hubspotusercontent40.net cdn2.hubspot.net;
|
|
font-src 'self' d3r49iyjzglexf.cloudfront.net dsbai75kcyzl9.cloudfront.net d2qm0z2kzhiwa.cloudfront.net fonts.gstatic.com/s/ *.hotjar.com *.hotjar.io *.hubspot.net *.qualified.com;
|
|
frame-src 'self' www2.circleci.com consentcdn.cookiebot.com bid.g.doubleclick.net https://td.doubleclick.net e.infogram.com www.facebook.com https://www.google.com/ www.googletagmanager.com https://boards.greenhouse.io https://b.hatena.ne.jp/entry/button/ https://*.hotjar.com *.hotjar.io https://social-plugins.line.me/widget/ a8188917468.cdn.optimizely.com *.qualified.com platform.twitter.com syndication.twitter.com player.vimeo.com www.youtube.com https://job-boards.greenhouse.io https://i.liadm.com/ *.hubspot.com *.hs-sites.com *.hs-sites-eu1.com *.hubspot.net play.hubspotvideo.com play-eu1.hubspotvideo.com *.hsforms.net *.hsforms.com;
|
|
base-uri 'self';
|
|
connect-src 'self' d3r49iyjzglexf.cloudfront.net dsbai75kcyzl9.cloudfront.net d2qm0z2kzhiwa.cloudfront.net https://*.circleci.com/ http://localhost:5338 c.6sc.co https://eps.6sc.co/v3/company/details https://epsilon.6sense.com/v3/company/details https://epsilon-globalaccelerator.6sense.com/v3/company/details https://epsilon-cloudfront.6sense.com/v3/company/details https://ipv6.6sc.co/ https://v.eps.6sc.co/v ib.adnxs.com https://secure.adnxs.com/ *.algolia.net *.algolianet.com https://alocdn.com/c/vn3d8u2u/a/xtarget/p.json https://cdn-assets-prod.s3.amazonaws.com/js/preview2/ api.amplitude.com https://azureatom2.westus3.cloudapp.azure.com:9091/ws/simple/ https://*.browser-intake-datadoghq.com https://aorta.clickagy.com hemsync.clickagy.com/external/ https://cdn.contentful.com/spaces/il1yandlcjgk/environments/master/ https://consentcdn.cookiebot.com *.g.doubleclick.net https://www.facebook.com/tr/ opps-api.getwarmly.com/api/ https://analytics.google.com/g/ https://google.com/ccm/form-data/ www.google.ca/pagead/ www.google.co.jp/pagead/ www.google.co.uk/pagead/ www.google.com/pagead/ https://google.com/pagead/form-data/ www.google.ie/pagead/ www.google-analytics.com www.googleadservices.com/pagead/ https://www.google.com/ccm/collect *.hotjar.com:* *.hotjar.com *.hotjar.io wss://ws.hotjar.com/api/v2/client/ws https://hubspot-forms-static-embed.s3.amazonaws.com/prod/45466221/ https://pro.ip-api.com/json https://ipapi.co/json *.liadm.com https://px.ads.linkedin.com/attribution_trigger https://px.ads.linkedin.com/wa/ 485-zmh-626.mktoresp.com/webevents/ app.optimizely.com/api/client/ errors.client.optimizely.com/log logx.optimizely.com/v1/events https://master-py3-monolithapp.app.optimizely.com/api/client/ tapi.optimizely.com/api/ *.qualified.com wss://ws.qualified.com wss://ws2.qualified.com/cable https://conversions-config.reddit.com/v1/pixel/error https://pixel-config.reddit.com/pixels/a2_gnjgkmy4996t/config https://www.redditstatic.com/ads/conversions-config/v1/pixel/config/a2_gnjgkmy4996t_telemetry https://api.rollbar.com/api/1/item/ api.segment.io/v1/ cdn.segment.com/v1/ https://cdn.segment.com/analytics-next/bundles/* https://cdn.segment.com/next-integrations/integrations/* https://api.sprig.com https://cdn.sprig.com https://tags.srv.stackadapt.com/sa.jpeg https://tags.srv.stackadapt.com/saq_pxl https://tags.srv.stackadapt.com/js_tracking https://a.usbrowserspeed.com/cs ws.zoominfo.com/pixel/ https://js.zi-scripts.com/unified/v1/master/getSubscriptions https://js.zi-scripts.com/unified/v1/master/logError https://cdn.segment.com/v1/projects/AbgkrgN4cbRhAVEwlzMkHbwvrXnxHh35/settings api.segment.io api.segment.com track.segment.com cdn.segment.com https://api.reo.dev https://www.google.com/rmkt/collect/805776048/ https://www.google.com/rmkt/collect/1032131388/ *.hubapi.com js.hscta.net js-eu1.hscta.net *.hubspot.com *.hs-banner.com *.hscollectedforms.net *.hsforms.com static.hsappstatic.net ad.doubleclick.net bzrcdn.openai.com bzr.openai.com;
|
|
object-src 'none';
|
|
form-action 'self' www.facebook.com/tr/ platform.twitter.com syndication.twitter.com *.hsforms.com;
|
|
media-src 'self' d3r49iyjzglexf.cloudfront.net dsbai75kcyzl9.cloudfront.net d2qm0z2kzhiwa.cloudfront.net https://videos.ctfassets.net/il1yandlcjgk/ mediastream: *.qualified.com;
|
|
">
|
|
|
|
<script>
|
|
window.dataLayer = window.dataLayer || [];
|
|
function gtag(){dataLayer.push(arguments);}
|
|
|
|
gtag('consent', 'default', {
|
|
'ad_personalization': 'granted',
|
|
'ad_storage': 'granted',
|
|
'ad_user_data': 'granted',
|
|
'analytics_storage': 'granted',
|
|
'functionality_storage': 'granted',
|
|
'personalization_storage': 'granted',
|
|
'wait_for_update': 500
|
|
});
|
|
|
|
gtag('consent', 'default', {
|
|
'ad_personalization': 'denied',
|
|
'ad_storage': 'denied',
|
|
'ad_user_data': 'denied',
|
|
'analytics_storage': 'denied',
|
|
'functionality_storage': 'denied',
|
|
'personalization_storage': 'denied',
|
|
'wait_for_update': 500,
|
|
'region': [
|
|
'AT', 'BE', 'BG', 'CH', 'CY', 'CZ', 'DE', 'DK', 'EE', 'ES',
|
|
'FI', 'FR', 'GB', 'GG', 'GR', 'HR', 'HU', 'IE', 'IM', 'IS',
|
|
'IT', 'JE', 'LI', 'LT', 'LU', 'LV', 'MT', 'NL', 'NO', 'PL',
|
|
'PT', 'RO', 'SE', 'SI', 'SK', 'BR', 'CA-QC'
|
|
]
|
|
});
|
|
|
|
gtag('set', 'ads_data_redaction', true);
|
|
gtag('set', 'url_passthrough', false);
|
|
</script>
|
|
|
|
<script id="Cookiebot" src="https://consent.cookiebot.com/uc.js" data-cbid="a28b71f3-4d2e-4eac-93bc-34929948dd7d" type="text/javascript" async></script>
|
|
<script type="text/javascript" src="https://d2qm0z2kzhiwa.cloudfront.net/blog/assets/node_modules/algoliasearch/dist/lite/builds/browser.umd-28165911fb7bb83c3e9ed0fb541b3362.js" crossorigin="anonymous" defer></script>
|
|
|
|
<script type="text/javascript" src="https://d2qm0z2kzhiwa.cloudfront.net/blog/assets/node_modules/instantsearch.js/dist/instantsearch.production.min-643e287d1ee3188565992de26a16c172.js" crossorigin="anonymous" defer></script>
|
|
|
|
<meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<meta name="mobile-web-app-capable" content="yes">
|
|
<meta name="apple-mobile-web-app-status-bar-style" content="black">
|
|
<link href="/blog/feed.xml" type="application/rss+xml" rel="alternate" title="Latest 10 blog posts (atom)">
|
|
|
|
|
|
<script data-cookieconsent="marketing" type="text/plain">
|
|
(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=
|
|
'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
|
|
})(window,document,'script','dataLayer','GTM-W9HDVK');
|
|
</script>
|
|
|
|
|
|
<link rel="apple-touch-icon" sizes="180x180" href="https://d2qm0z2kzhiwa.cloudfront.net/blog/assets/blog/meta/apple-touch-icon-ae782d6339f660e1c51fe68f58d7f0bb.png">
|
|
<link rel="icon" type="image/png" sizes="512x512" href="https://d2qm0z2kzhiwa.cloudfront.net/blog/assets/blog/meta/android-chrome-512x512-b0a3962c7ec90ae60cb31f99a3fc37b5.png">
|
|
<link rel="icon" type="image/png" sizes="192x192" href="https://d2qm0z2kzhiwa.cloudfront.net/blog/assets/blog/meta/android-chrome-192x192-4b4b8e31a8e09d0c50661d56be7abe09.png">
|
|
<link rel="icon" type="image/png" sizes="150x150" href="https://d2qm0z2kzhiwa.cloudfront.net/blog/assets/blog/meta/android-chrome-192x192-4b4b8e31a8e09d0c50661d56be7abe09.png">
|
|
<link rel="icon" type="image/png" sizes="32x32" href="https://d2qm0z2kzhiwa.cloudfront.net/blog/assets/blog/meta/favicon-32x32-b99b3f32c912ffa11871fca4c1bc9794.png">
|
|
<link rel="icon" type="image/png" sizes="16x16" href="https://d2qm0z2kzhiwa.cloudfront.net/blog/assets/blog/meta/favicon-16x16-3753a156e703f3623e04c22092c57784.png">
|
|
<link rel="manifest" href="https://d2qm0z2kzhiwa.cloudfront.net/blog/assets/blog/meta/site-df659f8936fedc4317891e7da811d30b.webmanifest">
|
|
<link rel="mask-icon" href="https://d2qm0z2kzhiwa.cloudfront.net/blog/assets/blog/meta/safari-pinned-tab-762525fdd8903e935f141a92dd70b325.svg" color="#04aa51">
|
|
<link rel="shortcut icon" href="https://d2qm0z2kzhiwa.cloudfront.net/blog/assets/blog/meta/favicon-a4b5df34fe849ecd8018a252dbf89a6c.ico">
|
|
<meta name="apple-mobile-web-app-title" content="CircleCI">
|
|
<meta name="application-name" content="CircleCI">
|
|
<meta name="msapplication-TileColor" content="#161616">
|
|
<meta name="msapplication-square150x150logo" content="https://d2qm0z2kzhiwa.cloudfront.net/blog/assets/blog/meta/mstile-150x150-126d37f348480d7ae2b632e3033a2f25.png" />
|
|
<meta name="theme-color" content="#ffffff">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<link rel="alternate" hreflang="x-default" href="https://circleci.com/blog/">
|
|
|
|
|
|
|
|
|
|
|
|
<link rel="alternate" hreflang="en" href="https://circleci.com/blog/">
|
|
|
|
|
|
|
|
<link rel="alternate" hreflang="ja" href="https://circleci.com/ja/blog/">
|
|
|
|
|
|
|
|
<meta http-equiv="Accept-CH" content="DPR, Width, Viewport-Width">
|
|
|
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
<link rel="preload" href="https://fonts.googleapis.com/css2?family=Inter:wght@100..900&family=Space+Grotesk:wght@300..700&display=swap" as="style" onload="this.onload=null;this.rel='stylesheet'">
|
|
<noscript><link href="https://fonts.googleapis.com/css2?family=Inter:wght@100..900&family=Space+Grotesk:wght@300..700&display=swap" rel="stylesheet"></noscript>
|
|
|
|
<link type="text/css" rel="stylesheet" href="https://d2qm0z2kzhiwa.cloudfront.net/blog/assets/morph/main-51e101e43381bbe07a29106e867549be.css" >
|
|
|
|
|
|
|
|
|
|
<script type="text/javascript">
|
|
(function () {
|
|
var pageSubcategory = null || null;
|
|
var pageName = null || null;
|
|
|
|
// store as globals to read off of it later in analytics.js
|
|
window.analyticsPageProperties = {
|
|
pageSubcategory: pageSubcategory,
|
|
pageName: pageName,
|
|
};
|
|
})();
|
|
|
|
window.thirdPartyIds = {
|
|
|
|
};
|
|
|
|
window.circleJsConfig = {
|
|
analytics: {
|
|
enable: true
|
|
},
|
|
page: {
|
|
lang: "en"
|
|
},
|
|
env: "production"
|
|
};
|
|
</script>
|
|
|
|
|
|
<script>
|
|
!function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","page","once","off","on"];analytics.factory=function(t){return function(){var e=Array.prototype.slice.call(arguments);e.unshift(t);analytics.push(e);return analytics}};for(var t=0;t<analytics.methods.length;t++){var e=analytics.methods[t];analytics[e]=analytics.factory(e)}analytics.load=function(t){var e=document.createElement("script");e.type="text/javascript";e.async=!0;e.src=("https:"===document.location.protocol?"https://":"http://")+"cdn.segment.com/analytics.js/v1/"+t+"/analytics.min.js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(e,n)};analytics.SNIPPET_VERSION="3.1.0";}}();
|
|
</script>
|
|
<script data-cookieconsent="marketing" type="text/plain">
|
|
analytics.load("AbgkrgN4cbRhAVEwlzMkHbwvrXnxHh35");
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<title>The CircleCI Blog - CircleCI</title>
|
|
|
|
<meta property="og:title" content="The CircleCI Blog - CircleCI" />
|
|
|
|
|
|
<meta name="description" content="The CircleCI blog is your home for DevOps, continuous integration and delivery, and engineering productivity. Explore tutorials, guides, and best practices." />
|
|
<meta property="og:description" content="The CircleCI blog is your home for DevOps, continuous integration and delivery, and engineering productivity. Explore tutorials, guides, and best practices." />
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<link rel="canonical" href="https://circleci.com/blog/" />
|
|
<meta property="og:url" content="https://circleci.com/blog/" />
|
|
|
|
|
|
<meta property="og:site_name" content="CircleCI" />
|
|
|
|
|
|
|
|
<meta property="og:image" content="https://images.ctfassets.net/il1yandlcjgk/3NJSDelkFaAtnyFOJNghjQ/df5d4218a3ca83233e471c7eab072b90/circleci-og-morph.png?w=1200&fm=jpg" />
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<meta property="og:type" content="website" />
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<meta name="twitter:card" content="summary_large_image" />
|
|
|
|
|
|
<meta name="twitter:site" content="@circleci" />
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<meta name="facebook-domain-verification" content="nnlbym6zbwhtcivy2t5hbes5vvvjpu" />
|
|
|
|
|
|
|
|
|
|
|
|
<script type="application/ld+json">
|
|
|
|
{
|
|
"@context": "http://schema.org",
|
|
|
|
|
|
"@type": "WebPage",
|
|
|
|
|
|
|
|
|
|
|
|
"headline": "The CircleCI Blog",
|
|
|
|
|
|
|
|
"image": "https://images.ctfassets.net/il1yandlcjgk/3NJSDelkFaAtnyFOJNghjQ/df5d4218a3ca83233e471c7eab072b90/circleci-og-morph.png?w=1200&fm=jpg",
|
|
|
|
|
|
|
|
|
|
|
|
"dateModified": "2026-09-10T16:03:24-07:00",
|
|
|
|
|
|
"description": "The CircleCI blog is your home for DevOps, continuous integration and delivery, and engineering productivity. Explore tutorials, guides, and best practices.",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
"url": "https://circleci.com/blog/"
|
|
}
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- End Jekyll SEO tag -->
|
|
|
|
</head>
|
|
<body class="page-blog lang-en">
|
|
|
|
<noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-W9HDVK"
|
|
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|
|
|
|
|
|
|
<div class="bg-white border-b border-b-morph-fog z-10 top-0 sticky">
|
|
<div class="2xl:container mx-auto pl-8 pr-5 md:pr-8 lg:px-16">
|
|
<nav class="flex justify-between items-center h-18">
|
|
|
|
<h1>
|
|
<a
|
|
href="/blog/"
|
|
class="flex flex-row items-center gap-2"
|
|
data-analytics-action="clicked-blog-top-nav"
|
|
data-analytics-properties='{ "menu": "blog-nav", "cta_text": "circleci_logo" }'
|
|
data-js-id="mobile-blur-prev"
|
|
>
|
|
<svg role="img" aria-label="CircleCI" fill="none" height="25" viewBox="0 0 116 25" width="116" xmlns="http://www.w3.org/2000/svg"><path d="m8.87876 12.6691c0-1.5781 1.30334-2.87304 2.89174-2.87304s2.8917 1.29494 2.8917 2.87304c0 1.5782-1.3033 2.8731-2.8917 2.8731-1.6292 0-2.89174-1.2544-2.89174-2.8731zm2.89174-12.018362c-5.66126 0-10.42647 3.844272-11.7705 9.064382v.1214c0 .32368.24437.56648.570196.56648h4.887394c.24437 0 .44801-.1214.52947-.3237 1.0182-2.18515 3.21753-3.68239 5.78344-3.68239 3.5026 0 6.3536 2.83262 6.3536 6.31269 0 3.4801-2.851 6.3127-6.3536 6.3127-2.56591 0-4.76524-1.4972-5.78344-3.6824-.08146-.2023-.2851-.3237-.52947-.3237h-4.887394c-.325826-.0405-.570196.2023-.570196.526v.1214c1.34403 5.2201 6.10924 9.0644 11.7705 9.0644 6.6794 0 12.0963-5.382 12.0963-12.0184 0-6.67688-5.4169-12.058862-12.0963-12.058862zm31.6458 14.851062h-1.6291c-.1222 0-.2036.0404-.2851.1214-.9367 1.4163-2.5659 2.347-4.3986 2.347-2.9732 0-5.3354-2.347-5.3354-5.3011 0-2.95398 2.4029-5.301 5.3354-5.301 1.8327 0 3.4619.93071 4.3986 2.34702.0815.08094.1629.1214.2851.1214h1.6291c.2037 0 .3666-.16186.3666-.36419 0-.04047 0-.1214-.0407-.16187-1.2219-2.42796-3.747-4.08706-6.6387-4.08706-4.1136 0-7.4533 3.31821-7.4533 7.4053 0 4.168 3.3397 7.4457 7.4533 7.4457 2.8917 0 5.4168-1.6591 6.6387-4.087.0407-.0405.0407-.081.0407-.1619 0-.1619-.1629-.3237-.3666-.3237zm4.9689-12.70636c0 .76885-.6517 1.41631-1.4255 1.41631s-1.4255-.64746-1.4255-1.41631c0-.76886.6517-1.41631 1.4255-1.41631.8146.04046 1.4255.64745 1.4255 1.41631zm-.3258 16.59106v-13.75844h-2.1179v13.75844c0 .2023.1629.3642.3665.3642h1.4255c.163 0 .3259-.1619.3259-.3642zm9.2046-14.08217c-2.1586.08093-3.8692 1.13305-4.9689 2.67076v-1.98284c0-.20233-.1629-.36419-.3665-.36419h-1.4255c-.2037 0-.3666.16186-.3666.36419v13.39425c0 .2023.1629.3642.3666.3642h1.4255c.2036 0 .3665-.1619.3665-.3642v-6.7174c0-2.79211 2.1993-5.09867 4.9689-5.26054.2036 0 .3665-.16186.3665-.36419v-1.41631c0-.16187-.1629-.32373-.3665-.32373zm14.1734 10.19747h-1.6291c-.1222 0-.2037.0404-.2851.1214-.9368 1.4163-2.5659 2.347-4.3987 2.347-2.9324 0-5.3354-2.3875-5.3354-5.3011 0-2.91351 2.403-5.301 5.3354-5.301 1.8328 0 3.4619.93071 4.3987 2.34702.0814.08094.1629.1214.2851.1214h1.6291c.2036 0 .3666-.16186.3666-.36419 0-.04047-.0001-.1214-.0408-.16187-1.2218-2.42796-3.747-4.08706-6.6387-4.08706-4.1135 0-7.4533 3.31821-7.4533 7.4053 0 4.087 3.3398 7.4053 7.4533 7.4053 2.8917 0 5.4169-1.6592 6.6387-4.0871.0407-.0405.0408-.0809.0408-.1619-.0408-.1214-.163-.2832-.3666-.2832zm4.2357-14.4464h-1.4254c-.2037 0-.3666.16186-.3666.36419v18.00741c0 .2023.1629.3642.3666.3642h1.4254c.2037 0 .3666-.1619.3666-.3642v-18.00741c0-.20233-.1629-.36419-.3666-.36419zm9.9377 4.20846c-4.1135 0-7.4532 3.31822-7.4532 7.40524 0 4.0871 3.3397 7.4053 7.4532 7.4053 2.8917 0 5.4169-1.6591 6.6387-4.087.0408-.0405.0408-.081.0408-.1619 0-.2023-.1629-.3642-.3666-.3642h-1.6291c-.1222 0-.2036.0405-.2851.1619-.9775 1.4163-2.5659 2.3065-4.3987 2.3065-2.688 0-4.9281-1.9828-5.2946-4.5726h12.3814c.2036 0 .3258-.1619.3665-.3238 0-.1214 0-.2428 0-.3642 0-4.08702-3.3397-7.40524-7.4533-7.40524zm-5.1317 6.02944c.6109-2.22563 2.688-3.88474 5.1317-3.88474s4.5209 1.65911 5.1318 3.88474zm33.2339-10.602096c-1.181 0-2.118.930716-2.118 2.104236 0 1.17351.937 2.10423 2.118 2.10423s2.118-.93072 2.118-2.10423c0-1.13305-.937-2.104236-2.118-2.104236zm1.752 4.936856v13.75844c0 .2023-.163.3642-.367.3642h-2.851c-.204 0-.366-.1619-.366-.3642v-13.75844zm-12.789 14.44634c3.462 0 6.394-2.3875 7.209-5.5843 0-.0405 0-.0405 0-.0809 0-.2023-.163-.3642-.367-.3642h-3.014c-.162 0-.285.0809-.325.2023-.611 1.3354-1.955 2.2661-3.544 2.2661-2.158 0-3.9097-1.74-3.9097-3.8847s1.7517-3.88476 3.9097-3.88476c1.589 0 2.933.93072 3.544 2.26606.04.1214.163.2024.325.2024h3.014c.204 0 .367-.1619.367-.3642 0-.0405 0-.0405 0-.081-.815-3.19677-3.747-5.58427-7.209-5.58427-4.1136 0-7.4533 3.31821-7.4533 7.40527 0 4.2085 3.3397 7.4862 7.4533 7.4862z" fill="currentColor"/></svg>
|
|
<div class="text-h4 leading-none pb-0.5">
|
|
Blog
|
|
</div>
|
|
</a>
|
|
</h1>
|
|
<div class="blog-nav--list blog-nav--external-links flex items-center">
|
|
<a
|
|
href="https://circleci.com/"
|
|
data-analytics-action="clicked-blog-top-nav"
|
|
data-analytics-properties='{ "menu": "blog-nav", "cta_text": "circleci.com" }'
|
|
class="group/link hidden md:block max-w-max w-max shrink-0 px-3 py-6 text-[15px] hover:text-slime-650 transition-colors duration-300"
|
|
>CircleCI</a>
|
|
<a
|
|
href="https://circleci.com/docs/"
|
|
data-analytics-action="clicked-blog-top-nav"
|
|
data-analytics-properties='{ "menu": "blog-nav", "cta_text": "documentation" }'
|
|
class="group/link hidden md:block max-w-max w-max shrink-0 px-3 py-6 text-[15px] hover:text-slime-650 transition-colors duration-300"
|
|
data-js-id="lang-blur-prev"
|
|
>Documentation</a>
|
|
<div class="hidden sm:block group/menu h-18">
|
|
<button
|
|
class="h-full px-3 focus:outline-none focus:outline-0 focus:outline-offset-0 group-hover/menu:text-slime-650 group-focus-within/menu:text-slime-650 transition-colors duration-300"
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-properties='{ "location": "top nav", "category": "search", "page_location": "mega menu - search" }'
|
|
onclick="toggleMenu('search')"
|
|
>
|
|
<svg fill="none" height="18" viewBox="0 0 18 18" width="18" xmlns="http://www.w3.org/2000/svg"><g stroke="currentColor" stroke-width="1.6"><circle cx="7.76908" cy="7.15385" r="6.15385"/><path d="m12.0771 12.0769 4.9231 4.9231"/></g></svg>
|
|
<span class="sr-only">
|
|
Search CircleCI blog
|
|
</span>
|
|
</button>
|
|
</div>
|
|
<div class="relative group/menu h-18">
|
|
<button
|
|
class="h-full px-3 [@media(hover:hover)]:pointer-events-none focus:outline-none"
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-properties='{ "location": "top nav", "category": "language", "page_location": "mega menu - language", "cta_text": "choose language" }'
|
|
onclick="toggleMenu('menu-lang', true)"
|
|
>
|
|
<div class="h-full py-6 border-y-2 border-transparent group-hover/menu:text-slime-650 group-focus-within/menu:text-slime-650 transition-colors duration-300">
|
|
<svg fill="none" height="18" viewBox="0 0 18 18" width="18" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="currentColor" stroke-miterlimit="10" stroke-width="1.25"><path d="m8.9991 17.3078c4.5882 0 8.3077-3.7195 8.3077-8.30772s-3.7195-8.307697-8.3077-8.307697c-4.58821 0-8.307694 3.719477-8.307694 8.307697s3.719484 8.30772 8.307694 8.30772z"/><path d="m8.99853 17.3078c1.76387 0 3.19387-3.7195 3.19387-8.30772s-1.43-8.307697-3.19387-8.307697c-1.76391 0-3.19384 3.719477-3.19384 8.307697s1.42993 8.30772 3.19384 8.30772z"/><path d="m.691406 6.44287h16.615394"/><path d="m.691406 11.5567h16.615394"/></g></svg>
|
|
<span class="sr-only">Select Language</span>
|
|
</div>
|
|
</button>
|
|
<div
|
|
class="hidden group-hover/menu:block open:block absolute w-max pt-2 top-full left-1/2 -translate-x-1/2 z-20"
|
|
data-js-id="menu-lang"
|
|
>
|
|
<div
|
|
data-analytics-scroll
|
|
data-analytics-action=""
|
|
data-analytics-properties='{ "location": "top nav", "category": "language", "page_location": "mega menu - language" }'
|
|
></div>
|
|
<div class="bg-white rounded-2xl shadow-md flex flex-col gap-1 p-2">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<a
|
|
href="#main"
|
|
hreflang="en"
|
|
class="hover:bg-morph-fog p-2 pr-3 rounded-lg leading-tight border border-blue-400 "
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-properties='{ "location": "top nav", "category": "language", "page_location": "language - english" }'
|
|
>English</a>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<a
|
|
href="https://circleci.com/ja/blog/"
|
|
hreflang="ja"
|
|
class="hover:bg-morph-fog p-2 pr-3 rounded-lg leading-tight "
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-properties='{ "location": "top nav", "category": "language", "page_location": "language - japan" }'
|
|
>日本語</a>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<a
|
|
href="https://app.circleci.com/signup"
|
|
class="hidden md:block text-base leading-5 button-base button-primary on-light ml-3"
|
|
data-analytics-action="clicked-blog-top-nav"
|
|
data-analytics-properties='{ "menu": "blog-nav", "cta_text": "signup_button" }'
|
|
>
|
|
Sign up
|
|
</a>
|
|
<button
|
|
class="relative group/menu py-7 px-3 md:hidden"
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-properties='{ "location": "top nav", "category": "mobile menu" }'
|
|
onclick="openMenu('mobile')"
|
|
>
|
|
<div
|
|
class="w-5 h-4 flex flex-col justify-between items-stretch group-hover/menu:text-slime-650 group-focus-within/menu:text-slime-650 transition-colors duration-300"
|
|
data-analytics-scroll
|
|
data-analytics-action=""
|
|
data-analytics-properties='{ "location": "top nav", "category": "hamburger" }'
|
|
>
|
|
<div class="h-0.5 bg-current"></div>
|
|
<div class="h-0.5 bg-current"></div>
|
|
<div class="h-0.5 bg-current"></div>
|
|
<span class="sr-only">Toggle navigation</span>
|
|
</div>
|
|
</button>
|
|
</div>
|
|
</nav>
|
|
</div>
|
|
<div class="absolute left-0 right-0 w-full overflow-x-hidden h-screen top-0 pointer-events-none">
|
|
<div data-dialog-type="menu" data-js-id="mobile" class="group/mobile hidden open:block lg:open:hidden bg-white absolute inset-0 w-full h-full max-h-screen backdrop:hidden open:animate-slide-in overflow-hidden pointer-events-auto overflow-y-auto">
|
|
<div class="sticky px-8 top-0 z-10 flex justify-between items-center -mr-2 bg-white">
|
|
<div></div>
|
|
<button
|
|
class="px-3 py-7"
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-properties='{ "location": "top nav", "category": "close", "page_location": "mega menu - mobile" }'
|
|
onclick="closeAllMenus()"
|
|
>
|
|
<div class="w-5 h-4 flex flex-col justify-between items-stretch">
|
|
<div class="h-0.5 bg-current -rotate-45 origin-right"></div>
|
|
<div class="h-0.5 bg-current rotate-45 origin-right"></div>
|
|
<span class="sr-only">close</span>
|
|
</div>
|
|
</button>
|
|
</div>
|
|
<div
|
|
data-analytics-scroll
|
|
data-analytics-action=""
|
|
data-analytics-properties='{ "location": "top nav", "category": "mobile", "page_location": "mega menu - mobile" }'
|
|
></div>
|
|
<div class="px-8 py-6 h-[calc(100vh-72px)] overflow-y-auto space-y-6 transition-all opacity-0 translate-x-3 group-data-[animation-state=done]/mobile:translate-x-0 group-data-[animation-state=done]/mobile:opacity-100 duration-100 ease-in-out">
|
|
<div class="pb-6">
|
|
<h2 class="mb-5 pl-2 font-light text-small text-neutral-400">Site</h2>
|
|
<div class="flex flex-col gap-1.5">
|
|
<a
|
|
href="https://circleci.com/"
|
|
class="flex gap-3 text-[20px] font-medium p-2 hover:bg-morph-fog rounded-lg group/link"
|
|
data-analytics-action="clicked-blog-top-nav"
|
|
data-analytics-properties='{ "menu": "blog-category", "cta_text": "CircleCI" }'
|
|
><div class="rounded-lg border bg-neutral-40 border-neutral-80 inline-block p-1 max-h-8.5"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
<path d="M9.82123 11.9849C9.82123 10.8051 10.8042 9.83699 12.0021 9.83699C13.2001 9.83699 14.183 10.8051 14.183 11.9849C14.183 13.1647 13.2001 14.1328 12.0021 14.1328C10.7734 14.1328 9.82123 13.195 9.82123 11.9849ZM12.0021 3C7.7325 3 4.13865 5.87396 3.125 9.77648V9.86723C3.125 10.1092 3.3093 10.2907 3.55503 10.2907H7.24104C7.42534 10.2907 7.57892 10.2 7.64036 10.0487C8.40827 8.41513 10.067 7.2958 12.0021 7.2958C14.6438 7.2958 16.7939 9.41344 16.7939 12.0151C16.7939 14.6168 14.6438 16.7344 12.0021 16.7344C10.067 16.7344 8.40827 15.6152 7.64036 13.9815C7.57892 13.8303 7.42534 13.7395 7.24104 13.7395H3.55503C3.3093 13.7092 3.125 13.8908 3.125 14.1328V14.2235C4.13865 18.126 7.7325 21 12.0021 21C17.0397 21 21.125 16.9765 21.125 12.0151C21.125 7.02353 17.0397 3 12.0021 3Z" fill="currentColor"/>
|
|
</svg>
|
|
</div>
|
|
<div class="flex items-center pt-0.5 gap-3">CircleCI</div></a>
|
|
<a
|
|
href="https://circleci.com/docs/"
|
|
class="flex gap-3 text-[20px] font-medium p-2 hover:bg-morph-fog rounded-lg group/link"
|
|
data-analytics-action="clicked-blog-top-nav"
|
|
data-analytics-properties='{ "menu": "blog-category", "cta_text": "documentation" }'
|
|
>
|
|
<div class="rounded-lg border bg-neutral-40 border-neutral-80 inline-block p-1 max-h-8.5"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M4 4C4 2.89543 4.89321 2 5.99778 2H13C13.7756 2 14.1862 2.22592 14.3721 2.37404C14.4358 2.42476 14.4916 2.48428 14.5474 2.54381C14.5738 2.57201 14.6002 2.60022 14.6275 2.62749L19.5 7.5C19.5 7.5 20 8 20 9V20.0032C20 21.1078 19.1046 22 18 22H6C4.89543 22 4 21.1046 4 20V4ZM6 5C6 4.44772 6.44712 4 6.9994 4H13C13.4129 4 13.6869 4.21016 13.8065 4.32581C13.8377 4.35602 13.8667 4.38832 13.8958 4.42064C13.9118 4.43848 13.9278 4.45633 13.9442 4.47383L17.4837 8.24925C17.5144 8.28202 17.5466 8.31366 17.5787 8.34529C17.6449 8.41041 17.7112 8.47556 17.765 8.55076C17.8715 8.69969 18 8.96868 18 9.4V19.0036C18 19.5559 17.5523 20 17 20H7C6.44772 20 6 19.5523 6 19V5ZM15.5 18C15.7761 18 16 17.7761 16 17.5V16.5C16 16.2239 15.7761 16 15.5 16H8.5C8.22386 16 8 16.2239 8 16.5V17.5C8 17.7761 8.22386 18 8.5 18H15.5ZM16 13.5C16 13.7761 15.7761 14 15.5 14H8.5C8.22386 14 8 13.7761 8 13.5V12.5C8 12.2239 8.22386 12 8.5 12H15.5C15.7761 12 16 12.2239 16 12.5V13.5ZM12 9.5C12 9.77614 12.2239 10 12.5 10H16.2929C16.7383 10 16.9614 9.46143 16.6464 9.14645L12.8536 5.35355C12.5386 5.03857 12 5.26165 12 5.70711V9.5Z" fill="currentColor"/>
|
|
</svg>
|
|
</div>
|
|
<div class="flex items-center pt-0.5 gap-3">
|
|
Documentation
|
|
</div>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
<div class="pb-6">
|
|
<h2 class="mb-5 pl-2 font-light text-small text-neutral-400">Blog</h2>
|
|
<div class="flex flex-col gap-1.5">
|
|
|
|
|
|
|
|
<a
|
|
href="/blog/tag/devops101/"
|
|
class="hover:bg-morph-fog flex gap-3 p-2 transition-colors duration-300 rounded-lg w-fit max-w-full items-center group/link"
|
|
data-analytics-action="clicked-blog-top-nav"
|
|
data-analytics-properties='{ "menu": "blog-category", "cta_text": "devops101" }'
|
|
>
|
|
DevOps 101
|
|
</a>
|
|
|
|
|
|
|
|
<a
|
|
href="/blog/tag/news/"
|
|
class="hover:bg-morph-fog flex gap-3 p-2 transition-colors duration-300 rounded-lg w-fit max-w-full items-center group/link"
|
|
data-analytics-action="clicked-blog-top-nav"
|
|
data-analytics-properties='{ "menu": "blog-category", "cta_text": "news" }'
|
|
>
|
|
CircleCI News
|
|
</a>
|
|
|
|
|
|
|
|
<a
|
|
href="/blog/tag/engineering-productivity/"
|
|
class="hover:bg-morph-fog flex gap-3 p-2 transition-colors duration-300 rounded-lg w-fit max-w-full items-center group/link"
|
|
data-analytics-action="clicked-blog-top-nav"
|
|
data-analytics-properties='{ "menu": "blog-category", "cta_text": "engineering-productivity" }'
|
|
>
|
|
Engineering Productivity
|
|
</a>
|
|
|
|
|
|
|
|
<a
|
|
href="/blog/tag/engineering-management/"
|
|
class="hover:bg-morph-fog flex gap-3 p-2 transition-colors duration-300 rounded-lg w-fit max-w-full items-center group/link"
|
|
data-analytics-action="clicked-blog-top-nav"
|
|
data-analytics-properties='{ "menu": "blog-category", "cta_text": "engineering-management" }'
|
|
>
|
|
Engineering Management
|
|
</a>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="space-y-1.5">
|
|
|
|
<a
|
|
href="https://app.circleci.com/signup"
|
|
class="block text-[20px] font-medium p-2 hover:bg-morph-fog rounded-lg"
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-properties='{ "location": "top nav", "category": "signup" }'
|
|
>
|
|
<div class="flex gap-3">
|
|
Sign up
|
|
<div class="w-8 h-8 border flex items-center justify-center transition-colors button-primary on-light rounded-lg"><div class="arrow"></div></div>
|
|
</div>
|
|
</a>
|
|
|
|
<button
|
|
class="text-[20px] font-medium p-2 hover:bg-morph-fog rounded-lg flex gap-3 items-center w-full"
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-properties='{ "location": "top nav", "category": "search", "page_location": "mega menu - mobile" }'
|
|
onclick="openMenu('search')"
|
|
>
|
|
Search
|
|
<svg fill="none" height="18" viewBox="0 0 18 18" width="18" xmlns="http://www.w3.org/2000/svg"><g stroke="currentColor" stroke-width="1.6"><circle cx="7.76908" cy="7.15385" r="6.15385"/><path d="m12.0771 12.0769 4.9231 4.9231"/></g></svg>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div data-dialog-type="menu" data-js-id="search" class="hidden open:block bg-white lg:bg-transparent absolute inset-0 lg:top-18 bottom-auto lg:border-t border-t-morph-fog h-full max-h-screen lg:max-h-[calc(100vh-72px)] open:animate-slide-in lg:open:animate-none overflow-hidden pointer-events-auto overflow-y-auto">
|
|
<button onclick="closeAllMenus()" class="hidden lg:block w-full absolute z-0 inset-0 h-full cursor-default"></button>
|
|
<div class="sticky px-8 top-0 z-10 flex justify-between items-center -mr-2 bg-white lg:hidden">
|
|
<button
|
|
class="px-3 py-7"
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-properties='{ "location": "top nav", "category": "back", "page_location": "mega menu - search" }'
|
|
onclick="closeMenu('search')"
|
|
>
|
|
<div class="arrow-left"></div>
|
|
<div class="sr-only">Back</div>
|
|
</button>
|
|
<div class="text-[20px] font-medium">Search</div>
|
|
<button
|
|
class="px-3 py-7"
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-properties='{ "location": "top nav", "category": "close", "page_location": "mega menu - search" }'
|
|
onclick="closeAllMenus()"
|
|
>
|
|
<div class="w-5 h-4 flex flex-col justify-between items-stretch">
|
|
<div class="h-0.5 bg-current -rotate-45 origin-right"></div>
|
|
<div class="h-0.5 bg-current rotate-45 origin-right"></div>
|
|
<span class="sr-only">close</span>
|
|
</div>
|
|
</button>
|
|
</div>
|
|
<div
|
|
data-analytics-scroll
|
|
data-analytics-action=""
|
|
data-analytics-properties='{ "location": "top nav", "category": "search", "page_location": "mega menu - search" }'
|
|
></div>
|
|
<div class="bg-white w-full relative lg:shadow-md">
|
|
<div class="w-full 2xl:container mx-auto py-12 px-8 lg:p-16">
|
|
<div class="flex justify-between">
|
|
<div id="searchbox" class="relative flex items-center gap-2.5 border border-morph-vapor focus-within:border-morph-terminal rounded-full p-3 mb-4 sm:mb-10 w-full sm:w-3/4 lg:w-1/2 leading-4"></div>
|
|
<button
|
|
class="w-4 h-4 mt-3 relative hidden lg:block"
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-properties='{ "location": "top nav", "category": "search", "page_location": "mega menu - search", "cta_text": "close" }'
|
|
onclick="closeAllMenus()"
|
|
>
|
|
<div class="w-5 h-4 flex flex-col justify-between items-stretch">
|
|
<div class="h-0.5 bg-current -rotate-45 origin-right"></div>
|
|
<div class="h-0.5 bg-current rotate-45 origin-right"></div>
|
|
<span class="sr-only">close</span>
|
|
</div>
|
|
</button>
|
|
</div>
|
|
<div data-js-id="search-results" data-active-index="blog" class="group/index sm:mt-9 flex gap-6 sm:gap-8 flex-col sm:flex-row">
|
|
<div class="w-full sm:w-9/12 md:w-10/12 xl:w-7/12">
|
|
<a data-js-id="scroll-target" class="absolute -mt-24 lg:-mt-9"></a>
|
|
<div class="hidden group-data-[active-index=blog]/index:block">
|
|
<div class="flex gap-2 items-center mb-8">
|
|
<div class="type-h4">Results</div>
|
|
<div class="text-[10px] text-morph-terminal bg-neutral-40 border-neutral-80 border rounded-2xl py-0.5 px-1 inline-block" data-js-id="stats-h4-blog"></div>
|
|
</div>
|
|
<div data-js-id="hits-blog"></div>
|
|
<div data-js-id="pagination-blog" class="mt-8"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<main id="main" data-js-id="mobile-blur-next">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="bg-morph-vapor ">
|
|
<div class="2xl:container mx-auto px-8 lg:px-16 py-2.5">
|
|
<div class="flex flex-wrap items-center gap-x-6 gap-y-2">
|
|
<div class="text-pill py-1 px-2 rounded-full font-bold text-green-800 bg-green-200">New</div>
|
|
<div class="text-small">
|
|
<p>CircleCI CLI in Beta: built for agents, with MCP built in.</p>
|
|
|
|
</div>
|
|
|
|
<a
|
|
class="arrow-link text-small font-normal group/link"
|
|
href="https://cli.circleci.com/"
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-location=""
|
|
><span class="underline underline-offset-2">Learn more</span> <div class="arrow-expanding scale-75 origin-left"></div></a>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<div class="2xl:container mx-auto px-8 lg:px-16 blog-index--hero flex flex-col lg:flex-row gap-8 pt-16">
|
|
|
|
|
|
<div class="w-full lg:w-1/2 lg:pr-18 tag--devops flex flex-col gap-6">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="flex justify-between items-end pb-4 border-b-morph-vapor border-b mb-6 gap-4">
|
|
<h2 class="type-h3 text-morph-terminal">AI Development</h2>
|
|
|
|
|
|
|
|
<div class="w-max shrink-0"><a href="/blog/tag/ai/" class="group/link arrow-link hover:text-slime-650 active:text-slime-750"><span class="underline underline-offset-4">See all</span> <div class="arrow-expanding text-slime-650 group-hover/link:text-slime-650 group-active/link:text-slime-750"></div></a></div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<a
|
|
href="/blog/chunk-sidecars/"
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-location="featured tag - ai"
|
|
class="flex flex-col sm:flex-row lg:flex-col gap-6 group">
|
|
<div class="w-full sm:w-1/2 lg:w-full shrink-0">
|
|
<div class="w-full overflow-hidden h-0 bg-morph-vapor pt-[57%] relative block rounded-2xl">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<picture>
|
|
|
|
|
|
|
|
<source
|
|
srcset="https://images.ctfassets.net/il1yandlcjgk/hiQg0ywTTGGAnSsN13fG5/18458cf32a65746134c860d3b981b935/Chunk_Sidecar_GTM_Product_Release_-__Blog_2054_x_1170.png?w=597&fm=webp&q=75 1x, https://images.ctfassets.net/il1yandlcjgk/hiQg0ywTTGGAnSsN13fG5/18458cf32a65746134c860d3b981b935/Chunk_Sidecar_GTM_Product_Release_-__Blog_2054_x_1170.png?w=1194&fm=webp&q=60 2x, https://images.ctfassets.net/il1yandlcjgk/hiQg0ywTTGGAnSsN13fG5/18458cf32a65746134c860d3b981b935/Chunk_Sidecar_GTM_Product_Release_-__Blog_2054_x_1170.png?w=1791&fm=webp&q=45 3x"
|
|
media="(min-width: 1440px)"
|
|
/>
|
|
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="https://images.ctfassets.net/il1yandlcjgk/hiQg0ywTTGGAnSsN13fG5/18458cf32a65746134c860d3b981b935/Chunk_Sidecar_GTM_Product_Release_-__Blog_2054_x_1170.png?w=589&fm=webp&q=75 1x, https://images.ctfassets.net/il1yandlcjgk/hiQg0ywTTGGAnSsN13fG5/18458cf32a65746134c860d3b981b935/Chunk_Sidecar_GTM_Product_Release_-__Blog_2054_x_1170.png?w=1178&fm=webp&q=60 2x, https://images.ctfassets.net/il1yandlcjgk/hiQg0ywTTGGAnSsN13fG5/18458cf32a65746134c860d3b981b935/Chunk_Sidecar_GTM_Product_Release_-__Blog_2054_x_1170.png?w=1767&fm=webp&q=45 3x"
|
|
media="(min-width: 1280px)"
|
|
/>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="https://images.ctfassets.net/il1yandlcjgk/hiQg0ywTTGGAnSsN13fG5/18458cf32a65746134c860d3b981b935/Chunk_Sidecar_GTM_Product_Release_-__Blog_2054_x_1170.png?w=505&fm=webp&q=75 1x, https://images.ctfassets.net/il1yandlcjgk/hiQg0ywTTGGAnSsN13fG5/18458cf32a65746134c860d3b981b935/Chunk_Sidecar_GTM_Product_Release_-__Blog_2054_x_1170.png?w=1010&fm=webp&q=60 2x, https://images.ctfassets.net/il1yandlcjgk/hiQg0ywTTGGAnSsN13fG5/18458cf32a65746134c860d3b981b935/Chunk_Sidecar_GTM_Product_Release_-__Blog_2054_x_1170.png?w=1515&fm=webp&q=45 3x"
|
|
media="(min-width: 768px)"
|
|
/>
|
|
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="https://images.ctfassets.net/il1yandlcjgk/hiQg0ywTTGGAnSsN13fG5/18458cf32a65746134c860d3b981b935/Chunk_Sidecar_GTM_Product_Release_-__Blog_2054_x_1170.png?w=369&fm=webp&q=75 1x, https://images.ctfassets.net/il1yandlcjgk/hiQg0ywTTGGAnSsN13fG5/18458cf32a65746134c860d3b981b935/Chunk_Sidecar_GTM_Product_Release_-__Blog_2054_x_1170.png?w=738&fm=webp&q=60 2x, https://images.ctfassets.net/il1yandlcjgk/hiQg0ywTTGGAnSsN13fG5/18458cf32a65746134c860d3b981b935/Chunk_Sidecar_GTM_Product_Release_-__Blog_2054_x_1170.png?w=1107&fm=webp&q=45 3x"
|
|
media="(min-width: 640px)"
|
|
/>
|
|
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="https://images.ctfassets.net/il1yandlcjgk/hiQg0ywTTGGAnSsN13fG5/18458cf32a65746134c860d3b981b935/Chunk_Sidecar_GTM_Product_Release_-__Blog_2054_x_1170.png?w=604&fm=webp&q=75 1x, https://images.ctfassets.net/il1yandlcjgk/hiQg0ywTTGGAnSsN13fG5/18458cf32a65746134c860d3b981b935/Chunk_Sidecar_GTM_Product_Release_-__Blog_2054_x_1170.png?w=1208&fm=webp&q=60 2x, https://images.ctfassets.net/il1yandlcjgk/hiQg0ywTTGGAnSsN13fG5/18458cf32a65746134c860d3b981b935/Chunk_Sidecar_GTM_Product_Release_-__Blog_2054_x_1170.png?w=1812&fm=webp&q=45 3x"
|
|
media="(min-width: 0px)"
|
|
/>
|
|
|
|
|
|
<img
|
|
src="https://images.ctfassets.net/il1yandlcjgk/hiQg0ywTTGGAnSsN13fG5/18458cf32a65746134c860d3b981b935/Chunk_Sidecar_GTM_Product_Release_-__Blog_2054_x_1170.png?w=604&fm=webp&q=60"
|
|
alt="Chunk sidecar hero"
|
|
class="object-cover w-full h-full absolute inset-0 group-hover:scale-105 duration-300 transition-transform"
|
|
/>
|
|
</picture>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<h4 class="type-h4 font-medium mb-4 text-morph-terminal group-hover:text-slime-650 transition-colors duration-300">Introducing Chunk sidecars: Inner loop validation that keeps up with your agents</h4>
|
|
<p class="type-p group-hover:text-slime-650 transition-colors duration-300">5 min read</p>
|
|
</div>
|
|
</a>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<a
|
|
href="/blog/agentic-validation-needs-different-infrastructure/"
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-location="featured tag - ai"
|
|
class="flex flex-col sm:flex-row lg:flex-col xl:flex-row gap-6 group">
|
|
<div class="w-full sm:w-1/2 lg:w-full xl:w-1/2 shrink-0">
|
|
<div class="w-full overflow-hidden h-0 bg-morph-vapor pt-[57%] relative block rounded-2xl">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<picture>
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="https://images.ctfassets.net/il1yandlcjgk/73D6tCr7iMWqoZq71vds9C/3d385699b1294b6e2f43eafccf1ee282/support-header-1_3x.png?w=298&fm=webp&q=75 1x, https://images.ctfassets.net/il1yandlcjgk/73D6tCr7iMWqoZq71vds9C/3d385699b1294b6e2f43eafccf1ee282/support-header-1_3x.png?w=596&fm=webp&q=60 2x, https://images.ctfassets.net/il1yandlcjgk/73D6tCr7iMWqoZq71vds9C/3d385699b1294b6e2f43eafccf1ee282/support-header-1_3x.png?w=894&fm=webp&q=45 3x"
|
|
media="(min-width: 1280px)"
|
|
/>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="https://images.ctfassets.net/il1yandlcjgk/73D6tCr7iMWqoZq71vds9C/3d385699b1294b6e2f43eafccf1ee282/support-header-1_3x.png?w=505&fm=webp&q=75 1x, https://images.ctfassets.net/il1yandlcjgk/73D6tCr7iMWqoZq71vds9C/3d385699b1294b6e2f43eafccf1ee282/support-header-1_3x.png?w=1010&fm=webp&q=60 2x, https://images.ctfassets.net/il1yandlcjgk/73D6tCr7iMWqoZq71vds9C/3d385699b1294b6e2f43eafccf1ee282/support-header-1_3x.png?w=1515&fm=webp&q=45 3x"
|
|
media="(min-width: 768px)"
|
|
/>
|
|
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="https://images.ctfassets.net/il1yandlcjgk/73D6tCr7iMWqoZq71vds9C/3d385699b1294b6e2f43eafccf1ee282/support-header-1_3x.png?w=369&fm=webp&q=75 1x, https://images.ctfassets.net/il1yandlcjgk/73D6tCr7iMWqoZq71vds9C/3d385699b1294b6e2f43eafccf1ee282/support-header-1_3x.png?w=738&fm=webp&q=60 2x, https://images.ctfassets.net/il1yandlcjgk/73D6tCr7iMWqoZq71vds9C/3d385699b1294b6e2f43eafccf1ee282/support-header-1_3x.png?w=1107&fm=webp&q=45 3x"
|
|
media="(min-width: 640px)"
|
|
/>
|
|
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="https://images.ctfassets.net/il1yandlcjgk/73D6tCr7iMWqoZq71vds9C/3d385699b1294b6e2f43eafccf1ee282/support-header-1_3x.png?w=604&fm=webp&q=75 1x, https://images.ctfassets.net/il1yandlcjgk/73D6tCr7iMWqoZq71vds9C/3d385699b1294b6e2f43eafccf1ee282/support-header-1_3x.png?w=1208&fm=webp&q=60 2x, https://images.ctfassets.net/il1yandlcjgk/73D6tCr7iMWqoZq71vds9C/3d385699b1294b6e2f43eafccf1ee282/support-header-1_3x.png?w=1812&fm=webp&q=45 3x"
|
|
media="(min-width: 0px)"
|
|
/>
|
|
|
|
|
|
<img
|
|
src="https://images.ctfassets.net/il1yandlcjgk/73D6tCr7iMWqoZq71vds9C/3d385699b1294b6e2f43eafccf1ee282/support-header-1_3x.png?w=604&fm=webp&q=60"
|
|
alt="support-header-1@3x"
|
|
class="object-cover w-full h-full absolute inset-0 group-hover:scale-105 duration-300 transition-transform"
|
|
/>
|
|
</picture>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<h4 class="type-h4 font-medium mb-4 text-morph-terminal group-hover:text-slime-650 transition-colors duration-300">Agentic validation needs different infrastructure</h4>
|
|
<p class="type-p group-hover:text-slime-650 transition-colors duration-300">11 min read</p>
|
|
</div>
|
|
</a>
|
|
|
|
|
|
</div>
|
|
|
|
<div class="w-full lg:w-1/2 2xl:pr-18 relative">
|
|
|
|
|
|
<div class="mb-12">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="flex justify-between items-end pb-4 border-b-morph-vapor border-b mb-6 gap-4">
|
|
<h2 class="type-h3 text-morph-terminal">CircleCI News</h2>
|
|
|
|
|
|
|
|
<div class="w-max shrink-0"><a href="/blog/tag/news/" class="group/link arrow-link hover:text-slime-650 active:text-slime-750"><span class="underline underline-offset-4">See all</span> <div class="arrow-expanding text-slime-650 group-hover/link:text-slime-650 group-active/link:text-slime-750"></div></a></div>
|
|
|
|
</div>
|
|
<div class="flex flex-col gap-6">
|
|
|
|
|
|
|
|
|
|
<a
|
|
href="/blog/circleci-cursor-origin/"
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-location="featured tag - news"
|
|
class="flex gap-4 group">
|
|
<div class="w-32 shrink-0">
|
|
<div class="block w-full overflow-hidden h-0 bg-morph-vapor pt-[57%] relative rounded-lg">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<picture>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="https://images.ctfassets.net/il1yandlcjgk/5wPv8lJNwKKmmTPugKUzEn/7585bbf2f122943012fb2acdff2beddf/speed-header-1.png?w=135&fm=webp&q=75 1x, https://images.ctfassets.net/il1yandlcjgk/5wPv8lJNwKKmmTPugKUzEn/7585bbf2f122943012fb2acdff2beddf/speed-header-1.png?w=270&fm=webp&q=60 2x, https://images.ctfassets.net/il1yandlcjgk/5wPv8lJNwKKmmTPugKUzEn/7585bbf2f122943012fb2acdff2beddf/speed-header-1.png?w=405&fm=webp&q=45 3x"
|
|
media="(min-width: 0px)"
|
|
/>
|
|
|
|
|
|
<img
|
|
src="https://images.ctfassets.net/il1yandlcjgk/5wPv8lJNwKKmmTPugKUzEn/7585bbf2f122943012fb2acdff2beddf/speed-header-1.png?w=135&fm=webp&q=60"
|
|
alt="Abstract illustration of a pipeline moving at speed"
|
|
class="object-cover w-full h-full absolute inset-0 group-hover:scale-105 duration-300 transition-transform"
|
|
/>
|
|
</picture>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<h4 class="type-p font-medium leading-6 mb-1 text-morph-terminal group-hover:text-slime-650 transition-colors duration-300">CircleCI is now available on Cursor Origin</h4>
|
|
<p class="text-small group-hover:text-slime-650 transition-colors duration-300">4 min read</p>
|
|
</div>
|
|
</a>
|
|
|
|
|
|
|
|
|
|
<a
|
|
href="/blog/five-takeaways-2026-software-delivery-report/"
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-location="featured tag - news"
|
|
class="flex gap-4 group">
|
|
<div class="w-32 shrink-0">
|
|
<div class="block w-full overflow-hidden h-0 bg-morph-vapor pt-[57%] relative rounded-lg">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<picture>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="https://images.ctfassets.net/il1yandlcjgk/2Ge07sETWgSxpm8P4C7AGW/0cf02edbc63342b67c144a1271939460/SoSDR-2026-Book-Mock-v1.jpg?w=135&fm=webp&q=75 1x, https://images.ctfassets.net/il1yandlcjgk/2Ge07sETWgSxpm8P4C7AGW/0cf02edbc63342b67c144a1271939460/SoSDR-2026-Book-Mock-v1.jpg?w=270&fm=webp&q=60 2x, https://images.ctfassets.net/il1yandlcjgk/2Ge07sETWgSxpm8P4C7AGW/0cf02edbc63342b67c144a1271939460/SoSDR-2026-Book-Mock-v1.jpg?w=405&fm=webp&q=45 3x"
|
|
media="(min-width: 0px)"
|
|
/>
|
|
|
|
|
|
<img
|
|
src="https://images.ctfassets.net/il1yandlcjgk/2Ge07sETWgSxpm8P4C7AGW/0cf02edbc63342b67c144a1271939460/SoSDR-2026-Book-Mock-v1.jpg?w=135&fm=webp&q=60"
|
|
alt="2026 State of Software Delivery Report"
|
|
class="object-cover w-full h-full absolute inset-0 group-hover:scale-105 duration-300 transition-transform"
|
|
/>
|
|
</picture>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<h4 class="type-p font-medium leading-6 mb-1 text-morph-terminal group-hover:text-slime-650 transition-colors duration-300">5 key takeaways from the 2026 State of Software Delivery</h4>
|
|
<p class="text-small group-hover:text-slime-650 transition-colors duration-300">5 min read</p>
|
|
</div>
|
|
</a>
|
|
|
|
|
|
|
|
|
|
<a
|
|
href="/blog/sign-oci-containers-and-other-artifacts-using-sigstore-cosign/"
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-location="featured tag - news"
|
|
class="flex gap-4 group">
|
|
<div class="w-32 shrink-0">
|
|
<div class="block w-full overflow-hidden h-0 bg-morph-vapor pt-[57%] relative rounded-lg">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<picture>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<img
|
|
src="https://images.ctfassets.net/il1yandlcjgk/24LPuMPbcY2saXHIhDTeXK/c3124646bc0d325f82b93d47a3f0dfdf/illustration_guardrails_receipt.svg"
|
|
alt="illustration guardrails receipt"
|
|
class="object-cover w-full h-full absolute inset-0 group-hover:scale-105 duration-300 transition-transform"
|
|
/>
|
|
</picture>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<h4 class="type-p font-medium leading-6 mb-1 text-morph-terminal group-hover:text-slime-650 transition-colors duration-300">Sign OCI containers & other artifacts using Sigstore Cosign & CircleCI OIDC tokens</h4>
|
|
<p class="text-small group-hover:text-slime-650 transition-colors duration-300">2 min read</p>
|
|
</div>
|
|
</a>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="mb-12">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="flex justify-between items-end pb-4 border-b-morph-vapor border-b mb-6 gap-4">
|
|
<h2 class="type-h3 text-morph-terminal">Engineering Productivity</h2>
|
|
|
|
|
|
|
|
<div class="w-max shrink-0"><a href="/blog/tag/engineering-productivity/" class="group/link arrow-link hover:text-slime-650 active:text-slime-750"><span class="underline underline-offset-4">See all</span> <div class="arrow-expanding text-slime-650 group-hover/link:text-slime-650 group-active/link:text-slime-750"></div></a></div>
|
|
|
|
</div>
|
|
<div class="flex flex-col gap-6">
|
|
|
|
|
|
|
|
|
|
<a
|
|
href="/blog/cirrus-ci-alternative/"
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-location="featured tag - engineering-productivity"
|
|
class="flex gap-4 group">
|
|
<div class="w-32 shrink-0">
|
|
<div class="block w-full overflow-hidden h-0 bg-morph-vapor pt-[57%] relative rounded-lg">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<picture>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="https://images.ctfassets.net/il1yandlcjgk/3rUi22d3DYYGxKDZm1xf29/b6ab004b243ddd75bc49c7f49a93cd9c/speed-header-2.png?w=135&fm=webp&q=75 1x, https://images.ctfassets.net/il1yandlcjgk/3rUi22d3DYYGxKDZm1xf29/b6ab004b243ddd75bc49c7f49a93cd9c/speed-header-2.png?w=270&fm=webp&q=60 2x, https://images.ctfassets.net/il1yandlcjgk/3rUi22d3DYYGxKDZm1xf29/b6ab004b243ddd75bc49c7f49a93cd9c/speed-header-2.png?w=405&fm=webp&q=45 3x"
|
|
media="(min-width: 0px)"
|
|
/>
|
|
|
|
|
|
<img
|
|
src="https://images.ctfassets.net/il1yandlcjgk/3rUi22d3DYYGxKDZm1xf29/b6ab004b243ddd75bc49c7f49a93cd9c/speed-header-2.png?w=135&fm=webp&q=60"
|
|
alt="speed-header-2"
|
|
class="object-cover w-full h-full absolute inset-0 group-hover:scale-105 duration-300 transition-transform"
|
|
/>
|
|
</picture>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<h4 class="type-p font-medium leading-6 mb-1 text-morph-terminal group-hover:text-slime-650 transition-colors duration-300">Cirrus CI alternative: Scalable, AI-ready CI/CD</h4>
|
|
<p class="text-small group-hover:text-slime-650 transition-colors duration-300">6 min read</p>
|
|
</div>
|
|
</a>
|
|
|
|
|
|
|
|
|
|
<a
|
|
href="/blog/how-perk-recovers-faster-with-centralized-rollbacks/"
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-location="featured tag - engineering-productivity"
|
|
class="flex gap-4 group">
|
|
<div class="w-32 shrink-0">
|
|
<div class="block w-full overflow-hidden h-0 bg-morph-vapor pt-[57%] relative rounded-lg">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<picture>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="https://images.ctfassets.net/il1yandlcjgk/1dTprmdgYGHtUwZUTX1W0L/7860bb1a858941553e69ed555a901532/guard-header-2.png?w=135&fm=webp&q=75 1x, https://images.ctfassets.net/il1yandlcjgk/1dTprmdgYGHtUwZUTX1W0L/7860bb1a858941553e69ed555a901532/guard-header-2.png?w=270&fm=webp&q=60 2x, https://images.ctfassets.net/il1yandlcjgk/1dTprmdgYGHtUwZUTX1W0L/7860bb1a858941553e69ed555a901532/guard-header-2.png?w=405&fm=webp&q=45 3x"
|
|
media="(min-width: 0px)"
|
|
/>
|
|
|
|
|
|
<img
|
|
src="https://images.ctfassets.net/il1yandlcjgk/1dTprmdgYGHtUwZUTX1W0L/7860bb1a858941553e69ed555a901532/guard-header-2.png?w=135&fm=webp&q=60"
|
|
alt="guard-header-2"
|
|
class="object-cover w-full h-full absolute inset-0 group-hover:scale-105 duration-300 transition-transform"
|
|
/>
|
|
</picture>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<h4 class="type-p font-medium leading-6 mb-1 text-morph-terminal group-hover:text-slime-650 transition-colors duration-300">How Perk cut recovery time to 31 minutes with centralized rollbacks in CircleCI</h4>
|
|
<p class="text-small group-hover:text-slime-650 transition-colors duration-300">10 min read</p>
|
|
</div>
|
|
</a>
|
|
|
|
|
|
|
|
|
|
<a
|
|
href="/blog/serial-groups-prevent-pipeline-collisions/"
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-location="featured tag - engineering-productivity"
|
|
class="flex gap-4 group">
|
|
<div class="w-32 shrink-0">
|
|
<div class="block w-full overflow-hidden h-0 bg-morph-vapor pt-[57%] relative rounded-lg">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<picture>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="https://images.ctfassets.net/il1yandlcjgk/1SoZir10XYxddVZib4LNiT/a4838dc775ead74dc71fd21e23bc9f94/simple-header-1.png?w=135&fm=webp&q=75 1x, https://images.ctfassets.net/il1yandlcjgk/1SoZir10XYxddVZib4LNiT/a4838dc775ead74dc71fd21e23bc9f94/simple-header-1.png?w=270&fm=webp&q=60 2x, https://images.ctfassets.net/il1yandlcjgk/1SoZir10XYxddVZib4LNiT/a4838dc775ead74dc71fd21e23bc9f94/simple-header-1.png?w=405&fm=webp&q=45 3x"
|
|
media="(min-width: 0px)"
|
|
/>
|
|
|
|
|
|
<img
|
|
src="https://images.ctfassets.net/il1yandlcjgk/1SoZir10XYxddVZib4LNiT/a4838dc775ead74dc71fd21e23bc9f94/simple-header-1.png?w=135&fm=webp&q=60"
|
|
alt="simple-header-1"
|
|
class="object-cover w-full h-full absolute inset-0 group-hover:scale-105 duration-300 transition-transform"
|
|
/>
|
|
</picture>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<h4 class="type-p font-medium leading-6 mb-1 text-morph-terminal group-hover:text-slime-650 transition-colors duration-300">Prevent pipeline collisions with serial groups in CircleCI</h4>
|
|
<p class="text-small group-hover:text-slime-650 transition-colors duration-300">5 min read</p>
|
|
</div>
|
|
</a>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="flex justify-between items-end pb-4 border-b-morph-vapor border-b mb-6 gap-4">
|
|
<h2 class="type-h3 text-morph-terminal">Security</h2>
|
|
|
|
|
|
|
|
<div class="w-max shrink-0"><a href="/blog/tag/security/" class="group/link arrow-link hover:text-slime-650 active:text-slime-750"><span class="underline underline-offset-4">See all</span> <div class="arrow-expanding text-slime-650 group-hover/link:text-slime-650 group-active/link:text-slime-750"></div></a></div>
|
|
|
|
</div>
|
|
<div class="flex flex-col gap-6">
|
|
|
|
|
|
|
|
|
|
<a
|
|
href="/blog/a-comprehensive-guide-to-container-security/"
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-location="featured tag - security"
|
|
class="flex gap-4 group">
|
|
<div class="w-32 shrink-0">
|
|
<div class="block w-full overflow-hidden h-0 bg-morph-vapor pt-[57%] relative rounded-lg">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<picture>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<img
|
|
src="https://images.ctfassets.net/il1yandlcjgk/3RRbx2D91rboHU1nGtW1TX/6eed477649910d6ae484497b13cd1ff2/illustration_security_diamonds.svg"
|
|
alt="illustration security diamonds"
|
|
class="object-cover w-full h-full absolute inset-0 group-hover:scale-105 duration-300 transition-transform"
|
|
/>
|
|
</picture>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<h4 class="type-p font-medium leading-6 mb-1 text-morph-terminal group-hover:text-slime-650 transition-colors duration-300">A comprehensive guide to container security</h4>
|
|
<p class="text-small group-hover:text-slime-650 transition-colors duration-300">8 min read</p>
|
|
</div>
|
|
</a>
|
|
|
|
|
|
|
|
|
|
<a
|
|
href="/blog/dynamic-application-security-testing-dast/"
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-location="featured tag - security"
|
|
class="flex gap-4 group">
|
|
<div class="w-32 shrink-0">
|
|
<div class="block w-full overflow-hidden h-0 bg-morph-vapor pt-[57%] relative rounded-lg">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<picture>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="https://images.ctfassets.net/il1yandlcjgk/4hfwXag6VLiVwTiIF8wTic/73c62d55791397b9635fe38bb4ba9f50/rba-security-solutions-v2.jpg?w=135&fm=webp&q=75 1x, https://images.ctfassets.net/il1yandlcjgk/4hfwXag6VLiVwTiIF8wTic/73c62d55791397b9635fe38bb4ba9f50/rba-security-solutions-v2.jpg?w=270&fm=webp&q=60 2x, https://images.ctfassets.net/il1yandlcjgk/4hfwXag6VLiVwTiIF8wTic/73c62d55791397b9635fe38bb4ba9f50/rba-security-solutions-v2.jpg?w=405&fm=webp&q=45 3x"
|
|
media="(min-width: 0px)"
|
|
/>
|
|
|
|
|
|
<img
|
|
src="https://images.ctfassets.net/il1yandlcjgk/4hfwXag6VLiVwTiIF8wTic/73c62d55791397b9635fe38bb4ba9f50/rba-security-solutions-v2.jpg?w=135&fm=webp&q=60"
|
|
alt="An engineer sits at a desktop running dynamic security tests on a web application."
|
|
class="object-cover w-full h-full absolute inset-0 group-hover:scale-105 duration-300 transition-transform"
|
|
/>
|
|
</picture>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<h4 class="type-p font-medium leading-6 mb-1 text-morph-terminal group-hover:text-slime-650 transition-colors duration-300">DAST: A guide to dynamic application security testing</h4>
|
|
<p class="text-small group-hover:text-slime-650 transition-colors duration-300">7 min read</p>
|
|
</div>
|
|
</a>
|
|
|
|
|
|
|
|
|
|
<a
|
|
href="/blog/zero-trust-security-for-ci-cd/"
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-location="featured tag - security"
|
|
class="flex gap-4 group">
|
|
<div class="w-32 shrink-0">
|
|
<div class="block w-full overflow-hidden h-0 bg-morph-vapor pt-[57%] relative rounded-lg">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<picture>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="https://images.ctfassets.net/il1yandlcjgk/575Iq8OKkqwUwzZR1rmEoH/8b94ff3f0858cf5654b728678198ca40/rba-security-devsecops.jpg?w=135&fm=webp&q=75 1x, https://images.ctfassets.net/il1yandlcjgk/575Iq8OKkqwUwzZR1rmEoH/8b94ff3f0858cf5654b728678198ca40/rba-security-devsecops.jpg?w=270&fm=webp&q=60 2x, https://images.ctfassets.net/il1yandlcjgk/575Iq8OKkqwUwzZR1rmEoH/8b94ff3f0858cf5654b728678198ca40/rba-security-devsecops.jpg?w=405&fm=webp&q=45 3x"
|
|
media="(min-width: 0px)"
|
|
/>
|
|
|
|
|
|
<img
|
|
src="https://images.ctfassets.net/il1yandlcjgk/575Iq8OKkqwUwzZR1rmEoH/8b94ff3f0858cf5654b728678198ca40/rba-security-devsecops.jpg?w=135&fm=webp&q=60"
|
|
alt="Workers raise an oversize security lock to higher and higher levels. "
|
|
class="object-cover w-full h-full absolute inset-0 group-hover:scale-105 duration-300 transition-transform"
|
|
/>
|
|
</picture>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<h4 class="type-p font-medium leading-6 mb-1 text-morph-terminal group-hover:text-slime-650 transition-colors duration-300">Zero trust security for CI/CD pipelines</h4>
|
|
<p class="text-small group-hover:text-slime-650 transition-colors duration-300">7 min read</p>
|
|
</div>
|
|
</a>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
<div class="absolute bg-linear-to-t from-white/70 bottom-0 left-0 right-0 h-40 pointer-events-none"></div>
|
|
</div>
|
|
</div>
|
|
<div class="2xl:container mx-auto px-8 lg:px-16 pt-24">
|
|
<a class="button button-primary on-light block w-max mx-auto" href="/blog/all/">
|
|
See all posts
|
|
</a>
|
|
</div>
|
|
|
|
|
|
|
|
<section
|
|
class="group/popular bg-linear-to-t from-morph-fog py-28 2xl:grid 2xl:grid-cols-[minmax(0px,1fr)_1440px_minmax(0px,1fr)] overflow-hidden"
|
|
style="--slide-index: 0"
|
|
data-js-id="slide-container"
|
|
data-slide-index="count-0"
|
|
data-slide-remaining="count-5"
|
|
>
|
|
<div class="2xl:container col-start-2 row-start-1 px-8 lg:px-16 flex gap-8">
|
|
<div class="w-full flex flex-row gap-6 justify-between items-center mb-8">
|
|
<h2 class="type-h2 text-morph-terminal">Most popular</h2>
|
|
|
|
<div class="flex flex-row gap-6">
|
|
<button
|
|
disabled
|
|
class="rotate-180 flex items-center justify-center border border-current text-9pm-500 rounded-full w-12 h-12 disabled:opacity-30 disabled:pointer-events-none hover:text-slime-650 transition-colors duration-300"
|
|
onclick="popularPostsList(-1)"
|
|
data-js-id="slide-prev"
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-location="popular posts arrow - prev"
|
|
><div class="arrow"></div><span class="sr-only"
|
|
>Previous</span></button>
|
|
|
|
<button
|
|
class="flex items-center justify-center border border-current text-9pm-500 rounded-full w-12 h-12 disabled:opacity-30 disabled:pointer-events-none hover:text-slime-650 transition-colors duration-300 2xl:group-data-[slide-remaining=count-2]/popular:opacity-30 2xl:group-data-[slide-remaining=count-2]/popular:pointer-events-none lg:group-data-[slide-remaining=count-1]/popular:opacity-30 lg:group-data-[slide-remaining=count-1]/popular:pointer-events-none"
|
|
onclick="popularPostsList(1)"
|
|
data-js-id="slide-next"
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-location="popular posts arrow - next"
|
|
><div class="arrow"></div><span class="sr-only">Next</span></button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-start-2 col-span-2 px-8 lg:px-16 flex gap-8 row-start-2">
|
|
<div class="flex gap-8">
|
|
|
|
|
|
<a
|
|
href="/blog/five-takeaways-2026-q2-pulse/"
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-location="blog index - most popular"
|
|
data-analytics-category="resources"
|
|
class="group bg-white rounded-2xl overflow-hidden flex flex-col items-stretch w-[calc(100vw-64px)] sm:w-[416px] shrink-0 translate-x-[calc(var(--slide-index)*-100%-(var(--slide-index)*32px))] transition-transform"
|
|
>
|
|
|
|
<div class="grow-0 w-full overflow-hidden h-0 bg-morph-vapor pt-[57%] relative">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<picture>
|
|
|
|
|
|
|
|
<source
|
|
srcset="https://images.ctfassets.net/il1yandlcjgk/5Gk3lbY880yWmVNoxUtk1B/18abaf44c940d0970d0c0e8846e90be9/SoSDR-2023-BOOK__1_.png?w=437&fm=webp&q=75 1x, https://images.ctfassets.net/il1yandlcjgk/5Gk3lbY880yWmVNoxUtk1B/18abaf44c940d0970d0c0e8846e90be9/SoSDR-2023-BOOK__1_.png?w=874&fm=webp&q=60 2x, https://images.ctfassets.net/il1yandlcjgk/5Gk3lbY880yWmVNoxUtk1B/18abaf44c940d0970d0c0e8846e90be9/SoSDR-2023-BOOK__1_.png?w=1311&fm=webp&q=45 3x"
|
|
media="(min-width: 1440px)"
|
|
/>
|
|
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="https://images.ctfassets.net/il1yandlcjgk/5Gk3lbY880yWmVNoxUtk1B/18abaf44c940d0970d0c0e8846e90be9/SoSDR-2023-BOOK__1_.png?w=431&fm=webp&q=75 1x, https://images.ctfassets.net/il1yandlcjgk/5Gk3lbY880yWmVNoxUtk1B/18abaf44c940d0970d0c0e8846e90be9/SoSDR-2023-BOOK__1_.png?w=862&fm=webp&q=60 2x, https://images.ctfassets.net/il1yandlcjgk/5Gk3lbY880yWmVNoxUtk1B/18abaf44c940d0970d0c0e8846e90be9/SoSDR-2023-BOOK__1_.png?w=1293&fm=webp&q=45 3x"
|
|
media="(min-width: 1280px)"
|
|
/>
|
|
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="https://images.ctfassets.net/il1yandlcjgk/5Gk3lbY880yWmVNoxUtk1B/18abaf44c940d0970d0c0e8846e90be9/SoSDR-2023-BOOK__1_.png?w=375&fm=webp&q=75 1x, https://images.ctfassets.net/il1yandlcjgk/5Gk3lbY880yWmVNoxUtk1B/18abaf44c940d0970d0c0e8846e90be9/SoSDR-2023-BOOK__1_.png?w=750&fm=webp&q=60 2x, https://images.ctfassets.net/il1yandlcjgk/5Gk3lbY880yWmVNoxUtk1B/18abaf44c940d0970d0c0e8846e90be9/SoSDR-2023-BOOK__1_.png?w=1125&fm=webp&q=45 3x"
|
|
media="(min-width: 1024px)"
|
|
/>
|
|
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="https://images.ctfassets.net/il1yandlcjgk/5Gk3lbY880yWmVNoxUtk1B/18abaf44c940d0970d0c0e8846e90be9/SoSDR-2023-BOOK__1_.png?w=487&fm=webp&q=75 1x, https://images.ctfassets.net/il1yandlcjgk/5Gk3lbY880yWmVNoxUtk1B/18abaf44c940d0970d0c0e8846e90be9/SoSDR-2023-BOOK__1_.png?w=974&fm=webp&q=60 2x, https://images.ctfassets.net/il1yandlcjgk/5Gk3lbY880yWmVNoxUtk1B/18abaf44c940d0970d0c0e8846e90be9/SoSDR-2023-BOOK__1_.png?w=1461&fm=webp&q=45 3x"
|
|
media="(min-width: 768px)"
|
|
/>
|
|
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="https://images.ctfassets.net/il1yandlcjgk/5Gk3lbY880yWmVNoxUtk1B/18abaf44c940d0970d0c0e8846e90be9/SoSDR-2023-BOOK__1_.png?w=353&fm=webp&q=75 1x, https://images.ctfassets.net/il1yandlcjgk/5Gk3lbY880yWmVNoxUtk1B/18abaf44c940d0970d0c0e8846e90be9/SoSDR-2023-BOOK__1_.png?w=706&fm=webp&q=60 2x, https://images.ctfassets.net/il1yandlcjgk/5Gk3lbY880yWmVNoxUtk1B/18abaf44c940d0970d0c0e8846e90be9/SoSDR-2023-BOOK__1_.png?w=1059&fm=webp&q=45 3x"
|
|
media="(min-width: 640px)"
|
|
/>
|
|
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="https://images.ctfassets.net/il1yandlcjgk/5Gk3lbY880yWmVNoxUtk1B/18abaf44c940d0970d0c0e8846e90be9/SoSDR-2023-BOOK__1_.png?w=604&fm=webp&q=75 1x, https://images.ctfassets.net/il1yandlcjgk/5Gk3lbY880yWmVNoxUtk1B/18abaf44c940d0970d0c0e8846e90be9/SoSDR-2023-BOOK__1_.png?w=1208&fm=webp&q=60 2x, https://images.ctfassets.net/il1yandlcjgk/5Gk3lbY880yWmVNoxUtk1B/18abaf44c940d0970d0c0e8846e90be9/SoSDR-2023-BOOK__1_.png?w=1812&fm=webp&q=45 3x"
|
|
media="(min-width: 0px)"
|
|
/>
|
|
|
|
|
|
<img
|
|
src="https://images.ctfassets.net/il1yandlcjgk/5Gk3lbY880yWmVNoxUtk1B/18abaf44c940d0970d0c0e8846e90be9/SoSDR-2023-BOOK__1_.png?w=604&fm=webp&q=60"
|
|
alt="Q2 2026 State of Software Delivery Pulse report"
|
|
class="object-cover w-full h-full absolute inset-0 group-hover:scale-105 duration-300 transition-transform"
|
|
/>
|
|
</picture>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="p-8 grow">
|
|
<h3 class="type-h4 mb-2 text-morph-terminal group-hover:text-slime-650 transition-colors duration-300">
|
|
5 takeaways from the State of Software Delivery Q2 Pulse report
|
|
</h3>
|
|
<div class="post-metadata text-small group-hover:text-slime-650 transition-colors duration-300 overflow-hidden">
|
|
|
|
5 min read
|
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="flex gap-4 min-h-20 px-8 pb-5 grow-0 items-center">
|
|
<div class="rounded-full overflow-hidden w-10 h-10 shrink-0">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<picture>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="//images.ctfassets.net/il1yandlcjgk/5jaDKy7of1bny9EdxkfENU/e1d8506d6f4dc49c02127006e288eeb4/jacob-schmitt.jpg?w=50&fm=webp&q=75 1x, //images.ctfassets.net/il1yandlcjgk/5jaDKy7of1bny9EdxkfENU/e1d8506d6f4dc49c02127006e288eeb4/jacob-schmitt.jpg?w=100&fm=webp&q=60 2x, //images.ctfassets.net/il1yandlcjgk/5jaDKy7of1bny9EdxkfENU/e1d8506d6f4dc49c02127006e288eeb4/jacob-schmitt.jpg?w=150&fm=webp&q=45 3x"
|
|
media="(min-width: 0px)"
|
|
/>
|
|
|
|
|
|
<img
|
|
src="//images.ctfassets.net/il1yandlcjgk/5jaDKy7of1bny9EdxkfENU/e1d8506d6f4dc49c02127006e288eeb4/jacob-schmitt.jpg?w=50&fm=webp&q=60"
|
|
alt="Jacob Schmitt"
|
|
class=""
|
|
/>
|
|
</picture>
|
|
</div>
|
|
<div class="media-body media-middle">
|
|
<p class="post-author-name">
|
|
|
|
Jacob Schmitt
|
|
|
|
</p>
|
|
|
|
<p class="text-small leading-tight">
|
|
Senior Technical Content Marketing Manager
|
|
</p>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</a>
|
|
|
|
|
|
<a
|
|
href="/blog/introducing-chunk/"
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-location="blog index - most popular"
|
|
data-analytics-category="resources"
|
|
class="group bg-white rounded-2xl overflow-hidden flex flex-col items-stretch w-[calc(100vw-64px)] sm:w-[416px] shrink-0 translate-x-[calc(var(--slide-index)*-100%-(var(--slide-index)*32px))] transition-transform"
|
|
>
|
|
|
|
<div class="grow-0 w-full overflow-hidden h-0 bg-morph-vapor pt-[57%] relative">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<picture>
|
|
|
|
|
|
|
|
<source
|
|
srcset="https://images.ctfassets.net/il1yandlcjgk/22tVqC5nL95BXiVYuBniwa/65b7486815574517f17f83c88366cdef/Chunk_Interim_-__Blog_2054_x_1170_-v4.png?w=437&fm=webp&q=75 1x, https://images.ctfassets.net/il1yandlcjgk/22tVqC5nL95BXiVYuBniwa/65b7486815574517f17f83c88366cdef/Chunk_Interim_-__Blog_2054_x_1170_-v4.png?w=874&fm=webp&q=60 2x, https://images.ctfassets.net/il1yandlcjgk/22tVqC5nL95BXiVYuBniwa/65b7486815574517f17f83c88366cdef/Chunk_Interim_-__Blog_2054_x_1170_-v4.png?w=1311&fm=webp&q=45 3x"
|
|
media="(min-width: 1440px)"
|
|
/>
|
|
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="https://images.ctfassets.net/il1yandlcjgk/22tVqC5nL95BXiVYuBniwa/65b7486815574517f17f83c88366cdef/Chunk_Interim_-__Blog_2054_x_1170_-v4.png?w=431&fm=webp&q=75 1x, https://images.ctfassets.net/il1yandlcjgk/22tVqC5nL95BXiVYuBniwa/65b7486815574517f17f83c88366cdef/Chunk_Interim_-__Blog_2054_x_1170_-v4.png?w=862&fm=webp&q=60 2x, https://images.ctfassets.net/il1yandlcjgk/22tVqC5nL95BXiVYuBniwa/65b7486815574517f17f83c88366cdef/Chunk_Interim_-__Blog_2054_x_1170_-v4.png?w=1293&fm=webp&q=45 3x"
|
|
media="(min-width: 1280px)"
|
|
/>
|
|
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="https://images.ctfassets.net/il1yandlcjgk/22tVqC5nL95BXiVYuBniwa/65b7486815574517f17f83c88366cdef/Chunk_Interim_-__Blog_2054_x_1170_-v4.png?w=375&fm=webp&q=75 1x, https://images.ctfassets.net/il1yandlcjgk/22tVqC5nL95BXiVYuBniwa/65b7486815574517f17f83c88366cdef/Chunk_Interim_-__Blog_2054_x_1170_-v4.png?w=750&fm=webp&q=60 2x, https://images.ctfassets.net/il1yandlcjgk/22tVqC5nL95BXiVYuBniwa/65b7486815574517f17f83c88366cdef/Chunk_Interim_-__Blog_2054_x_1170_-v4.png?w=1125&fm=webp&q=45 3x"
|
|
media="(min-width: 1024px)"
|
|
/>
|
|
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="https://images.ctfassets.net/il1yandlcjgk/22tVqC5nL95BXiVYuBniwa/65b7486815574517f17f83c88366cdef/Chunk_Interim_-__Blog_2054_x_1170_-v4.png?w=487&fm=webp&q=75 1x, https://images.ctfassets.net/il1yandlcjgk/22tVqC5nL95BXiVYuBniwa/65b7486815574517f17f83c88366cdef/Chunk_Interim_-__Blog_2054_x_1170_-v4.png?w=974&fm=webp&q=60 2x, https://images.ctfassets.net/il1yandlcjgk/22tVqC5nL95BXiVYuBniwa/65b7486815574517f17f83c88366cdef/Chunk_Interim_-__Blog_2054_x_1170_-v4.png?w=1461&fm=webp&q=45 3x"
|
|
media="(min-width: 768px)"
|
|
/>
|
|
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="https://images.ctfassets.net/il1yandlcjgk/22tVqC5nL95BXiVYuBniwa/65b7486815574517f17f83c88366cdef/Chunk_Interim_-__Blog_2054_x_1170_-v4.png?w=353&fm=webp&q=75 1x, https://images.ctfassets.net/il1yandlcjgk/22tVqC5nL95BXiVYuBniwa/65b7486815574517f17f83c88366cdef/Chunk_Interim_-__Blog_2054_x_1170_-v4.png?w=706&fm=webp&q=60 2x, https://images.ctfassets.net/il1yandlcjgk/22tVqC5nL95BXiVYuBniwa/65b7486815574517f17f83c88366cdef/Chunk_Interim_-__Blog_2054_x_1170_-v4.png?w=1059&fm=webp&q=45 3x"
|
|
media="(min-width: 640px)"
|
|
/>
|
|
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="https://images.ctfassets.net/il1yandlcjgk/22tVqC5nL95BXiVYuBniwa/65b7486815574517f17f83c88366cdef/Chunk_Interim_-__Blog_2054_x_1170_-v4.png?w=604&fm=webp&q=75 1x, https://images.ctfassets.net/il1yandlcjgk/22tVqC5nL95BXiVYuBniwa/65b7486815574517f17f83c88366cdef/Chunk_Interim_-__Blog_2054_x_1170_-v4.png?w=1208&fm=webp&q=60 2x, https://images.ctfassets.net/il1yandlcjgk/22tVqC5nL95BXiVYuBniwa/65b7486815574517f17f83c88366cdef/Chunk_Interim_-__Blog_2054_x_1170_-v4.png?w=1812&fm=webp&q=45 3x"
|
|
media="(min-width: 0px)"
|
|
/>
|
|
|
|
|
|
<img
|
|
src="https://images.ctfassets.net/il1yandlcjgk/22tVqC5nL95BXiVYuBniwa/65b7486815574517f17f83c88366cdef/Chunk_Interim_-__Blog_2054_x_1170_-v4.png?w=604&fm=webp&q=60"
|
|
alt="Chunk ai agent hero v4"
|
|
class="object-cover w-full h-full absolute inset-0 group-hover:scale-105 duration-300 transition-transform"
|
|
/>
|
|
</picture>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="p-8 grow">
|
|
<h3 class="type-h4 mb-2 text-morph-terminal group-hover:text-slime-650 transition-colors duration-300">
|
|
Introducing Chunk™: The agent that validates code at AI speed
|
|
</h3>
|
|
<div class="post-metadata text-small group-hover:text-slime-650 transition-colors duration-300 overflow-hidden">
|
|
|
|
5 min read
|
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="flex gap-4 min-h-20 px-8 pb-5 grow-0 items-center">
|
|
<div class="rounded-full overflow-hidden w-10 h-10 shrink-0">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<picture>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="//images.ctfassets.net/il1yandlcjgk/3vOSw572RqVIbQyyiqM2il/2401826fdc85b55b91a5d2a6fac1a5ef/rob.jpg?w=50&fm=webp&q=75 1x, //images.ctfassets.net/il1yandlcjgk/3vOSw572RqVIbQyyiqM2il/2401826fdc85b55b91a5d2a6fac1a5ef/rob.jpg?w=100&fm=webp&q=60 2x, //images.ctfassets.net/il1yandlcjgk/3vOSw572RqVIbQyyiqM2il/2401826fdc85b55b91a5d2a6fac1a5ef/rob.jpg?w=150&fm=webp&q=45 3x"
|
|
media="(min-width: 0px)"
|
|
/>
|
|
|
|
|
|
<img
|
|
src="//images.ctfassets.net/il1yandlcjgk/3vOSw572RqVIbQyyiqM2il/2401826fdc85b55b91a5d2a6fac1a5ef/rob.jpg?w=50&fm=webp&q=60"
|
|
alt="Rob Zuber"
|
|
class=""
|
|
/>
|
|
</picture>
|
|
</div>
|
|
<div class="media-body media-middle">
|
|
<p class="post-author-name">
|
|
|
|
Rob Zuber
|
|
|
|
</p>
|
|
|
|
<p class="text-small leading-tight">
|
|
Chief Technology Officer
|
|
</p>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</a>
|
|
|
|
|
|
<a
|
|
href="/blog/ai-delivery-bottleneck/"
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-location="blog index - most popular"
|
|
data-analytics-category="resources"
|
|
class="group bg-white rounded-2xl overflow-hidden flex flex-col items-stretch w-[calc(100vw-64px)] sm:w-[416px] shrink-0 translate-x-[calc(var(--slide-index)*-100%-(var(--slide-index)*32px))] transition-transform"
|
|
>
|
|
|
|
<div class="grow-0 w-full overflow-hidden h-0 bg-morph-vapor pt-[57%] relative">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<picture>
|
|
|
|
|
|
|
|
<source
|
|
srcset="https://images.ctfassets.net/il1yandlcjgk/73D6tCr7iMWqoZq71vds9C/3d385699b1294b6e2f43eafccf1ee282/support-header-1_3x.png?w=437&fm=webp&q=75 1x, https://images.ctfassets.net/il1yandlcjgk/73D6tCr7iMWqoZq71vds9C/3d385699b1294b6e2f43eafccf1ee282/support-header-1_3x.png?w=874&fm=webp&q=60 2x, https://images.ctfassets.net/il1yandlcjgk/73D6tCr7iMWqoZq71vds9C/3d385699b1294b6e2f43eafccf1ee282/support-header-1_3x.png?w=1311&fm=webp&q=45 3x"
|
|
media="(min-width: 1440px)"
|
|
/>
|
|
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="https://images.ctfassets.net/il1yandlcjgk/73D6tCr7iMWqoZq71vds9C/3d385699b1294b6e2f43eafccf1ee282/support-header-1_3x.png?w=431&fm=webp&q=75 1x, https://images.ctfassets.net/il1yandlcjgk/73D6tCr7iMWqoZq71vds9C/3d385699b1294b6e2f43eafccf1ee282/support-header-1_3x.png?w=862&fm=webp&q=60 2x, https://images.ctfassets.net/il1yandlcjgk/73D6tCr7iMWqoZq71vds9C/3d385699b1294b6e2f43eafccf1ee282/support-header-1_3x.png?w=1293&fm=webp&q=45 3x"
|
|
media="(min-width: 1280px)"
|
|
/>
|
|
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="https://images.ctfassets.net/il1yandlcjgk/73D6tCr7iMWqoZq71vds9C/3d385699b1294b6e2f43eafccf1ee282/support-header-1_3x.png?w=375&fm=webp&q=75 1x, https://images.ctfassets.net/il1yandlcjgk/73D6tCr7iMWqoZq71vds9C/3d385699b1294b6e2f43eafccf1ee282/support-header-1_3x.png?w=750&fm=webp&q=60 2x, https://images.ctfassets.net/il1yandlcjgk/73D6tCr7iMWqoZq71vds9C/3d385699b1294b6e2f43eafccf1ee282/support-header-1_3x.png?w=1125&fm=webp&q=45 3x"
|
|
media="(min-width: 1024px)"
|
|
/>
|
|
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="https://images.ctfassets.net/il1yandlcjgk/73D6tCr7iMWqoZq71vds9C/3d385699b1294b6e2f43eafccf1ee282/support-header-1_3x.png?w=487&fm=webp&q=75 1x, https://images.ctfassets.net/il1yandlcjgk/73D6tCr7iMWqoZq71vds9C/3d385699b1294b6e2f43eafccf1ee282/support-header-1_3x.png?w=974&fm=webp&q=60 2x, https://images.ctfassets.net/il1yandlcjgk/73D6tCr7iMWqoZq71vds9C/3d385699b1294b6e2f43eafccf1ee282/support-header-1_3x.png?w=1461&fm=webp&q=45 3x"
|
|
media="(min-width: 768px)"
|
|
/>
|
|
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="https://images.ctfassets.net/il1yandlcjgk/73D6tCr7iMWqoZq71vds9C/3d385699b1294b6e2f43eafccf1ee282/support-header-1_3x.png?w=353&fm=webp&q=75 1x, https://images.ctfassets.net/il1yandlcjgk/73D6tCr7iMWqoZq71vds9C/3d385699b1294b6e2f43eafccf1ee282/support-header-1_3x.png?w=706&fm=webp&q=60 2x, https://images.ctfassets.net/il1yandlcjgk/73D6tCr7iMWqoZq71vds9C/3d385699b1294b6e2f43eafccf1ee282/support-header-1_3x.png?w=1059&fm=webp&q=45 3x"
|
|
media="(min-width: 640px)"
|
|
/>
|
|
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="https://images.ctfassets.net/il1yandlcjgk/73D6tCr7iMWqoZq71vds9C/3d385699b1294b6e2f43eafccf1ee282/support-header-1_3x.png?w=604&fm=webp&q=75 1x, https://images.ctfassets.net/il1yandlcjgk/73D6tCr7iMWqoZq71vds9C/3d385699b1294b6e2f43eafccf1ee282/support-header-1_3x.png?w=1208&fm=webp&q=60 2x, https://images.ctfassets.net/il1yandlcjgk/73D6tCr7iMWqoZq71vds9C/3d385699b1294b6e2f43eafccf1ee282/support-header-1_3x.png?w=1812&fm=webp&q=45 3x"
|
|
media="(min-width: 0px)"
|
|
/>
|
|
|
|
|
|
<img
|
|
src="https://images.ctfassets.net/il1yandlcjgk/73D6tCr7iMWqoZq71vds9C/3d385699b1294b6e2f43eafccf1ee282/support-header-1_3x.png?w=604&fm=webp&q=60"
|
|
alt="Abstract illustration of a software delivery pipeline, showing code flowing through connected stages, symbolizing how AI accelerates code but strains downstream systems."
|
|
class="object-cover w-full h-full absolute inset-0 group-hover:scale-105 duration-300 transition-transform"
|
|
/>
|
|
</picture>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="p-8 grow">
|
|
<h3 class="type-h4 mb-2 text-morph-terminal group-hover:text-slime-650 transition-colors duration-300">
|
|
The real reason your AI initiatives are failing
|
|
</h3>
|
|
<div class="post-metadata text-small group-hover:text-slime-650 transition-colors duration-300 overflow-hidden">
|
|
|
|
6 min read
|
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="flex gap-4 min-h-20 px-8 pb-5 grow-0 items-center">
|
|
<div class="rounded-full overflow-hidden w-10 h-10 shrink-0">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<picture>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="//images.ctfassets.net/il1yandlcjgk/5jaDKy7of1bny9EdxkfENU/e1d8506d6f4dc49c02127006e288eeb4/jacob-schmitt.jpg?w=50&fm=webp&q=75 1x, //images.ctfassets.net/il1yandlcjgk/5jaDKy7of1bny9EdxkfENU/e1d8506d6f4dc49c02127006e288eeb4/jacob-schmitt.jpg?w=100&fm=webp&q=60 2x, //images.ctfassets.net/il1yandlcjgk/5jaDKy7of1bny9EdxkfENU/e1d8506d6f4dc49c02127006e288eeb4/jacob-schmitt.jpg?w=150&fm=webp&q=45 3x"
|
|
media="(min-width: 0px)"
|
|
/>
|
|
|
|
|
|
<img
|
|
src="//images.ctfassets.net/il1yandlcjgk/5jaDKy7of1bny9EdxkfENU/e1d8506d6f4dc49c02127006e288eeb4/jacob-schmitt.jpg?w=50&fm=webp&q=60"
|
|
alt="Jacob Schmitt"
|
|
class=""
|
|
/>
|
|
</picture>
|
|
</div>
|
|
<div class="media-body media-middle">
|
|
<p class="post-author-name">
|
|
|
|
Jacob Schmitt
|
|
|
|
</p>
|
|
|
|
<p class="text-small leading-tight">
|
|
Senior Technical Content Marketing Manager
|
|
</p>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</a>
|
|
|
|
|
|
<a
|
|
href="/blog/circleci-mcp-server/"
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-location="blog index - most popular"
|
|
data-analytics-category="resources"
|
|
class="group bg-white rounded-2xl overflow-hidden flex flex-col items-stretch w-[calc(100vw-64px)] sm:w-[416px] shrink-0 translate-x-[calc(var(--slide-index)*-100%-(var(--slide-index)*32px))] transition-transform"
|
|
>
|
|
|
|
<div class="grow-0 w-full overflow-hidden h-0 bg-morph-vapor pt-[57%] relative">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<picture>
|
|
|
|
|
|
|
|
<source
|
|
srcset="https://images.ctfassets.net/il1yandlcjgk/2VEh4ln4mTifmZ9wMhdUlw/2e7d05056fd3a99759154fba99404dea/2024-08-19-orbs-header.png?w=437&fm=webp&q=75 1x, https://images.ctfassets.net/il1yandlcjgk/2VEh4ln4mTifmZ9wMhdUlw/2e7d05056fd3a99759154fba99404dea/2024-08-19-orbs-header.png?w=874&fm=webp&q=60 2x, https://images.ctfassets.net/il1yandlcjgk/2VEh4ln4mTifmZ9wMhdUlw/2e7d05056fd3a99759154fba99404dea/2024-08-19-orbs-header.png?w=1311&fm=webp&q=45 3x"
|
|
media="(min-width: 1440px)"
|
|
/>
|
|
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="https://images.ctfassets.net/il1yandlcjgk/2VEh4ln4mTifmZ9wMhdUlw/2e7d05056fd3a99759154fba99404dea/2024-08-19-orbs-header.png?w=431&fm=webp&q=75 1x, https://images.ctfassets.net/il1yandlcjgk/2VEh4ln4mTifmZ9wMhdUlw/2e7d05056fd3a99759154fba99404dea/2024-08-19-orbs-header.png?w=862&fm=webp&q=60 2x, https://images.ctfassets.net/il1yandlcjgk/2VEh4ln4mTifmZ9wMhdUlw/2e7d05056fd3a99759154fba99404dea/2024-08-19-orbs-header.png?w=1293&fm=webp&q=45 3x"
|
|
media="(min-width: 1280px)"
|
|
/>
|
|
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="https://images.ctfassets.net/il1yandlcjgk/2VEh4ln4mTifmZ9wMhdUlw/2e7d05056fd3a99759154fba99404dea/2024-08-19-orbs-header.png?w=375&fm=webp&q=75 1x, https://images.ctfassets.net/il1yandlcjgk/2VEh4ln4mTifmZ9wMhdUlw/2e7d05056fd3a99759154fba99404dea/2024-08-19-orbs-header.png?w=750&fm=webp&q=60 2x, https://images.ctfassets.net/il1yandlcjgk/2VEh4ln4mTifmZ9wMhdUlw/2e7d05056fd3a99759154fba99404dea/2024-08-19-orbs-header.png?w=1125&fm=webp&q=45 3x"
|
|
media="(min-width: 1024px)"
|
|
/>
|
|
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="https://images.ctfassets.net/il1yandlcjgk/2VEh4ln4mTifmZ9wMhdUlw/2e7d05056fd3a99759154fba99404dea/2024-08-19-orbs-header.png?w=487&fm=webp&q=75 1x, https://images.ctfassets.net/il1yandlcjgk/2VEh4ln4mTifmZ9wMhdUlw/2e7d05056fd3a99759154fba99404dea/2024-08-19-orbs-header.png?w=974&fm=webp&q=60 2x, https://images.ctfassets.net/il1yandlcjgk/2VEh4ln4mTifmZ9wMhdUlw/2e7d05056fd3a99759154fba99404dea/2024-08-19-orbs-header.png?w=1461&fm=webp&q=45 3x"
|
|
media="(min-width: 768px)"
|
|
/>
|
|
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="https://images.ctfassets.net/il1yandlcjgk/2VEh4ln4mTifmZ9wMhdUlw/2e7d05056fd3a99759154fba99404dea/2024-08-19-orbs-header.png?w=353&fm=webp&q=75 1x, https://images.ctfassets.net/il1yandlcjgk/2VEh4ln4mTifmZ9wMhdUlw/2e7d05056fd3a99759154fba99404dea/2024-08-19-orbs-header.png?w=706&fm=webp&q=60 2x, https://images.ctfassets.net/il1yandlcjgk/2VEh4ln4mTifmZ9wMhdUlw/2e7d05056fd3a99759154fba99404dea/2024-08-19-orbs-header.png?w=1059&fm=webp&q=45 3x"
|
|
media="(min-width: 640px)"
|
|
/>
|
|
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="https://images.ctfassets.net/il1yandlcjgk/2VEh4ln4mTifmZ9wMhdUlw/2e7d05056fd3a99759154fba99404dea/2024-08-19-orbs-header.png?w=604&fm=webp&q=75 1x, https://images.ctfassets.net/il1yandlcjgk/2VEh4ln4mTifmZ9wMhdUlw/2e7d05056fd3a99759154fba99404dea/2024-08-19-orbs-header.png?w=1208&fm=webp&q=60 2x, https://images.ctfassets.net/il1yandlcjgk/2VEh4ln4mTifmZ9wMhdUlw/2e7d05056fd3a99759154fba99404dea/2024-08-19-orbs-header.png?w=1812&fm=webp&q=45 3x"
|
|
media="(min-width: 0px)"
|
|
/>
|
|
|
|
|
|
<img
|
|
src="https://images.ctfassets.net/il1yandlcjgk/2VEh4ln4mTifmZ9wMhdUlw/2e7d05056fd3a99759154fba99404dea/2024-08-19-orbs-header.png?w=604&fm=webp&q=60"
|
|
alt="2024-08-19-orbs-header"
|
|
class="object-cover w-full h-full absolute inset-0 group-hover:scale-105 duration-300 transition-transform"
|
|
/>
|
|
</picture>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="p-8 grow">
|
|
<h3 class="type-h4 mb-2 text-morph-terminal group-hover:text-slime-650 transition-colors duration-300">
|
|
CircleCI MCP server: Natural language CI for AI-driven workflows
|
|
</h3>
|
|
<div class="post-metadata text-small group-hover:text-slime-650 transition-colors duration-300 overflow-hidden">
|
|
|
|
7 min read
|
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="flex gap-4 min-h-20 px-8 pb-5 grow-0 items-center">
|
|
<div class="rounded-full overflow-hidden w-10 h-10 shrink-0">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<picture>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="//images.ctfassets.net/il1yandlcjgk/6zxeyIP2yAmXaQilXOa8XM/767bc549216cf97274e7261f345be5de/2024-01-23-michael-webster.png?w=50&fm=webp&q=75 1x, //images.ctfassets.net/il1yandlcjgk/6zxeyIP2yAmXaQilXOa8XM/767bc549216cf97274e7261f345be5de/2024-01-23-michael-webster.png?w=100&fm=webp&q=60 2x, //images.ctfassets.net/il1yandlcjgk/6zxeyIP2yAmXaQilXOa8XM/767bc549216cf97274e7261f345be5de/2024-01-23-michael-webster.png?w=150&fm=webp&q=45 3x"
|
|
media="(min-width: 0px)"
|
|
/>
|
|
|
|
|
|
<img
|
|
src="//images.ctfassets.net/il1yandlcjgk/6zxeyIP2yAmXaQilXOa8XM/767bc549216cf97274e7261f345be5de/2024-01-23-michael-webster.png?w=50&fm=webp&q=60"
|
|
alt="Michael Webster"
|
|
class=""
|
|
/>
|
|
</picture>
|
|
</div>
|
|
<div class="media-body media-middle">
|
|
<p class="post-author-name">
|
|
|
|
Michael Webster
|
|
|
|
</p>
|
|
|
|
<p class="text-small leading-tight">
|
|
Principal Engineer
|
|
</p>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</a>
|
|
|
|
|
|
<a
|
|
href="/blog/ci-cd-at-scale-circleci-vs-github-actions/"
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-location="blog index - most popular"
|
|
data-analytics-category="resources"
|
|
class="group bg-white rounded-2xl overflow-hidden flex flex-col items-stretch w-[calc(100vw-64px)] sm:w-[416px] shrink-0 translate-x-[calc(var(--slide-index)*-100%-(var(--slide-index)*32px))] transition-transform"
|
|
>
|
|
|
|
<div class="grow-0 w-full overflow-hidden h-0 bg-morph-vapor pt-[57%] relative">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<picture>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<img
|
|
src="https://images.ctfassets.net/il1yandlcjgk/2TcXoyqK24uk5P7krD6Jkh/edd5c9be2d98f1cce49b47017ff12cf7/illustration_efficiency_circles.svg"
|
|
alt="Efficiency comparison graph"
|
|
class="object-cover w-full h-full absolute inset-0 group-hover:scale-105 duration-300 transition-transform"
|
|
/>
|
|
</picture>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="p-8 grow">
|
|
<h3 class="type-h4 mb-2 text-morph-terminal group-hover:text-slime-650 transition-colors duration-300">
|
|
CI/CD at scale: A performance analysis of CircleCI vs GitHub Actions
|
|
</h3>
|
|
<div class="post-metadata text-small group-hover:text-slime-650 transition-colors duration-300 overflow-hidden">
|
|
|
|
5 min read
|
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="flex gap-4 min-h-20 px-8 pb-5 grow-0 items-center">
|
|
<div class="rounded-full overflow-hidden w-10 h-10 shrink-0">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<picture>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="//images.ctfassets.net/il1yandlcjgk/2ApvZdLFbCCpdVyWP1QDrM/c03ff40dd5a9621531787b9cb3e89679/nick-smith.jpg?w=50&fm=webp&q=75 1x, //images.ctfassets.net/il1yandlcjgk/2ApvZdLFbCCpdVyWP1QDrM/c03ff40dd5a9621531787b9cb3e89679/nick-smith.jpg?w=100&fm=webp&q=60 2x, //images.ctfassets.net/il1yandlcjgk/2ApvZdLFbCCpdVyWP1QDrM/c03ff40dd5a9621531787b9cb3e89679/nick-smith.jpg?w=150&fm=webp&q=45 3x"
|
|
media="(min-width: 0px)"
|
|
/>
|
|
|
|
|
|
<img
|
|
src="//images.ctfassets.net/il1yandlcjgk/2ApvZdLFbCCpdVyWP1QDrM/c03ff40dd5a9621531787b9cb3e89679/nick-smith.jpg?w=50&fm=webp&q=60"
|
|
alt="Nick Smith"
|
|
class=""
|
|
/>
|
|
</picture>
|
|
</div>
|
|
<div class="media-body media-middle">
|
|
<p class="post-author-name">
|
|
|
|
Nick Smith
|
|
|
|
</p>
|
|
|
|
<p class="text-small leading-tight">
|
|
Senior Field Engineer
|
|
</p>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</a>
|
|
|
|
|
|
<a
|
|
href="/blog/introduction-to-developer-experience-what-why-and-how/"
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-location="blog index - most popular"
|
|
data-analytics-category="resources"
|
|
class="group bg-white rounded-2xl overflow-hidden flex flex-col items-stretch w-[calc(100vw-64px)] sm:w-[416px] shrink-0 translate-x-[calc(var(--slide-index)*-100%-(var(--slide-index)*32px))] transition-transform"
|
|
>
|
|
|
|
<div class="grow-0 w-full overflow-hidden h-0 bg-morph-vapor pt-[57%] relative">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<picture>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<img
|
|
src="https://images.ctfassets.net/il1yandlcjgk/118eaJ4gzaEbsr310Riur6/c8096adb1d7ba2b5d2b4a14701cf5f7e/illustration_speed_comet.svg"
|
|
alt="A stylized comet speeds upward through space."
|
|
class="object-cover w-full h-full absolute inset-0 group-hover:scale-105 duration-300 transition-transform"
|
|
/>
|
|
</picture>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="p-8 grow">
|
|
<h3 class="type-h4 mb-2 text-morph-terminal group-hover:text-slime-650 transition-colors duration-300">
|
|
Introduction to developer experience: What, why, and how
|
|
</h3>
|
|
<div class="post-metadata text-small group-hover:text-slime-650 transition-colors duration-300 overflow-hidden">
|
|
|
|
11 min read
|
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="flex gap-4 min-h-20 px-8 pb-5 grow-0 items-center">
|
|
<div class="rounded-full overflow-hidden w-10 h-10 shrink-0">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<picture>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<source
|
|
srcset="//images.ctfassets.net/il1yandlcjgk/5jaDKy7of1bny9EdxkfENU/e1d8506d6f4dc49c02127006e288eeb4/jacob-schmitt.jpg?w=50&fm=webp&q=75 1x, //images.ctfassets.net/il1yandlcjgk/5jaDKy7of1bny9EdxkfENU/e1d8506d6f4dc49c02127006e288eeb4/jacob-schmitt.jpg?w=100&fm=webp&q=60 2x, //images.ctfassets.net/il1yandlcjgk/5jaDKy7of1bny9EdxkfENU/e1d8506d6f4dc49c02127006e288eeb4/jacob-schmitt.jpg?w=150&fm=webp&q=45 3x"
|
|
media="(min-width: 0px)"
|
|
/>
|
|
|
|
|
|
<img
|
|
src="//images.ctfassets.net/il1yandlcjgk/5jaDKy7of1bny9EdxkfENU/e1d8506d6f4dc49c02127006e288eeb4/jacob-schmitt.jpg?w=50&fm=webp&q=60"
|
|
alt="Jacob Schmitt"
|
|
class=""
|
|
/>
|
|
</picture>
|
|
</div>
|
|
<div class="media-body media-middle">
|
|
<p class="post-author-name">
|
|
|
|
Jacob Schmitt
|
|
|
|
</p>
|
|
|
|
<p class="text-small leading-tight">
|
|
Senior Technical Content Marketing Manager
|
|
</p>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</a>
|
|
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
|
|
|
|
<section class="bg-9pm-500 text-body-light relative overflow-hidden">
|
|
<h2 class="type-mega-small sm:type-mega lowercase xl:absolute xl:-top-11 -mt-2 lg:mt-0 -ml-2 lg:ml-0 lg:-left-5 w-full 2xl:w-3/4">>Subscribe</h2>
|
|
<div class="2xl:container mx-auto p-8 lg:px-16 xl:pb-24 xl:pt-32 xl:mt-32">
|
|
|
|
<div class="flex gap-6 flex-col sm:flex-row items-end sm:items-center sm:justify-end">
|
|
|
|
|
|
|
|
<div class="relative group">
|
|
|
|
<div class="w-72 h-72 bg-radial-[54.59%_30.47%_at_45.35%_47.45%] blur-3xl from-morph-engineer-tears/80 to-morph-engineer-tears/30 opacity-0 absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 group-hover:opacity-90 transition-opacity duration-300 pointer-events-none ease-linear"></div>
|
|
|
|
<a
|
|
href="https://www2.circleci.com/newsletter"
|
|
target="_blank"
|
|
class="button button-primary on-9pm relative"
|
|
><span>Get the newsletter</span><div class="arrow"></div></a>
|
|
</div>
|
|
|
|
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
|
|
|
|
|
|
<footer class="bg-morph-midnight text-body-light pt-16">
|
|
<div class="2xl:container mx-auto px-8 lg:px-16 py-8 lg:py-16">
|
|
<div class="mb-16">
|
|
<a
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-properties='{ "location": "footer", "category": "logo", "cta_text": "circleci" }'
|
|
href="/"
|
|
>
|
|
<svg role="img" aria-label="CircleCI" fill="none" height="25" viewBox="0 0 116 25" width="116" xmlns="http://www.w3.org/2000/svg"><path d="m8.87876 12.6691c0-1.5781 1.30334-2.87304 2.89174-2.87304s2.8917 1.29494 2.8917 2.87304c0 1.5782-1.3033 2.8731-2.8917 2.8731-1.6292 0-2.89174-1.2544-2.89174-2.8731zm2.89174-12.018362c-5.66126 0-10.42647 3.844272-11.7705 9.064382v.1214c0 .32368.24437.56648.570196.56648h4.887394c.24437 0 .44801-.1214.52947-.3237 1.0182-2.18515 3.21753-3.68239 5.78344-3.68239 3.5026 0 6.3536 2.83262 6.3536 6.31269 0 3.4801-2.851 6.3127-6.3536 6.3127-2.56591 0-4.76524-1.4972-5.78344-3.6824-.08146-.2023-.2851-.3237-.52947-.3237h-4.887394c-.325826-.0405-.570196.2023-.570196.526v.1214c1.34403 5.2201 6.10924 9.0644 11.7705 9.0644 6.6794 0 12.0963-5.382 12.0963-12.0184 0-6.67688-5.4169-12.058862-12.0963-12.058862zm31.6458 14.851062h-1.6291c-.1222 0-.2036.0404-.2851.1214-.9367 1.4163-2.5659 2.347-4.3986 2.347-2.9732 0-5.3354-2.347-5.3354-5.3011 0-2.95398 2.4029-5.301 5.3354-5.301 1.8327 0 3.4619.93071 4.3986 2.34702.0815.08094.1629.1214.2851.1214h1.6291c.2037 0 .3666-.16186.3666-.36419 0-.04047 0-.1214-.0407-.16187-1.2219-2.42796-3.747-4.08706-6.6387-4.08706-4.1136 0-7.4533 3.31821-7.4533 7.4053 0 4.168 3.3397 7.4457 7.4533 7.4457 2.8917 0 5.4168-1.6591 6.6387-4.087.0407-.0405.0407-.081.0407-.1619 0-.1619-.1629-.3237-.3666-.3237zm4.9689-12.70636c0 .76885-.6517 1.41631-1.4255 1.41631s-1.4255-.64746-1.4255-1.41631c0-.76886.6517-1.41631 1.4255-1.41631.8146.04046 1.4255.64745 1.4255 1.41631zm-.3258 16.59106v-13.75844h-2.1179v13.75844c0 .2023.1629.3642.3665.3642h1.4255c.163 0 .3259-.1619.3259-.3642zm9.2046-14.08217c-2.1586.08093-3.8692 1.13305-4.9689 2.67076v-1.98284c0-.20233-.1629-.36419-.3665-.36419h-1.4255c-.2037 0-.3666.16186-.3666.36419v13.39425c0 .2023.1629.3642.3666.3642h1.4255c.2036 0 .3665-.1619.3665-.3642v-6.7174c0-2.79211 2.1993-5.09867 4.9689-5.26054.2036 0 .3665-.16186.3665-.36419v-1.41631c0-.16187-.1629-.32373-.3665-.32373zm14.1734 10.19747h-1.6291c-.1222 0-.2037.0404-.2851.1214-.9368 1.4163-2.5659 2.347-4.3987 2.347-2.9324 0-5.3354-2.3875-5.3354-5.3011 0-2.91351 2.403-5.301 5.3354-5.301 1.8328 0 3.4619.93071 4.3987 2.34702.0814.08094.1629.1214.2851.1214h1.6291c.2036 0 .3666-.16186.3666-.36419 0-.04047-.0001-.1214-.0408-.16187-1.2218-2.42796-3.747-4.08706-6.6387-4.08706-4.1135 0-7.4533 3.31821-7.4533 7.4053 0 4.087 3.3398 7.4053 7.4533 7.4053 2.8917 0 5.4169-1.6592 6.6387-4.0871.0407-.0405.0408-.0809.0408-.1619-.0408-.1214-.163-.2832-.3666-.2832zm4.2357-14.4464h-1.4254c-.2037 0-.3666.16186-.3666.36419v18.00741c0 .2023.1629.3642.3666.3642h1.4254c.2037 0 .3666-.1619.3666-.3642v-18.00741c0-.20233-.1629-.36419-.3666-.36419zm9.9377 4.20846c-4.1135 0-7.4532 3.31822-7.4532 7.40524 0 4.0871 3.3397 7.4053 7.4532 7.4053 2.8917 0 5.4169-1.6591 6.6387-4.087.0408-.0405.0408-.081.0408-.1619 0-.2023-.1629-.3642-.3666-.3642h-1.6291c-.1222 0-.2036.0405-.2851.1619-.9775 1.4163-2.5659 2.3065-4.3987 2.3065-2.688 0-4.9281-1.9828-5.2946-4.5726h12.3814c.2036 0 .3258-.1619.3665-.3238 0-.1214 0-.2428 0-.3642 0-4.08702-3.3397-7.40524-7.4533-7.40524zm-5.1317 6.02944c.6109-2.22563 2.688-3.88474 5.1317-3.88474s4.5209 1.65911 5.1318 3.88474zm33.2339-10.602096c-1.181 0-2.118.930716-2.118 2.104236 0 1.17351.937 2.10423 2.118 2.10423s2.118-.93072 2.118-2.10423c0-1.13305-.937-2.104236-2.118-2.104236zm1.752 4.936856v13.75844c0 .2023-.163.3642-.367.3642h-2.851c-.204 0-.366-.1619-.366-.3642v-13.75844zm-12.789 14.44634c3.462 0 6.394-2.3875 7.209-5.5843 0-.0405 0-.0405 0-.0809 0-.2023-.163-.3642-.367-.3642h-3.014c-.162 0-.285.0809-.325.2023-.611 1.3354-1.955 2.2661-3.544 2.2661-2.158 0-3.9097-1.74-3.9097-3.8847s1.7517-3.88476 3.9097-3.88476c1.589 0 2.933.93072 3.544 2.26606.04.1214.163.2024.325.2024h3.014c.204 0 .367-.1619.367-.3642 0-.0405 0-.0405 0-.081-.815-3.19677-3.747-5.58427-7.209-5.58427-4.1136 0-7.4533 3.31821-7.4533 7.40527 0 4.2085 3.3397 7.4862 7.4533 7.4862z" fill="currentColor"/></svg>
|
|
<span class="sr-only">CircleCI</span>
|
|
</a>
|
|
</div>
|
|
<div class="flex flex-col lg:flex-row justify-between gap-y-8 gap-x-4">
|
|
<div class="flex flex-col lg:flex-row gap-y-8 gap-x-4">
|
|
<span class="">© 2026 Circle Internet Services, Inc.</span>
|
|
<nav class="flex flex-col lg:flex-row gap-y-8 gap-x-4">
|
|
|
|
<a
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-properties='{ "location": "footer", "category": "legal", "page_location": "footer - legal", "cta_text": "Terms of Use" }'
|
|
href="https://circleci.com/legal/terms-of-use/"
|
|
|
|
|
|
>Terms of Use</a>
|
|
|
|
<a
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-properties='{ "location": "footer", "category": "legal", "page_location": "footer - legal", "cta_text": "Privacy Policy" }'
|
|
href="https://circleci.com/legal/privacy/"
|
|
|
|
|
|
>Privacy Policy</a>
|
|
|
|
<a
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-properties='{ "location": "footer", "category": "legal", "page_location": "footer - legal", "cta_text": "Cookie Policy" }'
|
|
href="https://circleci.com/legal/cookie-policy/"
|
|
|
|
|
|
>Cookie Policy</a>
|
|
|
|
<a
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-properties='{ "location": "footer", "category": "legal", "page_location": "footer - legal", "cta_text": "Cookie Preferences" }'
|
|
href="#cookie-preferences"
|
|
|
|
onclick="Cookiebot.renew(); return false;" data-proofer-ignore
|
|
>Cookie Preferences</a>
|
|
|
|
</nav>
|
|
</div>
|
|
<div class="flex gap-5">
|
|
<a
|
|
href="/blog/feed.xml"
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-properties='{ "location": "footer", "category": "icons", "cta_text": "blog-feed"}'
|
|
title="RSS"
|
|
class="rss"
|
|
>
|
|
<svg viewBox="0 0 448 512" width="24" height="24" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="m25.57 176.1c-13.16-.7-24.6583 9.1-25.5177 22.3s9.173 24.65 22.39 25.5c120.1 7.875 225.7 112.7 233.6 233.6.8577 12.8 11.3577 22.5 23.0577 22.5.5313 0 1.062-.0313 1.594-.0625 13.22-.8438 23.25-12.28 22.39-25.5-8.484-144.1375-133.384-269.0375-277.514-278.3375zm6.43-144.1c-17.67 0-32 14.31-32 32s14.33 32 32 32c194.1 0 352 157.9 352 352 0 17.69 14.33 32 32 32s32-14.31 32-32c0-229.4-186.6-416-416-416zm31.1 319.9c-34.47 0-63.1 28.7-63.1 64.1s28.63 64 63.1 64 64.08-28.62 64.08-64-27.81-64.1-64.08-64.1z"/></svg>
|
|
<span class="sr-only">RSS</span>
|
|
</a>
|
|
<a
|
|
href="https://www.linkedin.com/company/circleci"
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-properties='{ "location": "footer", "category": "icons", "cta_text": "linkedin"}'
|
|
title="LinkedIn"
|
|
class="linkedin"
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
>
|
|
<svg viewBox="0 0 448 512" width="24" height="24" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="m416 32h-384.1c-17.6 0-31.9 14.5-31.9 32.3v383.4c0 17.8 14.3 32.3 31.9 32.3h384.1c17.6 0 32-14.5 32-32.3v-383.4c0-17.8-14.4-32.3-32-32.3zm-280.6 384h-66.4v-213.8h66.5v213.8zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5s17.2-38.5 38.5-38.5c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4v-104c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9v105.8h-66.4v-213.8h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg>
|
|
<span class="sr-only">LinkedIn</span>
|
|
</a>
|
|
<a
|
|
href="https://github.com/circleci"
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-properties='{ "location": "footer", "category": "icons", "cta_text": "github"}'
|
|
title="GitHub"
|
|
class="github"
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
>
|
|
<svg viewBox="0 0 496 512" width="24" height="24" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="m165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zm65.8-383.2c-138.7 0-244.8 105.3-244.8 244 0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1 100-33.2 167.8-128.1 167.8-239 0-138.7-112.5-244-251.2-244zm-147.6 344.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
|
|
<span class="sr-only">GitHub</span>
|
|
</a>
|
|
<a
|
|
href="https://twitter.com/circleci"
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-properties='{ "location": "footer", "category": "icons", "cta_text": "x"}'
|
|
title="X"
|
|
class="x"
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
>
|
|
<svg width="24" height="24" viewBox="0 0 1200 1227" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
<path d="M714.163 519.284L1160.89 0H1055.03L667.137 450.887L357.328 0H0L468.492 681.821L0 1226.37H105.866L515.491 750.218L842.672 1226.37H1200L714.137 519.284H714.163ZM569.165 687.828L521.697 619.934L144.011 79.6944H306.615L611.412 515.685L658.88 583.579L1055.08 1150.3H892.476L569.165 687.854V687.828Z" fill="currentColor"/>
|
|
</svg>
|
|
|
|
<span class="sr-only">X</span>
|
|
</a>
|
|
<a
|
|
href="https://twitch.tv/circleci"
|
|
data-analytics-action="click-outer-cta"
|
|
data-analytics-properties='{ "location": "footer", "category": "icons", "cta_text": "twitch"}'
|
|
title="Twitch"
|
|
class="twitch"
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
>
|
|
<svg viewBox="0 0 512 512" width="24" height="24" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="m391.17 103.47h-38.63v109.7h38.63zm-106.17-.47h-38.63v109.75h38.63zm-164.17-103-96.52 91.42v329.16h115.83v91.42l96.53-91.42h77.25l173.77-164.58v-256zm328.24 237.75-77.22 73.12h-77.24l-67.6 64v-64h-86.87v-274.29h308.93z"/></svg>
|
|
<span class="sr-only">Twitch</span>
|
|
</a>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<div style="background-image: url('https://d2qm0z2kzhiwa.cloudfront.net/blog/assets/blog/morph/sweater-2f179375ed5648fc3d539c56b335fa89.svg')" class="bg-repeat-x w-full h-[500px] bg-center"></div>
|
|
</footer>
|
|
|
|
</main>
|
|
|
|
<script type="text/javascript" src="https://d2qm0z2kzhiwa.cloudfront.net/blog/assets/morph/utils-152e33f78de8ce6d099146884d724a6c.js" crossorigin="anonymous"></script>
|
|
|
|
<script
|
|
type="text/plain"
|
|
src="https://d2qm0z2kzhiwa.cloudfront.net/blog/assets/morph/id-user-3f94e73e032c3a83a813c4b89c68da46.js"
|
|
crossorigin="anonymous"
|
|
data-cookieconsent="preferences">
|
|
</script>
|
|
<script type="text/javascript" src="https://d2qm0z2kzhiwa.cloudfront.net/blog/assets/morph/track-events-1436e068c781a19d35069e60adfea223.js" crossorigin="anonymous"></script>
|
|
|
|
<script type="text/javascript" src="https://d2qm0z2kzhiwa.cloudfront.net/blog/assets/morph/nav_search-9a224aee22403014905791b324a371de.js" crossorigin="anonymous"></script>
|
|
|
|
<script type="text/javascript" src="https://d2qm0z2kzhiwa.cloudfront.net/blog/assets/morph/nav_mobile-menu-3e7b64916ad673015da00d575cae3aef.js" crossorigin="anonymous"></script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<script type="text/javascript" src="https://d2qm0z2kzhiwa.cloudfront.net/blog/assets/morph/home_popular-posts-c4eeb17532cda471ef67e885787e9aa9.js" crossorigin="anonymous"></script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<script
|
|
type="text/plain"
|
|
src="https://d2qm0z2kzhiwa.cloudfront.net/blog/assets/morph/analytics-d64105d54385d172de5da409e1a45f68.js"
|
|
crossorigin="anonymous"
|
|
data-cookieconsent="marketing">
|
|
</script>
|
|
|
|
|
|
</body>
|
|
</html>
|