CINXE.COM

Orbs Concepts - CircleCI

<!DOCTYPE html><html lang="en"><style data-emotion="css-global 1ccfmri">html{line-height:1.15;-webkit-text-size-adjust:100%;}body{margin:0;}main{display:block;}h1{font-size:2em;margin:0.67em 0;}hr{box-sizing:content-box;height:0;overflow:visible;}pre{font-family:monospace,monospace;font-size:1em;}a{background-color:transparent;}abbr[title]{border-bottom:none;-webkit-text-decoration:underline;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;}b,strong{font-weight:bolder;}code,kbd,samp{font-family:monospace,monospace;font-size:1em;}small{font-size:80%;}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;}sub{bottom:-0.25em;}sup{top:-0.5em;}img{border-style:none;}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0;}button,input{overflow:visible;}button,select{text-transform:none;}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button;}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0;}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText;}fieldset{padding:0.35em 0.75em 0.625em;}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal;}progress{vertical-align:baseline;}textarea{overflow:auto;}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0;}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto;}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px;}[type="search"]::-webkit-search-decoration{-webkit-appearance:none;}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit;}details{display:block;}summary{display:-webkit-box;display:-webkit-list-item;display:-ms-list-itembox;display:list-item;}template{display:none;}[hidden]{display:none;}*,*::after,*::before{box-sizing:border-box;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-smoothing:antialiased;}html{font-family:'Roboto',sans-serif;}html,body,#__next,#root{width:100%;min-height:100vh;scroll-padding-top:128px;}#__next,#root{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}</style><style data-emotion="css-global 1x25u27">pre.highlight{padding:1em;padding-left:3.8em;margin:0.5em 0;color:#ffffff;background-color:#2b2b2b;white-space:pre-wrap!important;border-radius:4px;word-wrap:break-word;}pre[class*='language-'],code[class*='language-']{color:#ffffff;font-size:14px;text-shadow:none;font-family:Menlo,Monaco,'Courier New',monospace;direction:ltr;text-align:left;white-space:normal;word-spacing:normal;word-break:normal;line-height:24px;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;font-weight:normal;font-feature-settings:'liga' 0,'calt' 0;letter-spacing:0px;}@media print{pre[class*='language-'],code[class*='language-']{text-shadow:none;}}pre[class*='language-']{padding:1em;margin:0.5em 0;overflow:auto;background:#2b2b2b;}:not(pre)>code{border-radius:0.3em;color:#555!important;background:#1b1f230d;word-wrap:anywhere;padding:2px;white-space:pre-wrap;font-size:14px;line-height:initial!important;}.namespace{opacity:0.7;}.token.doctype .token.doctype-tag{color:#569cd6;}.token.doctype .token.name{color:#9cdcfe;}.token.comment,.token.prolog{color:#959595;}.token.punctuation,.language-html .language-css .token.punctuation,.language-html .language-javascript .token.punctuation{color:#d4d4d4;}.token.property,.token.tag,.token.boolean,.token.number,.token.constant,.token.symbol,.token.inserted,.token.unit{color:#ffffff;}.token.number{color:#b5cea8;}.token.selector,.token.attr-name,.token.string,.token.char,.token.builtin,.token.deleted{color:#ffffff;}.language-css .token.string.url{-webkit-text-decoration:underline;text-decoration:underline;}.token.operator,.token.entity{color:#d4d4d4;}.token.operator.arrow{color:#569cd6;}.token.atrule{color:#fff176;}.token.atrule .token.rule{color:#c586c0;}.token.atrule .token.url{color:#9cdcfe;}.token.atrule .token.url .token.function{color:#dcdcaa;}.token.atrule .token.url .token.punctuation{color:#d4d4d4;}.token.keyword{color:#569cd6;}.token.keyword.module,.token.keyword.control-flow{color:#c586c0;}.token.function,.token.function .token.maybe-class-name{color:#dcdcaa;}.token.regex{color:#d16969;}.token.important{color:#d4d4d4;font-weight:500;}.token.italic{font-style:italic;}.token.constant{color:#9cdcfe;}.token.class-name,.token.maybe-class-name{color:#4ec9b0;}.token.console{color:#9cdcfe;}.token.parameter{color:#9cdcfe;}.token.interpolation{color:#9cdcfe;}.token.punctuation.interpolation-punctuation{color:#569cd6;}.token.boolean{color:#569cd6;}.token.property,.token.variable,.token.imports .token.maybe-class-name,.token.exports .token.maybe-class-name{color:#fff176;}.token.selector{color:#d7ba7d;}.token.escape{color:#d7ba7d;}.token.tag{color:#569cd6;}.token.tag .token.punctuation{color:#808080;}.token.cdata{color:#808080;}.token.attr-name{color:#9cdcfe;}.token.attr-value,.token.attr-value .token.punctuation{color:#ce9178;}.token.attr-value .token.punctuation.attr-equals{color:#d4d4d4;}.token.entity{color:#569cd6;}.token.namespace{color:#4ec9b0;}pre[class*='language-javascript'],code[class*='language-javascript'],pre[class*='language-jsx'],code[class*='language-jsx'],pre[class*='language-typescript'],code[class*='language-typescript'],pre[class*='language-tsx'],code[class*='language-tsx']{color:#9cdcfe;}pre[class*='language-css'],code[class*='language-css']{color:#ce9178;}pre[class*='language-html'],code[class*='language-html']{color:#d4d4d4;}.language-regex .token.anchor{color:#dcdcaa;}.language-html .token.punctuation{color:#808080;}pre[class*='language-']>code[class*='language-']{position:relative;z-index:1;}.line-highlight.line-highlight{background:#f7ebc6;box-shadow:inset 5px 0 0 #f7d87c;z-index:0;}.line-numbers .line-numbers-rows{border-right:0px!important;top:-4px!important;}.line-numbers .line-numbers-rows span{min-height:24px!important;}.line-numbers .line-numbers-rows span:before{color:#858585!important;}</style><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><title>Orbs Concepts - CircleCI</title><meta name="description" content="Conceptual Overview for Orbs"/><meta property="og:title" content="Orbs Concepts - CircleCI"/><meta property="og:description" content="Conceptual Overview for Orbs"/><meta property="og:url" content="https://circleci.com/docs/orb-concepts/"/><meta property="og:image" content="https://circleci.com/docs/assets/meta/open-graph-cci-docs.jpg"/><link href="/docs/assets/meta/favicon.png" rel="icon" type="image/png"/><link rel="canonical" href="https://circleci.com/docs/orb-concepts/"/><link rel="alternate" hrefLang="en" href="https://circleci.com/docs/orb-concepts/"/><link rel="alternate" hrefLang="ja" href="https://circleci.com/docs/ja/orb-concepts/"/><link rel="alternate" hrefLang="x-default" href="https://circleci.com/docs/orb-concepts/"/><meta name="twitter:card" content="summary_large_image"/><meta property="twitter:domain" content="circleci.com"/><meta property="twitter:url" content="https://circleci.com/docs/orb-concepts/"/><meta name="twitter:title" content="Orbs Concepts - CircleCI"/><meta name="twitter:description" content="Conceptual Overview for Orbs"/><meta name="twitter:image" content="https://circleci.com/docs/assets/meta/open-graph-cci-docs.jpg"/><meta name="next-head-count" content="19"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"/><link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css"/><script data-cookieconsent="marketing">(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><script data-cookieconsent="statistics">!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","debug","page","once","off","on","addSourceMiddleware","addIntegrationMiddleware","setAnonymousId","addDestinationMiddleware"];analytics.factory=function(e){return function(){var t=Array.prototype.slice.call(arguments);t.unshift(e);analytics.push(t);return analytics}};for(var e=0;e<analytics.methods.length;e++){var key=analytics.methods[e];analytics[key]=analytics.factory(key)}analytics.load=function(key,e){var t=document.createElement("script");t.type="text/javascript";t.async=!0;t.src="https://cci-growth-utils.s3.us-east-2.amazonaws.com/segment/analytics.js/v1/" + key + "/analytics.min.js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(t,n);analytics._loadOptions=e};analytics._writeKey="AbgkrgN4cbRhAVEwlzMkHbwvrXnxHh35";;analytics.SNIPPET_VERSION="4.15.3"; }}();</script><script data-cookieconsent="statistics">window.analytics.load('AbgkrgN4cbRhAVEwlzMkHbwvrXnxHh35', { integrations: { All: false, Amplitude: true, Postgres: true, "Segment.io": true, Hotjar: true }, });</script><script defer="" src="https://widget.kapa.ai/kapa-widget.bundle.js" data-website-id="06cd008c-32ae-46d3-946b-211d1afd443c" data-project-name="CircleCI" data-project-color="#161616" data-project-logo="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTI7jLeuu2k66svJDmHxYKlP7Ysf7FvNbkuvzAhHEPCsvLbhcpVRnoJCm538OSv6o5uzlQ&amp;usqp=CAU"></script><meta name="zd-site-verification" content="srxqwtrxsmb1bcawp5j3d1"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /><link rel="preload" href="https://assets-docs.circleci.com/docs/_next/static/css/95e8257575110deb.css" as="style"/><link rel="stylesheet" href="https://assets-docs.circleci.com/docs/_next/static/css/95e8257575110deb.css" data-n-p=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="https://assets-docs.circleci.com/docs/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="https://assets-docs.circleci.com/docs/_next/static/chunks/webpack-3ed24fe7b432eeb8.js" defer=""></script><script src="https://assets-docs.circleci.com/docs/_next/static/chunks/framework-9c679519b7b20335.js" defer=""></script><script src="https://assets-docs.circleci.com/docs/_next/static/chunks/main-4575c0bb82696f32.js" defer=""></script><script src="https://assets-docs.circleci.com/docs/_next/static/chunks/pages/_app-07319b956598f57c.js" defer=""></script><script src="https://assets-docs.circleci.com/docs/_next/static/chunks/103-386f95112f80b86b.js" defer=""></script><script src="https://assets-docs.circleci.com/docs/_next/static/chunks/365-1084b37a8a894cf6.js" defer=""></script><script src="https://assets-docs.circleci.com/docs/_next/static/chunks/137-74c9709c103ee7b5.js" defer=""></script><script src="https://assets-docs.circleci.com/docs/_next/static/chunks/pages/%5B...slug%5D-808ad58695d6efe0.js" defer=""></script><script src="https://assets-docs.circleci.com/docs/_next/static/9e2f0ef33c33cd80cc959c1747acd17d270b8bd8/_buildManifest.js" defer=""></script><script src="https://assets-docs.circleci.com/docs/_next/static/9e2f0ef33c33cd80cc959c1747acd17d270b8bd8/_ssgManifest.js" defer=""></script><style data-href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap">@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmSU5vAA.woff) format('woff')}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOmCnqEu92Fr1Me5g.woff) format('woff')}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmEU9vAA.woff) format('woff')}@font-face{font-family:'Roboto';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmWUlvAA.woff) format('woff')}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmSU5fCRc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmSU5fABc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmSU5fCBc4AMP6lbBP.woff2) format('woff2');unicode-range:U+1F00-1FFF}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmSU5fBxc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmSU5fCxc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmSU5fChc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmSU5fBBc4AMP6lQ.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOmCnqEu92Fr1Mu72xKKTU1Kvnz.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOmCnqEu92Fr1Mu5mxKKTU1Kvnz.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOmCnqEu92Fr1Mu7mxKKTU1Kvnz.woff2) format('woff2');unicode-range:U+1F00-1FFF}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOmCnqEu92Fr1Mu4WxKKTU1Kvnz.woff2) format('woff2');unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOmCnqEu92Fr1Mu7WxKKTU1Kvnz.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOmCnqEu92Fr1Mu7GxKKTU1Kvnz.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOmCnqEu92Fr1Mu4mxKKTU1Kg.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmEU9fCRc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmEU9fABc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmEU9fCBc4AMP6lbBP.woff2) format('woff2');unicode-range:U+1F00-1FFF}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmEU9fBxc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmEU9fCxc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmEU9fChc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmEU9fBBc4AMP6lQ.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'Roboto';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmWUlfCRc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Roboto';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmWUlfABc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Roboto';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmWUlfCBc4AMP6lbBP.woff2) format('woff2');unicode-range:U+1F00-1FFF}@font-face{font-family:'Roboto';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmWUlfBxc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:'Roboto';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmWUlfCxc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:'Roboto';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmWUlfChc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Roboto';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmWUlfBBc4AMP6lQ.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}</style></head><script type="text/javascript">var circleci = {config: {"exceptionLoggerClientToken":"ca1befe4db724589813fc4a2a9642d4d","analyticsKey":"AbgkrgN4cbRhAVEwlzMkHbwvrXnxHh35","datadogRumApplicationId":"2a3e19ca-297e-4a53-a2cf-082e827d13d3","datadogRumClientToken":"pubdffb4b4dd07f1f43b42276901d58da91"}};</script><body><noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-W9HDVK" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript><div id="__next"><style data-emotion-css="1vs42if">.css-1vs42if{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:linear-gradient(to right,#F7F7F7 0%,#F7F7F7 calc(50% - 860px),#fff calc(50% - 860px),#fff 100%);}</style><style data-emotion-css="quiohg">.css-quiohg{box-sizing:border-box;min-width:0;margin:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:linear-gradient(to right,#F7F7F7 0%,#F7F7F7 calc(50% - 860px),#fff calc(50% - 860px),#fff 100%);}</style><div class="layout css-quiohg"><style data-emotion-css="w4sqhj">.css-w4sqhj{width:100%;box-shadow:0 -6px 18px -3px #000000bd;z-index:100;background-color:#FFFFFF;position:-webkit-sticky;position:sticky;top:0px;}</style><style data-emotion-css="g79ewj">.css-g79ewj{box-sizing:border-box;min-width:0;margin:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;width:100%;box-shadow:0 -6px 18px -3px #000000bd;z-index:100;background-color:#FFFFFF;position:-webkit-sticky;position:sticky;top:0px;}</style><div class="css-g79ewj"><style data-emotion-css="1l8dtod">.css-1l8dtod{margin:0 auto;width:100%;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:-webkit-sticky;position:sticky;padding:1rem 1rem 0.5rem 1rem;}@media (min-width:1200px){.css-1l8dtod{padding:1rem 1.5rem 0.5rem 1.5rem;}}</style><style data-emotion-css="1sjxx8s">.css-1sjxx8s{box-sizing:border-box;min-width:0;margin:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;margin:0 auto;width:100%;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:-webkit-sticky;position:sticky;padding:1rem 1rem 0.5rem 1rem;}@media (min-width:1200px){.css-1sjxx8s{padding:1rem 1.5rem 0.5rem 1.5rem;}}</style><div data-testid="header" class="css-1sjxx8s"><style data-emotion-css="6irssd">.css-6irssd{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}</style><style data-emotion-css="1lovh0t">.css-1lovh0t{box-sizing:border-box;min-width:0;margin:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}</style><div class="css-1lovh0t"><style data-emotion-css="1q9np79">.css-1q9np79{display:block;margin-right:0.5rem;}</style><div data-testid="header-circle-logo" class="css-1q9np79"><style data-emotion-css="si22pm">.css-si22pm{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-text-decoration:none;text-decoration:none;}</style><a href="https://circleci.com/docs/" data-testid="footer-circleci-logo" class="css-si22pm"><style data-emotion-css="1yqyrw2">.css-1yqyrw2{width:126;}</style><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 100" width="126" class="css-1yqyrw2"><circle fill="#161616" cx="30.44" cy="52.5" r="7.471"></circle><path fill="#161616" d="M30.44 21.124c-14.619 0-26.903 10-30.388 23.532-.03.119-.052.244-.052.373 0 .825.669 1.494 1.494 1.494h12.651c.603 0 1.118-.358 1.354-.873 0 0 .019-.035.025-.052 2.608-5.628 8.304-9.533 14.914-9.533 9.077 0 16.436 7.357 16.436 16.435S39.517 68.935 30.44 68.935c-6.61 0-12.305-3.905-14.914-9.532-.007-.018-.026-.053-.026-.053a1.489 1.489 0 0 0-1.354-.873H1.495c-.826 0-1.495.669-1.495 1.494 0 .129.021.254.052.373C3.537 73.876 15.821 83.876 30.44 83.876c17.329 0 31.376-14.048 31.376-31.376S47.769 21.124 30.44 21.124zM112.482 59.855h-4.268a.919.919 0 0 0-.729.361c-2.479 3.664-6.671 6.074-11.428 6.074-7.617 0-13.791-6.175-13.791-13.791 0-7.617 6.174-13.792 13.791-13.792 4.758 0 8.949 2.412 11.429 6.075a.916.916 0 0 0 .728.361h4.268a.92.92 0 0 0 .921-.919.91.91 0 0 0-.101-.413c-3.18-6.299-9.706-10.621-17.244-10.621-10.663 0-19.309 8.645-19.309 19.309 0 10.663 8.646 19.309 19.309 19.309 7.538 0 14.064-4.322 17.243-10.621a.914.914 0 0 0 .102-.413.92.92 0 0 0-.921-.919zM125.355 26.756a3.678 3.678 0 1 1-7.357 0 3.678 3.678 0 0 1 7.357 0zm-.919 43.213V34.11h-5.517v35.858a.92.92 0 0 0 .919.919h3.679a.918.918 0 0 0 .919-.918zM148.355 33.214c-5.564.262-10.008 2.921-12.887 6.981v-5.166a.92.92 0 0 0-.919-.919h-3.678a.92.92 0 0 0-.919.919v34.939c0 .508.41.919.919.919h3.678a.918.918 0 0 0 .919-.919V52.5c0-7.308 5.686-13.286 12.871-13.76a.921.921 0 0 0 .921-.922v-3.686a.92.92 0 0 0-.905-.918zM184.992 59.855h-4.268a.916.916 0 0 0-.729.361c-2.479 3.664-6.671 6.074-11.427 6.074-7.618 0-13.792-6.175-13.792-13.791 0-7.617 6.174-13.792 13.792-13.792 4.756 0 8.948 2.412 11.427 6.075a.917.917 0 0 0 .729.361h4.268a.92.92 0 0 0 .921-.919.898.898 0 0 0-.102-.413c-3.179-6.299-9.705-10.621-17.242-10.621-10.664 0-19.309 8.645-19.309 19.309 0 10.663 8.645 19.309 19.309 19.309 7.537 0 14.063-4.322 17.242-10.621a.914.914 0 0 0 .102-.413.92.92 0 0 0-.921-.919zM196.025 22.158h-3.678a.92.92 0 0 0-.919.919v46.892c0 .508.411.919.919.919h3.678a.92.92 0 0 0 .92-.919V23.077a.92.92 0 0 0-.92-.919zM221.771 33.191c-10.664 0-19.309 8.645-19.309 19.309 0 10.663 8.645 19.309 19.309 19.309 7.538 0 14.062-4.322 17.242-10.621a.913.913 0 0 0-.819-1.332h-4.267a.913.913 0 0 0-.741.379c-2.48 3.653-6.666 6.057-11.415 6.057-6.993 0-12.767-5.206-13.667-11.952h32.031a.92.92 0 0 0 .917-.873c.016-.32.026-.643.026-.966 0-10.665-8.644-19.31-19.307-19.31zm-13.292 15.631c1.61-5.83 6.949-10.114 13.292-10.114s11.681 4.284 13.292 10.114h-26.584zM294.483 21.239a5.517 5.517 0 1 0 0 11.034 5.517 5.517 0 0 0 0-11.034zm4.598 12.871v35.858a.92.92 0 0 1-.919.919h-7.356a.918.918 0 0 1-.919-.919V34.11h9.194zM265.902 71.809c9.014 0 16.576-6.176 18.706-14.524a.832.832 0 0 0 .023-.187.92.92 0 0 0-.919-.92h-7.782a.919.919 0 0 0-.834.537l-.002-.001c-1.599 3.48-5.11 5.899-9.192 5.899-5.584 0-10.113-4.527-10.113-10.113s4.529-10.113 10.113-10.113a10.11 10.11 0 0 1 9.192 5.899l.002-.002a.92.92 0 0 0 .834.538h7.782a.92.92 0 0 0 .919-.92.944.944 0 0 0-.022-.184c-2.128-8.35-9.693-14.527-18.707-14.527-10.661 0-19.308 8.646-19.308 19.309.001 10.664 8.647 19.309 19.308 19.309z"></path></svg><style data-emotion-css="mcrnfh">.css-mcrnfh{color:#161616;font-size:1.5rem;font-weight:300;-webkit-letter-spacing:0.01em;-moz-letter-spacing:0.01em;-ms-letter-spacing:0.01em;letter-spacing:0.01em;line-height:1.50;margin-left:0.5rem;text-align:center;-webkit-text-decoration:none;text-decoration:none;}@media (max-width:768px){.css-mcrnfh{display:none;}}</style><div color="#161616" class="css-mcrnfh">Docs</div></a></div><style data-emotion-css="1m3tj04">.css-1m3tj04{display:none;}@media (min-width:1200px){.css-1m3tj04{display:block;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;padding:0px 80px;}}</style><style data-emotion-css="tki8r1">.css-tki8r1{box-sizing:border-box;min-width:0;margin:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;display:none;}@media (min-width:1200px){.css-tki8r1{display:block;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;padding:0px 80px;}}</style><div data-testid="header-search-bar" class="css-tki8r1"><style data-emotion-css="cssveg">.css-cssveg{position:relative;}</style><form novalidate="" action="" role="search" class="css-cssveg"><style data-emotion-css="409epr">.css-409epr{height:100%;position:absolute;cursor:pointer;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;left:0;}@media (min-width:1200px){.css-409epr{padding-left:1rem;}}</style><div class="css-409epr"><style data-emotion-css="19wtgi5">.css-19wtgi5{width:24px;height:24px;min-width:24px;color:currentColor;}</style><div size="24" color="currentColor" class="css-19wtgi5"><style data-emotion-css="bleycz">.css-bleycz{display:block;width:100%;}</style><svg role="img" focusable="false" viewBox="0 0 24 24" aria-label="Search" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="css-bleycz"><path fill-rule="evenodd" clip-rule="evenodd" d="M14 9C14 11.7614 11.7614 14 9 14C6.23858 14 4 11.7614 4 9C4 6.23858 6.23858 4 9 4C11.7614 4 14 6.23858 14 9ZM13.1922 14.6064C12.0236 15.4816 10.5723 16 9 16C5.13401 16 2 12.866 2 9C2 5.13401 5.13401 2 9 2C12.866 2 16 5.13401 16 9C16 10.5723 15.4816 12.0236 14.6064 13.1922L21.7019 20.2877C22.0924 20.6782 22.0924 21.3114 21.7019 21.7019C21.3114 22.0924 20.6782 22.0924 20.2877 21.7019L13.1922 14.6064Z"></path></svg></div></div><style data-emotion-css="xxqz7m">.css-xxqz7m{height:100%;position:absolute;cursor:pointer;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;right:0;}@media (min-width:1200px){.css-xxqz7m{display:none;padding-right:0.75rem;}}</style><div data-testid="search-documentation-reset" class="css-xxqz7m"><style data-emotion-css="1pgy7j">.css-1pgy7j{width:28px;height:28px;min-width:28px;color:currentColor;}</style><div size="28" color="currentColor" class="css-1pgy7j"><svg role="img" focusable="false" viewBox="0 0 24 24" aria-label="Cancel" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="css-bleycz"><path d="M17.9865 7.45711C18.3771 7.06658 18.3771 6.43342 17.9865 6.04289C17.596 5.65237 16.9628 5.65237 16.5723 6.04289L12.0294 10.5858L7.48653 6.04289C7.096 5.65237 6.46284 5.65237 6.07231 6.04289C5.68179 6.43342 5.68179 7.06658 6.07231 7.45711L10.6152 12L6.07231 16.5429C5.68179 16.9334 5.68179 17.5666 6.07231 17.9571C6.46284 18.3476 7.096 18.3476 7.48653 17.9571L12.0294 13.4142L16.5723 17.9571C16.9628 18.3476 17.596 18.3476 17.9865 17.9571C18.377 17.5666 18.377 16.9334 17.9865 16.5429L13.4436 12L17.9865 7.45711Z"></path></svg></div></div><style data-emotion-css="th0ig7">.css-th0ig7{width:100%;border-color:#BFBFBF;border-style:solid;border-width:0px;border-radius:0.25rem;padding:0 2rem;background-color:#FFFFFF;color:#161616;font-size:1rem;line-height:1.50;outline:0;}@media (min-width:1200px){.css-th0ig7{padding:0.5rem 3rem;border-width:1px;}}.css-th0ig7::-webkit-input-placeholder{color:#6A6A6A;}.css-th0ig7::-moz-placeholder{color:#6A6A6A;}.css-th0ig7:-ms-input-placeholder{color:#6A6A6A;}.css-th0ig7::placeholder{color:#6A6A6A;}</style><style data-emotion-css="1cvkw1b">.css-1cvkw1b{height:auto;width:100%;padding:0.5rem 1rem;border:1px solid rgba(191,191,191,1);background-color:rgba(251,251,251,1);border-radius:4px;line-height:1.50;font-size:1rem;font-weight:400;color:rgba(22,22,22,1);box-sizing:border-box;width:100%;border-color:#BFBFBF;border-style:solid;border-width:0px;border-radius:0.25rem;padding:0 2rem;background-color:#FFFFFF;color:#161616;font-size:1rem;line-height:1.50;outline:0;}.css-1cvkw1b:not(:placeholder-shown){background-color:rgba(255,255,255,1);}.css-1cvkw1b:disabled{background-color:rgba(255,255,255,1);border-color:rgba(212,212,212,1);color:rgba(149,149,149,1);}.css-1cvkw1b:disabled::-webkit-input-placeholder{color:rgba(149,149,149,1);opacity:1;}.css-1cvkw1b:disabled::-moz-placeholder{color:rgba(149,149,149,1);opacity:1;}.css-1cvkw1b:disabled:-ms-input-placeholder{color:rgba(149,149,149,1);opacity:1;}.css-1cvkw1b:disabled::placeholder{color:rgba(149,149,149,1);opacity:1;}.css-1cvkw1b::-webkit-input-placeholder{color:rgba(106,106,106,1);opacity:1;}.css-1cvkw1b::-moz-placeholder{color:rgba(106,106,106,1);opacity:1;}.css-1cvkw1b:-ms-input-placeholder{color:rgba(106,106,106,1);opacity:1;}.css-1cvkw1b::placeholder{color:rgba(106,106,106,1);opacity:1;}.css-1cvkw1b:focus{border:2px solid rgba(26,102,247,1);outline-color:rgba(26,102,247,1);background-color:rgba(255,255,255,1);}.css-1cvkw1b:hover:enabled{border-color:rgba(52,52,52,1);background-color:rgba(255,255,255,1);}@media (min-width:1200px){.css-1cvkw1b{padding:0.5rem 3rem;border-width:1px;}}.css-1cvkw1b::-webkit-input-placeholder{color:#6A6A6A;}.css-1cvkw1b::-moz-placeholder{color:#6A6A6A;}.css-1cvkw1b:-ms-input-placeholder{color:#6A6A6A;}.css-1cvkw1b::placeholder{color:#6A6A6A;}</style><input type="text" placeholder="Search" data-testid="search-documentation-inputbox" class="css-1cvkw1b" value=""/></form></div></div><style data-emotion-css="11zozgc">.css-11zozgc{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:none;}@media (min-width:1200px){.css-11zozgc{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}</style><style data-emotion-css="1gf5w7k">.css-1gf5w7k{box-sizing:border-box;min-width:0;margin:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:none;}@media (min-width:1200px){.css-1gf5w7k{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}</style><div data-testid="header-default-group" class="css-1gf5w7k"><div class="css-cssveg"><style data-emotion-css="dsh0zb">.css-dsh0zb{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#161616;background-color:transparent;background:none;border:none;margin-top:0.125rem;cursor:pointer;}.css-dsh0zb:hover{-webkit-filter:invert(39%) sepia(99%) saturate(634%) hue-rotate(105deg) brightness(83%) contrast(97%);filter:invert(39%) sepia(99%) saturate(634%) hue-rotate(105deg) brightness(83%) contrast(97%);}@media (max-width:768px){.css-dsh0zb:hover{-webkit-filter:none;filter:none;}}</style><button data-testid="globe-btn" class="css-dsh0zb"><style data-emotion-css="14mcfqm">.css-14mcfqm{height:1.5rem;width:1.5rem;background-color:transparent;color:#161616;}</style><div class="css-14mcfqm"><svg fill="none" aria-label="Globe" role="img" height="28px" width="28px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g stroke="currentColor" stroke-miterlimit="10" stroke-width="1.25"><path d="m9.00001 17.3077c4.58819 0 8.30769-3.7195 8.30769-8.30771s-3.7195-8.307693-8.30769-8.307693c-4.58821 0-8.307688 3.719483-8.307688 8.307693s3.719478 8.30771 8.307688 8.30771z"></path><path d="m9 17.3077c1.7639 0 3.1938-3.7195 3.1938-8.30771s-1.4299-8.307693-3.1938-8.307693c-1.76391 0-3.19385 3.719483-3.19385 8.307693s1.42994 8.30771 3.19385 8.30771z"></path><path d="m.692322 6.44307h16.615378"></path><path d="m.692322 11.5569h16.615378"></path></g></svg></div></button></div><style data-emotion-css="1syyx6e">.css-1syyx6e{padding-left:1.5rem;}@media (max-width:768px){.css-1syyx6e{margin:1.5rem 1rem;}}</style><div class="css-1syyx6e"><style data-emotion-css="h3y3qz">.css-h3y3qz{background-color:rgba(4,155,74,1) !important;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center;height:48px;font-size:18px;line-height:1.5rem !important;font-weight:700;font-style:normal;border-radius:0.25rem;border:none;-webkit-transition:background-color 300ms;transition:background-color 300ms;-webkit-flex:auto 0 0;-ms-flex:auto 0 0;flex:auto 0 0;}.css-h3y3qz:hover:enabled{cursor:pointer;}.css-h3y3qz:disabled{opacity:0.5;cursor:not-allowed;}.css-h3y3qz:hover{background-color:rgba(4,140,67,1) !important;}.css-h3y3qz:active{background-color:#00701B !important;}</style><style data-emotion-css="1ylpp6l">.css-1ylpp6l{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0.5rem 1rem;font-size:0.875rem;font-weight:500;line-height:1.7142857143;border-radius:4px;border:none;-webkit-transition:background-color 300ms;transition:background-color 300ms;-webkit-flex:auto 0 0;-ms-flex:auto 0 0;flex:auto 0 0;color:#FFFFFF;background-color:#1A66F7;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;cursor:pointer;-webkit-text-decoration:none;text-decoration:none;background-color:rgba(4,155,74,1) !important;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center;height:48px;font-size:18px;line-height:1.5rem !important;font-weight:700;font-style:normal;border-radius:0.25rem;border:none;-webkit-transition:background-color 300ms;transition:background-color 300ms;-webkit-flex:auto 0 0;-ms-flex:auto 0 0;flex:auto 0 0;}.css-1ylpp6l:hover:enabled{cursor:pointer;}.css-1ylpp6l:disabled{opacity:0.5;cursor:not-allowed;}.css-1ylpp6l:focus{outline:none;box-shadow:0px 0px 0 1px #FFFFFF, 0px 0px 0px 0.125rem #3495db, 0px 0px 0.125rem 0.125rem #3495db;}.css-1ylpp6l:focus:disabled{box-shadow:none;}.css-1ylpp6l:hover:enabled{background-color:#2152E5;}.css-1ylpp6l:active{background-color:#003DB8;}.css-1ylpp6l:hover:enabled{cursor:pointer;}.css-1ylpp6l:disabled{opacity:0.5;cursor:not-allowed;}.css-1ylpp6l:hover{background-color:rgba(4,140,67,1) !important;}.css-1ylpp6l:active{background-color:#00701B !important;}</style><a href="https://circleci.com/signup/" class="css-1ylpp6l">Start Building for Free</a></div></div><style data-emotion-css="ml1eyx">.css-ml1eyx{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-height:1.5rem;height:1.5rem;}@media (min-width:1200px){.css-ml1eyx{display:none;}}</style><style data-emotion-css="qlr832">.css-qlr832{box-sizing:border-box;min-width:0;margin:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-height:1.5rem;height:1.5rem;}@media (min-width:1200px){.css-qlr832{display:none;}}</style><div data-testid="header-mobile-group" class="css-qlr832"><style data-emotion-css="hmc50w">.css-hmc50w{display:inline-block;padding-right:0.5rem;cursor:pointer;width:2rem;-webkit-transition:opacity 0.25s ease;transition:opacity 0.25s ease;}</style><style data-emotion-css="1qtr1z7">.css-1qtr1z7{width:24px;height:24px;min-width:24px;color:currentColor;display:inline-block;padding-right:0.5rem;cursor:pointer;width:2rem;-webkit-transition:opacity 0.25s ease;transition:opacity 0.25s ease;}</style><div size="24" color="currentColor" class="css-1qtr1z7"><svg role="img" focusable="false" viewBox="0 0 24 24" aria-label="Search" data-testid="header-mobile-search-button" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="css-bleycz"><path fill-rule="evenodd" clip-rule="evenodd" d="M14 9C14 11.7614 11.7614 14 9 14C6.23858 14 4 11.7614 4 9C4 6.23858 6.23858 4 9 4C11.7614 4 14 6.23858 14 9ZM13.1922 14.6064C12.0236 15.4816 10.5723 16 9 16C5.13401 16 2 12.866 2 9C2 5.13401 5.13401 2 9 2C12.866 2 16 5.13401 16 9C16 10.5723 15.4816 12.0236 14.6064 13.1922L21.7019 20.2877C22.0924 20.6782 22.0924 21.3114 21.7019 21.7019C21.3114 22.0924 20.6782 22.0924 20.2877 21.7019L13.1922 14.6064Z"></path></svg></div><style data-emotion-css="pdp0ok">.css-pdp0ok{height:24px;width:1px;background:#161616;}</style><div class="css-pdp0ok"></div><style data-emotion-css="1j3dzco">.css-1j3dzco{background:none;border:none;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:64px;width:40px;padding-right:0px;padding-left:0px;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;margin-right:-8px;cursor:pointer;color:#161616;}</style><button class="css-1j3dzco"><div size="24" color="currentColor" class="css-19wtgi5"><svg role="img" focusable="false" viewBox="0 0 24 24" aria-label="Menu" data-testid="header-mobile-menu-icon" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="css-bleycz"><path d="M3 7H21C21.5523 7 22 6.55228 22 6C22 5.44772 21.5523 5 21 5H3C2.44772 5 2 5.44772 2 6C2 6.55228 2.44772 7 3 7ZM3 13H21C21.5523 13 22 12.5523 22 12C22 11.4477 21.5523 11 21 11H3C2.44772 11 2 11.4477 2 12C2 12.5523 2.44772 13 3 13ZM21 19H3C2.44772 19 2 18.5523 2 18C2 17.4477 2.44772 17 3 17H21C21.5523 17 22 17.4477 22 18C22 18.5523 21.5523 19 21 19Z"></path></svg></div></button></div></div><style data-emotion-css="9496lj">.css-9496lj{box-sizing:border-box;min-width:0;margin:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;min-height:50px;}</style><div data-testid="header-navbar" class="css-9496lj"><style data-emotion-css="acydq">.css-acydq{padding:0 1rem;}@media (min-width:1200px){.css-acydq{padding:0 1.5rem;}}</style><style data-emotion-css="wt4rcw">.css-wt4rcw{box-sizing:border-box;min-width:0;margin:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;padding:0 1rem;}@media (min-width:1200px){.css-wt4rcw{padding:0 1.5rem;}}</style><div class="css-wt4rcw"><style data-emotion-css="1666bo6">.css-1666bo6 > div{border-bottom-width:0;}</style><div id="navbar-tablist" role="tablist" aria-label="Navigation Tabs" class="css-1666bo6"><style data-emotion-css="1h7v07b">.css-1h7v07b{box-sizing:border-box;min-width:0;margin:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;border-bottom-color:#D4D4D4;border-bottom-width:1px;border-bottom-style:solid;}</style><div class="css-1h7v07b"><style data-emotion-css="vu8356">.css-vu8356{-webkit-text-decoration:none;text-decoration:none;color:#6A6A6A;}.css-vu8356:hover{color:#161616;}.css-vu8356:active{color:#161616;}</style><a href="/developer/" class="css-vu8356"><style data-emotion-css="19fv6ph">.css-19fv6ph{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:56px;color:#6A6A6A;font-weight:500;font-size:0.875rem;border:none;margin:0;padding:1rem 0.75rem;background-color:#FFFFFF;line-height:1.50;text-transform:uppercase;cursor:pointer;}.css-19fv6ph:hover{color:#161616;}.css-19fv6ph[aria-selected='true']{color:#161616;font-weight:700;box-shadow:inset 0 -0.25rem #1A66F7;}.js-focus-visible .css-19fv6ph:focus{outline:none;z-index:1;box-shadow:0 0 0.25rem #1A66F7, -1px 1px 0 #1A66F7,1px -1px 0 #1A66F7, 1px 1px 0 #1A66F7,-1px -1px 0 #1A66F7;}.js-focus-visible .css-19fv6ph:focus.css-19fv6ph[aria-selected='true']{box-shadow:0 0 0.25rem #1A66F7, -1px 1px 0 #1A66F7,1px -1px 0 #1A66F7, 1px 1px 0 #1A66F7,-1px -1px 0 #1A66F7, inset 0 -0.25rem #1A66F7;}.js-focus-visible .css-19fv6ph:focus:not(.focus-visible),.js-focus-visible .css-19fv6ph:focus.css-19fv6ph[aria-selected='true']:not(.focus-visible){outline:none;box-shadow:inset 0 -0.25rem #1A66F7;}</style><button id="home" tabindex="0" aria-selected="false" role="tab" type="button" class="css-19fv6ph">Home</button></a><a href="/docs/" class="css-vu8356"><button id="docs" tabindex="0" aria-selected="true" role="tab" type="button" class="css-19fv6ph">Docs</button></a><a href="/developer/orbs/" class="css-vu8356"><button id="orbs" tabindex="0" aria-selected="false" role="tab" type="button" class="css-19fv6ph">Orbs</button></a><a href="/developer/images/" class="css-vu8356"><button id="images" tabindex="0" aria-selected="false" role="tab" type="button" class="css-19fv6ph">Images</button></a></div></div><style data-emotion-css="k9jl6u">.css-k9jl6u{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:none;}.css-k9jl6u span:last-of-type{padding-right:0;}@media (min-width:1200px){.css-k9jl6u{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}</style><style data-emotion-css="1chu1ls">.css-1chu1ls{box-sizing:border-box;min-width:0;margin:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:none;}.css-1chu1ls span:last-of-type{padding-right:0;}@media (min-width:1200px){.css-1chu1ls{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}</style><div class="css-1chu1ls"><style data-emotion-css="2wgwcz">.css-2wgwcz{padding-right:1.5rem;font-family:'Roboto';}.css-2wgwcz > a{color:#6A6A6A;}.css-2wgwcz > a:hover{color:#161616;}</style><span class="css-2wgwcz"><style data-emotion-css="x7gnkn">.css-x7gnkn{color:#0078CA;-webkit-text-decoration:none;text-decoration:none;font-size:1rem;line-height:1.50;font-weight:500;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-column-gap:3px;column-gap:3px;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}.css-x7gnkn:hover{color:#0062B0;-webkit-text-decoration:underline;text-decoration:underline;}</style><a href="https://circleci.com/" target="_blank" rel="noopener noreferrer" data-testid="link" class="css-x7gnkn">CircleCI.com</a></span><span class="css-2wgwcz"><a href="https://circleci.com/training/" target="_blank" rel="noopener noreferrer" data-testid="link" class="css-x7gnkn">Academy</a></span><span class="css-2wgwcz"><a href="https://circleci.com/blog/" target="_blank" rel="noopener noreferrer" data-testid="link" class="css-x7gnkn">Blog</a></span><span class="css-2wgwcz"><a href="https://discuss.circleci.com/" target="_blank" rel="noopener noreferrer" data-testid="link" class="css-x7gnkn">Community</a></span><span class="css-2wgwcz"><a href="https://support.circleci.com/hc/en-us/" target="_blank" rel="noopener noreferrer" data-testid="link" class="css-x7gnkn">Support</a></span></div></div></div></div><style data-emotion-css="1alxkfq">.css-1alxkfq{background-color:#008647;height:2px;width:0%;margin:0;padding:0;-webkit-transition-property:width;transition-property:width;-webkit-transition-duration:0.1s;transition-duration:0.1s;-webkit-transition-timing-function:linear;transition-timing-function:linear;position:fixed;top:122px;left:0;z-index:45;}@media (min-width:1200px){.css-1alxkfq{top:128px;}}</style><div width="0" height="2" class="css-1alxkfq"></div><style data-emotion-css="1yce0ae">.css-1yce0ae{width:100%;top:128;}</style><style data-emotion-css="1cibq5g">.css-1cibq5g{box-sizing:border-box;min-width:0;margin:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;width:100%;top:128;}</style><div class="css-1cibq5g"></div><style data-emotion-css="3giiur">.css-3giiur{width:100%;max-width:1920px;margin:auto;}</style><style data-emotion-css="dgbsjx">.css-dgbsjx{box-sizing:border-box;min-width:0;margin:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-flex:inherit;-webkit-flex-grow:inherit;-ms-flex-positive:inherit;flex-grow:inherit;top:128px;width:100%;max-width:1920px;margin:auto;}</style><div class="css-dgbsjx"><style data-emotion-css="1y2jjs3">.css-1y2jjs3{display:none;}@media (min-width:1200px){.css-1y2jjs3{display:block;}}</style><style data-emotion-css="klrqbz">.css-klrqbz{box-sizing:border-box;min-width:0;margin:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-flex:1;-ms-flex:1;flex:1;display:none;}@media screen and (min-width:480px){.css-klrqbz{-webkit-flex:1;-ms-flex:1;flex:1;}}@media screen and (min-width:768px){.css-klrqbz{-webkit-flex:0 0 288px;-ms-flex:0 0 288px;flex:0 0 288px;}}@media (min-width:1200px){.css-klrqbz{display:block;}}</style><nav class="css-klrqbz"><style data-emotion-css="11fl4l6">.css-11fl4l6{width:100%;background:white;}.css-11fl4l6 ul{padding-left:0.75rem;}.css-11fl4l6 ul + subSection{margin-top:0.5rem;}.css-11fl4l6 li{list-style-type:none;}@media (min-width:1200px){.css-11fl4l6{background:#f7f7f7;border-right:1px solid #e2e0e0;height:calc(100vh - 128px);overflow-y:scroll;padding:0px 22px 0px 0px;position:fixed;width:288px;}}</style><div class="css-11fl4l6"><style data-emotion-css="hce1c">.css-hce1c{padding-left:0px !important;margin-top:-1.5rem;}@media (min-width:1200px){.css-hce1c{padding-left:1.5rem !important;margin-top:0px;}}</style><ul data-testid="sidebar-drawers" class="css-hce1c"><style data-emotion-css="13svt41">.css-13svt41{cursor:pointer;margin-top:1.5rem;position:relative;list-style-type:none;font-size:14px;font-weight:600;color:#555;}</style><li class="css-13svt41"><style data-emotion-css="1sg2lsz">.css-1sg2lsz{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}</style><div class="css-1sg2lsz"><style data-emotion-css="1m34rt5">.css-1m34rt5{margin-right:6px;width:24px;height:24px;}</style><img src="/docs/assets/img/icons/sidebar/circle-logo.svg" alt="About CircleCI icon" class="css-1m34rt5"/><style data-emotion-css="10tjyd0">.css-10tjyd0{box-sizing:border-box;min-width:0;margin:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}</style><div class="css-10tjyd0">About CircleCI</div><style data-emotion-css="1tezdrc">.css-1tezdrc{padding:0.25rem;-webkit-transition:-webkit-transform 0.2s ease;-webkit-transition:transform 0.2s ease;transition:transform 0.2s ease;}</style><style data-emotion-css="1vlg0km">.css-1vlg0km{width:24px;height:24px;min-width:24px;color:#333;padding:0.25rem;-webkit-transition:-webkit-transform 0.2s ease;-webkit-transition:transform 0.2s ease;transition:transform 0.2s ease;}</style><div size="24" color="#333" class="css-1vlg0km"><svg role="img" focusable="false" viewBox="0 0 16 16" aria-label="Arrow Right" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="css-bleycz"><path d="M10.7071 7.29289C11.0976 7.68342 11.0976 8.31658 10.7071 8.70711L5.70711 13.7071C5.31658 14.0976 4.68342 14.0976 4.29289 13.7071C3.90237 13.3166 3.90237 12.6834 4.29289 12.2929L8.58579 8L4.29289 3.70711C3.90237 3.31658 3.90237 2.68342 4.29289 2.29289C4.68342 1.90237 5.31658 1.90237 5.70711 2.29289L10.7071 7.29289Z"></path></svg></div></div></li><li class="css-13svt41"><div class="css-1sg2lsz"><img src="/docs/assets/img/icons/sidebar/continue.svg" alt="Getting started icon" class="css-1m34rt5"/><div class="css-10tjyd0">Getting started</div><div size="24" color="#333" class="css-1vlg0km"><svg role="img" focusable="false" viewBox="0 0 16 16" aria-label="Arrow Right" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="css-bleycz"><path d="M10.7071 7.29289C11.0976 7.68342 11.0976 8.31658 10.7071 8.70711L5.70711 13.7071C5.31658 14.0976 4.68342 14.0976 4.29289 13.7071C3.90237 13.3166 3.90237 12.6834 4.29289 12.2929L8.58579 8L4.29289 3.70711C3.90237 3.31658 3.90237 2.68342 4.29289 2.29289C4.68342 1.90237 5.31658 1.90237 5.70711 2.29289L10.7071 7.29289Z"></path></svg></div></div></li><li class="css-13svt41"><div class="css-1sg2lsz"><img src="/docs/assets/img/icons/sidebar/changelog.svg" alt="Reference icon" class="css-1m34rt5"/><div class="css-10tjyd0">Reference</div><div size="24" color="#333" class="css-1vlg0km"><svg role="img" focusable="false" viewBox="0 0 16 16" aria-label="Arrow Right" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="css-bleycz"><path d="M10.7071 7.29289C11.0976 7.68342 11.0976 8.31658 10.7071 8.70711L5.70711 13.7071C5.31658 14.0976 4.68342 14.0976 4.29289 13.7071C3.90237 13.3166 3.90237 12.6834 4.29289 12.2929L8.58579 8L4.29289 3.70711C3.90237 3.31658 3.90237 2.68342 4.29289 2.29289C4.68342 1.90237 5.31658 1.90237 5.70711 2.29289L10.7071 7.29289Z"></path></svg></div></div></li><li class="css-13svt41"><div class="css-1sg2lsz"><img src="/docs/assets/img/icons/sidebar/pipeline.svg" alt="Orchestrate and trigger icon" class="css-1m34rt5"/><div class="css-10tjyd0">Orchestrate and trigger</div><div size="24" color="#333" class="css-1vlg0km"><svg role="img" focusable="false" viewBox="0 0 16 16" aria-label="Arrow Right" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="css-bleycz"><path d="M10.7071 7.29289C11.0976 7.68342 11.0976 8.31658 10.7071 8.70711L5.70711 13.7071C5.31658 14.0976 4.68342 14.0976 4.29289 13.7071C3.90237 13.3166 3.90237 12.6834 4.29289 12.2929L8.58579 8L4.29289 3.70711C3.90237 3.31658 3.90237 2.68342 4.29289 2.29289C4.68342 1.90237 5.31658 1.90237 5.70711 2.29289L10.7071 7.29289Z"></path></svg></div></div></li><li class="css-13svt41"><div class="css-1sg2lsz"><img src="/docs/assets/img/icons/sidebar/builds.svg" alt="Execute jobs on managed compute resources icon" class="css-1m34rt5"/><div class="css-10tjyd0">Execute jobs on managed compute resources</div><div size="24" color="#333" class="css-1vlg0km"><svg role="img" focusable="false" viewBox="0 0 16 16" aria-label="Arrow Right" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="css-bleycz"><path d="M10.7071 7.29289C11.0976 7.68342 11.0976 8.31658 10.7071 8.70711L5.70711 13.7071C5.31658 14.0976 4.68342 14.0976 4.29289 13.7071C3.90237 13.3166 3.90237 12.6834 4.29289 12.2929L8.58579 8L4.29289 3.70711C3.90237 3.31658 3.90237 2.68342 4.29289 2.29289C4.68342 1.90237 5.31658 1.90237 5.70711 2.29289L10.7071 7.29289Z"></path></svg></div></div></li><li class="css-13svt41"><div class="css-1sg2lsz"><img src="/docs/assets/img/icons/sidebar/build-agent.svg" alt="Execute jobs on self-hosted runners icon" class="css-1m34rt5"/><div class="css-10tjyd0">Execute jobs on self-hosted runners</div><div size="24" color="#333" class="css-1vlg0km"><svg role="img" focusable="false" viewBox="0 0 16 16" aria-label="Arrow Right" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="css-bleycz"><path d="M10.7071 7.29289C11.0976 7.68342 11.0976 8.31658 10.7071 8.70711L5.70711 13.7071C5.31658 14.0976 4.68342 14.0976 4.29289 13.7071C3.90237 13.3166 3.90237 12.6834 4.29289 12.2929L8.58579 8L4.29289 3.70711C3.90237 3.31658 3.90237 2.68342 4.29289 2.29289C4.68342 1.90237 5.31658 1.90237 5.70711 2.29289L10.7071 7.29289Z"></path></svg></div></div></li><li class="css-13svt41"><div class="css-1sg2lsz"><img src="/docs/assets/img/icons/sidebar/passed.svg" alt="Test icon" class="css-1m34rt5"/><div class="css-10tjyd0">Test</div><div size="24" color="#333" class="css-1vlg0km"><svg role="img" focusable="false" viewBox="0 0 16 16" aria-label="Arrow Right" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="css-bleycz"><path d="M10.7071 7.29289C11.0976 7.68342 11.0976 8.31658 10.7071 8.70711L5.70711 13.7071C5.31658 14.0976 4.68342 14.0976 4.29289 13.7071C3.90237 13.3166 3.90237 12.6834 4.29289 12.2929L8.58579 8L4.29289 3.70711C3.90237 3.31658 3.90237 2.68342 4.29289 2.29289C4.68342 1.90237 5.31658 1.90237 5.70711 2.29289L10.7071 7.29289Z"></path></svg></div></div></li><li class="css-13svt41"><div class="css-1sg2lsz"><img src="/docs/assets/img/icons/sidebar/getting-started-new.svg" alt="Deploy icon" class="css-1m34rt5"/><div class="css-10tjyd0">Deploy</div><div size="24" color="#333" class="css-1vlg0km"><svg role="img" focusable="false" viewBox="0 0 16 16" aria-label="Arrow Right" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="css-bleycz"><path d="M10.7071 7.29289C11.0976 7.68342 11.0976 8.31658 10.7071 8.70711L5.70711 13.7071C5.31658 14.0976 4.68342 14.0976 4.29289 13.7071C3.90237 13.3166 3.90237 12.6834 4.29289 12.2929L8.58579 8L4.29289 3.70711C3.90237 3.31658 3.90237 2.68342 4.29289 2.29289C4.68342 1.90237 5.31658 1.90237 5.70711 2.29289L10.7071 7.29289Z"></path></svg></div></div></li><li class="css-13svt41"><div class="css-1sg2lsz"><img src="/docs/assets/img/icons/sidebar/release.svg" alt="Release icon" class="css-1m34rt5"/><div class="css-10tjyd0">Release</div><div size="24" color="#333" class="css-1vlg0km"><svg role="img" focusable="false" viewBox="0 0 16 16" aria-label="Arrow Right" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="css-bleycz"><path d="M10.7071 7.29289C11.0976 7.68342 11.0976 8.31658 10.7071 8.70711L5.70711 13.7071C5.31658 14.0976 4.68342 14.0976 4.29289 13.7071C3.90237 13.3166 3.90237 12.6834 4.29289 12.2929L8.58579 8L4.29289 3.70711C3.90237 3.31658 3.90237 2.68342 4.29289 2.29289C4.68342 1.90237 5.31658 1.90237 5.70711 2.29289L10.7071 7.29289Z"></path></svg></div></div></li><li class="css-13svt41"><div class="css-1sg2lsz"><img src="/docs/assets/img/icons/sidebar/sparkle.svg" alt="Optimize icon" class="css-1m34rt5"/><div class="css-10tjyd0">Optimize</div><div size="24" color="#333" class="css-1vlg0km"><svg role="img" focusable="false" viewBox="0 0 16 16" aria-label="Arrow Right" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="css-bleycz"><path d="M10.7071 7.29289C11.0976 7.68342 11.0976 8.31658 10.7071 8.70711L5.70711 13.7071C5.31658 14.0976 4.68342 14.0976 4.29289 13.7071C3.90237 13.3166 3.90237 12.6834 4.29289 12.2929L8.58579 8L4.29289 3.70711C3.90237 3.31658 3.90237 2.68342 4.29289 2.29289C4.68342 1.90237 5.31658 1.90237 5.70711 2.29289L10.7071 7.29289Z"></path></svg></div></div></li><li class="css-13svt41"><div class="css-1sg2lsz"><img src="/docs/assets/img/icons/sidebar/insights-new.svg" alt="Project Insights icon" class="css-1m34rt5"/><div class="css-10tjyd0">Project Insights</div><div size="24" color="#333" class="css-1vlg0km"><svg role="img" focusable="false" viewBox="0 0 16 16" aria-label="Arrow Right" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="css-bleycz"><path d="M10.7071 7.29289C11.0976 7.68342 11.0976 8.31658 10.7071 8.70711L5.70711 13.7071C5.31658 14.0976 4.68342 14.0976 4.29289 13.7071C3.90237 13.3166 3.90237 12.6834 4.29289 12.2929L8.58579 8L4.29289 3.70711C3.90237 3.31658 3.90237 2.68342 4.29289 2.29289C4.68342 1.90237 5.31658 1.90237 5.70711 2.29289L10.7071 7.29289Z"></path></svg></div></div></li><li class="css-13svt41"><div class="css-1sg2lsz"><img src="/docs/assets/img/icons/sidebar/orb.svg" alt="Package and re-use config with orbs icon" class="css-1m34rt5"/><div class="css-10tjyd0">Package and re-use config with orbs</div><style data-emotion-css="nnsjfc">.css-nnsjfc{padding:0.25rem;-webkit-transition:-webkit-transform 0.2s ease;-webkit-transition:transform 0.2s ease;transition:transform 0.2s ease;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);}</style><style data-emotion-css="a2qlhg">.css-a2qlhg{width:24px;height:24px;min-width:24px;color:#333;padding:0.25rem;-webkit-transition:-webkit-transform 0.2s ease;-webkit-transition:transform 0.2s ease;transition:transform 0.2s ease;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);}</style><div size="24" color="#333" class="css-a2qlhg"><svg role="img" focusable="false" viewBox="0 0 16 16" aria-label="Arrow Right" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="css-bleycz"><path d="M10.7071 7.29289C11.0976 7.68342 11.0976 8.31658 10.7071 8.70711L5.70711 13.7071C5.31658 14.0976 4.68342 14.0976 4.29289 13.7071C3.90237 13.3166 3.90237 12.6834 4.29289 12.2929L8.58579 8L4.29289 3.70711C3.90237 3.31658 3.90237 2.68342 4.29289 2.29289C4.68342 1.90237 5.31658 1.90237 5.70711 2.29289L10.7071 7.29289Z"></path></svg></div></div><style data-emotion-css="i6zvb9">.css-i6zvb9{list-style-type:none;}</style><ul class="css-i6zvb9"><style data-emotion-css="1n64q0m">.css-1n64q0m{margin-top:16px;}</style><div class="subSection css-1n64q0m"><style data-emotion-css="4h1kga">.css-4h1kga{color:#555555;display:inline-block;font-size:13px;font-weight:500;-webkit-letter-spacing:0.5px;-moz-letter-spacing:0.5px;-ms-letter-spacing:0.5px;letter-spacing:0.5px;margin:0.5rem 0 0 1rem;text-transform:uppercase;}.css-4h1kga a{-webkit-text-decoration:none;text-decoration:none;color:#555555;font-size:12px;}.css-4h1kga a:hover{color:#27a0b6;}</style><div class="css-4h1kga">Use orbs</div><ul class="css-i6zvb9"><style data-emotion-css="7cjp2v">.css-7cjp2v{margin-top:0.5rem;}.css-7cjp2v svg{fill:#555555;}.css-7cjp2v:hover svg{fill:#0062b0;}</style><li class="css-7cjp2v"><span><a data-testid="link" href="/docs/orb-intro/" class="css-x7gnkn"><style data-emotion-css="8bro8e">.css-8bro8e{color:#555555;margin:0 0 0 1rem;display:inline-block;margin-left:30px;font-weight:400;font-size:0.875rem;-webkit-text-decoration:none;text-decoration:none;}.css-8bro8e:hover{color:#0062b0;}</style><span class="css-8bro8e">Orb introduction</span></a></span></li></ul></div><div class="subSection css-1n64q0m"><div class="css-4h1kga">Author orbs</div><ul class="css-i6zvb9"><li class="css-7cjp2v"><span><a data-testid="link" href="/docs/orb-author-intro/" class="css-x7gnkn"><span class="css-8bro8e">Intro to authoring an orb</span></a></span></li><li class="css-7cjp2v"><span><a data-testid="link" href="/docs/orb-author/" class="css-x7gnkn"><span class="css-8bro8e">Author an orb</span></a></span></li><li class="css-7cjp2v"><span><a data-testid="link" href="/docs/orbs-best-practices/" class="css-x7gnkn"><span class="css-8bro8e">Orb authoring best practices</span></a></span></li></ul></div><div class="subSection css-1n64q0m"><div class="css-4h1kga">Test orbs</div><ul class="css-i6zvb9"><li class="css-7cjp2v"><span><a data-testid="link" href="/docs/testing-orbs/" class="css-x7gnkn"><span class="css-8bro8e">Orb testing methodologies</span></a></span></li></ul></div><div class="subSection css-1n64q0m"><div class="css-4h1kga">Publish orbs</div><ul class="css-i6zvb9"><li class="css-7cjp2v"><span><a data-testid="link" href="/docs/creating-orbs/" class="css-x7gnkn"><span class="css-8bro8e">Orb publishing process</span></a></span></li></ul></div><div class="subSection css-1n64q0m"><div class="css-4h1kga">Tutorials</div><ul class="css-i6zvb9"><li class="css-7cjp2v"><span><a data-testid="link" href="/docs/create-an-orb/" class="css-x7gnkn"><span class="css-8bro8e">Create an orb</span></a></span></li><li class="css-7cjp2v"><span><a data-testid="link" href="/docs/orb-author-validate-publish/" class="css-x7gnkn"><span class="css-8bro8e">Manually author an orb</span></a></span></li></ul></div><div class="subSection css-1n64q0m"><div class="css-4h1kga">How-to guides</div><ul class="css-i6zvb9"><li class="css-7cjp2v"><span><a data-testid="link" href="/docs/deploy-service-update-to-aws-ecs/" class="css-x7gnkn"><span class="css-8bro8e">Deploy service update to ECS</span></a></span></li></ul></div><div class="subSection css-1n64q0m"><div class="css-4h1kga">Reference</div><ul class="css-i6zvb9"><li class="css-7cjp2v"><span><a data-testid="link" href="/docs/orb-concepts/" class="css-x7gnkn"><style data-emotion-css="1ouqygm">.css-1ouqygm{color:inherit;margin:0 0 0 1rem;display:inline-block;margin-left:30px;font-weight:400;font-size:0.875rem;-webkit-text-decoration:none;text-decoration:none;}.css-1ouqygm:hover{color:#0062b0;}</style><span class="css-1ouqygm">Orbs concepts</span></a></span></li><li class="css-7cjp2v"><span><a data-testid="link" href="/docs/orbs-faq/" class="css-x7gnkn"><span class="css-8bro8e">Orbs FAQ</span></a></span></li><li class="css-7cjp2v"><span><a data-testid="link" href="/docs/orb-author-faq/" class="css-x7gnkn"><span class="css-8bro8e">Orb author FAQ</span></a></span></li><li class="css-7cjp2v"><span><a data-testid="link" href="/docs/reusing-config/" class="css-x7gnkn"><span class="css-8bro8e">Reusing configuration</span></a></span></li></ul></div></ul></li><li class="css-13svt41"><div class="css-1sg2lsz"><img src="/docs/assets/img/icons/sidebar/avatar.svg" alt="Manage roles, permissions, and authentication icon" class="css-1m34rt5"/><div class="css-10tjyd0">Manage roles, permissions, and authentication</div><div size="24" color="#333" class="css-1vlg0km"><svg role="img" focusable="false" viewBox="0 0 16 16" aria-label="Arrow Right" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="css-bleycz"><path d="M10.7071 7.29289C11.0976 7.68342 11.0976 8.31658 10.7071 8.70711L5.70711 13.7071C5.31658 14.0976 4.68342 14.0976 4.29289 13.7071C3.90237 13.3166 3.90237 12.6834 4.29289 12.2929L8.58579 8L4.29289 3.70711C3.90237 3.31658 3.90237 2.68342 4.29289 2.29289C4.68342 1.90237 5.31658 1.90237 5.70711 2.29289L10.7071 7.29289Z"></path></svg></div></div></li><li class="css-13svt41"><div class="css-1sg2lsz"><img src="/docs/assets/img/icons/sidebar/key.svg" alt="Manage security and secrets icon" class="css-1m34rt5"/><div class="css-10tjyd0">Manage security and secrets</div><div size="24" color="#333" class="css-1vlg0km"><svg role="img" focusable="false" viewBox="0 0 16 16" aria-label="Arrow Right" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="css-bleycz"><path d="M10.7071 7.29289C11.0976 7.68342 11.0976 8.31658 10.7071 8.70711L5.70711 13.7071C5.31658 14.0976 4.68342 14.0976 4.29289 13.7071C3.90237 13.3166 3.90237 12.6834 4.29289 12.2929L8.58579 8L4.29289 3.70711C3.90237 3.31658 3.90237 2.68342 4.29289 2.29289C4.68342 1.90237 5.31658 1.90237 5.70711 2.29289L10.7071 7.29289Z"></path></svg></div></div></li><li class="css-13svt41"><div class="css-1sg2lsz"><img src="/docs/assets/img/icons/sidebar/lock.svg" alt="Manage config policies icon" class="css-1m34rt5"/><div class="css-10tjyd0">Manage config policies</div><div size="24" color="#333" class="css-1vlg0km"><svg role="img" focusable="false" viewBox="0 0 16 16" aria-label="Arrow Right" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="css-bleycz"><path d="M10.7071 7.29289C11.0976 7.68342 11.0976 8.31658 10.7071 8.70711L5.70711 13.7071C5.31658 14.0976 4.68342 14.0976 4.29289 13.7071C3.90237 13.3166 3.90237 12.6834 4.29289 12.2929L8.58579 8L4.29289 3.70711C3.90237 3.31658 3.90237 2.68342 4.29289 2.29289C4.68342 1.90237 5.31658 1.90237 5.70711 2.29289L10.7071 7.29289Z"></path></svg></div></div></li><li class="css-13svt41"><div class="css-1sg2lsz"><img src="/docs/assets/img/icons/sidebar/webhook.svg" alt="Integration icon" class="css-1m34rt5"/><div class="css-10tjyd0">Integration</div><div size="24" color="#333" class="css-1vlg0km"><svg role="img" focusable="false" viewBox="0 0 16 16" aria-label="Arrow Right" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="css-bleycz"><path d="M10.7071 7.29289C11.0976 7.68342 11.0976 8.31658 10.7071 8.70711L5.70711 13.7071C5.31658 14.0976 4.68342 14.0976 4.29289 13.7071C3.90237 13.3166 3.90237 12.6834 4.29289 12.2929L8.58579 8L4.29289 3.70711C3.90237 3.31658 3.90237 2.68342 4.29289 2.29289C4.68342 1.90237 5.31658 1.90237 5.70711 2.29289L10.7071 7.29289Z"></path></svg></div></div></li><li class="css-13svt41"><div class="css-1sg2lsz"><img src="/docs/assets/img/icons/sidebar/code.svg" alt="Developer toolkit icon" class="css-1m34rt5"/><div class="css-10tjyd0">Developer toolkit</div><div size="24" color="#333" class="css-1vlg0km"><svg role="img" focusable="false" viewBox="0 0 16 16" aria-label="Arrow Right" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="css-bleycz"><path d="M10.7071 7.29289C11.0976 7.68342 11.0976 8.31658 10.7071 8.70711L5.70711 13.7071C5.31658 14.0976 4.68342 14.0976 4.29289 13.7071C3.90237 13.3166 3.90237 12.6834 4.29289 12.2929L8.58579 8L4.29289 3.70711C3.90237 3.31658 3.90237 2.68342 4.29289 2.29289C4.68342 1.90237 5.31658 1.90237 5.70711 2.29289L10.7071 7.29289Z"></path></svg></div></div></li><li class="css-13svt41"><div class="css-1sg2lsz"><img src="/docs/assets/img/icons/sidebar/admin-new.svg" alt="Server administration v4.7 icon" class="css-1m34rt5"/><div class="css-10tjyd0">Server administration v4.7</div><div size="24" color="#333" class="css-1vlg0km"><svg role="img" focusable="false" viewBox="0 0 16 16" aria-label="Arrow Right" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="css-bleycz"><path d="M10.7071 7.29289C11.0976 7.68342 11.0976 8.31658 10.7071 8.70711L5.70711 13.7071C5.31658 14.0976 4.68342 14.0976 4.29289 13.7071C3.90237 13.3166 3.90237 12.6834 4.29289 12.2929L8.58579 8L4.29289 3.70711C3.90237 3.31658 3.90237 2.68342 4.29289 2.29289C4.68342 1.90237 5.31658 1.90237 5.70711 2.29289L10.7071 7.29289Z"></path></svg></div></div></li><li class="css-13svt41"><div class="css-1sg2lsz"><img src="/docs/assets/img/icons/sidebar/admin-new.svg" alt="Server administration v4.6 icon" class="css-1m34rt5"/><div class="css-10tjyd0">Server administration v4.6</div><div size="24" color="#333" class="css-1vlg0km"><svg role="img" focusable="false" viewBox="0 0 16 16" aria-label="Arrow Right" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="css-bleycz"><path d="M10.7071 7.29289C11.0976 7.68342 11.0976 8.31658 10.7071 8.70711L5.70711 13.7071C5.31658 14.0976 4.68342 14.0976 4.29289 13.7071C3.90237 13.3166 3.90237 12.6834 4.29289 12.2929L8.58579 8L4.29289 3.70711C3.90237 3.31658 3.90237 2.68342 4.29289 2.29289C4.68342 1.90237 5.31658 1.90237 5.70711 2.29289L10.7071 7.29289Z"></path></svg></div></div></li><li class="css-13svt41"><div class="css-1sg2lsz"><img src="/docs/assets/img/icons/sidebar/admin-new.svg" alt="Server administration v4.5 icon" class="css-1m34rt5"/><div class="css-10tjyd0">Server administration v4.5</div><div size="24" color="#333" class="css-1vlg0km"><svg role="img" focusable="false" viewBox="0 0 16 16" aria-label="Arrow Right" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="css-bleycz"><path d="M10.7071 7.29289C11.0976 7.68342 11.0976 8.31658 10.7071 8.70711L5.70711 13.7071C5.31658 14.0976 4.68342 14.0976 4.29289 13.7071C3.90237 13.3166 3.90237 12.6834 4.29289 12.2929L8.58579 8L4.29289 3.70711C3.90237 3.31658 3.90237 2.68342 4.29289 2.29289C4.68342 1.90237 5.31658 1.90237 5.70711 2.29289L10.7071 7.29289Z"></path></svg></div></div></li><li class="css-13svt41"><div class="css-1sg2lsz"><img src="/docs/assets/img/icons/sidebar/admin-new.svg" alt="Server administration v4.4 icon" class="css-1m34rt5"/><div class="css-10tjyd0">Server administration v4.4</div><div size="24" color="#333" class="css-1vlg0km"><svg role="img" focusable="false" viewBox="0 0 16 16" aria-label="Arrow Right" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="css-bleycz"><path d="M10.7071 7.29289C11.0976 7.68342 11.0976 8.31658 10.7071 8.70711L5.70711 13.7071C5.31658 14.0976 4.68342 14.0976 4.29289 13.7071C3.90237 13.3166 3.90237 12.6834 4.29289 12.2929L8.58579 8L4.29289 3.70711C3.90237 3.31658 3.90237 2.68342 4.29289 2.29289C4.68342 1.90237 5.31658 1.90237 5.70711 2.29289L10.7071 7.29289Z"></path></svg></div></div></li><li class="css-13svt41"><div class="css-1sg2lsz"><img src="/docs/assets/img/icons/sidebar/admin-new.svg" alt="Server administration v4.3 icon" class="css-1m34rt5"/><div class="css-10tjyd0">Server administration v4.3</div><div size="24" color="#333" class="css-1vlg0km"><svg role="img" focusable="false" viewBox="0 0 16 16" aria-label="Arrow Right" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="css-bleycz"><path d="M10.7071 7.29289C11.0976 7.68342 11.0976 8.31658 10.7071 8.70711L5.70711 13.7071C5.31658 14.0976 4.68342 14.0976 4.29289 13.7071C3.90237 13.3166 3.90237 12.6834 4.29289 12.2929L8.58579 8L4.29289 3.70711C3.90237 3.31658 3.90237 2.68342 4.29289 2.29289C4.68342 1.90237 5.31658 1.90237 5.70711 2.29289L10.7071 7.29289Z"></path></svg></div></div></li><li class="css-13svt41"><div class="css-1sg2lsz"><img src="/docs/assets/img/icons/sidebar/admin-new.svg" alt="Server administration v4.2 icon" class="css-1m34rt5"/><div class="css-10tjyd0">Server administration v4.2</div><div size="24" color="#333" class="css-1vlg0km"><svg role="img" focusable="false" viewBox="0 0 16 16" aria-label="Arrow Right" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="css-bleycz"><path d="M10.7071 7.29289C11.0976 7.68342 11.0976 8.31658 10.7071 8.70711L5.70711 13.7071C5.31658 14.0976 4.68342 14.0976 4.29289 13.7071C3.90237 13.3166 3.90237 12.6834 4.29289 12.2929L8.58579 8L4.29289 3.70711C3.90237 3.31658 3.90237 2.68342 4.29289 2.29289C4.68342 1.90237 5.31658 1.90237 5.70711 2.29289L10.7071 7.29289Z"></path></svg></div></div></li><li class="css-13svt41"><div class="css-1sg2lsz"><img src="/docs/assets/img/icons/sidebar/admin-new.svg" alt="Server administration v4.1 icon" class="css-1m34rt5"/><div class="css-10tjyd0">Server administration v4.1</div><div size="24" color="#333" class="css-1vlg0km"><svg role="img" focusable="false" viewBox="0 0 16 16" aria-label="Arrow Right" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="css-bleycz"><path d="M10.7071 7.29289C11.0976 7.68342 11.0976 8.31658 10.7071 8.70711L5.70711 13.7071C5.31658 14.0976 4.68342 14.0976 4.29289 13.7071C3.90237 13.3166 3.90237 12.6834 4.29289 12.2929L8.58579 8L4.29289 3.70711C3.90237 3.31658 3.90237 2.68342 4.29289 2.29289C4.68342 1.90237 5.31658 1.90237 5.70711 2.29289L10.7071 7.29289Z"></path></svg></div></div></li><li class="css-13svt41"><div class="css-1sg2lsz"><img src="/docs/assets/img/icons/sidebar/plans-outline.svg" alt="Plans and pricing icon" class="css-1m34rt5"/><div class="css-10tjyd0">Plans and pricing</div><div size="24" color="#333" class="css-1vlg0km"><svg role="img" focusable="false" viewBox="0 0 16 16" aria-label="Arrow Right" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="css-bleycz"><path d="M10.7071 7.29289C11.0976 7.68342 11.0976 8.31658 10.7071 8.70711L5.70711 13.7071C5.31658 14.0976 4.68342 14.0976 4.29289 13.7071C3.90237 13.3166 3.90237 12.6834 4.29289 12.2929L8.58579 8L4.29289 3.70711C3.90237 3.31658 3.90237 2.68342 4.29289 2.29289C4.68342 1.90237 5.31658 1.90237 5.70711 2.29289L10.7071 7.29289Z"></path></svg></div></div></li><li class="css-13svt41"><div class="css-1sg2lsz"><img src="/docs/assets/img/icons/sidebar/changelog.svg" alt="Contributing to CircleCI docs icon" class="css-1m34rt5"/><div class="css-10tjyd0">Contributing to CircleCI docs</div><div size="24" color="#333" class="css-1vlg0km"><svg role="img" focusable="false" viewBox="0 0 16 16" aria-label="Arrow Right" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="css-bleycz"><path d="M10.7071 7.29289C11.0976 7.68342 11.0976 8.31658 10.7071 8.70711L5.70711 13.7071C5.31658 14.0976 4.68342 14.0976 4.29289 13.7071C3.90237 13.3166 3.90237 12.6834 4.29289 12.2929L8.58579 8L4.29289 3.70711C3.90237 3.31658 3.90237 2.68342 4.29289 2.29289C4.68342 1.90237 5.31658 1.90237 5.70711 2.29289L10.7071 7.29289Z"></path></svg></div></div></li></ul></div></nav><style data-emotion-css="lfzoxb">.css-lfzoxb{padding:3rem 2.5rem 0 2.5rem;}@media (max-width:768px){.css-lfzoxb{padding:1.5rem 1rem;}}</style><style data-emotion-css="1xwsbgo">.css-1xwsbgo{box-sizing:border-box;min-width:0;margin:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-flex:1;-ms-flex:1;flex:1;padding:3rem 2.5rem 0 2.5rem;}@media (max-width:768px){.css-1xwsbgo{padding:1.5rem 1rem;}}</style><main class="css-1xwsbgo"><article> <style data-emotion-css="ha3tto">.css-ha3tto{color:#555555;font-size:1rem;line-height:1.5rem;}.css-ha3tto .circle-green{color:#04aa4e;}.css-ha3tto .circle-red{color:#c13937;}.css-ha3tto p{margin-top:0px;margin-bottom:10px;}.css-ha3tto ol,.css-ha3tto ul{margin-bottom:10px;margin-top:0;}.css-ha3tto .table-striped{margin:1.5rem 0;}.css-ha3tto .table{border-collapse:collapse;border-spacing:0;max-width:100%;width:100%;table-layout:auto;}.css-ha3tto .table thead{background:#F7F7F7;}.css-ha3tto .table th,.css-ha3tto .table td{line-height:1.50;padding:0.5rem;text-align:left;vertical-align:top;}.css-ha3tto .table th{border-bottom:1px solid #E3E3E3;color:#555555;font-weight:500;font-size:1rem;}.css-ha3tto .table tr th:first-of-type code.language-plaintext,.css-ha3tto .table tr td:first-of-type code.language-plaintext{white-space:nowrap !important;}.css-ha3tto .table.table-striped > tbody > tr:nth-of-type(even){background-color:#F7F7F7;}.css-ha3tto .table.table-no-background > tbody > tr:nth-of-type(even){background:none;}.css-ha3tto .table.table-migrating-page tr > td:not(:only-child):first-of-type{padding-left:0;padding-right:0.25rem;}.css-ha3tto .table.table-migrating-page tr>td+td{padding-left:0.25rem;padding-right:0;}.css-ha3tto .table.table-migrating-page tbody > tr:nth-of-type(even){background:none;}.css-ha3tto .table td :not(pre)>code{word-wrap:normal;}.css-ha3tto hr{border:0;border-top:1px solid #E3E3E3;width:100%;margin:1.5rem 0;}.css-ha3tto .video-wrapper,.css-ha3tto .videoblock{height:0;padding-bottom:56.25%;padding-top:25px;position:relative;margin:1.25rem 0;}</style><div class="css-ha3tto"><style data-emotion-css="2va2ht">.css-2va2ht{box-sizing:border-box;min-width:0;margin:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;}</style><div class="css-2va2ht"><style data-emotion-css="qcooo9">.css-qcooo9{box-sizing:border-box;min-width:0;margin:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;}</style><div class="css-qcooo9"><style data-emotion-css="16173t9">.css-16173t9{max-width:calc( 960px - 48px - 48px );}@media (min-width:1300px){.css-16173t9{width:calc(100% - 400px);}}</style><div class="css-16173t9"><section data-testid="content-page-heading"><style data-emotion-css="1d5kwgy">.css-1d5kwgy{margin-bottom:1rem;margin-top:0;font-size:2.25rem;font-weight:500;color:#161616;line-height:52px;}</style><h1 class="css-1d5kwgy">Orbs Concepts</h1><style data-emotion-css="12ut1uv">.css-12ut1uv{background:#FFFFFF;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;border:1px solid #D4D4D4;border-radius:4px;box-sizing:border-box;margin:1rem 0;font-size:15px;}@media (max-width:891px){.css-12ut1uv{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding:0.5rem;}}</style><div class="css-12ut1uv"><style data-emotion-css="tkbaat">.css-tkbaat{padding:0.125rem;margin-left:0.5rem;margin-right:1rem;}@media (max-width:891px){.css-tkbaat{margin-left:0.2em;}}</style><style data-emotion-css="ib8kn6">.css-ib8kn6{box-sizing:border-box;min-width:0;margin:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;padding:0.125rem;margin-left:0.5rem;margin-right:1rem;}@media (max-width:891px){.css-ib8kn6{margin-left:0.2em;}}</style><div class="css-ib8kn6"><style data-emotion-css="2iw00g">.css-2iw00g{width:1.5rem;margin:0.5rem;}</style><div class="css-2iw00g"><div size="24" color="currentColor" class="css-19wtgi5"><svg role="img" focusable="false" viewBox="0 0 24 24" aria-label="Duration" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="css-bleycz"><path d="M12 20C15.866 20 19 16.866 19 13C19 9.13401 15.866 6 12 6C8.13401 6 5 9.13401 5 13C5 16.866 8.13401 20 12 20ZM12 22C7.02944 22 3 17.9706 3 13C3 8.02944 7.02944 4 12 4C16.9706 4 21 8.02944 21 13C21 17.9706 16.9706 22 12 22ZM11 1H13C13.5523 1 14 1.44772 14 2C14 2.55228 13.5523 3 13 3H11C10.4477 3 10 2.55228 10 2C10 1.44772 10.4477 1 11 1ZM19.7782 3.80761L21.1924 5.22183C21.5829 5.61235 21.5829 6.24551 21.1924 6.63604C20.8019 7.02656 20.1687 7.02656 19.7782 6.63604L18.364 5.22183C17.9734 4.8313 17.9734 4.19814 18.364 3.80761C18.7545 3.41709 19.3876 3.41709 19.7782 3.80761ZM13 9V12.5858L14.7071 14.2929C15.0976 14.6834 15.0976 15.3166 14.7071 15.7071C14.3166 16.0976 13.6834 16.0976 13.2929 15.7071L11.2929 13.7071C11.1054 13.5196 11 13.2652 11 13V9C11 8.44772 11.4477 8 12 8C12.5523 8 13 8.44772 13 9Z"></path></svg></div></div><style data-emotion-css="gw0ftn">.css-gw0ftn > span{line-height:1.5rem;}</style><div data-tip="true" data-for="readUpdateTime" class="css-gw0ftn"><span data-testid="git-file-link"><style data-emotion-css="qjll1l">.css-qjll1l a{font-size:15px;}</style><span class="css-qjll1l"><a href="https://github.com/circleci/circleci-docs/commits/master/jekyll/_cci2/orb-concepts.md" target="_blank" rel="noopener noreferrer" data-testid="external-git-file-link" class="css-x7gnkn">1 week ago</a></span></span><style data-emotion-css="1sqa8jq">.css-1sqa8jq{line-height:1.5rem;}.css-1sqa8jq:before{background:#343434;border-radius:50%;content:"\a";display:inline-block;height:3px;margin:0 5px 3px 5px;width:3px;}</style><span data-testid="content-read-time" class="css-1sqa8jq">7<!-- --> min read</span></div><style data-emotion-css="1ioox4k">.css-1ioox4k{background-color:#2B2B2B;color:#FFFFFF;text-align:center;border-radius:5px;padding:0.25rem 0.5rem;font-size:0.8125rem;font-weight:700;z-index:1;}</style></div></div></section></div><style data-emotion-css="wurzvf">.css-wurzvf{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media (min-width:1300px){.css-wurzvf{-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;}}</style><style data-emotion-css="w4wk6o">.css-w4wk6o{box-sizing:border-box;min-width:0;margin:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media (min-width:1300px){.css-w4wk6o{-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;}}</style><div class="css-w4wk6o"><style data-emotion-css="c06me2">.css-c06me2{max-height:auto;}</style><div class="css-c06me2"><style data-emotion-css="gjrqsi">@media (max-width:1300px){.css-gjrqsi{margin:1.5rem 0 2.5rem 0;}}@media (min-width:1300px){.css-gjrqsi{position:-webkit-sticky;position:sticky;top:100px;margin-top:-100px;padding-left:3rem;padding-right:0.5rem;max-height:calc(100vh - 140px);overflow-y:auto;width:400px;}}.css-gjrqsi ul{list-style-type:none;margin-bottom:0;}</style><div data-testid="right-bar" class="css-gjrqsi"><style data-emotion-css="1u486hm">.css-1u486hm{font-size:1rem;font-weight:500;margin:0;}</style><h5 data-testid="on-this-page" class="css-1u486hm">On This Page</h5><style data-emotion-css="7w93ns">.css-7w93ns{margin-left:0.25rem;padding-left:10px;border-left:2px solid #F1F1F1;}</style><ul data-testid="toc-list" class="css-7w93ns"><style data-emotion-css="15ss6d4">.css-15ss6d4{list-style-type:none;margin:0.5rem 0;margin-left:0rem;padding:0 8px;}</style><li data-testid="toc-entry" class="css-15ss6d4"><style data-emotion-css="rvafwm">.css-rvafwm a{color:#343434;font-weight:400;}.css-rvafwm a:hover{-webkit-text-decoration:underline;text-decoration:underline;}</style><span class="styled-link css-rvafwm"><a data-testid="link" href="/docs/orb-concepts/#orb-configuration-elements" class="css-x7gnkn">Orb configuration elements</a></span></li><style data-emotion-css="1kc30t0">.css-1kc30t0{list-style-type:none;margin:0.5rem 0;margin-left:1rem;padding:0 8px;}</style><li data-testid="toc-entry" class="css-1kc30t0"><span class="styled-link css-rvafwm"><a data-testid="link" href="/docs/orb-concepts/#commands" class="css-x7gnkn">Commands</a></span></li><li data-testid="toc-entry" class="css-1kc30t0"><span class="styled-link css-rvafwm"><a data-testid="link" href="/docs/orb-concepts/#executors" class="css-x7gnkn">Executors</a></span></li><style data-emotion-css="1puo75j">.css-1puo75j{list-style-type:none;margin:0.5rem 0;margin-left:2rem;padding:0 8px;}</style><li data-testid="toc-entry" class="css-1puo75j"><span class="styled-link css-rvafwm"><a data-testid="link" href="/docs/orb-concepts/#executor-definition-example" class="css-x7gnkn">Executor definition example</a></span></li><li data-testid="toc-entry" class="css-1kc30t0"><span class="styled-link css-rvafwm"><a data-testid="link" href="/docs/orb-concepts/#jobs" class="css-x7gnkn">Jobs</a></span></li><li data-testid="toc-entry" class="css-1kc30t0"><span class="styled-link css-rvafwm"><a data-testid="link" href="/docs/orb-concepts/#usage-examples" class="css-x7gnkn">Usage examples</a></span></li><li data-testid="toc-entry" class="css-15ss6d4"><span class="styled-link css-rvafwm"><a data-testid="link" href="/docs/orb-concepts/#namespaces" class="css-x7gnkn">Namespaces</a></span></li><li data-testid="toc-entry" class="css-15ss6d4"><span class="styled-link css-rvafwm"><a data-testid="link" href="/docs/orb-concepts/#semantic-versioning" class="css-x7gnkn">Semantic versioning</a></span></li><li data-testid="toc-entry" class="css-15ss6d4"><span class="styled-link css-rvafwm"><a data-testid="link" href="/docs/orb-concepts/#orb-versions-development-vs-production-vs-inline" class="css-x7gnkn">Orb versions (development vs production vs inline)</a></span></li><li data-testid="toc-entry" class="css-1kc30t0"><span class="styled-link css-rvafwm"><a data-testid="link" href="/docs/orb-concepts/#production-orbs" class="css-x7gnkn">Production orbs</a></span></li><li data-testid="toc-entry" class="css-1kc30t0"><span class="styled-link css-rvafwm"><a data-testid="link" href="/docs/orb-concepts/#development-orbs" class="css-x7gnkn">Development orbs</a></span></li><li data-testid="toc-entry" class="css-1kc30t0"><span class="styled-link css-rvafwm"><a data-testid="link" href="/docs/orb-concepts/#inline-orbs" class="css-x7gnkn">Inline orbs</a></span></li><li data-testid="toc-entry" class="css-15ss6d4"><span class="styled-link css-rvafwm"><a data-testid="link" href="/docs/orb-concepts/#private-orbs-vs-public-orbs" class="css-x7gnkn">Private orbs vs. public orbs</a></span></li><li data-testid="toc-entry" class="css-1kc30t0"><span class="styled-link css-rvafwm"><a data-testid="link" href="/docs/orb-concepts/#private-orbs" class="css-x7gnkn">Private orbs</a></span></li><li data-testid="toc-entry" class="css-1kc30t0"><span class="styled-link css-rvafwm"><a data-testid="link" href="/docs/orb-concepts/#authoring-orbs" class="css-x7gnkn">Authoring orbs</a></span></li><li data-testid="toc-entry" class="css-15ss6d4"><span class="styled-link css-rvafwm"><a data-testid="link" href="/docs/orb-concepts/#orb-packing" class="css-x7gnkn">Orb packing</a></span></li><li data-testid="toc-entry" class="css-15ss6d4"><span class="styled-link css-rvafwm"><a data-testid="link" href="/docs/orb-concepts/#file-include-syntax" class="css-x7gnkn">File include syntax</a></span></li><li data-testid="toc-entry" class="css-15ss6d4"><span class="styled-link css-rvafwm"><a data-testid="link" href="/docs/orb-concepts/#using-orbs-within-your-orb-and-register-time-resolution" class="css-x7gnkn">Using orbs within your orb and register-time resolution</a></span></li><li data-testid="toc-entry" class="css-15ss6d4"><span class="styled-link css-rvafwm"><a data-testid="link" href="/docs/orb-concepts/#see-also" class="css-x7gnkn">See also</a></span></li></ul></div></div><div class="css-16173t9"><style data-emotion-css="1d1hm3o">.css-1d1hm3o .toolbar{top:0.2em;right:0.2em !important;padding:6px;}.css-1d1hm3o .toolbar .copy-to-clipboard-button{cursor:pointer;-webkit-transition:opacity 0.3s ease-in-out;transition:opacity 0.3s ease-in-out;opacity:0;background-color:#EDEDED !important;background-position:50% !important;background-repeat:no-repeat !important;border-radius:4px !important;height:30px;width:46px;}.css-1d1hm3o .toolbar .copy-to-clipboard-button:hover{background-color:#E3E3E3 !important;}.css-1d1hm3o .toolbar .copy-to-clipboard-button:active{background-color:#D4D4D4 !important;}.css-1d1hm3o .toolbar .copy-to-clipboard-button span{display:none;}.css-1d1hm3o .toolbar .copy-to-clipboard-button[data-copy-state='copy']{background-image:url('/docs/icons/copy.svg') !important;}.css-1d1hm3o .toolbar .copy-to-clipboard-button[data-copy-state='copy-success']{background-color:#e3e3e3 !important;background-image:url('/docs/icons/check.svg') !important;}.css-1d1hm3o .code-toolbar:hover .copy-to-clipboard-button{opacity:1;}</style><div data-prismjs-copy-timeout="3000" class="line-numbers css-1d1hm3o"><div> <p><span><a data-testid="link" href="https://circleci.com/orbs" class="css-x7gnkn"> <!-- -->CircleCI orbs</a></span> are shareable packages of configuration elements, including <span><a data-testid="link" href="/docs/reusing-config/#authoring-parameterized-jobs" class="css-x7gnkn"> <!-- -->jobs</a></span>, <span><a data-testid="link" href="/docs/reusing-config/#authoring-reusable-commands" class="css-x7gnkn"> <!-- -->commands</a></span>, and <span><a data-testid="link" href="/docs/reusing-config/#authoring-reusable-executors" class="css-x7gnkn"> <!-- -->executors</a></span>. Orbs make writing and customizing CircleCI config simple. The reusable configuration elements used in orbs are explained fully in the <span><a data-testid="link" href="/docs/reusing-config/" class="css-x7gnkn"> <!-- -->Reusable Configuration Reference</a></span>.</p> <div><style data-emotion-css="1gt1ibw">.css-1gt1ibw{color:#161616;line-height:1.50;}</style><div class="css-1gt1ibw"><style data-emotion-css="n6xkmh">.css-n6xkmh{margin-bottom:10px;margin-top:1.25rem;-webkit-scroll-margin-top:100px;-moz-scroll-margin-top:100px;-ms-scroll-margin-top:100px;scroll-margin-top:100px;}</style><style data-emotion-css="sycgw4">.css-sycgw4{box-sizing:border-box;min-width:0;margin:0;color:#161616;font-size:1.75rem;font-weight:700;line-height:1.25;margin-bottom:10px;margin-top:1.25rem;-webkit-scroll-margin-top:100px;-moz-scroll-margin-top:100px;-ms-scroll-margin-top:100px;scroll-margin-top:100px;}</style><h2 id="orb-configuration-elements" data-testid="title-orb-configuration-elements" class="css-sycgw4">Orb configuration elements</h2></div></div> <p>CircleCI’s <span><a data-testid="link" href="/docs/reusing-config/" class="css-x7gnkn"> <!-- -->Reusable Configuration</a></span> features allow you to define parameterizable configuration elements and re-use those elements throughout a project config file. It is recommended you become familiar with the full <span><a data-testid="link" href="/docs/configuration-reference/" class="css-x7gnkn"> <!-- -->Configuration Reference</a></span> features before moving on to the <span><a data-testid="link" href="/docs/reusing-config/" class="css-x7gnkn"> <!-- -->Reusable Configuration Reference</a></span>.</p> <div><div class="css-1gt1ibw"><style data-emotion-css="2s9iz">.css-2s9iz{margin-bottom:10px;margin-top:10px;-webkit-scroll-margin-top:100px;-moz-scroll-margin-top:100px;-ms-scroll-margin-top:100px;scroll-margin-top:100px;}</style><style data-emotion-css="ycntf9">.css-ycntf9{box-sizing:border-box;min-width:0;margin:0;color:#161616;font-size:1.5rem;font-weight:500;line-height:1.3333333;margin-bottom:10px;margin-top:10px;-webkit-scroll-margin-top:100px;-moz-scroll-margin-top:100px;-ms-scroll-margin-top:100px;scroll-margin-top:100px;}</style><h3 id="commands" data-testid="title-commands" class="css-ycntf9">Commands</h3></div></div> <p>Commands contain one or more steps in which <span><a data-testid="link" href="/docs/reusing-config/#using-the-parameters-declaration" class="css-x7gnkn"> <!-- -->parameters</a></span> can be used to modify behavior. Commands are the logic of orbs and are responsible for executing steps such as <span><a data-testid="link" href="/docs/configuration-reference/#checkout" class="css-x7gnkn"> <!-- -->checking out code</a></span>, or running shell code, for example, running bash or CLI tools. For more information see the <span><a data-testid="link" href="/docs/reusing-config/#authoring-reusable-commands" class="css-x7gnkn"> <!-- -->Authoring Reusable Commands</a></span> guide.</p> <p>As an example, the AWS S3 orb includes a <em>command</em> to copy a file or object to a new location: <code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">aws-s3/copy</code>. If your AWS authentication details are stored as environment variables, the syntax to use this command in your config is simply:</p> <div class="language-yaml highlighter-rouge"><div class="highlight"><pre class="highlight"><code class="" data-testid="code-snippet-highlight">version: 2.1 orbs: aws-s3: circleci/aws-s3@4.1.0 jobs: build: docker: - image: &#x27;cimg/python:3.6&#x27; steps: - checkout - run: mkdir bucket &amp;&amp; echo &quot;lorem ipsum&quot; &gt; bucket/build_asset.txt # using the aws-s3 orb&#x27;s &quot;copy&quot; command. - aws-s3/copy: from: bucket/build_asset.txt to: &#x27;s3://my-s3-bucket-name&#x27; #... workflows , other jobs etc. </code></pre></div></div> <p>See the <span><a data-testid="link" href="https://circleci.com/developer/orbs/orb/circleci/aws-s3#commands" class="css-x7gnkn"> <!-- -->AWS-S3 Orb</a></span> page in the registry for more information.</p> <div><div class="css-1gt1ibw"><h3 id="executors" data-testid="title-executors" class="css-ycntf9">Executors</h3></div></div> <p>Executors are parameterized execution environments in which <span><a data-testid="link" href="/docs/orb-concepts/#jobs" class="css-x7gnkn"> <!-- -->jobs</a></span> can be run. CircleCI provides multiple <span><a data-testid="link" href="/docs/configuration-reference/#executor-job" class="css-x7gnkn"> <!-- -->executor options</a></span>:</p> <ul> <li>Docker</li> <li>macOS</li> <li>Windows</li> <li>Machine (Linux VM)</li> </ul> <p>Executors defined within orbs can be used to run jobs within your project configuration, or within the jobs defined in the orb.</p> <div><div class="css-1gt1ibw"><style data-emotion-css="19alzbx">.css-19alzbx{box-sizing:border-box;min-width:0;margin:0;color:#161616;font-size:1.25rem;font-weight:500;line-height:1.4;margin-bottom:10px;margin-top:10px;-webkit-scroll-margin-top:100px;-moz-scroll-margin-top:100px;-ms-scroll-margin-top:100px;scroll-margin-top:100px;}</style><h4 id="executor-definition-example" data-testid="title-executor-definition-example" class="css-19alzbx">Executor definition example</h4></div></div> <style data-emotion-css="bdwfpm">.css-bdwfpm{margin:1.5rem 0;}</style><div data-testid="compass-tabs" class="css-bdwfpm"><div class="css-bdwfpm"><style data-emotion-css="1utggbq">.css-1utggbq{padding:0 0 1.5rem 0;}@media (max-width:768px){.css-1utggbq > div{overflow-x:scroll;ms-overflow-style:none;-webkit-scrollbar-width:none;-moz-scrollbar-width:none;-ms-scrollbar-width:none;scrollbar-width:none;display:-webkit-box;}.css-1utggbq > div::-webkit-scrollbar{display:none;}}</style><div id="groupName-executor-tabs" role="tablist" aria-label="Tabs" class="css-1utggbq"><div class="css-1h7v07b"><style data-emotion-css="1h2mcfj">.css-1h2mcfj{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:56px;color:#6A6A6A;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;font-size:0.875rem;border:none;margin:0;padding:1rem 0.75rem;background-color:#FFFFFF;line-height:1.50;text-transform:uppercase;cursor:pointer;}.css-1h2mcfj:hover{color:#161616;}.css-1h2mcfj[aria-selected='true']{color:#161616;font-weight:700;box-shadow:inset 0 -0.25rem #0078CA;}.js-focus-visible .css-1h2mcfj:focus{outline:none;z-index:1;box-shadow:0 0 0.25rem #0078CA, -1px 1px 0 #0078CA,1px -1px 0 #0078CA, 1px 1px 0 #0078CA,-1px -1px 0 #0078CA;}.js-focus-visible .css-1h2mcfj:focus.css-1h2mcfj[aria-selected='true']{box-shadow:0 0 0.25rem #0078CA, -1px 1px 0 #0078CA,1px -1px 0 #0078CA, 1px 1px 0 #0078CA,-1px -1px 0 #0078CA, inset 0 -0.25rem #0078CA;}.js-focus-visible .css-1h2mcfj:focus:not(.focus-visible),.js-focus-visible .css-1h2mcfj:focus.css-1h2mcfj[aria-selected='true']:not(.focus-visible){outline:none;box-shadow:inset 0 -0.25rem #0078CA;}</style><button id="groupName-executor-Node-Docker" tabindex="0" aria-selected="false" role="tab" type="button" class="css-1h2mcfj">Node-Docker</button><button id="groupName-executor-Ruby-Docker" tabindex="0" aria-selected="false" role="tab" type="button" class="css-1h2mcfj">Ruby-Docker</button></div></div><style data-emotion-css="c4at1j">.css-c4at1j{width:100%;}</style><div id="groupName-executor-Node-Docker-panel" hidden="" style="display:none" role="tabpanel" tabindex="0" aria-labelledby="groupName-executor-Node-Docker" class="css-c4at1j"><div class="groupName-executor tabName-Node-Docker language-yaml highlighter-rouge"><div class="highlight"><pre class="highlight"><code class="" data-testid="code-snippet-highlight">description: &gt; Select the version of NodeJS to use. Uses CircleCI&#x27;s highly cached convenience images built for CI. docker: - image: &#x27;cimg/node:&lt;&lt;parameters.tag&gt;&gt;&#x27; parameters: tag: default: &#x27;13.11&#x27; description: &gt; Pick a specific cimg/node image version tag: https://circleci.com/developer/images/image/cimg/node type: string </code></pre></div></div></div><div id="groupName-executor-Ruby-Docker-panel" hidden="" style="display:none" role="tabpanel" tabindex="0" aria-labelledby="groupName-executor-Ruby-Docker" class="css-c4at1j"><div class="groupName-executor tabName-Ruby-Docker language-yaml highlighter-rouge"><div class="highlight"><pre class="highlight"><code class="" data-testid="code-snippet-highlight">description: &gt; Select the version of Ruby to use. Uses CircleCI&#x27;s highly cached convenience images built for CI. Any available tag from this list can be used: https://hub.docker.com/r/cimg/ruby/tags docker: - image: &#x27;cimg/ruby:&lt;&lt; parameters.tag &gt;&gt;&#x27; parameters: tag: default: &#x27;2.7&#x27; description: The `circleci/ruby` Docker image version tag. type: string </code></pre></div></div></div></div></div> <!-- --> <p>In the <span><a data-testid="link" href="https://circleci.com/developer/orbs/orb/circleci/node" class="css-x7gnkn"> <!-- -->Node orb</a></span>, for example, a parameterized Docker-based executor is provided, through which you can set the Docker tag. This provides a simple way to test applications against any version of Node.js when used with the Node orb’s <span><a data-testid="link" href="https://circleci.com/developer/orbs/orb/circleci/node#usage-run_matrix_testing" class="css-x7gnkn"> <!-- -->test job</a></span>.</p> <p>For more information, see the guide to <span><a data-testid="link" href="/docs/reusing-config/#authoring-reusable-executors" class="css-x7gnkn"> <!-- -->Authoring Reusable Executors</a></span> and the registry page for the <span><a data-testid="link" href="https://circleci.com/developer/orbs/orb/circleci/node#executors-default" class="css-x7gnkn"> <!-- -->Node Orb</a></span>.</p> <div><div class="css-1gt1ibw"><h3 id="jobs" data-testid="title-jobs" class="css-ycntf9">Jobs</h3></div></div> <p><span><a data-testid="link" href="/docs/reusing-config/#authoring-parameterized-jobs" class="css-x7gnkn"> <!-- -->Jobs</a></span> define a collection of <span><a data-testid="link" href="/docs/configuration-reference/#steps" class="css-x7gnkn"> <!-- -->steps</a></span> to be run within a given <span><a data-testid="link" href="/docs/orb-concepts/#executors" class="css-x7gnkn"> <!-- -->executor</a></span>, and are orchestrated using <span><a data-testid="link" href="/docs/workflows/" class="css-x7gnkn"> <!-- -->Workflows</a></span>. Jobs will also individually return their status via <span><a data-testid="link" href="/docs/enable-checks/" class="css-x7gnkn"> <!-- -->GitHub Checks</a></span>.</p> <p>When importing an orb which has jobs, you can reference them directly from your workflows.</p> <div class="language-yml highlighter-rouge"><div class="highlight"><pre class="highlight"><code class="" data-testid="code-snippet-highlight">version: 2.1 orbs: &lt;orb&gt;: &lt;namespace&gt;/&lt;orb&gt;@x.y #orb version workflows: use-orb-job: jobs: - &lt;orb&gt;/&lt;job-name&gt; </code></pre></div></div> <p>See the <span><a data-testid="link" href="/docs/reusing-config/#authoring-parameterized-jobs" class="css-x7gnkn"> <!-- -->Authoring Reusable Jobs</a></span> guide for more information, and the <span><a data-testid="link" href="https://circleci.com/developer/orbs/orb/circleci/node#usage-run_matrix_testing" class="css-x7gnkn"> <!-- -->Using Node Test Job</a></span> example in the orb registry.</p> <div><div class="css-1gt1ibw"><h3 id="usage-examples" data-testid="title-usage-examples" class="css-ycntf9">Usage examples</h3></div></div> <p>Using the <span><a data-testid="link" href="/docs/orb-development-kit/" class="css-x7gnkn"> <!-- -->orb development kit</a></span>, adding a new usage example is as simple as creating a new file <code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">name-of-example.yml</code> within the orb project’s <span><a href="https://github.com/CircleCI-Public/Orb-Template/tree/main/src/examples" target="_blank" rel="noopener noreferrer" data-testid="external-link" class="css-x7gnkn"> <!-- -->src/examples<style data-emotion-css="1ie5e7y">.css-1ie5e7y{display:inline-block;width:1rem;height:1rem;margin-left:-5px;}</style><span color="currentColor" class="css-1ie5e7y"><style data-emotion-css="qzco2h">.css-qzco2h{display:block;width:100%;fill:#0078CA;}</style><svg role="img" focusable="false" viewBox="0 0 24 24" aria-label="New Window Link" data-testid="external-icon" class="css-qzco2h"><path fill-rule="evenodd" d="M9,4 L15,4 L15.0752385,4.00278786 L15.2007255,4.02024007 L15.3121422,4.04973808 L15.4232213,4.09367335 L15.5207085,4.14599544 L15.6170221,4.21292768 L15.7071408,4.29291093 C15.7425006,4.32828725 15.7746868,4.3656744 15.8036651,4.40469337 L15.8753285,4.51593788 L15.9287742,4.62866395 L15.9641546,4.73400701 L15.9932723,4.88337887 L16,5 L16,11 C16,11.5522847 15.5522847,12 15,12 C14.4871642,12 14.0644928,11.6139598 14.0067277,11.1166211 L14,11 L14,7.414 L10.0502525,11.363961 C9.65972827,11.7544853 9.02656329,11.7544853 8.63603899,11.363961 C8.27555502,11.0034771 8.24782547,10.436246 8.55285035,10.0439548 L8.63603895,9.94974748 L12.585,5.999 L9,6 C8.48716416,6 8.06449284,5.61395981 8.00672773,5.11662113 L8,5 C8,4.48716416 8.38604019,4.06449284 8.88337887,4.00672773 L9,4 Z"></path></svg></span></a></span> directory. Usage examples are not for use in project configuration directly, but are a type of orb metadata to share how a user could best make use of the orb in their configuration. These examples are displayed, for reference purposes, in the <span><a data-testid="link" href="https://circleci.com/developer/orbs" class="css-x7gnkn"> <!-- -->Orb Registry</a></span>. Below is a sample usage example:</p> <div class="language-yaml highlighter-rouge"><div class="highlight"><pre class="highlight"><code class="" data-testid="code-snippet-highlight"># Source https://github.com/circleci-public/Orb-Template/blob/main/src/examples/example.yml description: &gt; Sample example description. usage: version: 2.1 orbs: &lt;orb-name&gt;: &lt;namespace&gt;/&lt;orb-name&gt;@1.2.3 workflows: use-my-orb: jobs: - &lt;orb-name&gt;/&lt;job-name&gt; </code></pre></div></div> <div><div class="css-1gt1ibw"><h2 id="namespaces" data-testid="title-namespaces" class="css-sycgw4">Namespaces</h2></div></div> <p>A <em>namespace</em> is a unique identifier claimed by a user or organization to group a set of orbs by author. Each user or organization can claim <em>one</em> unique and immutable namespace. Each namespace can contain many uniquely named orbs.</p> <p>For example, the <code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">circleci/rails</code> orb may coexist in the registry with an orb called <code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">&lt;other-namespace&gt;/rails</code> because they are in separate namespaces.</p> <p>Organizations are, by default, limited to claiming only one namespace. This policy is designed to limit name-squatting and namespace noise. If you need to change your namespace, please contact support.</p> <p>By default, created namespaces appear as “community” namespaces in the <span><a data-testid="link" href="https://circleci.com/developer/orbs" class="css-x7gnkn"> <!-- -->Orb Registry</a></span>.</p> <div><div class="css-1gt1ibw"><h2 id="semantic-versioning" data-testid="title-semantic-versioning" class="css-sycgw4">Semantic versioning</h2></div></div> <p>Orbs utilize the <span><a href="https://semver.org/" target="_blank" rel="noopener noreferrer" data-testid="external-link" class="css-x7gnkn"> <!-- -->semver<span color="currentColor" class="css-1ie5e7y"><svg role="img" focusable="false" viewBox="0 0 24 24" aria-label="New Window Link" data-testid="external-icon" class="css-qzco2h"><path fill-rule="evenodd" d="M9,4 L15,4 L15.0752385,4.00278786 L15.2007255,4.02024007 L15.3121422,4.04973808 L15.4232213,4.09367335 L15.5207085,4.14599544 L15.6170221,4.21292768 L15.7071408,4.29291093 C15.7425006,4.32828725 15.7746868,4.3656744 15.8036651,4.40469337 L15.8753285,4.51593788 L15.9287742,4.62866395 L15.9641546,4.73400701 L15.9932723,4.88337887 L16,5 L16,11 C16,11.5522847 15.5522847,12 15,12 C14.4871642,12 14.0644928,11.6139598 14.0067277,11.1166211 L14,11 L14,7.414 L10.0502525,11.363961 C9.65972827,11.7544853 9.02656329,11.7544853 8.63603899,11.363961 C8.27555502,11.0034771 8.24782547,10.436246 8.55285035,10.0439548 L8.63603895,9.94974748 L12.585,5.999 L9,6 C8.48716416,6 8.06449284,5.61395981 8.00672773,5.11662113 L8,5 C8,4.48716416 8.38604019,4.06449284 8.88337887,4.00672773 L9,4 Z"></path></svg></span></a></span> release process, in which each orb update follows a standardized versioning pattern that orb authors and users should take advantage of.</p> <p>In Semantic versioning, release versions are represented by three integers separated by a <code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">.</code>, where each integer represents a different type of change being added.</p> <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code class="" data-testid="code-snippet-highlight">[Major].[Minor].[Patch] </code></pre></div></div> <div style="overflow:auto"><table class="table table-striped"><thead><tr><th>Semver</th><th>Description</th></tr></thead><tbody><tr><td>Major</td><td>Breaking changes.</td></tr><tr><td>Minor</td><td>Backwards compatible additional features.</td></tr><tr><td>Patch</td><td>Bug fixes.</td></tr></tbody></table></div> <p>When you import an orb, you can pin it to a particular semver component.</p> <div style="overflow:auto"><table class="table table-striped"><thead><tr><th>Imported Version</th><th>Description</th></tr></thead><tbody><tr><td>1.2.3</td><td>Will match full semver version. No changes will be introduced.</td></tr><tr><td>1.2</td><td>Locked to major version <code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">1</code>, minor version <code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">2</code>, will receive all patch updates.</td></tr><tr><td>1</td><td>Locked to major version <code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">1</code>. Will receive all minor and patch updates. Major version will not change automatically.</td></tr><tr><td>volatile</td><td><strong>Not Recommended</strong> Will pull the last published version of the orb, may be useful in testing. Not a part of semver versioning.</td></tr></tbody></table></div> <p>To avoid negatively impacting a user’s CI process, orb authors should strictly adhere to semver versioning to ensure no breaking changes are introduced at the <code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">minor</code> or <code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">patch</code> update levels.</p> <div class="css-bdwfpm"><style data-emotion-css="1wj9qpq">.css-1wj9qpq{box-sizing:border-box;min-width:0;margin:0;border:1px solid #D4D4D4;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:60px;margin:0.25rem 0;border-left:4px solid #BF8532;}</style><div data-testid="compass-warning-alert" role="alert" aria-live="polite" class="css-1wj9qpq"><style data-emotion-css="v7m42f">.css-v7m42f{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-column-gap:0.75rem;column-gap:0.75rem;margin:11px;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;}@media (min-width:768px){.css-v7m42f{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}}</style><style data-emotion-css="1i7vmqf">.css-1i7vmqf{box-sizing:border-box;min-width:0;margin:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-column-gap:0.75rem;column-gap:0.75rem;margin:11px;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;}@media (min-width:768px){.css-1i7vmqf{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}}</style><div class="css-1i7vmqf"><style data-emotion-css="1xk4zua">.css-1xk4zua{width:20px;height:20px;min-width:20px;color:#BF8532;}</style><div color="#BF8532" class="css-1xk4zua"><svg role="img" focusable="false" viewBox="0 0 24 24" aria-label="Warning" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="css-bleycz"><path d="M21.7961 18.7493C21.9297 18.9776 22 19.2367 22 19.5006C22 20.3287 21.3215 21 20.4846 21H3.51564C3.24902 21 2.98712 20.9304 2.75638 20.7982C2.03208 20.3833 1.78485 19.466 2.20418 18.7493L10.6887 4.24842C10.8213 4.02168 11.0117 3.8333 11.2409 3.70203C11.9652 3.28712 12.8923 3.53174 13.3116 4.24842L21.7961 18.7493ZM12 18C12.5523 18 13 17.5523 13 17C13 16.4477 12.5523 16 12 16C11.4477 16 11 16.4477 11 17C11 17.5523 11.4477 18 12 18ZM11 13C11 13.5523 11.4477 14 12 14C12.5523 14 13 13.5523 13 13V8.9957C13 8.44341 12.5523 7.9957 12 7.9957C11.4477 7.9957 11 8.44341 11 8.9957V13Z"></path></svg></div><style data-emotion-css="1aoesim">.css-1aoesim{-webkit-column-gap:0.75rem;column-gap:0.75rem;row-gap:0.75rem;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex:1;-ms-flex:1;flex:1;}</style><style data-emotion-css="45kv77">.css-45kv77{box-sizing:border-box;min-width:0;margin:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;width:100%;-webkit-column-gap:0.75rem;column-gap:0.75rem;row-gap:0.75rem;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex:1;-ms-flex:1;flex:1;}</style><div id="collapsible-flex" class="css-45kv77"><style data-emotion-css="seohoz">.css-seohoz{box-sizing:border-box;min-width:0;margin:0;-webkit-flex:1;-ms-flex:1;flex:1;}</style><div class="css-seohoz"><style data-emotion-css="1c1tyii">.css-1c1tyii{box-sizing:border-box;min-width:0;margin:0;color:#161616;font-size:1rem;line-height:1.5;}</style><span class="css-1c1tyii"><strong>Note:</strong> CircleCI does not currently support non-numeric semantic versioning elements. We suggest that you use either semver-style version strings in x.y.z format, or a development-style version string in dev:* format.</span></div><style data-emotion-css="1ng7dzp">.css-1ng7dzp{-webkit-column-gap:0.75rem;column-gap:0.75rem;min-height:36px;}</style><style data-emotion-css="1828gbe">.css-1828gbe{box-sizing:border-box;min-width:0;margin:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-column-gap:0.75rem;column-gap:0.75rem;min-height:36px;}</style><div class="css-1828gbe"> <!-- --> </div><div class="css-1828gbe"> <!-- --> </div></div></div></div></div> <div><div class="css-1gt1ibw"><h2 id="orb-versions-development-vs-production-vs-inline" data-testid="title-orb-versions-development-vs-production-vs-inline" class="css-sycgw4">Orb versions (development vs production vs inline)</h2></div></div> <div><div class="css-1gt1ibw"><h3 id="production-orbs" data-testid="title-production-orbs" class="css-ycntf9">Production orbs</h3></div></div> <p>Production orbs are immutable and can be found on the <span><a data-testid="link" href="https://circleci.com/developer/orbs" class="css-x7gnkn"> <!-- -->Orb Registry</a></span>.</p> <ul> <li>Production orbs are immutable, they cannot be deleted or edited, and updates must be provided in a new semver release</li> <li>Version string must be in semver format, for example, <code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">&lt;namespace&gt;/&lt;orb&gt;@1.2.3</code></li> <li>Production orbs can only be published by an owner of the namespace organization</li> <li>Published to the Orb Registry</li> <li>Open source, released under <span><a data-testid="link" href="https://circleci.com/developer/orbs/licensing" class="css-x7gnkn"> <!-- -->MIT license</a></span></li> <li>Available via CircleCI CLI</li> </ul> <div><div class="css-1gt1ibw"><h3 id="development-orbs" data-testid="title-development-orbs" class="css-ycntf9">Development orbs</h3></div></div> <p>Development orbs are temporary overwrite-able orb tag versions, useful for rapid development and testing prior to deploying a semver deployed production change.</p> <ul> <li>Development orbs are mutable, can be overwritten, and automatically expire 90 days after they are published</li> <li>Version string must begin with <code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">dev:</code> followed by any string, for example, <code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">&lt;namespace&gt;/&lt;orb&gt;@dev:my-feature-branch</code></li> <li>Development orbs may be published by any member of the namespace organization</li> <li>Will not appear on the Orb Registry</li> <li>Open source, released under <span><a data-testid="link" href="https://circleci.com/developer/orbs/licensing" class="css-x7gnkn"> <!-- -->MIT license</a></span>.</li> <li>Available via CircleCI CLI (if the development tag name is known)</li> </ul> <div><div class="css-1gt1ibw"><h3 id="inline-orbs" data-testid="title-inline-orbs" class="css-ycntf9">Inline orbs</h3></div></div> <p>Inline orbs are defined directly within the user’s config, are completely local and scoped to the individual project.</p> <p><em><span><a data-testid="link" href="/docs/reusing-config/#writing-inline-orbs" class="css-x7gnkn"> <!-- -->See: Writing Inline Orbs</a></span> for more information on inline orbs.</em></p> <ul> <li>Not published to the orb service</li> <li>No versioning</li> <li>Exist only locally within the user’s config</li> <li>Not accessible outside of the repository</li> <li>Not public</li> <li>Not accessible via CircleCI CLI</li> </ul> <div><div class="css-1gt1ibw"><h2 id="private-orbs-vs-public-orbs" data-testid="title-private-orbs-vs-public-orbs" class="css-sycgw4">Private orbs vs. public orbs</h2></div></div> <p>There are two ways to publish an orb: public or private:</p> <ul> <li>If you prefer to publish your orb so that only those within your organization can see and use it, you should publish a private orb.</li> <li>If you want to publish your orb to the <span><a data-testid="link" href="https://circleci.com/developer/orbs" class="css-x7gnkn"> <!-- -->CircleCI Orb Registry</a></span> for use by anyone, create a public orb.</li> </ul> <p>Private orbs are described in more detail below.</p> <div><div class="css-1gt1ibw"><h3 id="private-orbs" data-testid="title-private-orbs" class="css-ycntf9">Private orbs</h3></div></div> <p>An unlimited amount of private orbs are available on all of CircleCI’s <span><a data-testid="link" href="https://circleci.com/pricing" class="css-x7gnkn"> <!-- -->plans</a></span>. Using a private orb enables you to author an orb while ensuring the following:</p> <ul> <li> <p>Your orb will not appear in the <span><a data-testid="link" href="https://circleci.com/developer/orbs" class="css-x7gnkn"> <!-- -->CircleCI Orb Registry</a></span> unless you have the direct URL and are authenticated with the org that created it.</p> </li> <li> <p>Your orb cannot be viewed or used by someone outside of your organization.</p> </li> <li> <p>Your orb cannot be used in a pipeline that does not belong to your organization.</p> </li> </ul> <p>By choosing to use a private orb instead of a public orb, you also need to understand certain inherent limitations, which include:</p> <ul> <li> <p>You will be unable to use the <code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">circleci config validate</code> command to validate your configuration. You may, however, use one of the following options:</p> <ul> <li>Paste the content of the orb into the <code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">orbs</code> stanza of your configuration.</li> <li>Use the <code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">circleci config validate --org-id &lt;your-org-id&gt; &lt;path/to/config.yml&gt;</code> command to validate your configuration.</li> </ul> </li> <li> <p>You cannot use private orbs from one organization in another organization’s pipelines, regardless of the relationship between organizations. This means that even if you commit code and start a pipeline, and have the necessary membership in both organizations, you can use a private orb from your configuration file, but not from another orb.</p> </li> </ul> <div><div class="css-1gt1ibw"><h3 id="authoring-orbs" data-testid="title-authoring-orbs" class="css-ycntf9">Authoring orbs</h3></div></div> <p>Both public and private orbs can be authored in two ways:</p> <ul> <li>Using the <span><a data-testid="link" href="/docs/orb-author-validate-publish/" class="css-x7gnkn"> <!-- -->Manual Orb Authoring Process</a></span></li> <li>Using the <span><a data-testid="link" href="/docs/orb-development-kit/" class="css-x7gnkn"> <!-- -->orb development kit</a></span> (recommended)</li> </ul> <div><div class="css-1gt1ibw"><h2 id="orb-packing" data-testid="title-orb-packing" class="css-sycgw4">Orb packing</h2></div></div> <p>All CircleCI orbs are singular YAML files, typically named <code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">orb.yml</code>. However, for development, it is often easier to break the code up into more manageable chunks. The <code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">circleci orb pack</code> command, a component of the <span><a data-testid="link" href="/docs/orb-development-kit/" class="css-x7gnkn"> <!-- -->orb development kit</a></span>, is used to “pack” or condense the separate YAML files together.</p> <div class="css-bdwfpm"><div data-testid="compass-warning-alert" role="alert" aria-live="polite" class="css-1wj9qpq"><div class="css-1i7vmqf"><div color="#BF8532" class="css-1xk4zua"><svg role="img" focusable="false" viewBox="0 0 24 24" aria-label="Warning" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="css-bleycz"><path d="M21.7961 18.7493C21.9297 18.9776 22 19.2367 22 19.5006C22 20.3287 21.3215 21 20.4846 21H3.51564C3.24902 21 2.98712 20.9304 2.75638 20.7982C2.03208 20.3833 1.78485 19.466 2.20418 18.7493L10.6887 4.24842C10.8213 4.02168 11.0117 3.8333 11.2409 3.70203C11.9652 3.28712 12.8923 3.53174 13.3116 4.24842L21.7961 18.7493ZM12 18C12.5523 18 13 17.5523 13 17C13 16.4477 12.5523 16 12 16C11.4477 16 11 16.4477 11 17C11 17.5523 11.4477 18 12 18ZM11 13C11 13.5523 11.4477 14 12 14C12.5523 14 13 13.5523 13 13V8.9957C13 8.44341 12.5523 7.9957 12 7.9957C11.4477 7.9957 11 8.44341 11 8.9957V13Z"></path></svg></div><div id="collapsible-flex" class="css-45kv77"><div class="css-seohoz"><span class="css-1c1tyii">If you are using the orb development kit, orb packing is handled automatically, by the included CI/CD pipeline, with the <span><a data-testid="link" href="https://circleci.com/developer/orbs/orb/circleci/orb-tools#jobs-pack" class="css-x7gnkn"> <!-- -->orb-tools/pack</a></span> job.</span></div><div class="css-1828gbe"> <!-- --> </div><div class="css-1828gbe"> <!-- --> </div></div></div></div></div> <p><strong><em>Example: Orb Project Structure</em></strong></p> <div style="overflow:auto"><table class="table table-striped"><thead><tr><th>type</th><th>name</th></tr></thead><tbody><tr><td><i class="fa fa-folder" aria-hidden="true"></i></td><td><span><a href="https://github.com/CircleCI-Public/Orb-Template/tree/main/src/commands" target="_blank" rel="noopener noreferrer" data-testid="external-link" class="css-x7gnkn"> <!-- -->commands<span color="currentColor" class="css-1ie5e7y"><svg role="img" focusable="false" viewBox="0 0 24 24" aria-label="New Window Link" data-testid="external-icon" class="css-qzco2h"><path fill-rule="evenodd" d="M9,4 L15,4 L15.0752385,4.00278786 L15.2007255,4.02024007 L15.3121422,4.04973808 L15.4232213,4.09367335 L15.5207085,4.14599544 L15.6170221,4.21292768 L15.7071408,4.29291093 C15.7425006,4.32828725 15.7746868,4.3656744 15.8036651,4.40469337 L15.8753285,4.51593788 L15.9287742,4.62866395 L15.9641546,4.73400701 L15.9932723,4.88337887 L16,5 L16,11 C16,11.5522847 15.5522847,12 15,12 C14.4871642,12 14.0644928,11.6139598 14.0067277,11.1166211 L14,11 L14,7.414 L10.0502525,11.363961 C9.65972827,11.7544853 9.02656329,11.7544853 8.63603899,11.363961 C8.27555502,11.0034771 8.24782547,10.436246 8.55285035,10.0439548 L8.63603895,9.94974748 L12.585,5.999 L9,6 C8.48716416,6 8.06449284,5.61395981 8.00672773,5.11662113 L8,5 C8,4.48716416 8.38604019,4.06449284 8.88337887,4.00672773 L9,4 Z"></path></svg></span></a></span></td></tr><tr><td><i class="fa fa-folder" aria-hidden="true"></i></td><td><span><a href="https://github.com/CircleCI-Public/Orb-Template/tree/main/src/examples" target="_blank" rel="noopener noreferrer" data-testid="external-link" class="css-x7gnkn"> <!-- -->examples<span color="currentColor" class="css-1ie5e7y"><svg role="img" focusable="false" viewBox="0 0 24 24" aria-label="New Window Link" data-testid="external-icon" class="css-qzco2h"><path fill-rule="evenodd" d="M9,4 L15,4 L15.0752385,4.00278786 L15.2007255,4.02024007 L15.3121422,4.04973808 L15.4232213,4.09367335 L15.5207085,4.14599544 L15.6170221,4.21292768 L15.7071408,4.29291093 C15.7425006,4.32828725 15.7746868,4.3656744 15.8036651,4.40469337 L15.8753285,4.51593788 L15.9287742,4.62866395 L15.9641546,4.73400701 L15.9932723,4.88337887 L16,5 L16,11 C16,11.5522847 15.5522847,12 15,12 C14.4871642,12 14.0644928,11.6139598 14.0067277,11.1166211 L14,11 L14,7.414 L10.0502525,11.363961 C9.65972827,11.7544853 9.02656329,11.7544853 8.63603899,11.363961 C8.27555502,11.0034771 8.24782547,10.436246 8.55285035,10.0439548 L8.63603895,9.94974748 L12.585,5.999 L9,6 C8.48716416,6 8.06449284,5.61395981 8.00672773,5.11662113 L8,5 C8,4.48716416 8.38604019,4.06449284 8.88337887,4.00672773 L9,4 Z"></path></svg></span></a></span></td></tr><tr><td><i class="fa fa-folder" aria-hidden="true"></i></td><td><span><a href="https://github.com/CircleCI-Public/Orb-Template/tree/main/src/executors" target="_blank" rel="noopener noreferrer" data-testid="external-link" class="css-x7gnkn"> <!-- -->executors<span color="currentColor" class="css-1ie5e7y"><svg role="img" focusable="false" viewBox="0 0 24 24" aria-label="New Window Link" data-testid="external-icon" class="css-qzco2h"><path fill-rule="evenodd" d="M9,4 L15,4 L15.0752385,4.00278786 L15.2007255,4.02024007 L15.3121422,4.04973808 L15.4232213,4.09367335 L15.5207085,4.14599544 L15.6170221,4.21292768 L15.7071408,4.29291093 C15.7425006,4.32828725 15.7746868,4.3656744 15.8036651,4.40469337 L15.8753285,4.51593788 L15.9287742,4.62866395 L15.9641546,4.73400701 L15.9932723,4.88337887 L16,5 L16,11 C16,11.5522847 15.5522847,12 15,12 C14.4871642,12 14.0644928,11.6139598 14.0067277,11.1166211 L14,11 L14,7.414 L10.0502525,11.363961 C9.65972827,11.7544853 9.02656329,11.7544853 8.63603899,11.363961 C8.27555502,11.0034771 8.24782547,10.436246 8.55285035,10.0439548 L8.63603895,9.94974748 L12.585,5.999 L9,6 C8.48716416,6 8.06449284,5.61395981 8.00672773,5.11662113 L8,5 C8,4.48716416 8.38604019,4.06449284 8.88337887,4.00672773 L9,4 Z"></path></svg></span></a></span></td></tr><tr><td><i class="fa fa-folder" aria-hidden="true"></i></td><td><span><a href="https://github.com/CircleCI-Public/Orb-Template/tree/main/src/jobs" target="_blank" rel="noopener noreferrer" data-testid="external-link" class="css-x7gnkn"> <!-- -->jobs<span color="currentColor" class="css-1ie5e7y"><svg role="img" focusable="false" viewBox="0 0 24 24" aria-label="New Window Link" data-testid="external-icon" class="css-qzco2h"><path fill-rule="evenodd" d="M9,4 L15,4 L15.0752385,4.00278786 L15.2007255,4.02024007 L15.3121422,4.04973808 L15.4232213,4.09367335 L15.5207085,4.14599544 L15.6170221,4.21292768 L15.7071408,4.29291093 C15.7425006,4.32828725 15.7746868,4.3656744 15.8036651,4.40469337 L15.8753285,4.51593788 L15.9287742,4.62866395 L15.9641546,4.73400701 L15.9932723,4.88337887 L16,5 L16,11 C16,11.5522847 15.5522847,12 15,12 C14.4871642,12 14.0644928,11.6139598 14.0067277,11.1166211 L14,11 L14,7.414 L10.0502525,11.363961 C9.65972827,11.7544853 9.02656329,11.7544853 8.63603899,11.363961 C8.27555502,11.0034771 8.24782547,10.436246 8.55285035,10.0439548 L8.63603895,9.94974748 L12.585,5.999 L9,6 C8.48716416,6 8.06449284,5.61395981 8.00672773,5.11662113 L8,5 C8,4.48716416 8.38604019,4.06449284 8.88337887,4.00672773 L9,4 Z"></path></svg></span></a></span></td></tr><tr><td><i class="fa fa-file-text-o" aria-hidden="true"></i></td><td><span><a href="https://github.com/CircleCI-Public/Orb-Template/blob/main/src/%40orb.yml" target="_blank" rel="noopener noreferrer" data-testid="external-link" class="css-x7gnkn"> <!-- -->@orb.yml<span color="currentColor" class="css-1ie5e7y"><svg role="img" focusable="false" viewBox="0 0 24 24" aria-label="New Window Link" data-testid="external-icon" class="css-qzco2h"><path fill-rule="evenodd" d="M9,4 L15,4 L15.0752385,4.00278786 L15.2007255,4.02024007 L15.3121422,4.04973808 L15.4232213,4.09367335 L15.5207085,4.14599544 L15.6170221,4.21292768 L15.7071408,4.29291093 C15.7425006,4.32828725 15.7746868,4.3656744 15.8036651,4.40469337 L15.8753285,4.51593788 L15.9287742,4.62866395 L15.9641546,4.73400701 L15.9932723,4.88337887 L16,5 L16,11 C16,11.5522847 15.5522847,12 15,12 C14.4871642,12 14.0644928,11.6139598 14.0067277,11.1166211 L14,11 L14,7.414 L10.0502525,11.363961 C9.65972827,11.7544853 9.02656329,11.7544853 8.63603899,11.363961 C8.27555502,11.0034771 8.24782547,10.436246 8.55285035,10.0439548 L8.63603895,9.94974748 L12.585,5.999 L9,6 C8.48716416,6 8.06449284,5.61395981 8.00672773,5.11662113 L8,5 C8,4.48716416 8.38604019,4.06449284 8.88337887,4.00672773 L9,4 Z"></path></svg></span></a></span></td></tr></tbody></table></div> <p>In order to <em>pack</em> an orb, an <span><a data-testid="link" href="/docs/orb-author/#orbyml" class="css-x7gnkn"> <!-- -->@orb.yml</a></span> file must be present. The <code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">@</code> signifies the <em>root</em> of our orb project. Within the same directory, you can include additional directories for each orb component’s type, such as <span><a data-testid="link" href="/docs/reusing-config/#authoring-reusable-commands" class="css-x7gnkn"> <!-- -->commands</a></span>, <span><a data-testid="link" href="/docs/reusing-config/#authoring-parameterized-jobs" class="css-x7gnkn"> <!-- -->jobs</a></span>, <span><a data-testid="link" href="/docs/reusing-config/#authoring-reusable-executors" class="css-x7gnkn"> <!-- -->executors</a></span>, and <span><a data-testid="link" href="/docs/orb-concepts/#usage-examples" class="css-x7gnkn"> <!-- -->examples</a></span>. Any additional files or folders will be safely ignored.</p> <p>Additionally, the <em>pack</em> command provides a special pre-processor for orb developers that allows you to import code from external files using the <span><a data-testid="link" href="/docs/orb-concepts/#file-include-syntax" class="css-x7gnkn"> <!-- -->file include syntax</a></span> (<code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">&lt;&lt;include(file)&gt;&gt;</code>).</p> <p><strong>CLI command</strong></p> <p><code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">circleci orb pack &lt;dir&gt; &gt; orb.yml</code></p> <p>For orb development kit users, this step is handled automatically.</p> <div><div class="css-1gt1ibw"><h2 id="file-include-syntax" data-testid="title-file-include-syntax" class="css-sycgw4">File include syntax</h2></div></div> <p>The <code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">file include</code> syntax (<code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">&lt;&lt;include(dir/file)&gt;&gt;</code>) is a special config enhancement that allows you to import the contents of a file in place as the value for any key within a CircleCI orb configuration file. The <code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">&lt;&lt;include(dir/file)&gt;&gt;</code> syntax is a special key for use with the <span><a data-testid="link" href="/docs/orb-concepts/#orb-packing" class="css-x7gnkn"> <code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">circleci orb pack</code> command</a></span> and <em>will not</em> work more widely on CircleCI.</p> <p>When <code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">circleci orb pack &lt;dir&gt; &gt; orb.yml</code> is run against a directory containing an <code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">@orb.yml</code> file, the pack command begins to combine the contents of the files into a single <code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">orb.yml</code> file. During the packing process, each instance of the <code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">&lt;&lt;include(dir/file)&gt;&gt;</code> value will be replaced by the contents of the file referenced within.</p> <div class="css-bdwfpm"><div data-testid="compass-warning-alert" role="alert" aria-live="polite" class="css-1wj9qpq"><div class="css-1i7vmqf"><div color="#BF8532" class="css-1xk4zua"><svg role="img" focusable="false" viewBox="0 0 24 24" aria-label="Warning" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="css-bleycz"><path d="M21.7961 18.7493C21.9297 18.9776 22 19.2367 22 19.5006C22 20.3287 21.3215 21 20.4846 21H3.51564C3.24902 21 2.98712 20.9304 2.75638 20.7982C2.03208 20.3833 1.78485 19.466 2.20418 18.7493L10.6887 4.24842C10.8213 4.02168 11.0117 3.8333 11.2409 3.70203C11.9652 3.28712 12.8923 3.53174 13.3116 4.24842L21.7961 18.7493ZM12 18C12.5523 18 13 17.5523 13 17C13 16.4477 12.5523 16 12 16C11.4477 16 11 16.4477 11 17C11 17.5523 11.4477 18 12 18ZM11 13C11 13.5523 11.4477 14 12 14C12.5523 14 13 13.5523 13 13V8.9957C13 8.44341 12.5523 7.9957 12 7.9957C11.4477 7.9957 11 8.44341 11 8.9957V13Z"></path></svg></div><div id="collapsible-flex" class="css-45kv77"><div class="css-seohoz"><span class="css-1c1tyii">Included files are always referenced from the relative location of the <code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">@orb.yml</code> file.</span></div><div class="css-1828gbe"> <!-- --> </div><div class="css-1828gbe"> <!-- --> </div></div></div></div></div> <div data-testid="compass-tabs" class="css-bdwfpm"><div class="css-bdwfpm"><div id="groupName-fileInclude-tabs" role="tablist" aria-label="Tabs" class="css-1utggbq"><div class="css-1h7v07b"><button id="groupName-fileInclude-Command-yaml" tabindex="0" aria-selected="false" role="tab" type="button" class="css-1h2mcfj">Command-yaml</button><button id="groupName-fileInclude-file-sh" tabindex="0" aria-selected="false" role="tab" type="button" class="css-1h2mcfj">file-sh</button><button id="groupName-fileInclude-Packed-Command-yaml" tabindex="0" aria-selected="false" role="tab" type="button" class="css-1h2mcfj">Packed Command-yaml</button></div></div><div id="groupName-fileInclude-Command-yaml-panel" hidden="" style="display:none" role="tabpanel" tabindex="0" aria-labelledby="groupName-fileInclude-Command-yaml" class="css-c4at1j"><div class="groupName-fileInclude tabName-Command-yaml language-yaml highlighter-rouge"><div class="highlight"><pre class="highlight"><code class="" data-testid="code-snippet-highlight">description: A simple command that imports from a file when packed. steps: - run: name: Hello Greeting command: &lt;&lt;include(scripts/file.sh)&gt;&gt; </code></pre></div></div></div><div id="groupName-fileInclude-file-sh-panel" hidden="" style="display:none" role="tabpanel" tabindex="0" aria-labelledby="groupName-fileInclude-file-sh" class="css-c4at1j"><div class="groupName-fileInclude tabName-file-sh language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code class="" data-testid="code-snippet-highlight"># This is a bash file, but could really be any text-based file echo &quot;Hello World&quot; </code></pre></div></div></div><div id="groupName-fileInclude-Packed-Command-yaml-panel" hidden="" style="display:none" role="tabpanel" tabindex="0" aria-labelledby="groupName-fileInclude-Packed-Command-yaml" class="css-c4at1j"><div class="groupName-fileInclude tabName-Packed_Command-yaml language-yaml highlighter-rouge"><div class="highlight"><pre class="highlight"><code class="" data-testid="code-snippet-highlight">description: A simple command that imports from a file when packed. steps: - run: name: Hello Greeting command: | # This is a bash file, but could really be any text-based file echo &quot;Hello World&quot; </code></pre></div></div></div></div></div> <!-- --> <!-- --> <p>File inclusion is especially useful for separating your configuration’s bash logic from your yaml. Including bash scripts will allow you to develop and test your bash outside of your orb.</p> <p>View more about including bash scripts in the <span><a data-testid="link" href="/docs/orb-author/#scripts" class="css-x7gnkn"> <!-- -->Orb Author</a></span> guide.</p> <div><div class="css-1gt1ibw"><h2 id="using-orbs-within-your-orb-and-register-time-resolution" data-testid="title-using-orbs-within-your-orb-and-register-time-resolution" class="css-sycgw4">Using orbs within your orb and register-time resolution</h2></div></div> <p>An orbs stanza can be used inside an orb. Because production orb releases are immutable, the system will resolve all orb dependencies at the time you register your orb rather than at the time you run your build.</p> <p>For example, orb <code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">foo/bar</code> is published at version 1.2.3 with an orbs stanza that imports <code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">biz/baz@volatile</code>. At the time you register <code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">foo/bar@1.2.3</code> the system will resolve <code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">biz/baz@volatile</code> as the latest version and include its elements directly into the packaged version of <code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">foo/bar@1.2.3</code>.</p> <p>If <code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">biz/baz</code> is updated to <code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">3.0.0</code>, anyone using <code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">foo/bar@1.2.3</code> will not see the change from <code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">biz/baz@3.0.0</code> until <code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">foo/bar</code> is published at a higher version than <code class="language-plaintext highlighter-rouge" data-testid="code-snippet-highlight">1.2.3</code>.</p> <p>Orb elements may be composed directly with elements of other orbs. For example, you may have an orb that looks like the example below.</p> <div class="language-yaml highlighter-rouge"><div class="highlight"><pre class="highlight"><code class="" data-testid="code-snippet-highlight">version: 2.1 orbs: some-orb: some-ns/some-orb@volatile executors: my-executor: some-orb/their-executor commands: my-command: some-orb/their-command jobs: my-job: some-orb/their-job another-job: executor: my-executor steps: - my-command: param1: &quot;hello&quot; </code></pre></div></div> <div><div class="css-1gt1ibw"><h2 id="see-also" data-testid="title-see-also" class="css-sycgw4">See also</h2></div></div> <ul> <li>Refer to <span><a data-testid="link" href="/docs/orb-intro/" class="css-x7gnkn"> <!-- -->Orb Introduction</a></span> for a high-level overview of CircleCI orbs.</li> <li>Refer to <span><a data-testid="link" href="/docs/reusing-config/" class="css-x7gnkn"> <!-- -->Orbs Reference</a></span> for detailed reference information about Orbs, including descriptions of commands, jobs and executors.</li> <li>Refer to <span><a data-testid="link" href="/docs/orbs-faq/" class="css-x7gnkn"> <!-- -->Orbs FAQs</a></span> for information on frequent issues encountered when using orbs.</li> </ul></div><style data-emotion-css="7hkygd">.css-7hkygd{margin:1.25rem 0;}</style><section class="css-7hkygd"><hr/><style data-emotion-css="19dgxp1">.css-19dgxp1{box-sizing:border-box;min-width:0;margin:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;gap:4rem;}</style><div class="css-19dgxp1"><div class="css-qcooo9"><style data-emotion-css="2xshll">.css-2xshll{margin-bottom:1.25rem;margin-top:10px;}</style><style data-emotion-css="xvmmyz">.css-xvmmyz{box-sizing:border-box;min-width:0;margin:0;color:#161616;font-size:1.25rem;font-weight:500;line-height:1.4;margin-bottom:1.25rem;margin-top:10px;}</style><h4 class="css-xvmmyz">Suggest an edit to this page</h4><span><a href="https://github.com/circleci/circleci-docs/blob/master/jekyll/_cci2/orb-concepts.md" target="_blank" rel="noopener noreferrer" data-testid="external-link" class="css-x7gnkn"><style data-emotion-css="v3gaol">.css-v3gaol{width:20px;height:20px;min-width:20px;color:currentColor;}</style><div size="20" color="currentColor" class="css-v3gaol"><svg role="img" focusable="false" viewBox="0 0 24 24" aria-label="Git Pull Request" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="css-bleycz"><path fill-rule="evenodd" clip-rule="evenodd" d="M11.2929 5.29289C10.9024 5.68342 10.9024 6.31658 11.2929 6.70711L14.2929 9.70711C14.6834 10.0976 15.3166 10.0976 15.7071 9.70711C16.0976 9.31658 16.0976 8.68342 15.7071 8.29289L14.4142 7H16C16.5523 7 17 7.44772 17 8V15.1449C15.5543 15.5752 14.5 16.9145 14.5 18.5C14.5 20.433 16.067 22 18 22C19.933 22 21.5 20.433 21.5 18.5C21.5 16.9145 20.4457 15.5752 19 15.1449V8C19 6.34315 17.6569 5 16 5H14.4142L15.7071 3.70711C16.0976 3.31658 16.0976 2.68342 15.7071 2.29289C15.3166 1.90237 14.6834 1.90237 14.2929 2.29289L11.2929 5.29289ZM5 6.5C5 5.67157 5.67157 5 6.5 5C7.32843 5 8 5.67157 8 6.5C8 7.32843 7.32843 8 6.5 8C5.67157 8 5 7.32843 5 6.5ZM7.5 9.85506C8.94574 9.42479 10 8.08551 10 6.5C10 4.567 8.433 3 6.5 3C4.567 3 3 4.567 3 6.5C3 8.08551 4.05426 9.42479 5.5 9.85506V15.1449C4.05426 15.5752 3 16.9145 3 18.5C3 20.433 4.567 22 6.5 22C8.433 22 10 20.433 10 18.5C10 16.9145 8.94574 15.5752 7.5 15.1449V9.85506ZM6.5 17C5.67157 17 5 17.6716 5 18.5C5 19.3284 5.67157 20 6.5 20C7.32843 20 8 19.3284 8 18.5C8 17.6716 7.32843 17 6.5 17ZM18 17C17.1716 17 16.5 17.6716 16.5 18.5C16.5 19.3284 17.1716 20 18 20C18.8284 20 19.5 19.3284 19.5 18.5C19.5 17.6716 18.8284 17 18 17Z"></path></svg></div>Make a contribution<span color="currentColor" class="css-1ie5e7y"><svg role="img" focusable="false" viewBox="0 0 24 24" aria-label="New Window Link" data-testid="external-icon" class="css-qzco2h"><path fill-rule="evenodd" d="M9,4 L15,4 L15.0752385,4.00278786 L15.2007255,4.02024007 L15.3121422,4.04973808 L15.4232213,4.09367335 L15.5207085,4.14599544 L15.6170221,4.21292768 L15.7071408,4.29291093 C15.7425006,4.32828725 15.7746868,4.3656744 15.8036651,4.40469337 L15.8753285,4.51593788 L15.9287742,4.62866395 L15.9641546,4.73400701 L15.9932723,4.88337887 L16,5 L16,11 C16,11.5522847 15.5522847,12 15,12 C14.4871642,12 14.0644928,11.6139598 14.0067277,11.1166211 L14,11 L14,7.414 L10.0502525,11.363961 C9.65972827,11.7544853 9.02656329,11.7544853 8.63603899,11.363961 C8.27555502,11.0034771 8.24782547,10.436246 8.55285035,10.0439548 L8.63603895,9.94974748 L12.585,5.999 L9,6 C8.48716416,6 8.06449284,5.61395981 8.00672773,5.11662113 L8,5 C8,4.48716416 8.38604019,4.06449284 8.88337887,4.00672773 L9,4 Z"></path></svg></span></a></span><span><a href="https://github.com/circleci/circleci-docs/blob/master/docs/CONTRIBUTING.md#contributing-to-circleci-docs" target="_blank" rel="noopener noreferrer" data-testid="external-link" class="css-x7gnkn"><div size="20" color="currentColor" class="css-v3gaol"><svg role="img" focusable="false" viewBox="0 0 24 24" aria-label="Approve" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="css-bleycz"><path d="M11.6386 8.85709C12.8363 7.34424 13.4053 5.22606 13.646 4.06665L13.7732 4.07643C14.4084 4.17391 14.8302 4.7616 14.7024 5.41633C14.4483 6.60149 13.9857 8.63287 13.3427 9.78242C12.6912 10.8929 13.5638 12.1818 14.7 12.1818H19.7728C19.8058 12.1818 19.8657 12.1981 19.9247 12.2571C19.9838 12.3162 20 12.3761 20 12.4091C20 12.4421 19.9838 12.5021 19.9247 12.5611C19.8657 12.6201 19.8058 12.6364 19.7728 12.6364H18.9546C18.4023 12.6364 17.9546 13.0841 17.9546 13.6364C17.9546 14.1887 18.4023 14.6364 18.9546 14.6364C18.9876 14.6364 19.0475 14.6526 19.1066 14.7117C19.1656 14.7707 19.1819 14.8306 19.1819 14.8637C19.1819 14.8967 19.1656 14.9566 19.1066 15.0156C19.0475 15.0747 18.9876 15.0909 18.9546 15.0909H18.1364C17.5841 15.0909 17.1364 15.5386 17.1364 16.0909C17.1364 16.6432 17.5841 17.0909 18.1364 17.0909C18.1694 17.0909 18.2293 17.1072 18.2884 17.1662C18.3474 17.2253 18.3637 17.2852 18.3637 17.3182C18.3637 17.3512 18.3474 17.4111 18.2884 17.4702C18.2293 17.5292 18.1694 17.5455 18.1364 17.5455H17.3182C16.7659 17.5455 16.3182 17.9932 16.3182 18.5455C16.3182 19.0978 16.7659 19.5455 17.3182 19.5455C17.3512 19.5455 17.4112 19.5617 17.4702 19.6208C17.5292 19.6798 17.5455 19.7397 17.5455 19.7727C17.5455 19.8058 17.5292 19.8657 17.4702 19.9247C17.4112 19.9838 17.3512 20 17.3182 20H11.5091C10.2295 20 9.29059 19.6463 8.68113 19.3077C8.42899 19.1676 8.23214 19.0294 8.09094 18.9187V12.225L8.16104 12.1662C8.42917 11.941 8.79898 11.6259 9.20579 11.2661C10.0043 10.5597 10.9987 9.63447 11.6265 8.87209L11.6386 8.85709ZM21.1819 14.8637C21.1819 14.6341 21.1449 14.4113 21.0768 14.2009C21.6321 13.7912 22 13.1338 22 12.4091C22 11.2023 20.9796 10.1818 19.7728 10.1818H15.3766C16.0315 8.72943 16.4529 6.79313 16.6597 5.82775L16.6624 5.81432C17.0203 4.02485 15.8184 2.33119 14.014 2.09061C13.9956 2.08815 13.9771 2.08621 13.9585 2.08478L13.3703 2.03953C12.5717 1.9781 11.8938 2.5452 11.7592 3.29181C11.5854 4.25625 11.0994 6.31052 10.0764 7.60821C9.55796 8.23586 8.67438 9.06591 7.88064 9.76807C7.83197 9.81112 7.78384 9.85352 7.73636 9.89519C7.46121 9.5701 7.05016 9.36371 6.59091 9.36371H3.5C2.67157 9.36371 2 10.0353 2 10.8637V20.5001C2 21.3285 2.67157 22.0001 3.5 22.0001H6.59091C7.177 22.0001 7.68459 21.6639 7.93139 21.1739C8.785 21.6089 9.98048 22 11.5091 22H17.3182C18.525 22 19.5455 20.9796 19.5455 19.7727C19.5455 19.5432 19.5086 19.3203 19.4404 19.11C19.9957 18.7003 20.3637 18.0429 20.3637 17.3182C20.3637 17.0886 20.3267 16.8658 20.2586 16.6555C20.8139 16.2458 21.1819 15.5883 21.1819 14.8637ZM4 20.0001V11.3637H6.09091V20.0001H4Z"></path></svg></div> <!-- -->Learn how to contribute<span color="currentColor" class="css-1ie5e7y"><svg role="img" focusable="false" viewBox="0 0 24 24" aria-label="New Window Link" data-testid="external-icon" class="css-qzco2h"><path fill-rule="evenodd" d="M9,4 L15,4 L15.0752385,4.00278786 L15.2007255,4.02024007 L15.3121422,4.04973808 L15.4232213,4.09367335 L15.5207085,4.14599544 L15.6170221,4.21292768 L15.7071408,4.29291093 C15.7425006,4.32828725 15.7746868,4.3656744 15.8036651,4.40469337 L15.8753285,4.51593788 L15.9287742,4.62866395 L15.9641546,4.73400701 L15.9932723,4.88337887 L16,5 L16,11 C16,11.5522847 15.5522847,12 15,12 C14.4871642,12 14.0644928,11.6139598 14.0067277,11.1166211 L14,11 L14,7.414 L10.0502525,11.363961 C9.65972827,11.7544853 9.02656329,11.7544853 8.63603899,11.363961 C8.27555502,11.0034771 8.24782547,10.436246 8.55285035,10.0439548 L8.63603895,9.94974748 L12.585,5.999 L9,6 C8.48716416,6 8.06449284,5.61395981 8.00672773,5.11662113 L8,5 C8,4.48716416 8.38604019,4.06449284 8.88337887,4.00672773 L9,4 Z"></path></svg></span></a></span></div><div class="css-qcooo9"><h4 class="css-xvmmyz">Still need help?</h4><span><a href="https://discuss.circleci.com/" target="_blank" rel="noopener noreferrer" data-testid="external-link" class="css-x7gnkn"><div size="24" color="currentColor" class="css-19wtgi5"><svg role="img" focusable="false" viewBox="0 0 24 24" aria-label="Organization" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="css-bleycz"><path d="M22 15.5417V16C22 16.5523 21.5523 17 21 17H18.5V15.5417C18.5 14.6783 18.045 14.0192 17.39 13.5292C18.5364 13.4276 22 13.9336 22 15.5417ZM18.4576 11.75C17.4498 11.75 16.6364 10.9683 16.6364 10C16.6364 9.03167 17.4498 8.25 18.4576 8.25C19.4653 8.25 20.2727 9.03167 20.2727 10C20.2727 10.9683 19.4653 11.75 18.4576 11.75ZM6.61 13.5292C5.95504 14.0192 5.5 14.6783 5.5 15.5417V17H3C2.44772 17 2 16.5523 2 16V15.5417C2 13.8811 5.33594 13.4163 6.61 13.5292ZM5.54242 11.75C4.53468 11.75 3.72727 10.9683 3.72727 10C3.72727 9.03167 4.53468 8.25 5.54242 8.25C6.55016 8.25 7.36364 9.03167 7.36364 10C7.36364 10.9683 6.55016 11.75 5.54242 11.75ZM12 12.625C13.8156 12.625 16.5 13.5756 16.5 15.4688V16.5C16.5 17.0523 16.0523 17.5 15.5 17.5H8.49998C7.9477 17.5 7.49998 17.0523 7.49998 16.5V15.4688C7.49998 13.5756 10.1844 12.625 12 12.625ZM12.0042 11.3563C10.6185 11.3563 9.5 10.2717 9.5 8.92813C9.5 7.58456 10.6185 6.5 12.0042 6.5C13.3898 6.5 14.5 7.58456 14.5 8.92813C14.5 10.2717 13.3898 11.3563 12.0042 11.3563Z"></path></svg></div> <!-- -->Ask the CircleCI community<span color="currentColor" class="css-1ie5e7y"><svg role="img" focusable="false" viewBox="0 0 24 24" aria-label="New Window Link" data-testid="external-icon" class="css-qzco2h"><path fill-rule="evenodd" d="M9,4 L15,4 L15.0752385,4.00278786 L15.2007255,4.02024007 L15.3121422,4.04973808 L15.4232213,4.09367335 L15.5207085,4.14599544 L15.6170221,4.21292768 L15.7071408,4.29291093 C15.7425006,4.32828725 15.7746868,4.3656744 15.8036651,4.40469337 L15.8753285,4.51593788 L15.9287742,4.62866395 L15.9641546,4.73400701 L15.9932723,4.88337887 L16,5 L16,11 C16,11.5522847 15.5522847,12 15,12 C14.4871642,12 14.0644928,11.6139598 14.0067277,11.1166211 L14,11 L14,7.414 L10.0502525,11.363961 C9.65972827,11.7544853 9.02656329,11.7544853 8.63603899,11.363961 C8.27555502,11.0034771 8.24782547,10.436246 8.55285035,10.0439548 L8.63603895,9.94974748 L12.585,5.999 L9,6 C8.48716416,6 8.06449284,5.61395981 8.00672773,5.11662113 L8,5 C8,4.48716416 8.38604019,4.06449284 8.88337887,4.00672773 L9,4 Z"></path></svg></span></a></span><span><a data-testid="link" href="https://circleci.com/research" class="css-x7gnkn"><div size="24" color="currentColor" class="css-19wtgi5"><svg role="img" focusable="false" viewBox="0 0 24 24" aria-label="Suggestion Lightbulb" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="css-bleycz"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.96 3C12.96 2.44772 12.5123 2 11.96 2C11.4077 2 10.96 2.44772 10.96 3V4.43C10.96 4.98228 11.4077 5.43 11.96 5.43C12.5123 5.43 12.96 4.98228 12.96 4.43V3ZM16.2341 14.5901C16.2572 14.5555 16.275 14.5291 16.2868 14.5118L16.3592 14.3965C16.4802 14.1732 16.584 13.9411 16.6697 13.7021C16.8716 13.1555 16.9733 12.577 16.97 11.9943L16.9698 11.9792C16.954 11.2218 16.7664 10.478 16.421 9.80378C16.0757 9.12958 15.5817 8.54266 14.9763 8.08734C14.3709 7.63202 13.67 7.3202 12.9264 7.17544C12.1829 7.03067 11.4162 7.05674 10.6842 7.25168C9.95218 7.44662 9.27405 7.80533 8.70099 8.30072C8.12793 8.79611 7.67492 9.41523 7.37617 10.1113C7.07742 10.8074 6.94074 11.5623 6.97645 12.319C7.01216 13.0756 7.21932 13.8143 7.5823 14.4792L7.65423 14.593C7.66538 14.6093 7.68239 14.6344 7.70443 14.6672C7.74853 14.7329 7.81255 14.8297 7.88981 14.9503C8.04494 15.1925 8.25052 15.5264 8.45469 15.896C8.66041 16.2684 8.85554 16.6607 8.99681 17.022C9.14607 17.4037 9.20002 17.6639 9.20002 17.8C9.20002 18.3478 9.64074 18.7936 10.1885 18.7999L13.6585 18.8399C13.9257 18.843 14.183 18.739 14.373 18.5512C14.5631 18.3633 14.67 18.1072 14.67 17.84C14.67 17.7085 14.7255 17.444 14.8826 17.0473C15.0306 16.6735 15.2349 16.2652 15.4499 15.8768C15.6633 15.4913 15.8781 15.1416 16.0402 14.8876C16.121 14.761 16.1879 14.6594 16.2341 14.5901ZM12.5442 9.13858C12.0981 9.05172 11.6381 9.06736 11.1989 9.18432C10.7597 9.30128 10.3528 9.51651 10.0089 9.81374C9.66511 10.111 9.39331 10.4825 9.21406 10.9001C9.03481 11.3178 8.9528 11.7707 8.97422 12.2247C8.9949 12.663 9.11145 13.0911 9.31542 13.4792C9.32861 13.4985 9.34532 13.5232 9.36514 13.5527C9.4162 13.6288 9.48812 13.7375 9.57398 13.8716C9.7451 14.1388 9.97452 14.5111 10.2054 14.929C10.4346 15.3441 10.6745 15.8206 10.8595 16.2937C10.923 16.4561 10.9848 16.6299 11.0379 16.8096L12.8402 16.8304C12.895 16.6494 12.9583 16.4744 13.0231 16.3108C13.2144 15.8278 13.4626 15.3373 13.7001 14.9082C13.9392 14.4762 14.1769 14.0896 14.3542 13.8118C14.4431 13.6724 14.5176 13.5592 14.5704 13.4801C14.5915 13.4484 14.6092 13.4222 14.623 13.4018C14.6867 13.2797 14.742 13.1533 14.7883 13.0236L14.7923 13.0124C14.9108 12.6926 14.9711 12.3542 14.9701 12.0132C14.9595 11.5614 14.847 11.1178 14.641 10.7156C14.4338 10.3111 14.1374 9.95891 13.7741 9.68572C13.4109 9.41252 12.9903 9.22543 12.5442 9.13858ZM9.22998 21C9.22998 20.4477 9.6777 20 10.23 20H13.69C14.2423 20 14.69 20.4477 14.69 21C14.69 21.5523 14.2423 22 13.69 22H10.23C9.6777 22 9.22998 21.5523 9.22998 21ZM19.0071 4.9129C19.3976 5.30342 19.3976 5.93658 19.0071 6.32711L17.9971 7.33711C17.6066 7.72763 16.9734 7.72763 16.5829 7.33711C16.1923 6.94659 16.1923 6.31342 16.5829 5.9229L17.5929 4.9129C17.9834 4.52237 18.6166 4.52237 19.0071 4.9129ZM19.5 10.96C18.9477 10.96 18.5 11.4077 18.5 11.96C18.5 12.5123 18.9477 12.96 19.5 12.96H20.92C21.4723 12.96 21.92 12.5123 21.92 11.96C21.92 11.4077 21.4723 10.96 20.92 10.96H19.5ZM4.91289 4.9129C5.30341 4.52237 5.93658 4.52237 6.3271 4.9129L7.3371 5.9229C7.72763 6.31342 7.72763 6.94659 7.3371 7.33711C6.94658 7.72763 6.31341 7.72763 5.92289 7.33711L4.91289 6.32711C4.52236 5.93659 4.52236 5.30342 4.91289 4.9129ZM3 10.96C2.44772 10.96 2 11.4077 2 11.96C2 12.5123 2.44772 12.96 3 12.96H4.43C4.98228 12.96 5.43 12.5123 5.43 11.96C5.43 11.4077 4.98228 10.96 4.43 10.96H3Z"></path></svg></div> <!-- -->Join the research community</a></span><span><a href="https://support.circleci.com/" target="_blank" rel="noopener noreferrer" data-testid="external-link" class="css-x7gnkn"><div size="24" color="currentColor" class="css-19wtgi5"><svg role="img" focusable="false" viewBox="0 0 24 24" aria-label="Support" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="css-bleycz"><path fill-rule="evenodd" clip-rule="evenodd" d="M3 7C3 5.89543 3.89543 5 5 5H20C21.1046 5 22 5.89543 22 7V15C22 16.1046 21.1046 17 20 17H6.70588L3.88597 20.4242C3.58776 20.7863 3 20.5754 3 20.1063V15V10.7583V7ZM7.5 13C8.32843 13 9 12.3284 9 11.5C9 10.6716 8.32843 10 7.5 10C6.67157 10 6 10.6716 6 11.5C6 12.3284 6.67157 13 7.5 13ZM14 11.5C14 12.3284 13.3284 13 12.5 13C11.6716 13 11 12.3284 11 11.5C11 10.6716 11.6716 10 12.5 10C13.3284 10 14 10.6716 14 11.5ZM17.5 13C18.3284 13 19 12.3284 19 11.5C19 10.6716 18.3284 10 17.5 10C16.6716 10 16 10.6716 16 11.5C16 12.3284 16.6716 13 17.5 13Z"></path></svg></div> <!-- -->Visit our Support site<span color="currentColor" class="css-1ie5e7y"><svg role="img" focusable="false" viewBox="0 0 24 24" aria-label="New Window Link" data-testid="external-icon" class="css-qzco2h"><path fill-rule="evenodd" d="M9,4 L15,4 L15.0752385,4.00278786 L15.2007255,4.02024007 L15.3121422,4.04973808 L15.4232213,4.09367335 L15.5207085,4.14599544 L15.6170221,4.21292768 L15.7071408,4.29291093 C15.7425006,4.32828725 15.7746868,4.3656744 15.8036651,4.40469337 L15.8753285,4.51593788 L15.9287742,4.62866395 L15.9641546,4.73400701 L15.9932723,4.88337887 L16,5 L16,11 C16,11.5522847 15.5522847,12 15,12 C14.4871642,12 14.0644928,11.6139598 14.0067277,11.1166211 L14,11 L14,7.414 L10.0502525,11.363961 C9.65972827,11.7544853 9.02656329,11.7544853 8.63603899,11.363961 C8.27555502,11.0034771 8.24782547,10.436246 8.55285035,10.0439548 L8.63603895,9.94974748 L12.585,5.999 L9,6 C8.48716416,6 8.06449284,5.61395981 8.00672773,5.11662113 L8,5 C8,4.48716416 8.38604019,4.06449284 8.88337887,4.00672773 L9,4 Z"></path></svg></span></a></span></div></div></section></div></div></div></div></div></div> </article><style data-emotion-css="18c0lxf">.css-18c0lxf{padding:3rem 0;}</style><style data-emotion-css="1ccmuz">.css-1ccmuz{box-sizing:border-box;min-width:0;margin:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;padding:3rem 0;}</style><footer class="css-1ccmuz"><style data-emotion-css="1s092o">.css-1s092o{width:100%;background:#FFFFFF;}@media (max-width:768px){.css-1s092o{margin-left:0;width:100%;}}</style><div class="css-1s092o"><style data-emotion-css="mrk95c">.css-mrk95c{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;border-top:2px solid #343434;padding:1.5rem 0 1.75rem;}@media (min-width:992px){.css-mrk95c{padding:1rem 0;}}.css-mrk95c:first-of-type{border-top:none;}@media (max-width:768px){.css-mrk95c:first-of-type{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}}</style><div class="css-mrk95c"><a href="https://circleci.com/docs/" data-testid="footer-circleci-logo" class="css-si22pm"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 100" width="126" class="css-1yqyrw2"><circle fill="#161616" cx="30.44" cy="52.5" r="7.471"></circle><path fill="#161616" d="M30.44 21.124c-14.619 0-26.903 10-30.388 23.532-.03.119-.052.244-.052.373 0 .825.669 1.494 1.494 1.494h12.651c.603 0 1.118-.358 1.354-.873 0 0 .019-.035.025-.052 2.608-5.628 8.304-9.533 14.914-9.533 9.077 0 16.436 7.357 16.436 16.435S39.517 68.935 30.44 68.935c-6.61 0-12.305-3.905-14.914-9.532-.007-.018-.026-.053-.026-.053a1.489 1.489 0 0 0-1.354-.873H1.495c-.826 0-1.495.669-1.495 1.494 0 .129.021.254.052.373C3.537 73.876 15.821 83.876 30.44 83.876c17.329 0 31.376-14.048 31.376-31.376S47.769 21.124 30.44 21.124zM112.482 59.855h-4.268a.919.919 0 0 0-.729.361c-2.479 3.664-6.671 6.074-11.428 6.074-7.617 0-13.791-6.175-13.791-13.791 0-7.617 6.174-13.792 13.791-13.792 4.758 0 8.949 2.412 11.429 6.075a.916.916 0 0 0 .728.361h4.268a.92.92 0 0 0 .921-.919.91.91 0 0 0-.101-.413c-3.18-6.299-9.706-10.621-17.244-10.621-10.663 0-19.309 8.645-19.309 19.309 0 10.663 8.646 19.309 19.309 19.309 7.538 0 14.064-4.322 17.243-10.621a.914.914 0 0 0 .102-.413.92.92 0 0 0-.921-.919zM125.355 26.756a3.678 3.678 0 1 1-7.357 0 3.678 3.678 0 0 1 7.357 0zm-.919 43.213V34.11h-5.517v35.858a.92.92 0 0 0 .919.919h3.679a.918.918 0 0 0 .919-.918zM148.355 33.214c-5.564.262-10.008 2.921-12.887 6.981v-5.166a.92.92 0 0 0-.919-.919h-3.678a.92.92 0 0 0-.919.919v34.939c0 .508.41.919.919.919h3.678a.918.918 0 0 0 .919-.919V52.5c0-7.308 5.686-13.286 12.871-13.76a.921.921 0 0 0 .921-.922v-3.686a.92.92 0 0 0-.905-.918zM184.992 59.855h-4.268a.916.916 0 0 0-.729.361c-2.479 3.664-6.671 6.074-11.427 6.074-7.618 0-13.792-6.175-13.792-13.791 0-7.617 6.174-13.792 13.792-13.792 4.756 0 8.948 2.412 11.427 6.075a.917.917 0 0 0 .729.361h4.268a.92.92 0 0 0 .921-.919.898.898 0 0 0-.102-.413c-3.179-6.299-9.705-10.621-17.242-10.621-10.664 0-19.309 8.645-19.309 19.309 0 10.663 8.645 19.309 19.309 19.309 7.537 0 14.063-4.322 17.242-10.621a.914.914 0 0 0 .102-.413.92.92 0 0 0-.921-.919zM196.025 22.158h-3.678a.92.92 0 0 0-.919.919v46.892c0 .508.411.919.919.919h3.678a.92.92 0 0 0 .92-.919V23.077a.92.92 0 0 0-.92-.919zM221.771 33.191c-10.664 0-19.309 8.645-19.309 19.309 0 10.663 8.645 19.309 19.309 19.309 7.538 0 14.062-4.322 17.242-10.621a.913.913 0 0 0-.819-1.332h-4.267a.913.913 0 0 0-.741.379c-2.48 3.653-6.666 6.057-11.415 6.057-6.993 0-12.767-5.206-13.667-11.952h32.031a.92.92 0 0 0 .917-.873c.016-.32.026-.643.026-.966 0-10.665-8.644-19.31-19.307-19.31zm-13.292 15.631c1.61-5.83 6.949-10.114 13.292-10.114s11.681 4.284 13.292 10.114h-26.584zM294.483 21.239a5.517 5.517 0 1 0 0 11.034 5.517 5.517 0 0 0 0-11.034zm4.598 12.871v35.858a.92.92 0 0 1-.919.919h-7.356a.918.918 0 0 1-.919-.919V34.11h9.194zM265.902 71.809c9.014 0 16.576-6.176 18.706-14.524a.832.832 0 0 0 .023-.187.92.92 0 0 0-.919-.92h-7.782a.919.919 0 0 0-.834.537l-.002-.001c-1.599 3.48-5.11 5.899-9.192 5.899-5.584 0-10.113-4.527-10.113-10.113s4.529-10.113 10.113-10.113a10.11 10.11 0 0 1 9.192 5.899l.002-.002a.92.92 0 0 0 .834.538h7.782a.92.92 0 0 0 .919-.92.944.944 0 0 0-.022-.184c-2.128-8.35-9.693-14.527-18.707-14.527-10.661 0-19.308 8.646-19.308 19.309.001 10.664 8.647 19.309 19.308 19.309z"></path></svg><style data-emotion-css="1hbtu16">.css-1hbtu16{color:#161616;font-size:1.5rem;font-weight:300;-webkit-letter-spacing:0.01em;-moz-letter-spacing:0.01em;-ms-letter-spacing:0.01em;letter-spacing:0.01em;line-height:1.50;margin-left:0.5rem;text-align:center;-webkit-text-decoration:none;text-decoration:none;}@media (max-width:768px){.css-1hbtu16{display:inline;}}</style><div color="#161616" class="css-1hbtu16">Docs</div></a><style data-emotion-css="1val13a">.css-1val13a{margin-left:-1rem;margin-right:-1rem;padding:0 1rem 0 1rem;}</style><div class="css-1val13a"><style data-emotion-css="6kxz8c">.css-6kxz8c{font-size:1.5rem;line-height:1.5rem;padding-top:0.5rem;}</style><div class="css-6kxz8c"><style data-emotion-css="1y68cb7">.css-1y68cb7{margin-left:20px;}.css-1y68cb7 a{color:#343434;}</style><span class="css-1y68cb7"><a href="https://circleci.com/blog/feed.xml" target="_blank" rel="noopener noreferrer" data-testid="footer-media-0" class="css-x7gnkn"><style data-emotion-css="6ahvz3">.css-6ahvz3{width:25px;height:auto;}</style><svg aria-labelledby="svg-inline--fa-title-JiBgCWrSv4zy" data-prefix="fas" data-icon="rss" class="svg-inline--fa fa-rss css-6ahvz3" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" aria-hidden="true"><title id="svg-inline--fa-title-JiBgCWrSv4zy">CircleCI RSS feed</title><path fill="currentColor" d="M25.57 176.1C12.41 175.4 .9117 185.2 .0523 198.4s9.173 24.65 22.39 25.5c120.1 7.875 225.7 112.7 233.6 233.6C256.9 470.3 267.4 480 279.1 480c.5313 0 1.062-.0313 1.594-.0625c13.22-.8438 23.25-12.28 22.39-25.5C294.6 310.3 169.7 185.4 25.57 176.1zM32 32C14.33 32 0 46.31 0 64s14.33 32 32 32c194.1 0 352 157.9 352 352c0 17.69 14.33 32 32 32s32-14.31 32-32C448 218.6 261.4 32 32 32zM63.1 351.9C28.63 351.9 0 380.6 0 416s28.63 64 63.1 64s64.08-28.62 64.08-64S99.37 351.9 63.1 351.9z"></path></svg></a></span><span class="css-1y68cb7"><a href="https://www.facebook.com/circleci" target="_blank" rel="noopener noreferrer" data-testid="footer-media-1" class="css-x7gnkn"><svg aria-labelledby="svg-inline--fa-title-HVSfdny7WGLM" data-prefix="fab" data-icon="facebook-square" class="svg-inline--fa fa-facebook-square css-6ahvz3" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" aria-hidden="true"><title id="svg-inline--fa-title-HVSfdny7WGLM">CircleCI Facebook</title><path fill="currentColor" d="M400 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h137.3V327.7h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.27c-30.81 0-40.42 19.12-40.42 38.73V256h68.78l-11 71.69h-57.78V480H400a48 48 0 0 0 48-48V80a48 48 0 0 0 -48-48z"></path></svg></a></span><span class="css-1y68cb7"><a href="https://twitter.com/circleci" target="_blank" rel="noopener noreferrer" data-testid="footer-media-2" class="css-x7gnkn"><svg aria-labelledby="svg-inline--fa-title-TPB8ehfY2Kti" data-prefix="fab" data-icon="twitter" class="svg-inline--fa fa-twitter css-6ahvz3" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" aria-hidden="true"><title id="svg-inline--fa-title-TPB8ehfY2Kti">CircleCI Twitter</title><path fill="currentColor" d="M459.4 151.7c.325 4.548 .325 9.097 .325 13.65 0 138.7-105.6 298.6-298.6 298.6-59.45 0-114.7-17.22-161.1-47.11 8.447 .974 16.57 1.299 25.34 1.299 49.06 0 94.21-16.57 130.3-44.83-46.13-.975-84.79-31.19-98.11-72.77 6.498 .974 12.99 1.624 19.82 1.624 9.421 0 18.84-1.3 27.61-3.573-48.08-9.747-84.14-51.98-84.14-102.1v-1.299c13.97 7.797 30.21 12.67 47.43 13.32-28.26-18.84-46.78-51.01-46.78-87.39 0-19.49 5.197-37.36 14.29-52.95 51.65 63.67 129.3 105.3 216.4 109.8-1.624-7.797-2.599-15.92-2.599-24.04 0-57.83 46.78-104.9 104.9-104.9 30.21 0 57.5 12.67 76.67 33.14 23.72-4.548 46.46-13.32 66.6-25.34-7.798 24.37-24.37 44.83-46.13 57.83 21.12-2.273 41.58-8.122 60.43-16.24-14.29 20.79-32.16 39.31-52.63 54.25z"></path></svg></a></span><span class="css-1y68cb7"><a href="https://github.com/circleci" target="_blank" rel="noopener noreferrer" data-testid="footer-media-3" class="css-x7gnkn"><svg aria-labelledby="svg-inline--fa-title-i7fu6UR2Jzg0" data-prefix="fab" data-icon="github" class="svg-inline--fa fa-github css-6ahvz3" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512" aria-hidden="true"><title id="svg-inline--fa-title-i7fu6UR2Jzg0">CircleCI GitHub</title><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.9zM244.8 8C106.1 8 0 113.3 0 252c0 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.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.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.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"></path></svg></a></span><span class="css-1y68cb7"><a href="https://twitch.tv/circleci" target="_blank" rel="noopener noreferrer" data-testid="footer-media-4" class="css-x7gnkn"><svg aria-labelledby="svg-inline--fa-title-5dXGvDjZj5rH" data-prefix="fab" data-icon="twitch" class="svg-inline--fa fa-twitch css-6ahvz3" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" aria-hidden="true"><title id="svg-inline--fa-title-5dXGvDjZj5rH">CircleCI Twitch</title><path fill="currentColor" d="M391.2 103.5H352.5v109.7h38.63zM285 103H246.4V212.8H285zM120.8 0 24.31 91.42V420.6H140.1V512l96.53-91.42h77.25L487.7 256V0zM449.1 237.8l-77.22 73.12H294.6l-67.6 64v-64H140.1V36.58H449.1z"></path></svg></a></span><span class="css-1y68cb7"><a href="https://www.linkedin.com/company/circleci" target="_blank" rel="noopener noreferrer" data-testid="footer-media-5" class="css-x7gnkn"><svg aria-labelledby="svg-inline--fa-title-jDnn3Sg18qR1" data-prefix="fab" data-icon="linkedin-in" class="svg-inline--fa fa-linkedin-in css-6ahvz3" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" aria-hidden="true"><title id="svg-inline--fa-title-jDnn3Sg18qR1">CircleCI LinkedIn</title><path fill="currentColor" d="M100.3 448H7.4V148.9h92.88zM53.79 108.1C24.09 108.1 0 83.5 0 53.8a53.79 53.79 0 0 1 107.6 0c0 29.7-24.1 54.3-53.79 54.3zM447.9 448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29 0-55.69 37.7-55.69 76.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5 42.69-48.3 87.88-48.3 94 0 111.3 61.9 111.3 142.3V448z"></path></svg></a></span></div></div></div><div class="css-mrk95c"><style data-emotion-css="181qfh3">@media (max-width:1200px){.css-181qfh3{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;text-align:center;}}</style><nav class="css-181qfh3"><style data-emotion-css="t24vho">.css-t24vho{margin:0 -0.75rem;padding:0;list-style:none;}@media (min-width:768px){.css-t24vho{margin-right:0;}}.css-t24vho li{display:inline-block;margin:0 0.75rem 0.25rem;}</style><ul class="css-t24vho"><li><style data-emotion-css="1eiuvq9">.css-1eiuvq9 a{color:#343434;font-weight:500;}</style><span class="css-1eiuvq9"><a href="https://circleci.com/terms-of-service/" target="_blank" rel="noopener noreferrer" data-testid="footer-policy-0" class="css-x7gnkn">Terms of Use</a></span></li><li><span class="css-1eiuvq9"><a href="https://circleci.com/legal/privacy/" target="_blank" rel="noopener noreferrer" data-testid="footer-policy-1" class="css-x7gnkn">Privacy Policy</a></span></li><li><span class="css-1eiuvq9"><a href="https://circleci.com/legal/cookie-policy/" target="_blank" rel="noopener noreferrer" data-testid="footer-policy-2" class="css-x7gnkn">Cookie Policy</a></span></li><li><span class="css-1eiuvq9"><a href="https://circleci.com/security/" target="_blank" rel="noopener noreferrer" data-testid="footer-policy-3" class="css-x7gnkn">Security</a></span></li></ul></nav><style data-emotion-css="1ra2zmg">.css-1ra2zmg{margin-bottom:0.25rem;color:#6A6A6A;}@media (max-width:1200px){.css-1ra2zmg{margin-top:1rem;text-align:center;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}}</style><div data-testid="current-year" class="css-1ra2zmg">© 2024 Circle Internet Services, Inc., All Rights Reserved.</div></div></div></footer></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"error":null,"content":"\u003cul id=\"markdown-toc\"\u003e \u003cli\u003e\u003ca href=\"#orb-configuration-elements\" id=\"markdown-toc-orb-configuration-elements\"\u003eOrb configuration elements\u003c/a\u003e \u003cul\u003e \u003cli\u003e\u003ca href=\"#commands\" id=\"markdown-toc-commands\"\u003eCommands\u003c/a\u003e\u003c/li\u003e \u003cli\u003e\u003ca href=\"#executors\" id=\"markdown-toc-executors\"\u003eExecutors\u003c/a\u003e \u003cul\u003e \u003cli\u003e\u003ca href=\"#executor-definition-example\" id=\"markdown-toc-executor-definition-example\"\u003eExecutor definition example\u003c/a\u003e\u003c/li\u003e \u003c/ul\u003e \u003c/li\u003e \u003cli\u003e\u003ca href=\"#jobs\" id=\"markdown-toc-jobs\"\u003eJobs\u003c/a\u003e\u003c/li\u003e \u003cli\u003e\u003ca href=\"#usage-examples\" id=\"markdown-toc-usage-examples\"\u003eUsage examples\u003c/a\u003e\u003c/li\u003e \u003c/ul\u003e \u003c/li\u003e \u003cli\u003e\u003ca href=\"#namespaces\" id=\"markdown-toc-namespaces\"\u003eNamespaces\u003c/a\u003e\u003c/li\u003e \u003cli\u003e\u003ca href=\"#semantic-versioning\" id=\"markdown-toc-semantic-versioning\"\u003eSemantic versioning\u003c/a\u003e\u003c/li\u003e \u003cli\u003e\u003ca href=\"#orb-versions-development-vs-production-vs-inline\" id=\"markdown-toc-orb-versions-development-vs-production-vs-inline\"\u003eOrb versions (development vs production vs inline)\u003c/a\u003e \u003cul\u003e \u003cli\u003e\u003ca href=\"#production-orbs\" id=\"markdown-toc-production-orbs\"\u003eProduction orbs\u003c/a\u003e\u003c/li\u003e \u003cli\u003e\u003ca href=\"#development-orbs\" id=\"markdown-toc-development-orbs\"\u003eDevelopment orbs\u003c/a\u003e\u003c/li\u003e \u003cli\u003e\u003ca href=\"#inline-orbs\" id=\"markdown-toc-inline-orbs\"\u003eInline orbs\u003c/a\u003e\u003c/li\u003e \u003c/ul\u003e \u003c/li\u003e \u003cli\u003e\u003ca href=\"#private-orbs-vs-public-orbs\" id=\"markdown-toc-private-orbs-vs-public-orbs\"\u003ePrivate orbs vs. public orbs\u003c/a\u003e \u003cul\u003e \u003cli\u003e\u003ca href=\"#private-orbs\" id=\"markdown-toc-private-orbs\"\u003ePrivate orbs\u003c/a\u003e\u003c/li\u003e \u003cli\u003e\u003ca href=\"#authoring-orbs\" id=\"markdown-toc-authoring-orbs\"\u003eAuthoring orbs\u003c/a\u003e\u003c/li\u003e \u003c/ul\u003e \u003c/li\u003e \u003cli\u003e\u003ca href=\"#orb-packing\" id=\"markdown-toc-orb-packing\"\u003eOrb packing\u003c/a\u003e\u003c/li\u003e \u003cli\u003e\u003ca href=\"#file-include-syntax\" id=\"markdown-toc-file-include-syntax\"\u003eFile include syntax\u003c/a\u003e\u003c/li\u003e \u003cli\u003e\u003ca href=\"#using-orbs-within-your-orb-and-register-time-resolution\" id=\"markdown-toc-using-orbs-within-your-orb-and-register-time-resolution\"\u003eUsing orbs within your orb and register-time resolution\u003c/a\u003e\u003c/li\u003e \u003cli\u003e\u003ca href=\"#see-also\" id=\"markdown-toc-see-also\"\u003eSee also\u003c/a\u003e\u003c/li\u003e \u003c/ul\u003e \u003cp\u003e\u003ca href=\"https://circleci.com/orbs/\"\u003eCircleCI orbs\u003c/a\u003e are shareable packages of configuration elements, including \u003ca href=\"/docs/reusing-config/#authoring-parameterized-jobs\"\u003ejobs\u003c/a\u003e, \u003ca href=\"/docs/reusing-config/#authoring-reusable-commands\"\u003ecommands\u003c/a\u003e, and \u003ca href=\"/docs/reusing-config/#authoring-reusable-executors\"\u003eexecutors\u003c/a\u003e. Orbs make writing and customizing CircleCI config simple. The reusable configuration elements used in orbs are explained fully in the \u003ca href=\"/docs/reusing-config/\"\u003eReusable Configuration Reference\u003c/a\u003e.\u003c/p\u003e \u003ch2 id=\"orb-configuration-elements\"\u003eOrb configuration elements\u003c/h2\u003e \u003cp\u003eCircleCI’s \u003ca href=\"/docs/reusing-config/\"\u003eReusable Configuration\u003c/a\u003e features allow you to define parameterizable configuration elements and re-use those elements throughout a project config file. It is recommended you become familiar with the full \u003ca href=\"/docs/configuration-reference/\"\u003eConfiguration Reference\u003c/a\u003e features before moving on to the \u003ca href=\"/docs/reusing-config/\"\u003eReusable Configuration Reference\u003c/a\u003e.\u003c/p\u003e \u003ch3 id=\"commands\"\u003eCommands\u003c/h3\u003e \u003cp\u003eCommands contain one or more steps in which \u003ca href=\"/docs/reusing-config/#using-the-parameters-declaration\"\u003eparameters\u003c/a\u003e can be used to modify behavior. Commands are the logic of orbs and are responsible for executing steps such as \u003ca href=\"/docs/configuration-reference/#checkout\"\u003echecking out code\u003c/a\u003e, or running shell code, for example, running bash or CLI tools. For more information see the \u003ca href=\"/docs/reusing-config/#authoring-reusable-commands\"\u003eAuthoring Reusable Commands\u003c/a\u003e guide.\u003c/p\u003e \u003cp\u003eAs an example, the AWS S3 orb includes a \u003cem\u003ecommand\u003c/em\u003e to copy a file or object to a new location: \u003ccode class=\"language-plaintext highlighter-rouge\"\u003eaws-s3/copy\u003c/code\u003e. If your AWS authentication details are stored as environment variables, the syntax to use this command in your config is simply:\u003c/p\u003e \u003cdiv class=\"language-yaml highlighter-rouge\"\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"highlight\"\u003e\u003ccode\u003e\u003cspan class=\"na\"\u003eversion\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"m\"\u003e2.1\u003c/span\u003e\n\n\u003cspan class=\"na\"\u003eorbs\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003eaws-s3\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s\"\u003ecircleci/aws-s3@4.1.0\u003c/span\u003e\n\n\u003cspan class=\"na\"\u003ejobs\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003ebuild\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003edocker\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"pi\"\u003e-\u003c/span\u003e \u003cspan class=\"na\"\u003eimage\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s1\"\u003e'\u003c/span\u003e\u003cspan class=\"s\"\u003ecimg/python:3.6'\u003c/span\u003e\n \u003cspan class=\"na\"\u003esteps\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"pi\"\u003e-\u003c/span\u003e \u003cspan class=\"s\"\u003echeckout\u003c/span\u003e\n \u003cspan class=\"pi\"\u003e-\u003c/span\u003e \u003cspan class=\"na\"\u003erun\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s\"\u003emkdir bucket \u0026amp;\u0026amp; echo \"lorem ipsum\" \u0026gt; bucket/build_asset.txt\u003c/span\u003e\n \u003cspan class=\"c1\"\u003e# using the aws-s3 orb's \"copy\" command.\u003c/span\u003e\n \u003cspan class=\"pi\"\u003e-\u003c/span\u003e \u003cspan class=\"na\"\u003eaws-s3/copy\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003efrom\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s\"\u003ebucket/build_asset.txt\u003c/span\u003e\n \u003cspan class=\"na\"\u003eto\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s1\"\u003e'\u003c/span\u003e\u003cspan class=\"s\"\u003es3://my-s3-bucket-name'\u003c/span\u003e\n\n \u003cspan class=\"c1\"\u003e#... workflows , other jobs etc.\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/div\u003e \u003cp\u003eSee the \u003ca href=\"https://circleci.com/developer/orbs/orb/circleci/aws-s3#commands\"\u003eAWS-S3 Orb\u003c/a\u003e page in the registry for more information.\u003c/p\u003e \u003ch3 id=\"executors\"\u003eExecutors\u003c/h3\u003e \u003cp\u003eExecutors are parameterized execution environments in which \u003ca href=\"/docs/orb-concepts/#jobs\"\u003ejobs\u003c/a\u003e can be run. CircleCI provides multiple \u003ca href=\"/docs/configuration-reference/#executor-job\"\u003eexecutor options\u003c/a\u003e:\u003c/p\u003e \u003cul\u003e \u003cli\u003eDocker\u003c/li\u003e \u003cli\u003emacOS\u003c/li\u003e \u003cli\u003eWindows\u003c/li\u003e \u003cli\u003eMachine (Linux VM)\u003c/li\u003e \u003c/ul\u003e \u003cp\u003eExecutors defined within orbs can be used to run jobs within your project configuration, or within the jobs defined in the orb.\u003c/p\u003e \u003ch4 id=\"executor-definition-example\"\u003eExecutor definition example\u003c/h4\u003e \u003cdiv class=\"language-yaml tab executor Node-Docker highlighter-rouge\"\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"highlight\"\u003e\u003ccode\u003e\u003cspan class=\"na\"\u003edescription\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"pi\"\u003e\u0026gt;\u003c/span\u003e\n \u003cspan class=\"s\"\u003eSelect the version of NodeJS to use. Uses CircleCI's highly cached convenience\u003c/span\u003e\n \u003cspan class=\"s\"\u003eimages built for CI.\u003c/span\u003e\n\u003cspan class=\"na\"\u003edocker\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"pi\"\u003e-\u003c/span\u003e \u003cspan class=\"na\"\u003eimage\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s1\"\u003e'\u003c/span\u003e\u003cspan class=\"s\"\u003ecimg/node:\u0026lt;\u0026lt;parameters.tag\u0026gt;\u0026gt;'\u003c/span\u003e\n\u003cspan class=\"na\"\u003eparameters\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003etag\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003edefault\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s1\"\u003e'\u003c/span\u003e\u003cspan class=\"s\"\u003e13.11'\u003c/span\u003e\n \u003cspan class=\"na\"\u003edescription\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"pi\"\u003e\u0026gt;\u003c/span\u003e\n \u003cspan class=\"s\"\u003ePick a specific cimg/node image version tag:\u003c/span\u003e\n \u003cspan class=\"s\"\u003ehttps://circleci.com/developer/images/image/cimg/node\u003c/span\u003e\n \u003cspan class=\"na\"\u003etype\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s\"\u003estring\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/div\u003e \u003cdiv class=\"language-yaml tab executor Ruby-Docker highlighter-rouge\"\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"highlight\"\u003e\u003ccode\u003e\u003cspan class=\"na\"\u003edescription\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"pi\"\u003e\u0026gt;\u003c/span\u003e\n \u003cspan class=\"s\"\u003eSelect the version of Ruby to use. Uses CircleCI's highly cached convenience\u003c/span\u003e\n \u003cspan class=\"s\"\u003eimages built for CI.\u003c/span\u003e\n\n \u003cspan class=\"s\"\u003eAny available tag from this list can be used:\u003c/span\u003e\n \u003cspan class=\"s\"\u003ehttps://hub.docker.com/r/cimg/ruby/tags\u003c/span\u003e\n\u003cspan class=\"na\"\u003edocker\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"pi\"\u003e-\u003c/span\u003e \u003cspan class=\"na\"\u003eimage\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s1\"\u003e'\u003c/span\u003e\u003cspan class=\"s\"\u003ecimg/ruby:\u0026lt;\u0026lt;\u003c/span\u003e\u003cspan class=\"nv\"\u003e \u003c/span\u003e\u003cspan class=\"s\"\u003eparameters.tag\u003c/span\u003e\u003cspan class=\"nv\"\u003e \u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026gt;\u0026gt;'\u003c/span\u003e\n\u003cspan class=\"na\"\u003eparameters\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003etag\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003edefault\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s1\"\u003e'\u003c/span\u003e\u003cspan class=\"s\"\u003e2.7'\u003c/span\u003e\n \u003cspan class=\"na\"\u003edescription\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s\"\u003eThe `circleci/ruby` Docker image version tag.\u003c/span\u003e\n \u003cspan class=\"na\"\u003etype\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s\"\u003estring\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/div\u003e \u003cp\u003eIn the \u003ca href=\"https://circleci.com/developer/orbs/orb/circleci/node\"\u003eNode orb\u003c/a\u003e, for example, a parameterized Docker-based executor is provided, through which you can set the Docker tag. This provides a simple way to test applications against any version of Node.js when used with the Node orb’s \u003ca href=\"https://circleci.com/developer/orbs/orb/circleci/node#usage-run_matrix_testing\"\u003etest job\u003c/a\u003e.\u003c/p\u003e \u003cp\u003eFor more information, see the guide to \u003ca href=\"/docs/reusing-config/#authoring-reusable-executors\"\u003eAuthoring Reusable Executors\u003c/a\u003e and the registry page for the \u003ca href=\"https://circleci.com/developer/orbs/orb/circleci/node#executors-default\"\u003eNode Orb\u003c/a\u003e.\u003c/p\u003e \u003ch3 id=\"jobs\"\u003eJobs\u003c/h3\u003e \u003cp\u003e\u003ca href=\"/docs/reusing-config/#authoring-parameterized-jobs\"\u003eJobs\u003c/a\u003e define a collection of \u003ca href=\"/docs/configuration-reference/#steps\"\u003esteps\u003c/a\u003e to be run within a given \u003ca href=\"/docs/orb-concepts/#executors\"\u003eexecutor\u003c/a\u003e, and are orchestrated using \u003ca href=\"/docs/workflows/\"\u003eWorkflows\u003c/a\u003e. Jobs will also individually return their status via \u003ca href=\"/docs/enable-checks/\"\u003eGitHub Checks\u003c/a\u003e.\u003c/p\u003e \u003cp\u003eWhen importing an orb which has jobs, you can reference them directly from your workflows.\u003c/p\u003e \u003cdiv class=\"language-yml highlighter-rouge\"\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"highlight\"\u003e\u003ccode\u003e\u003cspan class=\"na\"\u003eversion\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"m\"\u003e2.1\u003c/span\u003e\n\n\u003cspan class=\"na\"\u003eorbs\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003e\u0026lt;orb\u0026gt;\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026lt;namespace\u0026gt;/\u0026lt;orb\u0026gt;@x.y\u003c/span\u003e \u003cspan class=\"c1\"\u003e#orb version\u003c/span\u003e\n\n\u003cspan class=\"na\"\u003eworkflows\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003euse-orb-job\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003ejobs\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"pi\"\u003e-\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026lt;orb\u0026gt;/\u0026lt;job-name\u0026gt;\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/div\u003e \u003cp\u003eSee the \u003ca href=\"/docs/reusing-config/#authoring-parameterized-jobs\"\u003eAuthoring Reusable Jobs\u003c/a\u003e guide for more information, and the \u003ca href=\"https://circleci.com/developer/orbs/orb/circleci/node#usage-run_matrix_testing\"\u003eUsing Node Test Job\u003c/a\u003e example in the orb registry.\u003c/p\u003e \u003ch3 id=\"usage-examples\"\u003eUsage examples\u003c/h3\u003e \u003cp\u003eUsing the \u003ca href=\"/docs/orb-development-kit\"\u003eorb development kit\u003c/a\u003e, adding a new usage example is as simple as creating a new file \u003ccode class=\"language-plaintext highlighter-rouge\"\u003ename-of-example.yml\u003c/code\u003e within the orb project’s \u003ca href=\"https://github.com/CircleCI-Public/Orb-Template/tree/main/src/examples\"\u003esrc/examples\u003c/a\u003e directory. Usage examples are not for use in project configuration directly, but are a type of orb metadata to share how a user could best make use of the orb in their configuration. These examples are displayed, for reference purposes, in the \u003ca href=\"https://circleci.com/developer/orbs\"\u003eOrb Registry\u003c/a\u003e. Below is a sample usage example:\u003c/p\u003e \u003cdiv class=\"language-yaml highlighter-rouge\"\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"highlight\"\u003e\u003ccode\u003e\u003cspan class=\"c1\"\u003e# Source https://github.com/circleci-public/Orb-Template/blob/main/src/examples/example.yml\u003c/span\u003e\n\n\u003cspan class=\"na\"\u003edescription\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"pi\"\u003e\u0026gt;\u003c/span\u003e\n \u003cspan class=\"s\"\u003eSample example description.\u003c/span\u003e\n\u003cspan class=\"na\"\u003eusage\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003eversion\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"m\"\u003e2.1\u003c/span\u003e\n \u003cspan class=\"na\"\u003eorbs\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003e\u0026lt;orb-name\u0026gt;\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026lt;namespace\u0026gt;/\u0026lt;orb-name\u0026gt;@1.2.3\u003c/span\u003e\n \u003cspan class=\"na\"\u003eworkflows\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003euse-my-orb\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003ejobs\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"pi\"\u003e-\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026lt;orb-name\u0026gt;/\u0026lt;job-name\u0026gt;\u003c/span\u003e\n\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/div\u003e \u003ch2 id=\"namespaces\"\u003eNamespaces\u003c/h2\u003e \u003cp\u003eA \u003cem\u003enamespace\u003c/em\u003e is a unique identifier claimed by a user or organization to group a set of orbs by author. Each user or organization can claim \u003cem\u003eone\u003c/em\u003e unique and immutable namespace. Each namespace can contain many uniquely named orbs.\u003c/p\u003e \u003cp\u003eFor example, the \u003ccode class=\"language-plaintext highlighter-rouge\"\u003ecircleci/rails\u003c/code\u003e orb may coexist in the registry with an orb called \u003ccode class=\"language-plaintext highlighter-rouge\"\u003e\u0026lt;other-namespace\u0026gt;/rails\u003c/code\u003e because they are in separate namespaces.\u003c/p\u003e \u003cp\u003eOrganizations are, by default, limited to claiming only one namespace. This policy is designed to limit name-squatting and namespace noise. If you need to change your namespace, please contact support.\u003c/p\u003e \u003cp\u003eBy default, created namespaces appear as “community” namespaces in the \u003ca href=\"https://circleci.com/developer/orbs\"\u003eOrb Registry\u003c/a\u003e.\u003c/p\u003e \u003ch2 id=\"semantic-versioning\"\u003eSemantic versioning\u003c/h2\u003e \u003cp\u003eOrbs utilize the \u003ca href=\"https://semver.org/\"\u003esemver\u003c/a\u003e release process, in which each orb update follows a standardized versioning pattern that orb authors and users should take advantage of.\u003c/p\u003e \u003cp\u003eIn Semantic versioning, release versions are represented by three integers separated by a \u003ccode class=\"language-plaintext highlighter-rouge\"\u003e.\u003c/code\u003e, where each integer represents a different type of change being added.\u003c/p\u003e \u003cdiv class=\"language-plaintext highlighter-rouge\"\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"highlight\"\u003e\u003ccode\u003e[Major].[Minor].[Patch]\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/div\u003e \u003ctable class=\"table table-striped\"\u003e \u003cthead\u003e \u003ctr\u003e \u003cth\u003eSemver\u003c/th\u003e \u003cth\u003eDescription\u003c/th\u003e \u003c/tr\u003e \u003c/thead\u003e \u003ctbody\u003e \u003ctr\u003e \u003ctd\u003eMajor\u003c/td\u003e \u003ctd\u003eBreaking changes.\u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd\u003eMinor\u003c/td\u003e \u003ctd\u003eBackwards compatible additional features.\u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd\u003ePatch\u003c/td\u003e \u003ctd\u003eBug fixes.\u003c/td\u003e \u003c/tr\u003e \u003c/tbody\u003e \u003c/table\u003e \u003cp\u003eWhen you import an orb, you can pin it to a particular semver component.\u003c/p\u003e \u003ctable class=\"table table-striped\"\u003e \u003cthead\u003e \u003ctr\u003e \u003cth\u003eImported Version\u003c/th\u003e \u003cth\u003eDescription\u003c/th\u003e \u003c/tr\u003e \u003c/thead\u003e \u003ctbody\u003e \u003ctr\u003e \u003ctd\u003e1.2.3\u003c/td\u003e \u003ctd\u003eWill match full semver version. No changes will be introduced.\u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd\u003e1.2\u003c/td\u003e \u003ctd\u003eLocked to major version \u003ccode class=\"language-plaintext highlighter-rouge\"\u003e1\u003c/code\u003e, minor version \u003ccode class=\"language-plaintext highlighter-rouge\"\u003e2\u003c/code\u003e, will receive all patch updates.\u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd\u003e1\u003c/td\u003e \u003ctd\u003eLocked to major version \u003ccode class=\"language-plaintext highlighter-rouge\"\u003e1\u003c/code\u003e. Will receive all minor and patch updates. Major version will not change automatically.\u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd\u003evolatile\u003c/td\u003e \u003ctd\u003e\u003cstrong\u003eNot Recommended\u003c/strong\u003e Will pull the last published version of the orb, may be useful in testing. Not a part of semver versioning.\u003c/td\u003e \u003c/tr\u003e \u003c/tbody\u003e \u003c/table\u003e \u003cp\u003eTo avoid negatively impacting a user’s CI process, orb authors should strictly adhere to semver versioning to ensure no breaking changes are introduced at the \u003ccode class=\"language-plaintext highlighter-rouge\"\u003eminor\u003c/code\u003e or \u003ccode class=\"language-plaintext highlighter-rouge\"\u003epatch\u003c/code\u003e update levels.\u003c/p\u003e \u003cp class=\"alert alert-warning\"\u003e\u003cstrong\u003eNote:\u003c/strong\u003e CircleCI does not currently support non-numeric semantic versioning elements. We suggest that you use either semver-style version strings in x.y.z format, or a development-style version string in dev:* format.\u003c/p\u003e \u003ch2 id=\"orb-versions-development-vs-production-vs-inline\"\u003eOrb versions (development vs production vs inline)\u003c/h2\u003e \u003ch3 id=\"production-orbs\"\u003eProduction orbs\u003c/h3\u003e \u003cp\u003eProduction orbs are immutable and can be found on the \u003ca href=\"https://circleci.com/developer/orbs\"\u003eOrb Registry\u003c/a\u003e.\u003c/p\u003e \u003cul\u003e \u003cli\u003eProduction orbs are immutable, they cannot be deleted or edited, and updates must be provided in a new semver release\u003c/li\u003e \u003cli\u003eVersion string must be in semver format, for example, \u003ccode class=\"language-plaintext highlighter-rouge\"\u003e\u0026lt;namespace\u0026gt;/\u0026lt;orb\u0026gt;@1.2.3\u003c/code\u003e\u003c/li\u003e \u003cli\u003eProduction orbs can only be published by an owner of the namespace organization\u003c/li\u003e \u003cli\u003ePublished to the Orb Registry\u003c/li\u003e \u003cli\u003eOpen source, released under \u003ca href=\"https://circleci.com/developer/orbs/licensing\"\u003eMIT license\u003c/a\u003e\u003c/li\u003e \u003cli\u003eAvailable via CircleCI CLI\u003c/li\u003e \u003c/ul\u003e \u003ch3 id=\"development-orbs\"\u003eDevelopment orbs\u003c/h3\u003e \u003cp\u003eDevelopment orbs are temporary overwrite-able orb tag versions, useful for rapid development and testing prior to deploying a semver deployed production change.\u003c/p\u003e \u003cul\u003e \u003cli\u003eDevelopment orbs are mutable, can be overwritten, and automatically expire 90 days after they are published\u003c/li\u003e \u003cli\u003eVersion string must begin with \u003ccode class=\"language-plaintext highlighter-rouge\"\u003edev:\u003c/code\u003e followed by any string, for example, \u003ccode class=\"language-plaintext highlighter-rouge\"\u003e\u0026lt;namespace\u0026gt;/\u0026lt;orb\u0026gt;@dev:my-feature-branch\u003c/code\u003e\u003c/li\u003e \u003cli\u003eDevelopment orbs may be published by any member of the namespace organization\u003c/li\u003e \u003cli\u003eWill not appear on the Orb Registry\u003c/li\u003e \u003cli\u003eOpen source, released under \u003ca href=\"https://circleci.com/developer/orbs/licensing\"\u003eMIT license\u003c/a\u003e.\u003c/li\u003e \u003cli\u003eAvailable via CircleCI CLI (if the development tag name is known)\u003c/li\u003e \u003c/ul\u003e \u003ch3 id=\"inline-orbs\"\u003eInline orbs\u003c/h3\u003e \u003cp\u003eInline orbs are defined directly within the user’s config, are completely local and scoped to the individual project.\u003c/p\u003e \u003cp\u003e\u003cem\u003e\u003ca href=\"/docs/reusing-config/#writing-inline-orbs\"\u003eSee: Writing Inline Orbs\u003c/a\u003e for more information on inline orbs.\u003c/em\u003e\u003c/p\u003e \u003cul\u003e \u003cli\u003eNot published to the orb service\u003c/li\u003e \u003cli\u003eNo versioning\u003c/li\u003e \u003cli\u003eExist only locally within the user’s config\u003c/li\u003e \u003cli\u003eNot accessible outside of the repository\u003c/li\u003e \u003cli\u003eNot public\u003c/li\u003e \u003cli\u003eNot accessible via CircleCI CLI\u003c/li\u003e \u003c/ul\u003e \u003ch2 id=\"private-orbs-vs-public-orbs\"\u003ePrivate orbs vs. public orbs\u003c/h2\u003e \u003cp\u003eThere are two ways to publish an orb: public or private:\u003c/p\u003e \u003cul\u003e \u003cli\u003eIf you prefer to publish your orb so that only those within your organization can see and use it, you should publish a private orb.\u003c/li\u003e \u003cli\u003eIf you want to publish your orb to the \u003ca href=\"https://circleci.com/developer/orbs\"\u003eCircleCI Orb Registry\u003c/a\u003e for use by anyone, create a public orb.\u003c/li\u003e \u003c/ul\u003e \u003cp\u003ePrivate orbs are described in more detail below.\u003c/p\u003e \u003ch3 id=\"private-orbs\"\u003ePrivate orbs\u003c/h3\u003e \u003cp\u003eAn unlimited amount of private orbs are available on all of CircleCI’s \u003ca href=\"https://circleci.com/pricing\"\u003eplans\u003c/a\u003e. Using a private orb enables you to author an orb while ensuring the following:\u003c/p\u003e \u003cul\u003e \u003cli\u003e \u003cp\u003eYour orb will not appear in the \u003ca href=\"https://circleci.com/developer/orbs\"\u003eCircleCI Orb Registry\u003c/a\u003e unless you have the direct URL and are authenticated with the org that created it.\u003c/p\u003e \u003c/li\u003e \u003cli\u003e \u003cp\u003eYour orb cannot be viewed or used by someone outside of your organization.\u003c/p\u003e \u003c/li\u003e \u003cli\u003e \u003cp\u003eYour orb cannot be used in a pipeline that does not belong to your organization.\u003c/p\u003e \u003c/li\u003e \u003c/ul\u003e \u003cp\u003eBy choosing to use a private orb instead of a public orb, you also need to understand certain inherent limitations, which include:\u003c/p\u003e \u003cul\u003e \u003cli\u003e \u003cp\u003eYou will be unable to use the \u003ccode class=\"language-plaintext highlighter-rouge\"\u003ecircleci config validate\u003c/code\u003e command to validate your configuration. You may, however, use one of the following options:\u003c/p\u003e \u003cul\u003e \u003cli\u003ePaste the content of the orb into the \u003ccode class=\"language-plaintext highlighter-rouge\"\u003eorbs\u003c/code\u003e stanza of your configuration.\u003c/li\u003e \u003cli\u003eUse the \u003ccode class=\"language-plaintext highlighter-rouge\"\u003ecircleci config validate --org-id \u0026lt;your-org-id\u0026gt; \u0026lt;path/to/config.yml\u0026gt;\u003c/code\u003e command to validate your configuration.\u003c/li\u003e \u003c/ul\u003e \u003c/li\u003e \u003cli\u003e \u003cp\u003eYou cannot use private orbs from one organization in another organization’s pipelines, regardless of the relationship between organizations. This means that even if you commit code and start a pipeline, and have the necessary membership in both organizations, you can use a private orb from your configuration file, but not from another orb.\u003c/p\u003e \u003c/li\u003e \u003c/ul\u003e \u003ch3 id=\"authoring-orbs\"\u003eAuthoring orbs\u003c/h3\u003e \u003cp\u003eBoth public and private orbs can be authored in two ways:\u003c/p\u003e \u003cul\u003e \u003cli\u003eUsing the \u003ca href=\"/docs/orb-author-validate-publish/\"\u003eManual Orb Authoring Process\u003c/a\u003e\u003c/li\u003e \u003cli\u003eUsing the \u003ca href=\"/docs/orb-development-kit\"\u003eorb development kit\u003c/a\u003e (recommended)\u003c/li\u003e \u003c/ul\u003e \u003ch2 id=\"orb-packing\"\u003eOrb packing\u003c/h2\u003e \u003cp\u003eAll CircleCI orbs are singular YAML files, typically named \u003ccode class=\"language-plaintext highlighter-rouge\"\u003eorb.yml\u003c/code\u003e. However, for development, it is often easier to break the code up into more manageable chunks. The \u003ccode class=\"language-plaintext highlighter-rouge\"\u003ecircleci orb pack\u003c/code\u003e command, a component of the \u003ca href=\"/docs/orb-development-kit\"\u003eorb development kit\u003c/a\u003e, is used to “pack” or condense the separate YAML files together.\u003c/p\u003e \u003cp class=\"alert alert-warning\"\u003eIf you are using the orb development kit, orb packing is handled automatically, by the included CI/CD pipeline, with the \u003ca href=\"https://circleci.com/developer/orbs/orb/circleci/orb-tools#jobs-pack\"\u003eorb-tools/pack\u003c/a\u003e job.\u003c/p\u003e \u003cp\u003e\u003cstrong\u003e\u003cem\u003eExample: Orb Project Structure\u003c/em\u003e\u003c/strong\u003e\u003c/p\u003e \u003ctable class=\"table table-striped\"\u003e \u003cthead\u003e \u003ctr\u003e \u003cth\u003etype\u003c/th\u003e \u003cth\u003ename\u003c/th\u003e \u003c/tr\u003e \u003c/thead\u003e \u003ctbody\u003e \u003ctr\u003e \u003ctd\u003e\u003ci class=\"fa fa-folder\" aria-hidden=\"true\"\u003e\u003c/i\u003e\u003c/td\u003e \u003ctd\u003e\u003ca href=\"https://github.com/CircleCI-Public/Orb-Template/tree/main/src/commands\"\u003ecommands\u003c/a\u003e\u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd\u003e\u003ci class=\"fa fa-folder\" aria-hidden=\"true\"\u003e\u003c/i\u003e\u003c/td\u003e \u003ctd\u003e\u003ca href=\"https://github.com/CircleCI-Public/Orb-Template/tree/main/src/examples\"\u003eexamples\u003c/a\u003e\u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd\u003e\u003ci class=\"fa fa-folder\" aria-hidden=\"true\"\u003e\u003c/i\u003e\u003c/td\u003e \u003ctd\u003e\u003ca href=\"https://github.com/CircleCI-Public/Orb-Template/tree/main/src/executors\"\u003eexecutors\u003c/a\u003e\u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd\u003e\u003ci class=\"fa fa-folder\" aria-hidden=\"true\"\u003e\u003c/i\u003e\u003c/td\u003e \u003ctd\u003e\u003ca href=\"https://github.com/CircleCI-Public/Orb-Template/tree/main/src/jobs\"\u003ejobs\u003c/a\u003e\u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd\u003e\u003ci class=\"fa fa-file-text-o\" aria-hidden=\"true\"\u003e\u003c/i\u003e\u003c/td\u003e \u003ctd\u003e\u003ca href=\"https://github.com/CircleCI-Public/Orb-Template/blob/main/src/%40orb.yml\"\u003e@orb.yml\u003c/a\u003e\u003c/td\u003e \u003c/tr\u003e \u003c/tbody\u003e \u003c/table\u003e \u003cp\u003eIn order to \u003cem\u003epack\u003c/em\u003e an orb, an \u003ca href=\"/docs/orb-author/#orbyml\"\u003e@orb.yml\u003c/a\u003e file must be present. The \u003ccode class=\"language-plaintext highlighter-rouge\"\u003e@\u003c/code\u003e signifies the \u003cem\u003eroot\u003c/em\u003e of our orb project. Within the same directory, you can include additional directories for each orb component’s type, such as \u003ca href=\"/docs/reusing-config/#authoring-reusable-commands\"\u003ecommands\u003c/a\u003e, \u003ca href=\"/docs/reusing-config/#authoring-parameterized-jobs\"\u003ejobs\u003c/a\u003e, \u003ca href=\"/docs/reusing-config/#authoring-reusable-executors\"\u003eexecutors\u003c/a\u003e, and \u003ca href=\"/docs/orb-concepts/#usage-examples\"\u003eexamples\u003c/a\u003e. Any additional files or folders will be safely ignored.\u003c/p\u003e \u003cp\u003eAdditionally, the \u003cem\u003epack\u003c/em\u003e command provides a special pre-processor for orb developers that allows you to import code from external files using the \u003ca href=\"/docs/orb-concepts/#file-include-syntax\"\u003efile include syntax\u003c/a\u003e (\u003ccode class=\"language-plaintext highlighter-rouge\"\u003e\u0026lt;\u0026lt;include(file)\u0026gt;\u0026gt;\u003c/code\u003e).\u003c/p\u003e \u003cp\u003e\u003cstrong\u003eCLI command\u003c/strong\u003e\u003c/p\u003e \u003cp\u003e\u003ccode class=\"language-plaintext highlighter-rouge\"\u003ecircleci orb pack \u0026lt;dir\u0026gt; \u0026gt; orb.yml\u003c/code\u003e\u003c/p\u003e \u003cp\u003eFor orb development kit users, this step is handled automatically.\u003c/p\u003e \u003ch2 id=\"file-include-syntax\"\u003eFile include syntax\u003c/h2\u003e \u003cp\u003eThe \u003ccode class=\"language-plaintext highlighter-rouge\"\u003efile include\u003c/code\u003e syntax (\u003ccode class=\"language-plaintext highlighter-rouge\"\u003e\u0026lt;\u0026lt;include(dir/file)\u0026gt;\u0026gt;\u003c/code\u003e) is a special config enhancement that allows you to import the contents of a file in place as the value for any key within a CircleCI orb configuration file. The \u003ccode class=\"language-plaintext highlighter-rouge\"\u003e\u0026lt;\u0026lt;include(dir/file)\u0026gt;\u0026gt;\u003c/code\u003e syntax is a special key for use with the \u003ca href=\"#orb-packing\"\u003e\u003ccode class=\"language-plaintext highlighter-rouge\"\u003ecircleci orb pack\u003c/code\u003e command\u003c/a\u003e and \u003cem\u003ewill not\u003c/em\u003e work more widely on CircleCI.\u003c/p\u003e \u003cp\u003eWhen \u003ccode class=\"language-plaintext highlighter-rouge\"\u003ecircleci orb pack \u0026lt;dir\u0026gt; \u0026gt; orb.yml\u003c/code\u003e is run against a directory containing an \u003ccode class=\"language-plaintext highlighter-rouge\"\u003e@orb.yml\u003c/code\u003e file, the pack command begins to combine the contents of the files into a single \u003ccode class=\"language-plaintext highlighter-rouge\"\u003eorb.yml\u003c/code\u003e file. During the packing process, each instance of the \u003ccode class=\"language-plaintext highlighter-rouge\"\u003e\u0026lt;\u0026lt;include(dir/file)\u0026gt;\u0026gt;\u003c/code\u003e value will be replaced by the contents of the file referenced within.\u003c/p\u003e \u003cp class=\"alert alert-warning\"\u003eIncluded files are always referenced from the relative location of the \u003ccode class=\"language-plaintext highlighter-rouge\"\u003e@orb.yml\u003c/code\u003e file.\u003c/p\u003e \u003cdiv class=\"language-yaml tab fileInclude Command-yaml highlighter-rouge\"\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"highlight\"\u003e\u003ccode\u003e\u003cspan class=\"na\"\u003edescription\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s\"\u003eA simple command that imports from a file when packed.\u003c/span\u003e\n\u003cspan class=\"na\"\u003esteps\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"pi\"\u003e-\u003c/span\u003e \u003cspan class=\"na\"\u003erun\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003ename\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s\"\u003eHello Greeting\u003c/span\u003e\n \u003cspan class=\"na\"\u003ecommand\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026lt;\u0026lt;include(scripts/file.sh)\u0026gt;\u0026gt;\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/div\u003e \u003cdiv class=\"language-shell tab fileInclude file-sh highlighter-rouge\"\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"highlight\"\u003e\u003ccode\u003e\u003cspan class=\"c\"\u003e# This is a bash file, but could really be any text-based file\u003c/span\u003e\n\u003cspan class=\"nb\"\u003eecho\u003c/span\u003e \u003cspan class=\"s2\"\u003e\"Hello World\"\u003c/span\u003e\n\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/div\u003e \u003cdiv class=\"language-yaml tab fileInclude Packed_Command-yaml highlighter-rouge\"\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"highlight\"\u003e\u003ccode\u003e\u003cspan class=\"na\"\u003edescription\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s\"\u003eA simple command that imports from a file when packed.\u003c/span\u003e\n\u003cspan class=\"na\"\u003esteps\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"pi\"\u003e-\u003c/span\u003e \u003cspan class=\"na\"\u003erun\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003ename\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s\"\u003eHello Greeting\u003c/span\u003e\n \u003cspan class=\"na\"\u003ecommand\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"pi\"\u003e|\u003c/span\u003e\n \u003cspan class=\"s\"\u003e# This is a bash file, but could really be any text-based file\u003c/span\u003e\n \u003cspan class=\"s\"\u003eecho \"Hello World\"\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/div\u003e \u003cp\u003eFile inclusion is especially useful for separating your configuration’s bash logic from your yaml. Including bash scripts will allow you to develop and test your bash outside of your orb.\u003c/p\u003e \u003cp\u003eView more about including bash scripts in the \u003ca href=\"/docs/orb-author/#scripts\"\u003eOrb Author\u003c/a\u003e guide.\u003c/p\u003e \u003ch2 id=\"using-orbs-within-your-orb-and-register-time-resolution\"\u003eUsing orbs within your orb and register-time resolution\u003c/h2\u003e \u003cp\u003eAn orbs stanza can be used inside an orb. Because production orb releases are immutable, the system will resolve all orb dependencies at the time you register your orb rather than at the time you run your build.\u003c/p\u003e \u003cp\u003eFor example, orb \u003ccode class=\"language-plaintext highlighter-rouge\"\u003efoo/bar\u003c/code\u003e is published at version 1.2.3 with an orbs stanza that imports \u003ccode class=\"language-plaintext highlighter-rouge\"\u003ebiz/baz@volatile\u003c/code\u003e. At the time you register \u003ccode class=\"language-plaintext highlighter-rouge\"\u003efoo/bar@1.2.3\u003c/code\u003e the system will resolve \u003ccode class=\"language-plaintext highlighter-rouge\"\u003ebiz/baz@volatile\u003c/code\u003e as the latest version and include its elements directly into the packaged version of \u003ccode class=\"language-plaintext highlighter-rouge\"\u003efoo/bar@1.2.3\u003c/code\u003e.\u003c/p\u003e \u003cp\u003eIf \u003ccode class=\"language-plaintext highlighter-rouge\"\u003ebiz/baz\u003c/code\u003e is updated to \u003ccode class=\"language-plaintext highlighter-rouge\"\u003e3.0.0\u003c/code\u003e, anyone using \u003ccode class=\"language-plaintext highlighter-rouge\"\u003efoo/bar@1.2.3\u003c/code\u003e will not see the change from \u003ccode class=\"language-plaintext highlighter-rouge\"\u003ebiz/baz@3.0.0\u003c/code\u003e until \u003ccode class=\"language-plaintext highlighter-rouge\"\u003efoo/bar\u003c/code\u003e is published at a higher version than \u003ccode class=\"language-plaintext highlighter-rouge\"\u003e1.2.3\u003c/code\u003e.\u003c/p\u003e \u003cp\u003eOrb elements may be composed directly with elements of other orbs. For example, you may have an orb that looks like the example below.\u003c/p\u003e \u003cdiv class=\"language-yaml highlighter-rouge\"\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"highlight\"\u003e\u003ccode\u003e\u003cspan class=\"na\"\u003eversion\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"m\"\u003e2.1\u003c/span\u003e\n\u003cspan class=\"na\"\u003eorbs\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003esome-orb\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s\"\u003esome-ns/some-orb@volatile\u003c/span\u003e\n\u003cspan class=\"na\"\u003eexecutors\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003emy-executor\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s\"\u003esome-orb/their-executor\u003c/span\u003e\n\u003cspan class=\"na\"\u003ecommands\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003emy-command\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s\"\u003esome-orb/their-command\u003c/span\u003e\n\u003cspan class=\"na\"\u003ejobs\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003emy-job\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s\"\u003esome-orb/their-job\u003c/span\u003e\n \u003cspan class=\"na\"\u003eanother-job\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003eexecutor\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s\"\u003emy-executor\u003c/span\u003e\n \u003cspan class=\"na\"\u003esteps\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"pi\"\u003e-\u003c/span\u003e \u003cspan class=\"na\"\u003emy-command\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003eparam1\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\"\u003c/span\u003e\u003cspan class=\"s\"\u003ehello\"\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/div\u003e \u003ch2 id=\"see-also\"\u003eSee also\u003c/h2\u003e \u003cul\u003e \u003cli\u003eRefer to \u003ca href=\"/docs/orb-intro/\"\u003eOrb Introduction\u003c/a\u003e for a high-level overview of CircleCI orbs.\u003c/li\u003e \u003cli\u003eRefer to \u003ca href=\"/docs/reusing-config/\"\u003eOrbs Reference\u003c/a\u003e for detailed reference information about Orbs, including descriptions of commands, jobs and executors.\u003c/li\u003e \u003cli\u003eRefer to \u003ca href=\"/docs/orbs-faq/\"\u003eOrbs FAQs\u003c/a\u003e for information on frequent issues encountered when using orbs.\u003c/li\u003e \u003c/ul\u003e","frontMatter":{"draft":false,"categories":["getting-started"],"last_modified_at":"20-Nov-24","hide":false,"search":true,"toc":true,"suggested":false,"sitemap":true,"readtime":true,"contentTags":null,"sectionTags":null,"lang":"en","layout":"classic-docs","title":"Orbs Concepts","short-title":"Orbs Concepts","description":"Conceptual Overview for Orbs","verison":["Cloud","Server v4.x","Server v3.x"],"slug":"orb-concepts","ext":".md","tags":[],"excerpt":"","date":"2024-11-30 08:44:32 +0000","content":"\u003cul id=\"markdown-toc\"\u003e \u003cli\u003e\u003ca href=\"#orb-configuration-elements\" id=\"markdown-toc-orb-configuration-elements\"\u003eOrb configuration elements\u003c/a\u003e \u003cul\u003e \u003cli\u003e\u003ca href=\"#commands\" id=\"markdown-toc-commands\"\u003eCommands\u003c/a\u003e\u003c/li\u003e \u003cli\u003e\u003ca href=\"#executors\" id=\"markdown-toc-executors\"\u003eExecutors\u003c/a\u003e \u003cul\u003e \u003cli\u003e\u003ca href=\"#executor-definition-example\" id=\"markdown-toc-executor-definition-example\"\u003eExecutor definition example\u003c/a\u003e\u003c/li\u003e \u003c/ul\u003e \u003c/li\u003e \u003cli\u003e\u003ca href=\"#jobs\" id=\"markdown-toc-jobs\"\u003eJobs\u003c/a\u003e\u003c/li\u003e \u003cli\u003e\u003ca href=\"#usage-examples\" id=\"markdown-toc-usage-examples\"\u003eUsage examples\u003c/a\u003e\u003c/li\u003e \u003c/ul\u003e \u003c/li\u003e \u003cli\u003e\u003ca href=\"#namespaces\" id=\"markdown-toc-namespaces\"\u003eNamespaces\u003c/a\u003e\u003c/li\u003e \u003cli\u003e\u003ca href=\"#semantic-versioning\" id=\"markdown-toc-semantic-versioning\"\u003eSemantic versioning\u003c/a\u003e\u003c/li\u003e \u003cli\u003e\u003ca href=\"#orb-versions-development-vs-production-vs-inline\" id=\"markdown-toc-orb-versions-development-vs-production-vs-inline\"\u003eOrb versions (development vs production vs inline)\u003c/a\u003e \u003cul\u003e \u003cli\u003e\u003ca href=\"#production-orbs\" id=\"markdown-toc-production-orbs\"\u003eProduction orbs\u003c/a\u003e\u003c/li\u003e \u003cli\u003e\u003ca href=\"#development-orbs\" id=\"markdown-toc-development-orbs\"\u003eDevelopment orbs\u003c/a\u003e\u003c/li\u003e \u003cli\u003e\u003ca href=\"#inline-orbs\" id=\"markdown-toc-inline-orbs\"\u003eInline orbs\u003c/a\u003e\u003c/li\u003e \u003c/ul\u003e \u003c/li\u003e \u003cli\u003e\u003ca href=\"#private-orbs-vs-public-orbs\" id=\"markdown-toc-private-orbs-vs-public-orbs\"\u003ePrivate orbs vs. public orbs\u003c/a\u003e \u003cul\u003e \u003cli\u003e\u003ca href=\"#private-orbs\" id=\"markdown-toc-private-orbs\"\u003ePrivate orbs\u003c/a\u003e\u003c/li\u003e \u003cli\u003e\u003ca href=\"#authoring-orbs\" id=\"markdown-toc-authoring-orbs\"\u003eAuthoring orbs\u003c/a\u003e\u003c/li\u003e \u003c/ul\u003e \u003c/li\u003e \u003cli\u003e\u003ca href=\"#orb-packing\" id=\"markdown-toc-orb-packing\"\u003eOrb packing\u003c/a\u003e\u003c/li\u003e \u003cli\u003e\u003ca href=\"#file-include-syntax\" id=\"markdown-toc-file-include-syntax\"\u003eFile include syntax\u003c/a\u003e\u003c/li\u003e \u003cli\u003e\u003ca href=\"#using-orbs-within-your-orb-and-register-time-resolution\" id=\"markdown-toc-using-orbs-within-your-orb-and-register-time-resolution\"\u003eUsing orbs within your orb and register-time resolution\u003c/a\u003e\u003c/li\u003e \u003cli\u003e\u003ca href=\"#see-also\" id=\"markdown-toc-see-also\"\u003eSee also\u003c/a\u003e\u003c/li\u003e \u003c/ul\u003e \u003cp\u003e\u003ca href=\"https://circleci.com/orbs/\"\u003eCircleCI orbs\u003c/a\u003e are shareable packages of configuration elements, including \u003ca href=\"/docs/reusing-config/#authoring-parameterized-jobs\"\u003ejobs\u003c/a\u003e, \u003ca href=\"/docs/reusing-config/#authoring-reusable-commands\"\u003ecommands\u003c/a\u003e, and \u003ca href=\"/docs/reusing-config/#authoring-reusable-executors\"\u003eexecutors\u003c/a\u003e. Orbs make writing and customizing CircleCI config simple. The reusable configuration elements used in orbs are explained fully in the \u003ca href=\"/docs/reusing-config/\"\u003eReusable Configuration Reference\u003c/a\u003e.\u003c/p\u003e \u003ch2 id=\"orb-configuration-elements\"\u003eOrb configuration elements\u003c/h2\u003e \u003cp\u003eCircleCI’s \u003ca href=\"/docs/reusing-config/\"\u003eReusable Configuration\u003c/a\u003e features allow you to define parameterizable configuration elements and re-use those elements throughout a project config file. It is recommended you become familiar with the full \u003ca href=\"/docs/configuration-reference/\"\u003eConfiguration Reference\u003c/a\u003e features before moving on to the \u003ca href=\"/docs/reusing-config/\"\u003eReusable Configuration Reference\u003c/a\u003e.\u003c/p\u003e \u003ch3 id=\"commands\"\u003eCommands\u003c/h3\u003e \u003cp\u003eCommands contain one or more steps in which \u003ca href=\"/docs/reusing-config/#using-the-parameters-declaration\"\u003eparameters\u003c/a\u003e can be used to modify behavior. Commands are the logic of orbs and are responsible for executing steps such as \u003ca href=\"/docs/configuration-reference/#checkout\"\u003echecking out code\u003c/a\u003e, or running shell code, for example, running bash or CLI tools. For more information see the \u003ca href=\"/docs/reusing-config/#authoring-reusable-commands\"\u003eAuthoring Reusable Commands\u003c/a\u003e guide.\u003c/p\u003e \u003cp\u003eAs an example, the AWS S3 orb includes a \u003cem\u003ecommand\u003c/em\u003e to copy a file or object to a new location: \u003ccode class=\"language-plaintext highlighter-rouge\"\u003eaws-s3/copy\u003c/code\u003e. If your AWS authentication details are stored as environment variables, the syntax to use this command in your config is simply:\u003c/p\u003e \u003cdiv class=\"language-yaml highlighter-rouge\"\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"highlight\"\u003e\u003ccode\u003e\u003cspan class=\"na\"\u003eversion\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"m\"\u003e2.1\u003c/span\u003e\n\n\u003cspan class=\"na\"\u003eorbs\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003eaws-s3\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s\"\u003ecircleci/aws-s3@4.1.0\u003c/span\u003e\n\n\u003cspan class=\"na\"\u003ejobs\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003ebuild\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003edocker\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"pi\"\u003e-\u003c/span\u003e \u003cspan class=\"na\"\u003eimage\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s1\"\u003e'\u003c/span\u003e\u003cspan class=\"s\"\u003ecimg/python:3.6'\u003c/span\u003e\n \u003cspan class=\"na\"\u003esteps\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"pi\"\u003e-\u003c/span\u003e \u003cspan class=\"s\"\u003echeckout\u003c/span\u003e\n \u003cspan class=\"pi\"\u003e-\u003c/span\u003e \u003cspan class=\"na\"\u003erun\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s\"\u003emkdir bucket \u0026amp;\u0026amp; echo \"lorem ipsum\" \u0026gt; bucket/build_asset.txt\u003c/span\u003e\n \u003cspan class=\"c1\"\u003e# using the aws-s3 orb's \"copy\" command.\u003c/span\u003e\n \u003cspan class=\"pi\"\u003e-\u003c/span\u003e \u003cspan class=\"na\"\u003eaws-s3/copy\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003efrom\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s\"\u003ebucket/build_asset.txt\u003c/span\u003e\n \u003cspan class=\"na\"\u003eto\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s1\"\u003e'\u003c/span\u003e\u003cspan class=\"s\"\u003es3://my-s3-bucket-name'\u003c/span\u003e\n\n \u003cspan class=\"c1\"\u003e#... workflows , other jobs etc.\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/div\u003e \u003cp\u003eSee the \u003ca href=\"https://circleci.com/developer/orbs/orb/circleci/aws-s3#commands\"\u003eAWS-S3 Orb\u003c/a\u003e page in the registry for more information.\u003c/p\u003e \u003ch3 id=\"executors\"\u003eExecutors\u003c/h3\u003e \u003cp\u003eExecutors are parameterized execution environments in which \u003ca href=\"/docs/orb-concepts/#jobs\"\u003ejobs\u003c/a\u003e can be run. CircleCI provides multiple \u003ca href=\"/docs/configuration-reference/#executor-job\"\u003eexecutor options\u003c/a\u003e:\u003c/p\u003e \u003cul\u003e \u003cli\u003eDocker\u003c/li\u003e \u003cli\u003emacOS\u003c/li\u003e \u003cli\u003eWindows\u003c/li\u003e \u003cli\u003eMachine (Linux VM)\u003c/li\u003e \u003c/ul\u003e \u003cp\u003eExecutors defined within orbs can be used to run jobs within your project configuration, or within the jobs defined in the orb.\u003c/p\u003e \u003ch4 id=\"executor-definition-example\"\u003eExecutor definition example\u003c/h4\u003e \u003cdiv class=\"language-yaml tab executor Node-Docker highlighter-rouge\"\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"highlight\"\u003e\u003ccode\u003e\u003cspan class=\"na\"\u003edescription\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"pi\"\u003e\u0026gt;\u003c/span\u003e\n \u003cspan class=\"s\"\u003eSelect the version of NodeJS to use. Uses CircleCI's highly cached convenience\u003c/span\u003e\n \u003cspan class=\"s\"\u003eimages built for CI.\u003c/span\u003e\n\u003cspan class=\"na\"\u003edocker\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"pi\"\u003e-\u003c/span\u003e \u003cspan class=\"na\"\u003eimage\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s1\"\u003e'\u003c/span\u003e\u003cspan class=\"s\"\u003ecimg/node:\u0026lt;\u0026lt;parameters.tag\u0026gt;\u0026gt;'\u003c/span\u003e\n\u003cspan class=\"na\"\u003eparameters\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003etag\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003edefault\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s1\"\u003e'\u003c/span\u003e\u003cspan class=\"s\"\u003e13.11'\u003c/span\u003e\n \u003cspan class=\"na\"\u003edescription\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"pi\"\u003e\u0026gt;\u003c/span\u003e\n \u003cspan class=\"s\"\u003ePick a specific cimg/node image version tag:\u003c/span\u003e\n \u003cspan class=\"s\"\u003ehttps://circleci.com/developer/images/image/cimg/node\u003c/span\u003e\n \u003cspan class=\"na\"\u003etype\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s\"\u003estring\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/div\u003e \u003cdiv class=\"language-yaml tab executor Ruby-Docker highlighter-rouge\"\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"highlight\"\u003e\u003ccode\u003e\u003cspan class=\"na\"\u003edescription\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"pi\"\u003e\u0026gt;\u003c/span\u003e\n \u003cspan class=\"s\"\u003eSelect the version of Ruby to use. Uses CircleCI's highly cached convenience\u003c/span\u003e\n \u003cspan class=\"s\"\u003eimages built for CI.\u003c/span\u003e\n\n \u003cspan class=\"s\"\u003eAny available tag from this list can be used:\u003c/span\u003e\n \u003cspan class=\"s\"\u003ehttps://hub.docker.com/r/cimg/ruby/tags\u003c/span\u003e\n\u003cspan class=\"na\"\u003edocker\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"pi\"\u003e-\u003c/span\u003e \u003cspan class=\"na\"\u003eimage\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s1\"\u003e'\u003c/span\u003e\u003cspan class=\"s\"\u003ecimg/ruby:\u0026lt;\u0026lt;\u003c/span\u003e\u003cspan class=\"nv\"\u003e \u003c/span\u003e\u003cspan class=\"s\"\u003eparameters.tag\u003c/span\u003e\u003cspan class=\"nv\"\u003e \u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026gt;\u0026gt;'\u003c/span\u003e\n\u003cspan class=\"na\"\u003eparameters\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003etag\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003edefault\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s1\"\u003e'\u003c/span\u003e\u003cspan class=\"s\"\u003e2.7'\u003c/span\u003e\n \u003cspan class=\"na\"\u003edescription\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s\"\u003eThe `circleci/ruby` Docker image version tag.\u003c/span\u003e\n \u003cspan class=\"na\"\u003etype\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s\"\u003estring\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/div\u003e \u003cp\u003eIn the \u003ca href=\"https://circleci.com/developer/orbs/orb/circleci/node\"\u003eNode orb\u003c/a\u003e, for example, a parameterized Docker-based executor is provided, through which you can set the Docker tag. This provides a simple way to test applications against any version of Node.js when used with the Node orb’s \u003ca href=\"https://circleci.com/developer/orbs/orb/circleci/node#usage-run_matrix_testing\"\u003etest job\u003c/a\u003e.\u003c/p\u003e \u003cp\u003eFor more information, see the guide to \u003ca href=\"/docs/reusing-config/#authoring-reusable-executors\"\u003eAuthoring Reusable Executors\u003c/a\u003e and the registry page for the \u003ca href=\"https://circleci.com/developer/orbs/orb/circleci/node#executors-default\"\u003eNode Orb\u003c/a\u003e.\u003c/p\u003e \u003ch3 id=\"jobs\"\u003eJobs\u003c/h3\u003e \u003cp\u003e\u003ca href=\"/docs/reusing-config/#authoring-parameterized-jobs\"\u003eJobs\u003c/a\u003e define a collection of \u003ca href=\"/docs/configuration-reference/#steps\"\u003esteps\u003c/a\u003e to be run within a given \u003ca href=\"/docs/orb-concepts/#executors\"\u003eexecutor\u003c/a\u003e, and are orchestrated using \u003ca href=\"/docs/workflows/\"\u003eWorkflows\u003c/a\u003e. Jobs will also individually return their status via \u003ca href=\"/docs/enable-checks/\"\u003eGitHub Checks\u003c/a\u003e.\u003c/p\u003e \u003cp\u003eWhen importing an orb which has jobs, you can reference them directly from your workflows.\u003c/p\u003e \u003cdiv class=\"language-yml highlighter-rouge\"\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"highlight\"\u003e\u003ccode\u003e\u003cspan class=\"na\"\u003eversion\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"m\"\u003e2.1\u003c/span\u003e\n\n\u003cspan class=\"na\"\u003eorbs\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003e\u0026lt;orb\u0026gt;\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026lt;namespace\u0026gt;/\u0026lt;orb\u0026gt;@x.y\u003c/span\u003e \u003cspan class=\"c1\"\u003e#orb version\u003c/span\u003e\n\n\u003cspan class=\"na\"\u003eworkflows\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003euse-orb-job\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003ejobs\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"pi\"\u003e-\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026lt;orb\u0026gt;/\u0026lt;job-name\u0026gt;\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/div\u003e \u003cp\u003eSee the \u003ca href=\"/docs/reusing-config/#authoring-parameterized-jobs\"\u003eAuthoring Reusable Jobs\u003c/a\u003e guide for more information, and the \u003ca href=\"https://circleci.com/developer/orbs/orb/circleci/node#usage-run_matrix_testing\"\u003eUsing Node Test Job\u003c/a\u003e example in the orb registry.\u003c/p\u003e \u003ch3 id=\"usage-examples\"\u003eUsage examples\u003c/h3\u003e \u003cp\u003eUsing the \u003ca href=\"/docs/orb-development-kit\"\u003eorb development kit\u003c/a\u003e, adding a new usage example is as simple as creating a new file \u003ccode class=\"language-plaintext highlighter-rouge\"\u003ename-of-example.yml\u003c/code\u003e within the orb project’s \u003ca href=\"https://github.com/CircleCI-Public/Orb-Template/tree/main/src/examples\"\u003esrc/examples\u003c/a\u003e directory. Usage examples are not for use in project configuration directly, but are a type of orb metadata to share how a user could best make use of the orb in their configuration. These examples are displayed, for reference purposes, in the \u003ca href=\"https://circleci.com/developer/orbs\"\u003eOrb Registry\u003c/a\u003e. Below is a sample usage example:\u003c/p\u003e \u003cdiv class=\"language-yaml highlighter-rouge\"\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"highlight\"\u003e\u003ccode\u003e\u003cspan class=\"c1\"\u003e# Source https://github.com/circleci-public/Orb-Template/blob/main/src/examples/example.yml\u003c/span\u003e\n\n\u003cspan class=\"na\"\u003edescription\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"pi\"\u003e\u0026gt;\u003c/span\u003e\n \u003cspan class=\"s\"\u003eSample example description.\u003c/span\u003e\n\u003cspan class=\"na\"\u003eusage\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003eversion\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"m\"\u003e2.1\u003c/span\u003e\n \u003cspan class=\"na\"\u003eorbs\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003e\u0026lt;orb-name\u0026gt;\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026lt;namespace\u0026gt;/\u0026lt;orb-name\u0026gt;@1.2.3\u003c/span\u003e\n \u003cspan class=\"na\"\u003eworkflows\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003euse-my-orb\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003ejobs\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"pi\"\u003e-\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026lt;orb-name\u0026gt;/\u0026lt;job-name\u0026gt;\u003c/span\u003e\n\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/div\u003e \u003ch2 id=\"namespaces\"\u003eNamespaces\u003c/h2\u003e \u003cp\u003eA \u003cem\u003enamespace\u003c/em\u003e is a unique identifier claimed by a user or organization to group a set of orbs by author. Each user or organization can claim \u003cem\u003eone\u003c/em\u003e unique and immutable namespace. Each namespace can contain many uniquely named orbs.\u003c/p\u003e \u003cp\u003eFor example, the \u003ccode class=\"language-plaintext highlighter-rouge\"\u003ecircleci/rails\u003c/code\u003e orb may coexist in the registry with an orb called \u003ccode class=\"language-plaintext highlighter-rouge\"\u003e\u0026lt;other-namespace\u0026gt;/rails\u003c/code\u003e because they are in separate namespaces.\u003c/p\u003e \u003cp\u003eOrganizations are, by default, limited to claiming only one namespace. This policy is designed to limit name-squatting and namespace noise. If you need to change your namespace, please contact support.\u003c/p\u003e \u003cp\u003eBy default, created namespaces appear as “community” namespaces in the \u003ca href=\"https://circleci.com/developer/orbs\"\u003eOrb Registry\u003c/a\u003e.\u003c/p\u003e \u003ch2 id=\"semantic-versioning\"\u003eSemantic versioning\u003c/h2\u003e \u003cp\u003eOrbs utilize the \u003ca href=\"https://semver.org/\"\u003esemver\u003c/a\u003e release process, in which each orb update follows a standardized versioning pattern that orb authors and users should take advantage of.\u003c/p\u003e \u003cp\u003eIn Semantic versioning, release versions are represented by three integers separated by a \u003ccode class=\"language-plaintext highlighter-rouge\"\u003e.\u003c/code\u003e, where each integer represents a different type of change being added.\u003c/p\u003e \u003cdiv class=\"language-plaintext highlighter-rouge\"\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"highlight\"\u003e\u003ccode\u003e[Major].[Minor].[Patch]\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/div\u003e \u003ctable class=\"table table-striped\"\u003e \u003cthead\u003e \u003ctr\u003e \u003cth\u003eSemver\u003c/th\u003e \u003cth\u003eDescription\u003c/th\u003e \u003c/tr\u003e \u003c/thead\u003e \u003ctbody\u003e \u003ctr\u003e \u003ctd\u003eMajor\u003c/td\u003e \u003ctd\u003eBreaking changes.\u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd\u003eMinor\u003c/td\u003e \u003ctd\u003eBackwards compatible additional features.\u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd\u003ePatch\u003c/td\u003e \u003ctd\u003eBug fixes.\u003c/td\u003e \u003c/tr\u003e \u003c/tbody\u003e \u003c/table\u003e \u003cp\u003eWhen you import an orb, you can pin it to a particular semver component.\u003c/p\u003e \u003ctable class=\"table table-striped\"\u003e \u003cthead\u003e \u003ctr\u003e \u003cth\u003eImported Version\u003c/th\u003e \u003cth\u003eDescription\u003c/th\u003e \u003c/tr\u003e \u003c/thead\u003e \u003ctbody\u003e \u003ctr\u003e \u003ctd\u003e1.2.3\u003c/td\u003e \u003ctd\u003eWill match full semver version. No changes will be introduced.\u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd\u003e1.2\u003c/td\u003e \u003ctd\u003eLocked to major version \u003ccode class=\"language-plaintext highlighter-rouge\"\u003e1\u003c/code\u003e, minor version \u003ccode class=\"language-plaintext highlighter-rouge\"\u003e2\u003c/code\u003e, will receive all patch updates.\u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd\u003e1\u003c/td\u003e \u003ctd\u003eLocked to major version \u003ccode class=\"language-plaintext highlighter-rouge\"\u003e1\u003c/code\u003e. Will receive all minor and patch updates. Major version will not change automatically.\u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd\u003evolatile\u003c/td\u003e \u003ctd\u003e\u003cstrong\u003eNot Recommended\u003c/strong\u003e Will pull the last published version of the orb, may be useful in testing. Not a part of semver versioning.\u003c/td\u003e \u003c/tr\u003e \u003c/tbody\u003e \u003c/table\u003e \u003cp\u003eTo avoid negatively impacting a user’s CI process, orb authors should strictly adhere to semver versioning to ensure no breaking changes are introduced at the \u003ccode class=\"language-plaintext highlighter-rouge\"\u003eminor\u003c/code\u003e or \u003ccode class=\"language-plaintext highlighter-rouge\"\u003epatch\u003c/code\u003e update levels.\u003c/p\u003e \u003cp class=\"alert alert-warning\"\u003e\u003cstrong\u003eNote:\u003c/strong\u003e CircleCI does not currently support non-numeric semantic versioning elements. We suggest that you use either semver-style version strings in x.y.z format, or a development-style version string in dev:* format.\u003c/p\u003e \u003ch2 id=\"orb-versions-development-vs-production-vs-inline\"\u003eOrb versions (development vs production vs inline)\u003c/h2\u003e \u003ch3 id=\"production-orbs\"\u003eProduction orbs\u003c/h3\u003e \u003cp\u003eProduction orbs are immutable and can be found on the \u003ca href=\"https://circleci.com/developer/orbs\"\u003eOrb Registry\u003c/a\u003e.\u003c/p\u003e \u003cul\u003e \u003cli\u003eProduction orbs are immutable, they cannot be deleted or edited, and updates must be provided in a new semver release\u003c/li\u003e \u003cli\u003eVersion string must be in semver format, for example, \u003ccode class=\"language-plaintext highlighter-rouge\"\u003e\u0026lt;namespace\u0026gt;/\u0026lt;orb\u0026gt;@1.2.3\u003c/code\u003e\u003c/li\u003e \u003cli\u003eProduction orbs can only be published by an owner of the namespace organization\u003c/li\u003e \u003cli\u003ePublished to the Orb Registry\u003c/li\u003e \u003cli\u003eOpen source, released under \u003ca href=\"https://circleci.com/developer/orbs/licensing\"\u003eMIT license\u003c/a\u003e\u003c/li\u003e \u003cli\u003eAvailable via CircleCI CLI\u003c/li\u003e \u003c/ul\u003e \u003ch3 id=\"development-orbs\"\u003eDevelopment orbs\u003c/h3\u003e \u003cp\u003eDevelopment orbs are temporary overwrite-able orb tag versions, useful for rapid development and testing prior to deploying a semver deployed production change.\u003c/p\u003e \u003cul\u003e \u003cli\u003eDevelopment orbs are mutable, can be overwritten, and automatically expire 90 days after they are published\u003c/li\u003e \u003cli\u003eVersion string must begin with \u003ccode class=\"language-plaintext highlighter-rouge\"\u003edev:\u003c/code\u003e followed by any string, for example, \u003ccode class=\"language-plaintext highlighter-rouge\"\u003e\u0026lt;namespace\u0026gt;/\u0026lt;orb\u0026gt;@dev:my-feature-branch\u003c/code\u003e\u003c/li\u003e \u003cli\u003eDevelopment orbs may be published by any member of the namespace organization\u003c/li\u003e \u003cli\u003eWill not appear on the Orb Registry\u003c/li\u003e \u003cli\u003eOpen source, released under \u003ca href=\"https://circleci.com/developer/orbs/licensing\"\u003eMIT license\u003c/a\u003e.\u003c/li\u003e \u003cli\u003eAvailable via CircleCI CLI (if the development tag name is known)\u003c/li\u003e \u003c/ul\u003e \u003ch3 id=\"inline-orbs\"\u003eInline orbs\u003c/h3\u003e \u003cp\u003eInline orbs are defined directly within the user’s config, are completely local and scoped to the individual project.\u003c/p\u003e \u003cp\u003e\u003cem\u003e\u003ca href=\"/docs/reusing-config/#writing-inline-orbs\"\u003eSee: Writing Inline Orbs\u003c/a\u003e for more information on inline orbs.\u003c/em\u003e\u003c/p\u003e \u003cul\u003e \u003cli\u003eNot published to the orb service\u003c/li\u003e \u003cli\u003eNo versioning\u003c/li\u003e \u003cli\u003eExist only locally within the user’s config\u003c/li\u003e \u003cli\u003eNot accessible outside of the repository\u003c/li\u003e \u003cli\u003eNot public\u003c/li\u003e \u003cli\u003eNot accessible via CircleCI CLI\u003c/li\u003e \u003c/ul\u003e \u003ch2 id=\"private-orbs-vs-public-orbs\"\u003ePrivate orbs vs. public orbs\u003c/h2\u003e \u003cp\u003eThere are two ways to publish an orb: public or private:\u003c/p\u003e \u003cul\u003e \u003cli\u003eIf you prefer to publish your orb so that only those within your organization can see and use it, you should publish a private orb.\u003c/li\u003e \u003cli\u003eIf you want to publish your orb to the \u003ca href=\"https://circleci.com/developer/orbs\"\u003eCircleCI Orb Registry\u003c/a\u003e for use by anyone, create a public orb.\u003c/li\u003e \u003c/ul\u003e \u003cp\u003ePrivate orbs are described in more detail below.\u003c/p\u003e \u003ch3 id=\"private-orbs\"\u003ePrivate orbs\u003c/h3\u003e \u003cp\u003eAn unlimited amount of private orbs are available on all of CircleCI’s \u003ca href=\"https://circleci.com/pricing\"\u003eplans\u003c/a\u003e. Using a private orb enables you to author an orb while ensuring the following:\u003c/p\u003e \u003cul\u003e \u003cli\u003e \u003cp\u003eYour orb will not appear in the \u003ca href=\"https://circleci.com/developer/orbs\"\u003eCircleCI Orb Registry\u003c/a\u003e unless you have the direct URL and are authenticated with the org that created it.\u003c/p\u003e \u003c/li\u003e \u003cli\u003e \u003cp\u003eYour orb cannot be viewed or used by someone outside of your organization.\u003c/p\u003e \u003c/li\u003e \u003cli\u003e \u003cp\u003eYour orb cannot be used in a pipeline that does not belong to your organization.\u003c/p\u003e \u003c/li\u003e \u003c/ul\u003e \u003cp\u003eBy choosing to use a private orb instead of a public orb, you also need to understand certain inherent limitations, which include:\u003c/p\u003e \u003cul\u003e \u003cli\u003e \u003cp\u003eYou will be unable to use the \u003ccode class=\"language-plaintext highlighter-rouge\"\u003ecircleci config validate\u003c/code\u003e command to validate your configuration. You may, however, use one of the following options:\u003c/p\u003e \u003cul\u003e \u003cli\u003ePaste the content of the orb into the \u003ccode class=\"language-plaintext highlighter-rouge\"\u003eorbs\u003c/code\u003e stanza of your configuration.\u003c/li\u003e \u003cli\u003eUse the \u003ccode class=\"language-plaintext highlighter-rouge\"\u003ecircleci config validate --org-id \u0026lt;your-org-id\u0026gt; \u0026lt;path/to/config.yml\u0026gt;\u003c/code\u003e command to validate your configuration.\u003c/li\u003e \u003c/ul\u003e \u003c/li\u003e \u003cli\u003e \u003cp\u003eYou cannot use private orbs from one organization in another organization’s pipelines, regardless of the relationship between organizations. This means that even if you commit code and start a pipeline, and have the necessary membership in both organizations, you can use a private orb from your configuration file, but not from another orb.\u003c/p\u003e \u003c/li\u003e \u003c/ul\u003e \u003ch3 id=\"authoring-orbs\"\u003eAuthoring orbs\u003c/h3\u003e \u003cp\u003eBoth public and private orbs can be authored in two ways:\u003c/p\u003e \u003cul\u003e \u003cli\u003eUsing the \u003ca href=\"/docs/orb-author-validate-publish/\"\u003eManual Orb Authoring Process\u003c/a\u003e\u003c/li\u003e \u003cli\u003eUsing the \u003ca href=\"/docs/orb-development-kit\"\u003eorb development kit\u003c/a\u003e (recommended)\u003c/li\u003e \u003c/ul\u003e \u003ch2 id=\"orb-packing\"\u003eOrb packing\u003c/h2\u003e \u003cp\u003eAll CircleCI orbs are singular YAML files, typically named \u003ccode class=\"language-plaintext highlighter-rouge\"\u003eorb.yml\u003c/code\u003e. However, for development, it is often easier to break the code up into more manageable chunks. The \u003ccode class=\"language-plaintext highlighter-rouge\"\u003ecircleci orb pack\u003c/code\u003e command, a component of the \u003ca href=\"/docs/orb-development-kit\"\u003eorb development kit\u003c/a\u003e, is used to “pack” or condense the separate YAML files together.\u003c/p\u003e \u003cp class=\"alert alert-warning\"\u003eIf you are using the orb development kit, orb packing is handled automatically, by the included CI/CD pipeline, with the \u003ca href=\"https://circleci.com/developer/orbs/orb/circleci/orb-tools#jobs-pack\"\u003eorb-tools/pack\u003c/a\u003e job.\u003c/p\u003e \u003cp\u003e\u003cstrong\u003e\u003cem\u003eExample: Orb Project Structure\u003c/em\u003e\u003c/strong\u003e\u003c/p\u003e \u003ctable class=\"table table-striped\"\u003e \u003cthead\u003e \u003ctr\u003e \u003cth\u003etype\u003c/th\u003e \u003cth\u003ename\u003c/th\u003e \u003c/tr\u003e \u003c/thead\u003e \u003ctbody\u003e \u003ctr\u003e \u003ctd\u003e\u003ci class=\"fa fa-folder\" aria-hidden=\"true\"\u003e\u003c/i\u003e\u003c/td\u003e \u003ctd\u003e\u003ca href=\"https://github.com/CircleCI-Public/Orb-Template/tree/main/src/commands\"\u003ecommands\u003c/a\u003e\u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd\u003e\u003ci class=\"fa fa-folder\" aria-hidden=\"true\"\u003e\u003c/i\u003e\u003c/td\u003e \u003ctd\u003e\u003ca href=\"https://github.com/CircleCI-Public/Orb-Template/tree/main/src/examples\"\u003eexamples\u003c/a\u003e\u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd\u003e\u003ci class=\"fa fa-folder\" aria-hidden=\"true\"\u003e\u003c/i\u003e\u003c/td\u003e \u003ctd\u003e\u003ca href=\"https://github.com/CircleCI-Public/Orb-Template/tree/main/src/executors\"\u003eexecutors\u003c/a\u003e\u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd\u003e\u003ci class=\"fa fa-folder\" aria-hidden=\"true\"\u003e\u003c/i\u003e\u003c/td\u003e \u003ctd\u003e\u003ca href=\"https://github.com/CircleCI-Public/Orb-Template/tree/main/src/jobs\"\u003ejobs\u003c/a\u003e\u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd\u003e\u003ci class=\"fa fa-file-text-o\" aria-hidden=\"true\"\u003e\u003c/i\u003e\u003c/td\u003e \u003ctd\u003e\u003ca href=\"https://github.com/CircleCI-Public/Orb-Template/blob/main/src/%40orb.yml\"\u003e@orb.yml\u003c/a\u003e\u003c/td\u003e \u003c/tr\u003e \u003c/tbody\u003e \u003c/table\u003e \u003cp\u003eIn order to \u003cem\u003epack\u003c/em\u003e an orb, an \u003ca href=\"/docs/orb-author/#orbyml\"\u003e@orb.yml\u003c/a\u003e file must be present. The \u003ccode class=\"language-plaintext highlighter-rouge\"\u003e@\u003c/code\u003e signifies the \u003cem\u003eroot\u003c/em\u003e of our orb project. Within the same directory, you can include additional directories for each orb component’s type, such as \u003ca href=\"/docs/reusing-config/#authoring-reusable-commands\"\u003ecommands\u003c/a\u003e, \u003ca href=\"/docs/reusing-config/#authoring-parameterized-jobs\"\u003ejobs\u003c/a\u003e, \u003ca href=\"/docs/reusing-config/#authoring-reusable-executors\"\u003eexecutors\u003c/a\u003e, and \u003ca href=\"/docs/orb-concepts/#usage-examples\"\u003eexamples\u003c/a\u003e. Any additional files or folders will be safely ignored.\u003c/p\u003e \u003cp\u003eAdditionally, the \u003cem\u003epack\u003c/em\u003e command provides a special pre-processor for orb developers that allows you to import code from external files using the \u003ca href=\"/docs/orb-concepts/#file-include-syntax\"\u003efile include syntax\u003c/a\u003e (\u003ccode class=\"language-plaintext highlighter-rouge\"\u003e\u0026lt;\u0026lt;include(file)\u0026gt;\u0026gt;\u003c/code\u003e).\u003c/p\u003e \u003cp\u003e\u003cstrong\u003eCLI command\u003c/strong\u003e\u003c/p\u003e \u003cp\u003e\u003ccode class=\"language-plaintext highlighter-rouge\"\u003ecircleci orb pack \u0026lt;dir\u0026gt; \u0026gt; orb.yml\u003c/code\u003e\u003c/p\u003e \u003cp\u003eFor orb development kit users, this step is handled automatically.\u003c/p\u003e \u003ch2 id=\"file-include-syntax\"\u003eFile include syntax\u003c/h2\u003e \u003cp\u003eThe \u003ccode class=\"language-plaintext highlighter-rouge\"\u003efile include\u003c/code\u003e syntax (\u003ccode class=\"language-plaintext highlighter-rouge\"\u003e\u0026lt;\u0026lt;include(dir/file)\u0026gt;\u0026gt;\u003c/code\u003e) is a special config enhancement that allows you to import the contents of a file in place as the value for any key within a CircleCI orb configuration file. The \u003ccode class=\"language-plaintext highlighter-rouge\"\u003e\u0026lt;\u0026lt;include(dir/file)\u0026gt;\u0026gt;\u003c/code\u003e syntax is a special key for use with the \u003ca href=\"#orb-packing\"\u003e\u003ccode class=\"language-plaintext highlighter-rouge\"\u003ecircleci orb pack\u003c/code\u003e command\u003c/a\u003e and \u003cem\u003ewill not\u003c/em\u003e work more widely on CircleCI.\u003c/p\u003e \u003cp\u003eWhen \u003ccode class=\"language-plaintext highlighter-rouge\"\u003ecircleci orb pack \u0026lt;dir\u0026gt; \u0026gt; orb.yml\u003c/code\u003e is run against a directory containing an \u003ccode class=\"language-plaintext highlighter-rouge\"\u003e@orb.yml\u003c/code\u003e file, the pack command begins to combine the contents of the files into a single \u003ccode class=\"language-plaintext highlighter-rouge\"\u003eorb.yml\u003c/code\u003e file. During the packing process, each instance of the \u003ccode class=\"language-plaintext highlighter-rouge\"\u003e\u0026lt;\u0026lt;include(dir/file)\u0026gt;\u0026gt;\u003c/code\u003e value will be replaced by the contents of the file referenced within.\u003c/p\u003e \u003cp class=\"alert alert-warning\"\u003eIncluded files are always referenced from the relative location of the \u003ccode class=\"language-plaintext highlighter-rouge\"\u003e@orb.yml\u003c/code\u003e file.\u003c/p\u003e \u003cdiv class=\"language-yaml tab fileInclude Command-yaml highlighter-rouge\"\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"highlight\"\u003e\u003ccode\u003e\u003cspan class=\"na\"\u003edescription\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s\"\u003eA simple command that imports from a file when packed.\u003c/span\u003e\n\u003cspan class=\"na\"\u003esteps\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"pi\"\u003e-\u003c/span\u003e \u003cspan class=\"na\"\u003erun\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003ename\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s\"\u003eHello Greeting\u003c/span\u003e\n \u003cspan class=\"na\"\u003ecommand\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026lt;\u0026lt;include(scripts/file.sh)\u0026gt;\u0026gt;\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/div\u003e \u003cdiv class=\"language-shell tab fileInclude file-sh highlighter-rouge\"\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"highlight\"\u003e\u003ccode\u003e\u003cspan class=\"c\"\u003e# This is a bash file, but could really be any text-based file\u003c/span\u003e\n\u003cspan class=\"nb\"\u003eecho\u003c/span\u003e \u003cspan class=\"s2\"\u003e\"Hello World\"\u003c/span\u003e\n\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/div\u003e \u003cdiv class=\"language-yaml tab fileInclude Packed_Command-yaml highlighter-rouge\"\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"highlight\"\u003e\u003ccode\u003e\u003cspan class=\"na\"\u003edescription\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s\"\u003eA simple command that imports from a file when packed.\u003c/span\u003e\n\u003cspan class=\"na\"\u003esteps\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"pi\"\u003e-\u003c/span\u003e \u003cspan class=\"na\"\u003erun\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003ename\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s\"\u003eHello Greeting\u003c/span\u003e\n \u003cspan class=\"na\"\u003ecommand\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"pi\"\u003e|\u003c/span\u003e\n \u003cspan class=\"s\"\u003e# This is a bash file, but could really be any text-based file\u003c/span\u003e\n \u003cspan class=\"s\"\u003eecho \"Hello World\"\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/div\u003e \u003cp\u003eFile inclusion is especially useful for separating your configuration’s bash logic from your yaml. Including bash scripts will allow you to develop and test your bash outside of your orb.\u003c/p\u003e \u003cp\u003eView more about including bash scripts in the \u003ca href=\"/docs/orb-author/#scripts\"\u003eOrb Author\u003c/a\u003e guide.\u003c/p\u003e \u003ch2 id=\"using-orbs-within-your-orb-and-register-time-resolution\"\u003eUsing orbs within your orb and register-time resolution\u003c/h2\u003e \u003cp\u003eAn orbs stanza can be used inside an orb. Because production orb releases are immutable, the system will resolve all orb dependencies at the time you register your orb rather than at the time you run your build.\u003c/p\u003e \u003cp\u003eFor example, orb \u003ccode class=\"language-plaintext highlighter-rouge\"\u003efoo/bar\u003c/code\u003e is published at version 1.2.3 with an orbs stanza that imports \u003ccode class=\"language-plaintext highlighter-rouge\"\u003ebiz/baz@volatile\u003c/code\u003e. At the time you register \u003ccode class=\"language-plaintext highlighter-rouge\"\u003efoo/bar@1.2.3\u003c/code\u003e the system will resolve \u003ccode class=\"language-plaintext highlighter-rouge\"\u003ebiz/baz@volatile\u003c/code\u003e as the latest version and include its elements directly into the packaged version of \u003ccode class=\"language-plaintext highlighter-rouge\"\u003efoo/bar@1.2.3\u003c/code\u003e.\u003c/p\u003e \u003cp\u003eIf \u003ccode class=\"language-plaintext highlighter-rouge\"\u003ebiz/baz\u003c/code\u003e is updated to \u003ccode class=\"language-plaintext highlighter-rouge\"\u003e3.0.0\u003c/code\u003e, anyone using \u003ccode class=\"language-plaintext highlighter-rouge\"\u003efoo/bar@1.2.3\u003c/code\u003e will not see the change from \u003ccode class=\"language-plaintext highlighter-rouge\"\u003ebiz/baz@3.0.0\u003c/code\u003e until \u003ccode class=\"language-plaintext highlighter-rouge\"\u003efoo/bar\u003c/code\u003e is published at a higher version than \u003ccode class=\"language-plaintext highlighter-rouge\"\u003e1.2.3\u003c/code\u003e.\u003c/p\u003e \u003cp\u003eOrb elements may be composed directly with elements of other orbs. For example, you may have an orb that looks like the example below.\u003c/p\u003e \u003cdiv class=\"language-yaml highlighter-rouge\"\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"highlight\"\u003e\u003ccode\u003e\u003cspan class=\"na\"\u003eversion\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"m\"\u003e2.1\u003c/span\u003e\n\u003cspan class=\"na\"\u003eorbs\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003esome-orb\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s\"\u003esome-ns/some-orb@volatile\u003c/span\u003e\n\u003cspan class=\"na\"\u003eexecutors\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003emy-executor\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s\"\u003esome-orb/their-executor\u003c/span\u003e\n\u003cspan class=\"na\"\u003ecommands\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003emy-command\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s\"\u003esome-orb/their-command\u003c/span\u003e\n\u003cspan class=\"na\"\u003ejobs\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003emy-job\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s\"\u003esome-orb/their-job\u003c/span\u003e\n \u003cspan class=\"na\"\u003eanother-job\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003eexecutor\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s\"\u003emy-executor\u003c/span\u003e\n \u003cspan class=\"na\"\u003esteps\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"pi\"\u003e-\u003c/span\u003e \u003cspan class=\"na\"\u003emy-command\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e\n \u003cspan class=\"na\"\u003eparam1\u003c/span\u003e\u003cspan class=\"pi\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\"\u003c/span\u003e\u003cspan class=\"s\"\u003ehello\"\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/div\u003e \u003ch2 id=\"see-also\"\u003eSee also\u003c/h2\u003e \u003cul\u003e \u003cli\u003eRefer to \u003ca href=\"/docs/orb-intro/\"\u003eOrb Introduction\u003c/a\u003e for a high-level overview of CircleCI orbs.\u003c/li\u003e \u003cli\u003eRefer to \u003ca href=\"/docs/reusing-config/\"\u003eOrbs Reference\u003c/a\u003e for detailed reference information about Orbs, including descriptions of commands, jobs and executors.\u003c/li\u003e \u003cli\u003eRefer to \u003ca href=\"/docs/orbs-faq/\"\u003eOrbs FAQs\u003c/a\u003e for information on frequent issues encountered when using orbs.\u003c/li\u003e \u003c/ul\u003e","file_name":"_cci2/orb-concepts.md"}},"__lang":"en","__namespaces":{"common":{"appName":"Docs","metaTitle":"Welcome to CircleCI Documentation","metaDescription":"Welcome to CircleCI Documentation"},"header":{"loginButton":{"loggedIn":{"text":"Go to Application","href":"https://app.circleci.com/"},"loggedOut":{"text":"Start Building for Free","href":"https://circleci.com/signup/"}}},"search":{"searchBarPlaceholder":"Search Documentation","docsTab":{"long":"Documentation","short":"Docs"},"orbsTab":{"long":"Orbs","short":"Orbs"},"imagesTab":{"long":"Convenience Images","short":"Images"},"noResults":"No {{type}} results"},"content":{"copyLink":{"copy":"Copy link","copied":"Copied!"},"pageMeta":{"lastUpdateReadTime":"Last updated • Read time","cloudServer":"This document is applicable to CircleCI {{platform}}"},"pageFooter":{"editTitle":"Suggest an edit to this page","makeContribution":"Make a contribution","learnContribution":"Learn how to contribute","helpTitle":"Still need help?","askCommunity":"Ask the CircleCI community","researchCommunity":"Join the research community","support":"Visit our Support site"},"on_this_page":"On This Page","translationInProgress":"This page is in the process of being translated."}},"__N_SSP":true},"page":"/[...slug]","query":{"slug":["orb-concepts"]},"buildId":"9e2f0ef33c33cd80cc959c1747acd17d270b8bd8","assetPrefix":"https://assets-docs.circleci.com/docs","runtimeConfig":{"basePath":"/docs","exceptionLoggerClientToken":"ca1befe4db724589813fc4a2a9642d4d","analyticsKey":"AbgkrgN4cbRhAVEwlzMkHbwvrXnxHh35","datadogRumApplicationId":"2a3e19ca-297e-4a53-a2cf-082e827d13d3","datadogRumClientToken":"pubdffb4b4dd07f1f43b42276901d58da91","isPreviewSite":false},"isFallback":false,"isExperimentalCompile":false,"gssp":true,"appGip":true,"locale":"en","locales":["en","ja"],"defaultLocale":"en","scriptLoader":[]}</script></body></html>

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