CINXE.COM
Migrating from GitLab CI/CD to GitHub Actions - GitHub Docs
<!DOCTYPE html><html data-color-mode="auto" data-light-theme="light" data-dark-theme="dark" lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="icon" type="image/png" href="/assets/cb-345/images/site/favicon.png"/><link href="/manifest.json" rel="manifest"/><meta name="google-site-verification" content="c1kuD-K2HIVF635lypcsWPoD4kilo5-jA_wBFyT4uMY"/><title>Migrating from GitLab CI/CD to GitHub Actions - GitHub Docs</title><meta name="description" content="GitHub Actions and GitLab CI/CD share several configuration similarities, which makes migrating to GitHub Actions relatively straightforward."/><link rel="alternate" hrefLang="zh-Hans" href="https://docs.github.com/zh/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-gitlab-cicd-to-github-actions"/><link rel="alternate" hrefLang="es" href="https://docs.github.com/es/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-gitlab-cicd-to-github-actions"/><link rel="alternate" hrefLang="pt" href="https://docs.github.com/pt/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-gitlab-cicd-to-github-actions"/><link rel="alternate" hrefLang="ru" href="https://docs.github.com/ru/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-gitlab-cicd-to-github-actions"/><link rel="alternate" hrefLang="ja" href="https://docs.github.com/ja/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-gitlab-cicd-to-github-actions"/><link rel="alternate" hrefLang="fr" href="https://docs.github.com/fr/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-gitlab-cicd-to-github-actions"/><link rel="alternate" hrefLang="de" href="https://docs.github.com/de/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-gitlab-cicd-to-github-actions"/><link rel="alternate" hrefLang="ko" href="https://docs.github.com/ko/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-gitlab-cicd-to-github-actions"/><meta name="keywords" content="GitLab,Migration,CI,CD"/><meta name="path-language" content="en"/><meta name="path-version" content="free-pro-team@latest"/><meta name="path-product" content="actions"/><meta name="path-article" content="actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-gitlab-cicd-to-github-actions"/><meta name="page-type" content="tutorial"/><meta name="page-document-type" content="article"/><meta name="status" content="200"/><meta property="og:site_name" content="GitHub Docs"/><meta property="og:title" content="Migrating from GitLab CI/CD to GitHub Actions - GitHub Docs"/><meta property="og:type" content="article"/><meta property="og:url" content="https://docs.github.com/en/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-gitlab-cicd-to-github-actions"/><meta property="og:image" content="https://github.githubassets.com/images/modules/open_graph/github-logo.png"/><meta name="next-head-count" content="28"/><link rel="preload" href="/_next/static/css/87cea936052d1d95.css" as="style"/><link rel="stylesheet" href="/_next/static/css/87cea936052d1d95.css" data-n-g=""/><link rel="preload" href="/_next/static/css/66757a3783028467.css" as="style"/><link rel="stylesheet" href="/_next/static/css/66757a3783028467.css" data-n-p=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/_next/static/chunks/webpack-6c3affe7799f8553.js" defer=""></script><script src="/_next/static/chunks/framework-945b357d4a851f4b.js" defer=""></script><script src="/_next/static/chunks/main-c95ae151e287e458.js" defer=""></script><script src="/_next/static/chunks/pages/_app-797fa94dba278176.js" defer=""></script><script src="/_next/static/chunks/727f57db-570e92d04a1cf153.js" defer=""></script><script src="/_next/static/chunks/4432-e0b0889138923fc7.js" defer=""></script><script src="/_next/static/chunks/6066-8d61a14f5f75720a.js" defer=""></script><script src="/_next/static/chunks/5293-274846982f5b82bb.js" defer=""></script><script src="/_next/static/chunks/2689-e7cc4d533fabe066.js" defer=""></script><script src="/_next/static/chunks/9418-89747b124934b544.js" defer=""></script><script src="/_next/static/chunks/5343-e2ac6b70d565e15c.js" defer=""></script><script src="/_next/static/chunks/pages/%5BversionId%5D/%5BproductId%5D/%5B...restPage%5D-d93d7776ab1c3347.js" defer=""></script><script src="/_next/static/Mi6mQpzw-NSehtRuzNy6V/_buildManifest.js" defer=""></script><script src="/_next/static/Mi6mQpzw-NSehtRuzNy6V/_ssgManifest.js" defer=""></script><style data-styled="" data-styled-version="5.3.5">.cEhRXB{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}/*!sc*/ .dmdEgz{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;pointer-events:none;}/*!sc*/ .Ywlla{list-style:none;}/*!sc*/ .hROlum{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;min-width:0;}/*!sc*/ .cUxMoC{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}/*!sc*/ .bmseMA{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;font-weight:400;word-break:break-word;}/*!sc*/ .lmYNOb{height:20px;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));margin-left:8px;font-weight:initial;}/*!sc*/ [data-variant="danger"]:hover .Box-sc-g0xbh4-0,[data-variant="danger"]:active .lmYNOb{color:var(--fgColor-default,var(--color-fg-default,#1F2328));}/*!sc*/ .gMkIpo{padding:0;margin:0;display:none;}/*!sc*/ .gMkIpo *{font-size:14px;}/*!sc*/ .enEvIH{padding:0;margin:0;display:block;}/*!sc*/ .enEvIH *{font-size:14px;}/*!sc*/ .ivpQTm{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;font-weight:600;word-break:break-word;}/*!sc*/ .eQiQea{grid-area:topper;}/*!sc*/ .ijSsTo{grid-area:intro;}/*!sc*/ .giVcWX{-webkit-align-self:flex-start;-ms-flex-item-align:start;align-self:flex-start;grid-area:sidebar;}/*!sc*/ .kohLxz{grid-area:content;}/*!sc*/ data-styled.g3[id="Box-sc-g0xbh4-0"]{content:"cEhRXB,dmdEgz,Ywlla,hROlum,cUxMoC,bmseMA,lmYNOb,gMkIpo,enEvIH,ivpQTm,eQiQea,ijSsTo,giVcWX,kohLxz,"}/*!sc*/ .hXCKEr{border-radius:6px;border:1px solid;border-color:transparent;font-family:inherit;font-weight:500;font-size:14px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-text-decoration:none;text-decoration:none;text-align:center;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-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;height:32px;padding:0 12px;gap:8px;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content;-webkit-transition:80ms cubic-bezier(0.65,0,0.35,1);transition:80ms cubic-bezier(0.65,0,0.35,1);-webkit-transition-property:color,fill,background-color,border-color;transition-property:color,fill,background-color,border-color;color:var(--button-default-fgColor-rest,var(--color-btn-text,#24292f));background-color:transparent;box-shadow:none;}/*!sc*/ .hXCKEr:focus:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .hXCKEr:focus:not(:disabled):not(:focus-visible){outline:solid 1px transparent;}/*!sc*/ .hXCKEr:focus-visible:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .hXCKEr[href]{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;}/*!sc*/ .hXCKEr[href]:hover{-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .hXCKEr:hover{-webkit-transition-duration:80ms;transition-duration:80ms;}/*!sc*/ .hXCKEr:active{-webkit-transition:none;transition:none;}/*!sc*/ .hXCKEr[data-inactive]{cursor:auto;}/*!sc*/ .hXCKEr:disabled{cursor:not-allowed;box-shadow:none;color:var(--fgColor-disabled,var(--color-primer-fg-disabled,#8c959f));}/*!sc*/ .hXCKEr:disabled [data-component=ButtonCounter],.hXCKEr:disabled [data-component="leadingVisual"],.hXCKEr:disabled [data-component="trailingAction"]{color:inherit;}/*!sc*/ @media (forced-colors:active){.hXCKEr:focus{outline:solid 1px transparent;}}/*!sc*/ .hXCKEr [data-component=ButtonCounter]{font-size:12px;}/*!sc*/ .hXCKEr[data-component=IconButton]{display:inline-grid;padding:unset;place-content:center;width:32px;min-width:unset;}/*!sc*/ .hXCKEr[data-size="small"]{padding:0 8px;height:28px;gap:4px;font-size:12px;}/*!sc*/ .hXCKEr[data-size="small"] [data-component="text"]{line-height:calc(20 / 12);}/*!sc*/ .hXCKEr[data-size="small"] [data-component=ButtonCounter]{font-size:12px;}/*!sc*/ .hXCKEr[data-size="small"] [data-component="buttonContent"] > :not(:last-child){margin-right:4px;}/*!sc*/ .hXCKEr[data-size="small"][data-component=IconButton]{width:28px;padding:unset;}/*!sc*/ .hXCKEr[data-size="large"]{padding:0 16px;height:40px;gap:8px;}/*!sc*/ .hXCKEr[data-size="large"] [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .hXCKEr[data-size="large"][data-component=IconButton]{width:40px;padding:unset;}/*!sc*/ .hXCKEr[data-block="block"]{width:100%;}/*!sc*/ .hXCKEr[data-label-wrap="true"]{min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content;height:unset;min-height:var(--control-medium-size,2rem);}/*!sc*/ .hXCKEr[data-label-wrap="true"] [data-component="buttonContent"]{-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;padding-block:calc(var(--control-medium-paddingBlock,0.375rem) - 2px);}/*!sc*/ .hXCKEr[data-label-wrap="true"] [data-component="text"]{white-space:unset;word-break:break-word;}/*!sc*/ .hXCKEr[data-label-wrap="true"][data-size="small"]{height:unset;min-height:var(--control-small-size,1.75rem);}/*!sc*/ .hXCKEr[data-label-wrap="true"][data-size="small"] [data-component="buttonContent"]{padding-block:calc(var(--control-small-paddingBlock,0.25rem) - 2px);}/*!sc*/ .hXCKEr[data-label-wrap="true"][data-size="large"]{height:unset;min-height:var(--control-large-size,2.5rem);padding-inline:var(--control-large-paddingInline-spacious,1rem);}/*!sc*/ .hXCKEr[data-label-wrap="true"][data-size="large"] [data-component="buttonContent"]{padding-block:calc(var(--control-large-paddingBlock,0.625rem) - 2px);}/*!sc*/ .hXCKEr[data-inactive]:not([disabled]){background-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));border-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));color:var(--button-inactive-fgColor,var(--button-inactive-fgColor-rest,var(--color-btn-inactive-text,#57606a)));}/*!sc*/ .hXCKEr[data-inactive]:not([disabled]):focus-visible{box-shadow:none;}/*!sc*/ .hXCKEr [data-component="leadingVisual"]{grid-area:leadingVisual;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .hXCKEr [data-component="text"]{grid-area:text;line-height:calc(20/14);white-space:nowrap;}/*!sc*/ .hXCKEr [data-component="trailingVisual"]{grid-area:trailingVisual;}/*!sc*/ .hXCKEr [data-component="trailingAction"]{margin-right:-4px;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .hXCKEr [data-component="buttonContent"]{-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;display:grid;grid-template-areas:"leadingVisual text trailingVisual";grid-template-columns:min-content minmax(0,auto) min-content;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;}/*!sc*/ .hXCKEr [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .hXCKEr [data-component="loadingSpinner"]{grid-area:text;margin-right:0px !important;place-self:center;}/*!sc*/ .hXCKEr [data-component="loadingSpinner"] + [data-component="text"]{visibility:hidden;}/*!sc*/ .hXCKEr:hover:not([disabled]){background-color:var(--control-transparent-bgColor-hover,var(--color-action-list-item-default-hover-bg,rgba(208,215,222,0.32)));}/*!sc*/ .hXCKEr:active:not([disabled]){background-color:var(--control-transparent-bgColor-active,var(--color-action-list-item-default-active-bg,rgba(208,215,222,0.48)));}/*!sc*/ .hXCKEr[aria-expanded=true]{background-color:var(--control-transparent-bgColor-selected,var(--color-action-list-item-default-selected-bg,rgba(208,215,222,0.24)));}/*!sc*/ .hXCKEr[data-component="IconButton"][data-no-visuals]{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .hXCKEr[data-no-visuals]{color:var(--fgColor-accent,var(--color-accent-fg,#0969da));}/*!sc*/ .hXCKEr:has([data-component="ButtonCounter"]){color:var(--button-default-fgColor-rest,var(--color-btn-text,#24292f));}/*!sc*/ .hXCKEr:disabled[data-no-visuals]{color:var(--fgColor-disabled,var(--color-primer-fg-disabled,#8c959f));}/*!sc*/ .hXCKEr:disabled[data-no-visuals] [data-component=ButtonCounter]{color:inherit;}/*!sc*/ .hXCKEr{height:auto;text-align:left;}/*!sc*/ .hXCKEr span:first-child{display:inline;}/*!sc*/ .jOdgLl{border-radius:6px;border:1px solid;border-color:var(--button-default-borderColor-rest,var(--button-default-borderColor-rest,var(--color-btn-border,rgba(31,35,40,0.15))));font-family:inherit;font-weight:500;font-size:14px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-text-decoration:none;text-decoration:none;text-align:center;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-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;height:32px;padding:0 12px;gap:8px;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content;-webkit-transition:80ms cubic-bezier(0.65,0,0.35,1);transition:80ms cubic-bezier(0.65,0,0.35,1);-webkit-transition-property:color,fill,background-color,border-color;transition-property:color,fill,background-color,border-color;color:var(--button-default-fgColor-rest,var(--color-btn-text,#24292f));background-color:var(--button-default-bgColor-rest,var(--color-btn-bg,#f6f8fa));box-shadow:var(--button-default-shadow-resting,var(--color-btn-shadow,0 1px 0 rgba(31,35,40,0.04))),var(--button-default-shadow-inset,var(--color-btn-inset-shadow,inset 0 1px 0 rgba(255,255,255,0.25)));}/*!sc*/ .jOdgLl:focus:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .jOdgLl:focus:not(:disabled):not(:focus-visible){outline:solid 1px transparent;}/*!sc*/ .jOdgLl:focus-visible:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .jOdgLl[href]{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;}/*!sc*/ .jOdgLl[href]:hover{-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .jOdgLl:hover{-webkit-transition-duration:80ms;transition-duration:80ms;}/*!sc*/ .jOdgLl:active{-webkit-transition:none;transition:none;}/*!sc*/ .jOdgLl[data-inactive]{cursor:auto;}/*!sc*/ .jOdgLl:disabled{cursor:not-allowed;box-shadow:none;color:var(--fgColor-disabled,var(--color-primer-fg-disabled,#8c959f));border-color:var(--button-default-borderColor-disabled,var(--button-default-borderColor-rest,var(--color-btn-border,rgba(31,35,40,0.15))));background-color:var(--button-default-bgColor-disabled,var(--control-bgColor-disabled,var(--color-input-disabled-bg,rgba(175,184,193,0.2))));}/*!sc*/ .jOdgLl:disabled [data-component=ButtonCounter]{color:inherit;}/*!sc*/ @media (forced-colors:active){.jOdgLl:focus{outline:solid 1px transparent;}}/*!sc*/ .jOdgLl [data-component=ButtonCounter]{font-size:12px;background-color:var(--buttonCounter-default-bgColor-rest,var(--color-btn-counter-bg,rgba(31,35,40,0.08)));}/*!sc*/ .jOdgLl[data-component=IconButton]{display:inline-grid;padding:unset;place-content:center;width:32px;min-width:unset;}/*!sc*/ .jOdgLl[data-size="small"]{padding:0 8px;height:28px;gap:4px;font-size:12px;}/*!sc*/ .jOdgLl[data-size="small"] [data-component="text"]{line-height:calc(20 / 12);}/*!sc*/ .jOdgLl[data-size="small"] [data-component=ButtonCounter]{font-size:12px;}/*!sc*/ .jOdgLl[data-size="small"] [data-component="buttonContent"] > :not(:last-child){margin-right:4px;}/*!sc*/ .jOdgLl[data-size="small"][data-component=IconButton]{width:28px;padding:unset;}/*!sc*/ .jOdgLl[data-size="large"]{padding:0 16px;height:40px;gap:8px;}/*!sc*/ .jOdgLl[data-size="large"] [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .jOdgLl[data-size="large"][data-component=IconButton]{width:40px;padding:unset;}/*!sc*/ .jOdgLl[data-block="block"]{width:100%;}/*!sc*/ .jOdgLl[data-label-wrap="true"]{min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content;height:unset;min-height:var(--control-medium-size,2rem);}/*!sc*/ .jOdgLl[data-label-wrap="true"] [data-component="buttonContent"]{-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;padding-block:calc(var(--control-medium-paddingBlock,0.375rem) - 2px);}/*!sc*/ .jOdgLl[data-label-wrap="true"] [data-component="text"]{white-space:unset;word-break:break-word;}/*!sc*/ .jOdgLl[data-label-wrap="true"][data-size="small"]{height:unset;min-height:var(--control-small-size,1.75rem);}/*!sc*/ .jOdgLl[data-label-wrap="true"][data-size="small"] [data-component="buttonContent"]{padding-block:calc(var(--control-small-paddingBlock,0.25rem) - 2px);}/*!sc*/ .jOdgLl[data-label-wrap="true"][data-size="large"]{height:unset;min-height:var(--control-large-size,2.5rem);padding-inline:var(--control-large-paddingInline-spacious,1rem);}/*!sc*/ .jOdgLl[data-label-wrap="true"][data-size="large"] [data-component="buttonContent"]{padding-block:calc(var(--control-large-paddingBlock,0.625rem) - 2px);}/*!sc*/ .jOdgLl[data-inactive]:not([disabled]){background-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));border-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));color:var(--button-inactive-fgColor,var(--button-inactive-fgColor-rest,var(--color-btn-inactive-text,#57606a)));}/*!sc*/ .jOdgLl[data-inactive]:not([disabled]):focus-visible{box-shadow:none;}/*!sc*/ .jOdgLl [data-component="leadingVisual"]{grid-area:leadingVisual;}/*!sc*/ .jOdgLl [data-component="text"]{grid-area:text;line-height:calc(20/14);white-space:nowrap;}/*!sc*/ .jOdgLl [data-component="trailingVisual"]{grid-area:trailingVisual;}/*!sc*/ .jOdgLl [data-component="trailingAction"]{margin-right:-4px;}/*!sc*/ .jOdgLl [data-component="buttonContent"]{-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;display:grid;grid-template-areas:"leadingVisual text trailingVisual";grid-template-columns:min-content minmax(0,auto) min-content;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;}/*!sc*/ .jOdgLl [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .jOdgLl [data-component="loadingSpinner"]{grid-area:text;margin-right:0px !important;place-self:center;}/*!sc*/ .jOdgLl [data-component="loadingSpinner"] + [data-component="text"]{visibility:hidden;}/*!sc*/ .jOdgLl:hover:not([disabled]):not([data-inactive]){background-color:var(--button-default-bgColor-hover,var(--color-btn-hover-bg,#f3f4f6));border-color:var(--button-default-borderColor-hover,var(--button-default-borderColor-hover,var(--color-btn-hover-border,rgba(31,35,40,0.15))));}/*!sc*/ .jOdgLl:active:not([disabled]):not([data-inactive]){background-color:var(--button-default-bgColor-active,var(--color-btn-active-bg,hsla(220,14%,93%,1)));border-color:var(--button-default-borderColor-active,var(--button-default-borderColor-active,var(--color-btn-active-border,rgba(31,35,40,0.15))));}/*!sc*/ .jOdgLl[aria-expanded=true]{background-color:var(--button-default-bgColor-active,var(--color-btn-active-bg,hsla(220,14%,93%,1)));border-color:var(--button-default-borderColor-active,var(--button-default-borderColor-active,var(--color-btn-active-border,rgba(31,35,40,0.15))));}/*!sc*/ .jOdgLl [data-component="leadingVisual"],.jOdgLl [data-component="trailingVisual"],.jOdgLl [data-component="trailingAction"]{color:var(--button-color,var(--fgColor-muted,var(--color-fg-muted,#656d76)));}/*!sc*/ .jOdgLl[data-component="IconButton"][data-no-visuals]{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .jOdgLl[data-no-visuals]{border-top-left-radius:unset;border-bottom-left-radius:unset;}/*!sc*/ .hmWbvh{border-radius:6px;border:1px solid;border-color:var(--button-default-borderColor-rest,var(--button-default-borderColor-rest,var(--color-btn-border,rgba(31,35,40,0.15))));font-family:inherit;font-weight:500;font-size:14px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-text-decoration:none;text-decoration:none;text-align:center;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-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;height:32px;padding:0 12px;gap:8px;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content;-webkit-transition:80ms cubic-bezier(0.65,0,0.35,1);transition:80ms cubic-bezier(0.65,0,0.35,1);-webkit-transition-property:color,fill,background-color,border-color;transition-property:color,fill,background-color,border-color;color:var(--button-default-fgColor-rest,var(--color-btn-text,#24292f));background-color:var(--button-default-bgColor-rest,var(--color-btn-bg,#f6f8fa));box-shadow:var(--button-default-shadow-resting,var(--color-btn-shadow,0 1px 0 rgba(31,35,40,0.04))),var(--button-default-shadow-inset,var(--color-btn-inset-shadow,inset 0 1px 0 rgba(255,255,255,0.25)));}/*!sc*/ .hmWbvh:focus:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .hmWbvh:focus:not(:disabled):not(:focus-visible){outline:solid 1px transparent;}/*!sc*/ .hmWbvh:focus-visible:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .hmWbvh[href]{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;}/*!sc*/ .hmWbvh[href]:hover{-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .hmWbvh:hover{-webkit-transition-duration:80ms;transition-duration:80ms;}/*!sc*/ .hmWbvh:active{-webkit-transition:none;transition:none;}/*!sc*/ .hmWbvh[data-inactive]{cursor:auto;}/*!sc*/ .hmWbvh:disabled{cursor:not-allowed;box-shadow:none;color:var(--fgColor-disabled,var(--color-primer-fg-disabled,#8c959f));border-color:var(--button-default-borderColor-disabled,var(--button-default-borderColor-rest,var(--color-btn-border,rgba(31,35,40,0.15))));background-color:var(--button-default-bgColor-disabled,var(--control-bgColor-disabled,var(--color-input-disabled-bg,rgba(175,184,193,0.2))));}/*!sc*/ .hmWbvh:disabled [data-component=ButtonCounter]{color:inherit;}/*!sc*/ @media (forced-colors:active){.hmWbvh:focus{outline:solid 1px transparent;}}/*!sc*/ .hmWbvh [data-component=ButtonCounter]{font-size:12px;background-color:var(--buttonCounter-default-bgColor-rest,var(--color-btn-counter-bg,rgba(31,35,40,0.08)));}/*!sc*/ .hmWbvh[data-component=IconButton]{display:inline-grid;padding:unset;place-content:center;width:32px;min-width:unset;}/*!sc*/ .hmWbvh[data-size="small"]{padding:0 8px;height:28px;gap:4px;font-size:12px;}/*!sc*/ .hmWbvh[data-size="small"] [data-component="text"]{line-height:calc(20 / 12);}/*!sc*/ .hmWbvh[data-size="small"] [data-component=ButtonCounter]{font-size:12px;}/*!sc*/ .hmWbvh[data-size="small"] [data-component="buttonContent"] > :not(:last-child){margin-right:4px;}/*!sc*/ .hmWbvh[data-size="small"][data-component=IconButton]{width:28px;padding:unset;}/*!sc*/ .hmWbvh[data-size="large"]{padding:0 16px;height:40px;gap:8px;}/*!sc*/ .hmWbvh[data-size="large"] [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .hmWbvh[data-size="large"][data-component=IconButton]{width:40px;padding:unset;}/*!sc*/ .hmWbvh[data-block="block"]{width:100%;}/*!sc*/ .hmWbvh[data-label-wrap="true"]{min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content;height:unset;min-height:var(--control-medium-size,2rem);}/*!sc*/ .hmWbvh[data-label-wrap="true"] [data-component="buttonContent"]{-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;padding-block:calc(var(--control-medium-paddingBlock,0.375rem) - 2px);}/*!sc*/ .hmWbvh[data-label-wrap="true"] [data-component="text"]{white-space:unset;word-break:break-word;}/*!sc*/ .hmWbvh[data-label-wrap="true"][data-size="small"]{height:unset;min-height:var(--control-small-size,1.75rem);}/*!sc*/ .hmWbvh[data-label-wrap="true"][data-size="small"] [data-component="buttonContent"]{padding-block:calc(var(--control-small-paddingBlock,0.25rem) - 2px);}/*!sc*/ .hmWbvh[data-label-wrap="true"][data-size="large"]{height:unset;min-height:var(--control-large-size,2.5rem);padding-inline:var(--control-large-paddingInline-spacious,1rem);}/*!sc*/ .hmWbvh[data-label-wrap="true"][data-size="large"] [data-component="buttonContent"]{padding-block:calc(var(--control-large-paddingBlock,0.625rem) - 2px);}/*!sc*/ .hmWbvh[data-inactive]:not([disabled]){background-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));border-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));color:var(--button-inactive-fgColor,var(--button-inactive-fgColor-rest,var(--color-btn-inactive-text,#57606a)));}/*!sc*/ .hmWbvh[data-inactive]:not([disabled]):focus-visible{box-shadow:none;}/*!sc*/ .hmWbvh [data-component="leadingVisual"]{grid-area:leadingVisual;}/*!sc*/ .hmWbvh [data-component="text"]{grid-area:text;line-height:calc(20/14);white-space:nowrap;}/*!sc*/ .hmWbvh [data-component="trailingVisual"]{grid-area:trailingVisual;}/*!sc*/ .hmWbvh [data-component="trailingAction"]{margin-right:-4px;}/*!sc*/ .hmWbvh [data-component="buttonContent"]{-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;display:grid;grid-template-areas:"leadingVisual text trailingVisual";grid-template-columns:min-content minmax(0,auto) min-content;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;}/*!sc*/ .hmWbvh [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .hmWbvh [data-component="loadingSpinner"]{grid-area:text;margin-right:0px !important;place-self:center;}/*!sc*/ .hmWbvh [data-component="loadingSpinner"] + [data-component="text"]{visibility:hidden;}/*!sc*/ .hmWbvh:hover:not([disabled]):not([data-inactive]){background-color:var(--button-default-bgColor-hover,var(--color-btn-hover-bg,#f3f4f6));border-color:var(--button-default-borderColor-hover,var(--button-default-borderColor-hover,var(--color-btn-hover-border,rgba(31,35,40,0.15))));}/*!sc*/ .hmWbvh:active:not([disabled]):not([data-inactive]){background-color:var(--button-default-bgColor-active,var(--color-btn-active-bg,hsla(220,14%,93%,1)));border-color:var(--button-default-borderColor-active,var(--button-default-borderColor-active,var(--color-btn-active-border,rgba(31,35,40,0.15))));}/*!sc*/ .hmWbvh[aria-expanded=true]{background-color:var(--button-default-bgColor-active,var(--color-btn-active-bg,hsla(220,14%,93%,1)));border-color:var(--button-default-borderColor-active,var(--button-default-borderColor-active,var(--color-btn-active-border,rgba(31,35,40,0.15))));}/*!sc*/ .hmWbvh [data-component="leadingVisual"],.hmWbvh [data-component="trailingVisual"],.hmWbvh [data-component="trailingAction"]{color:var(--button-color,var(--fgColor-muted,var(--color-fg-muted,#656d76)));}/*!sc*/ .hmWbvh[data-component="IconButton"][data-no-visuals]{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .lkeyoI{border-radius:6px;border:1px solid;border-color:var(--button-default-borderColor-rest,var(--button-default-borderColor-rest,var(--color-btn-border,rgba(31,35,40,0.15))));font-family:inherit;font-weight:500;font-size:14px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-text-decoration:none;text-decoration:none;text-align:center;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-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;height:32px;padding:0 12px;gap:8px;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content;-webkit-transition:80ms cubic-bezier(0.65,0,0.35,1);transition:80ms cubic-bezier(0.65,0,0.35,1);-webkit-transition-property:color,fill,background-color,border-color;transition-property:color,fill,background-color,border-color;color:var(--button-default-fgColor-rest,var(--color-btn-text,#24292f));background-color:var(--button-default-bgColor-rest,var(--color-btn-bg,#f6f8fa));box-shadow:var(--button-default-shadow-resting,var(--color-btn-shadow,0 1px 0 rgba(31,35,40,0.04))),var(--button-default-shadow-inset,var(--color-btn-inset-shadow,inset 0 1px 0 rgba(255,255,255,0.25)));}/*!sc*/ .lkeyoI:focus:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .lkeyoI:focus:not(:disabled):not(:focus-visible){outline:solid 1px transparent;}/*!sc*/ .lkeyoI:focus-visible:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .lkeyoI[href]{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;}/*!sc*/ .lkeyoI[href]:hover{-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .lkeyoI:hover{-webkit-transition-duration:80ms;transition-duration:80ms;}/*!sc*/ .lkeyoI:active{-webkit-transition:none;transition:none;}/*!sc*/ .lkeyoI[data-inactive]{cursor:auto;}/*!sc*/ .lkeyoI:disabled{cursor:not-allowed;box-shadow:none;color:var(--fgColor-disabled,var(--color-primer-fg-disabled,#8c959f));border-color:var(--button-default-borderColor-disabled,var(--button-default-borderColor-rest,var(--color-btn-border,rgba(31,35,40,0.15))));background-color:var(--button-default-bgColor-disabled,var(--control-bgColor-disabled,var(--color-input-disabled-bg,rgba(175,184,193,0.2))));}/*!sc*/ .lkeyoI:disabled [data-component=ButtonCounter]{color:inherit;}/*!sc*/ @media (forced-colors:active){.lkeyoI:focus{outline:solid 1px transparent;}}/*!sc*/ .lkeyoI [data-component=ButtonCounter]{font-size:12px;background-color:var(--buttonCounter-default-bgColor-rest,var(--color-btn-counter-bg,rgba(31,35,40,0.08)));}/*!sc*/ .lkeyoI[data-component=IconButton]{display:inline-grid;padding:unset;place-content:center;width:32px;min-width:unset;}/*!sc*/ .lkeyoI[data-size="small"]{padding:0 8px;height:28px;gap:4px;font-size:12px;}/*!sc*/ .lkeyoI[data-size="small"] [data-component="text"]{line-height:calc(20 / 12);}/*!sc*/ .lkeyoI[data-size="small"] [data-component=ButtonCounter]{font-size:12px;}/*!sc*/ .lkeyoI[data-size="small"] [data-component="buttonContent"] > :not(:last-child){margin-right:4px;}/*!sc*/ .lkeyoI[data-size="small"][data-component=IconButton]{width:28px;padding:unset;}/*!sc*/ .lkeyoI[data-size="large"]{padding:0 16px;height:40px;gap:8px;}/*!sc*/ .lkeyoI[data-size="large"] [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .lkeyoI[data-size="large"][data-component=IconButton]{width:40px;padding:unset;}/*!sc*/ .lkeyoI[data-block="block"]{width:100%;}/*!sc*/ .lkeyoI[data-label-wrap="true"]{min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content;height:unset;min-height:var(--control-medium-size,2rem);}/*!sc*/ .lkeyoI[data-label-wrap="true"] [data-component="buttonContent"]{-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;padding-block:calc(var(--control-medium-paddingBlock,0.375rem) - 2px);}/*!sc*/ .lkeyoI[data-label-wrap="true"] [data-component="text"]{white-space:unset;word-break:break-word;}/*!sc*/ .lkeyoI[data-label-wrap="true"][data-size="small"]{height:unset;min-height:var(--control-small-size,1.75rem);}/*!sc*/ .lkeyoI[data-label-wrap="true"][data-size="small"] [data-component="buttonContent"]{padding-block:calc(var(--control-small-paddingBlock,0.25rem) - 2px);}/*!sc*/ .lkeyoI[data-label-wrap="true"][data-size="large"]{height:unset;min-height:var(--control-large-size,2.5rem);padding-inline:var(--control-large-paddingInline-spacious,1rem);}/*!sc*/ .lkeyoI[data-label-wrap="true"][data-size="large"] [data-component="buttonContent"]{padding-block:calc(var(--control-large-paddingBlock,0.625rem) - 2px);}/*!sc*/ .lkeyoI[data-inactive]:not([disabled]){background-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));border-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));color:var(--button-inactive-fgColor,var(--button-inactive-fgColor-rest,var(--color-btn-inactive-text,#57606a)));}/*!sc*/ .lkeyoI[data-inactive]:not([disabled]):focus-visible{box-shadow:none;}/*!sc*/ .lkeyoI [data-component="leadingVisual"]{grid-area:leadingVisual;}/*!sc*/ .lkeyoI [data-component="text"]{grid-area:text;line-height:calc(20/14);white-space:nowrap;}/*!sc*/ .lkeyoI [data-component="trailingVisual"]{grid-area:trailingVisual;}/*!sc*/ .lkeyoI [data-component="trailingAction"]{margin-right:-4px;}/*!sc*/ .lkeyoI [data-component="buttonContent"]{-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;display:grid;grid-template-areas:"leadingVisual text trailingVisual";grid-template-columns:min-content minmax(0,auto) min-content;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;}/*!sc*/ .lkeyoI [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .lkeyoI [data-component="loadingSpinner"]{grid-area:text;margin-right:0px !important;place-self:center;}/*!sc*/ .lkeyoI [data-component="loadingSpinner"] + [data-component="text"]{visibility:hidden;}/*!sc*/ .lkeyoI:hover:not([disabled]):not([data-inactive]){background-color:var(--button-default-bgColor-hover,var(--color-btn-hover-bg,#f3f4f6));border-color:var(--button-default-borderColor-hover,var(--button-default-borderColor-hover,var(--color-btn-hover-border,rgba(31,35,40,0.15))));}/*!sc*/ .lkeyoI:active:not([disabled]):not([data-inactive]){background-color:var(--button-default-bgColor-active,var(--color-btn-active-bg,hsla(220,14%,93%,1)));border-color:var(--button-default-borderColor-active,var(--button-default-borderColor-active,var(--color-btn-active-border,rgba(31,35,40,0.15))));}/*!sc*/ .lkeyoI[aria-expanded=true]{background-color:var(--button-default-bgColor-active,var(--color-btn-active-bg,hsla(220,14%,93%,1)));border-color:var(--button-default-borderColor-active,var(--button-default-borderColor-active,var(--color-btn-active-border,rgba(31,35,40,0.15))));}/*!sc*/ .lkeyoI [data-component="leadingVisual"],.lkeyoI [data-component="trailingVisual"],.lkeyoI [data-component="trailingAction"]{color:var(--button-color,var(--fgColor-muted,var(--color-fg-muted,#656d76)));}/*!sc*/ .lkeyoI[data-component="IconButton"][data-no-visuals]{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .lkeyoI[data-no-visuals]{display:none;}/*!sc*/ .htZXvk{border-radius:6px;border:1px solid;border-color:var(--button-default-borderColor-rest,var(--button-default-borderColor-rest,var(--color-btn-border,rgba(31,35,40,0.15))));font-family:inherit;font-weight:500;font-size:14px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-text-decoration:none;text-decoration:none;text-align:center;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-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;height:32px;padding:0 12px;gap:8px;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content;-webkit-transition:80ms cubic-bezier(0.65,0,0.35,1);transition:80ms cubic-bezier(0.65,0,0.35,1);-webkit-transition-property:color,fill,background-color,border-color;transition-property:color,fill,background-color,border-color;color:var(--button-default-fgColor-rest,var(--color-btn-text,#24292f));background-color:var(--button-default-bgColor-rest,var(--color-btn-bg,#f6f8fa));box-shadow:var(--button-default-shadow-resting,var(--color-btn-shadow,0 1px 0 rgba(31,35,40,0.04))),var(--button-default-shadow-inset,var(--color-btn-inset-shadow,inset 0 1px 0 rgba(255,255,255,0.25)));}/*!sc*/ .htZXvk:focus:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .htZXvk:focus:not(:disabled):not(:focus-visible){outline:solid 1px transparent;}/*!sc*/ .htZXvk:focus-visible:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .htZXvk[href]{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;}/*!sc*/ .htZXvk[href]:hover{-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .htZXvk:hover{-webkit-transition-duration:80ms;transition-duration:80ms;}/*!sc*/ .htZXvk:active{-webkit-transition:none;transition:none;}/*!sc*/ .htZXvk[data-inactive]{cursor:auto;}/*!sc*/ .htZXvk:disabled{cursor:not-allowed;box-shadow:none;color:var(--fgColor-disabled,var(--color-primer-fg-disabled,#8c959f));border-color:var(--button-default-borderColor-disabled,var(--button-default-borderColor-rest,var(--color-btn-border,rgba(31,35,40,0.15))));background-color:var(--button-default-bgColor-disabled,var(--control-bgColor-disabled,var(--color-input-disabled-bg,rgba(175,184,193,0.2))));}/*!sc*/ .htZXvk:disabled [data-component=ButtonCounter]{color:inherit;}/*!sc*/ @media (forced-colors:active){.htZXvk:focus{outline:solid 1px transparent;}}/*!sc*/ .htZXvk [data-component=ButtonCounter]{font-size:12px;background-color:var(--buttonCounter-default-bgColor-rest,var(--color-btn-counter-bg,rgba(31,35,40,0.08)));}/*!sc*/ .htZXvk[data-component=IconButton]{display:inline-grid;padding:unset;place-content:center;width:32px;min-width:unset;}/*!sc*/ .htZXvk[data-size="small"]{padding:0 8px;height:28px;gap:4px;font-size:12px;}/*!sc*/ .htZXvk[data-size="small"] [data-component="text"]{line-height:calc(20 / 12);}/*!sc*/ .htZXvk[data-size="small"] [data-component=ButtonCounter]{font-size:12px;}/*!sc*/ .htZXvk[data-size="small"] [data-component="buttonContent"] > :not(:last-child){margin-right:4px;}/*!sc*/ .htZXvk[data-size="small"][data-component=IconButton]{width:28px;padding:unset;}/*!sc*/ .htZXvk[data-size="large"]{padding:0 16px;height:40px;gap:8px;}/*!sc*/ .htZXvk[data-size="large"] [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .htZXvk[data-size="large"][data-component=IconButton]{width:40px;padding:unset;}/*!sc*/ .htZXvk[data-block="block"]{width:100%;}/*!sc*/ .htZXvk[data-label-wrap="true"]{min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content;height:unset;min-height:var(--control-medium-size,2rem);}/*!sc*/ .htZXvk[data-label-wrap="true"] [data-component="buttonContent"]{-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;padding-block:calc(var(--control-medium-paddingBlock,0.375rem) - 2px);}/*!sc*/ .htZXvk[data-label-wrap="true"] [data-component="text"]{white-space:unset;word-break:break-word;}/*!sc*/ .htZXvk[data-label-wrap="true"][data-size="small"]{height:unset;min-height:var(--control-small-size,1.75rem);}/*!sc*/ .htZXvk[data-label-wrap="true"][data-size="small"] [data-component="buttonContent"]{padding-block:calc(var(--control-small-paddingBlock,0.25rem) - 2px);}/*!sc*/ .htZXvk[data-label-wrap="true"][data-size="large"]{height:unset;min-height:var(--control-large-size,2.5rem);padding-inline:var(--control-large-paddingInline-spacious,1rem);}/*!sc*/ .htZXvk[data-label-wrap="true"][data-size="large"] [data-component="buttonContent"]{padding-block:calc(var(--control-large-paddingBlock,0.625rem) - 2px);}/*!sc*/ .htZXvk[data-inactive]:not([disabled]){background-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));border-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));color:var(--button-inactive-fgColor,var(--button-inactive-fgColor-rest,var(--color-btn-inactive-text,#57606a)));}/*!sc*/ .htZXvk[data-inactive]:not([disabled]):focus-visible{box-shadow:none;}/*!sc*/ .htZXvk [data-component="leadingVisual"]{grid-area:leadingVisual;}/*!sc*/ .htZXvk [data-component="text"]{grid-area:text;line-height:calc(20/14);white-space:nowrap;}/*!sc*/ .htZXvk [data-component="trailingVisual"]{grid-area:trailingVisual;}/*!sc*/ .htZXvk [data-component="trailingAction"]{margin-right:-4px;}/*!sc*/ .htZXvk [data-component="buttonContent"]{-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;display:grid;grid-template-areas:"leadingVisual text trailingVisual";grid-template-columns:min-content minmax(0,auto) min-content;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;}/*!sc*/ .htZXvk [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .htZXvk [data-component="loadingSpinner"]{grid-area:text;margin-right:0px !important;place-self:center;}/*!sc*/ .htZXvk [data-component="loadingSpinner"] + [data-component="text"]{visibility:hidden;}/*!sc*/ .htZXvk:hover:not([disabled]):not([data-inactive]){background-color:var(--button-default-bgColor-hover,var(--color-btn-hover-bg,#f3f4f6));border-color:var(--button-default-borderColor-hover,var(--button-default-borderColor-hover,var(--color-btn-hover-border,rgba(31,35,40,0.15))));}/*!sc*/ .htZXvk:active:not([disabled]):not([data-inactive]){background-color:var(--button-default-bgColor-active,var(--color-btn-active-bg,hsla(220,14%,93%,1)));border-color:var(--button-default-borderColor-active,var(--button-default-borderColor-active,var(--color-btn-active-border,rgba(31,35,40,0.15))));}/*!sc*/ .htZXvk[aria-expanded=true]{background-color:var(--button-default-bgColor-active,var(--color-btn-active-bg,hsla(220,14%,93%,1)));border-color:var(--button-default-borderColor-active,var(--button-default-borderColor-active,var(--color-btn-active-border,rgba(31,35,40,0.15))));}/*!sc*/ .htZXvk [data-component="leadingVisual"],.htZXvk [data-component="trailingVisual"],.htZXvk [data-component="trailingAction"]{color:var(--button-color,var(--fgColor-muted,var(--color-fg-muted,#656d76)));}/*!sc*/ .htZXvk[data-component="IconButton"][data-no-visuals]{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .htZXvk[data-no-visuals]{margin-left:16px;}/*!sc*/ @media (min-width:768px){.htZXvk[data-no-visuals]{margin-left:0;}}/*!sc*/ @media (min-width:1012px){.htZXvk[data-no-visuals]{display:none;}}/*!sc*/ .jCopKa{border-radius:6px;border:1px solid;border-color:transparent;font-family:inherit;font-weight:500;font-size:14px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-text-decoration:none;text-decoration:none;text-align:center;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-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;height:32px;padding:0 12px;gap:8px;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content;-webkit-transition:80ms cubic-bezier(0.65,0,0.35,1);transition:80ms cubic-bezier(0.65,0,0.35,1);-webkit-transition-property:color,fill,background-color,border-color;transition-property:color,fill,background-color,border-color;color:var(--button-default-fgColor-rest,var(--color-btn-text,#24292f));background-color:transparent;box-shadow:none;}/*!sc*/ .jCopKa:focus:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .jCopKa:focus:not(:disabled):not(:focus-visible){outline:solid 1px transparent;}/*!sc*/ .jCopKa:focus-visible:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .jCopKa[href]{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;}/*!sc*/ .jCopKa[href]:hover{-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .jCopKa:hover{-webkit-transition-duration:80ms;transition-duration:80ms;}/*!sc*/ .jCopKa:active{-webkit-transition:none;transition:none;}/*!sc*/ .jCopKa[data-inactive]{cursor:auto;}/*!sc*/ .jCopKa:disabled{cursor:not-allowed;box-shadow:none;color:var(--fgColor-disabled,var(--color-primer-fg-disabled,#8c959f));}/*!sc*/ .jCopKa:disabled [data-component=ButtonCounter],.jCopKa:disabled [data-component="leadingVisual"],.jCopKa:disabled [data-component="trailingAction"]{color:inherit;}/*!sc*/ @media (forced-colors:active){.jCopKa:focus{outline:solid 1px transparent;}}/*!sc*/ .jCopKa [data-component=ButtonCounter]{font-size:12px;}/*!sc*/ .jCopKa[data-component=IconButton]{display:inline-grid;padding:unset;place-content:center;width:32px;min-width:unset;}/*!sc*/ .jCopKa[data-size="small"]{padding:0 8px;height:28px;gap:4px;font-size:12px;}/*!sc*/ .jCopKa[data-size="small"] [data-component="text"]{line-height:calc(20 / 12);}/*!sc*/ .jCopKa[data-size="small"] [data-component=ButtonCounter]{font-size:12px;}/*!sc*/ .jCopKa[data-size="small"] [data-component="buttonContent"] > :not(:last-child){margin-right:4px;}/*!sc*/ .jCopKa[data-size="small"][data-component=IconButton]{width:28px;padding:unset;}/*!sc*/ .jCopKa[data-size="large"]{padding:0 16px;height:40px;gap:8px;}/*!sc*/ .jCopKa[data-size="large"] [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .jCopKa[data-size="large"][data-component=IconButton]{width:40px;padding:unset;}/*!sc*/ .jCopKa[data-block="block"]{width:100%;}/*!sc*/ .jCopKa[data-label-wrap="true"]{min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content;height:unset;min-height:var(--control-medium-size,2rem);}/*!sc*/ .jCopKa[data-label-wrap="true"] [data-component="buttonContent"]{-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;padding-block:calc(var(--control-medium-paddingBlock,0.375rem) - 2px);}/*!sc*/ .jCopKa[data-label-wrap="true"] [data-component="text"]{white-space:unset;word-break:break-word;}/*!sc*/ .jCopKa[data-label-wrap="true"][data-size="small"]{height:unset;min-height:var(--control-small-size,1.75rem);}/*!sc*/ .jCopKa[data-label-wrap="true"][data-size="small"] [data-component="buttonContent"]{padding-block:calc(var(--control-small-paddingBlock,0.25rem) - 2px);}/*!sc*/ .jCopKa[data-label-wrap="true"][data-size="large"]{height:unset;min-height:var(--control-large-size,2.5rem);padding-inline:var(--control-large-paddingInline-spacious,1rem);}/*!sc*/ .jCopKa[data-label-wrap="true"][data-size="large"] [data-component="buttonContent"]{padding-block:calc(var(--control-large-paddingBlock,0.625rem) - 2px);}/*!sc*/ .jCopKa[data-inactive]:not([disabled]){background-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));border-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));color:var(--button-inactive-fgColor,var(--button-inactive-fgColor-rest,var(--color-btn-inactive-text,#57606a)));}/*!sc*/ .jCopKa[data-inactive]:not([disabled]):focus-visible{box-shadow:none;}/*!sc*/ .jCopKa [data-component="leadingVisual"]{grid-area:leadingVisual;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .jCopKa [data-component="text"]{grid-area:text;line-height:calc(20/14);white-space:nowrap;}/*!sc*/ .jCopKa [data-component="trailingVisual"]{grid-area:trailingVisual;}/*!sc*/ .jCopKa [data-component="trailingAction"]{margin-right:-4px;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .jCopKa [data-component="buttonContent"]{-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;display:grid;grid-template-areas:"leadingVisual text trailingVisual";grid-template-columns:min-content minmax(0,auto) min-content;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;}/*!sc*/ .jCopKa [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .jCopKa [data-component="loadingSpinner"]{grid-area:text;margin-right:0px !important;place-self:center;}/*!sc*/ .jCopKa [data-component="loadingSpinner"] + [data-component="text"]{visibility:hidden;}/*!sc*/ .jCopKa:hover:not([disabled]){background-color:var(--control-transparent-bgColor-hover,var(--color-action-list-item-default-hover-bg,rgba(208,215,222,0.32)));}/*!sc*/ .jCopKa:active:not([disabled]){background-color:var(--control-transparent-bgColor-active,var(--color-action-list-item-default-active-bg,rgba(208,215,222,0.48)));}/*!sc*/ .jCopKa[aria-expanded=true]{background-color:var(--control-transparent-bgColor-selected,var(--color-action-list-item-default-selected-bg,rgba(208,215,222,0.24)));}/*!sc*/ .jCopKa[data-component="IconButton"][data-no-visuals]{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .jCopKa[data-no-visuals]{color:var(--fgColor-accent,var(--color-accent-fg,#0969da));}/*!sc*/ .jCopKa:has([data-component="ButtonCounter"]){color:var(--button-default-fgColor-rest,var(--color-btn-text,#24292f));}/*!sc*/ .jCopKa:disabled[data-no-visuals]{color:var(--fgColor-disabled,var(--color-primer-fg-disabled,#8c959f));}/*!sc*/ .jCopKa:disabled[data-no-visuals] [data-component=ButtonCounter]{color:inherit;}/*!sc*/ data-styled.g4[id="types__StyledButton-sc-ws60qy-0"]{content:"hXCKEr,jOdgLl,hmWbvh,lkeyoI,htZXvk,jCopKa,"}/*!sc*/ .eiGLpS{display:none;}/*!sc*/ .eiGLpS[popover]{position:absolute;padding:0.5em 0.75em;width:-webkit-max-content;width:-moz-max-content;width:max-content;margin:auto;-webkit-clip:auto;clip:auto;white-space:normal;font:normal normal 11px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";-webkit-font-smoothing:subpixel-antialiased;color:var(--fgColor-onEmphasis,var(--color-fg-on-emphasis,#ffffff));text-align:center;word-wrap:break-word;background:var(--bgColor-emphasis,var(--color-neutral-emphasis-plus,#24292f));border-radius:6px;border:0;opacity:0;max-width:250px;inset:auto;overflow:visible;}/*!sc*/ .eiGLpS[popover]:popover-open{display:block;}/*!sc*/ .eiGLpS[popover].\:popover-open{display:block;}/*!sc*/ @media (forced-colors:active){.eiGLpS{outline:1px solid transparent;}}/*!sc*/ .eiGLpS::after{position:absolute;display:block;right:0;left:0;height:var(--overlay-offset,0.25rem);content:'';}/*!sc*/ .eiGLpS[data-direction='n']::after,.eiGLpS[data-direction='ne']::after,.eiGLpS[data-direction='nw']::after{top:100%;}/*!sc*/ .eiGLpS[data-direction='s']::after,.eiGLpS[data-direction='se']::after,.eiGLpS[data-direction='sw']::after{bottom:100%;}/*!sc*/ .eiGLpS[data-direction='w']::after{position:absolute;display:block;height:100%;width:8px;content:'';bottom:0;left:100%;}/*!sc*/ .eiGLpS[data-direction='e']::after{position:absolute;display:block;height:100%;width:8px;content:'';bottom:0;right:100%;margin-left:-8px;}/*!sc*/ @-webkit-keyframes tooltip-appear{from{opacity:0;}to{opacity:1;}}/*!sc*/ @keyframes tooltip-appear{from{opacity:0;}to{opacity:1;}}/*!sc*/ .eiGLpS:popover-open,.eiGLpS:popover-open::before{-webkit-animation-name:tooltip-appear;animation-name:tooltip-appear;-webkit-animation-duration:0.1s;animation-duration:0.1s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;-webkit-animation-delay:0s;animation-delay:0s;}/*!sc*/ .eiGLpS.\:popover-open,.eiGLpS.\:popover-open::before{-webkit-animation-name:tooltip-appear;animation-name:tooltip-appear;-webkit-animation-duration:0.1s;animation-duration:0.1s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;-webkit-animation-delay:0s;animation-delay:0s;}/*!sc*/ data-styled.g8[id="Tooltip__StyledTooltip-sc-e45c7z-0"]{content:"eiGLpS,"}/*!sc*/ .daAEFx{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg);}/*!sc*/ .gzcJGA{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg);}/*!sc*/ data-styled.g11[id="Octicon-sc-9kayk9-0"]{content:"daAEFx,gzcJGA,"}/*!sc*/ .bebFBv{font-weight:600;font-size:32px;margin:0;font-size:14px;}/*!sc*/ @media (min-width:1012px) and (max-width:1400px){.bebFBv{margin-top:2rem;}}/*!sc*/ data-styled.g28[id="Heading__StyledHeading-sc-1c1dgg0-0"]{content:"bebFBv,"}/*!sc*/ .hgjakc{margin:0;padding-inline-start:0;padding-top:8px;padding-bottom:8px;}/*!sc*/ data-styled.g29[id="List__ListBox-sc-1x7olzq-0"]{content:"hgjakc,"}/*!sc*/ .itjSOb{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-left:8px;padding-right:8px;padding-top:6px;padding-bottom:6px;line-height:20px;min-height:5px;margin-left:8px;margin-right:8px;border-radius:6px;-webkit-transition:background 33.333ms linear;transition:background 33.333ms linear;color:var(--fgColor-default,var(--color-fg-default,#1F2328));cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:unset;border:unset;width:calc(100% - 16px);font-family:unset;text-align:unset;margin-top:unset;margin-bottom:unset;}/*!sc*/ .itjSOb[data-loading]{cursor:default;}/*!sc*/ .itjSOb[aria-disabled],.itjSOb[data-inactive]{cursor:not-allowed;}/*!sc*/ .itjSOb[aria-disabled] [data-component="ActionList.Checkbox"],.itjSOb[data-inactive] [data-component="ActionList.Checkbox"]{cursor:not-allowed;background-color:var(--color-input-disabled-bg,rgba(175,184,193,0.2));border-color:var(--color-input-disabled-bg,rgba(175,184,193,0.2));}/*!sc*/ @media (forced-colors:active){.itjSOb:focus,.itjSOb:focus-visible,.itjSOb > a.focus-visible{outline:solid 1px transparent !important;}}/*!sc*/ .itjSOb [data-component="ActionList.Item--DividerContainer"]{position:relative;}/*!sc*/ .itjSOb [data-component="ActionList.Item--DividerContainer"]::before{content:" ";display:block;position:absolute;width:100%;top:-7px;border:0 solid;border-top-width:0;border-color:var(--divider-color,transparent);}/*!sc*/ .itjSOb:not(:first-of-type){--divider-color:var(--borderColor-muted,var(--color-action-list-item-inline-divider,rgba(208,215,222,0.48)));}/*!sc*/ [data-component="ActionList.Divider"] + .Item__LiBox-sc-yeql7o-0{--divider-color:transparent !important;}/*!sc*/ .itjSOb:hover:not([aria-disabled]):not([data-inactive]):not([data-loading]),.itjSOb[data-focus-visible-added]:not([aria-disabled]):not([data-inactive]){--divider-color:transparent;}/*!sc*/ .itjSOb:hover:not([aria-disabled]):not([data-inactive]):not([data-loading]) + .Item__LiBox-sc-yeql7o-0,.itjSOb[data-focus-visible-added] + li{--divider-color:transparent;}/*!sc*/ @media (hover:hover) and (pointer:fine){.itjSOb:hover:not([aria-disabled]):not([data-inactive]){background-color:var(--control-transparent-bgColor-hover,var(--color-action-list-item-default-hover-bg,rgba(208,215,222,0.32)));color:var(--fgColor-default,var(--color-fg-default,#1F2328));box-shadow:inset 0 0 0 max(1px,0.0625rem) var(--control-transparent-borderColor-active,var(--color-action-list-item-default-active-border,transparent));}.itjSOb:focus-visible,.itjSOb > a.focus-visible,.itjSOb:focus.focus-visible{outline:none;border:2 solid;box-shadow:0 0 0 2px var(--bgColor-accent-emphasis,var(--color-accent-emphasis,#0969da));}.itjSOb:active:not([aria-disabled]):not([data-inactive]){background-color:var(--control-transparent-bgColor-active,var(--color-action-list-item-default-active-bg,rgba(208,215,222,0.48)));color:var(--fgColor-default,var(--color-fg-default,#1F2328));}}/*!sc*/ .lnYQME{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-left:0;padding-right:0;font-size:14px;padding-top:0;padding-bottom:0;line-height:20px;min-height:5px;margin-left:8px;margin-right:8px;border-radius:6px;-webkit-transition:background 33.333ms linear;transition:background 33.333ms linear;color:var(--fgColor-default,var(--color-fg-default,#1F2328));cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:unset;border:unset;width:calc(100% - 16px);font-family:unset;text-align:unset;margin-top:unset;margin-bottom:unset;}/*!sc*/ .lnYQME[data-loading]{cursor:default;}/*!sc*/ .lnYQME[aria-disabled],.lnYQME[data-inactive]{cursor:not-allowed;}/*!sc*/ .lnYQME[aria-disabled] [data-component="ActionList.Checkbox"],.lnYQME[data-inactive] [data-component="ActionList.Checkbox"]{cursor:not-allowed;background-color:var(--color-input-disabled-bg,rgba(175,184,193,0.2));border-color:var(--color-input-disabled-bg,rgba(175,184,193,0.2));}/*!sc*/ @media (forced-colors:active){.lnYQME:focus,.lnYQME:focus-visible,.lnYQME > a.focus-visible{outline:solid 1px transparent !important;}}/*!sc*/ .lnYQME [data-component="ActionList.Item--DividerContainer"]{position:relative;}/*!sc*/ .lnYQME [data-component="ActionList.Item--DividerContainer"]::before{content:" ";display:block;position:absolute;width:100%;top:-7px;border:0 solid;border-top-width:0;border-color:var(--divider-color,transparent);}/*!sc*/ .lnYQME:not(:first-of-type){--divider-color:var(--borderColor-muted,var(--color-action-list-item-inline-divider,rgba(208,215,222,0.48)));}/*!sc*/ [data-component="ActionList.Divider"] + .Item__LiBox-sc-yeql7o-0{--divider-color:transparent !important;}/*!sc*/ .lnYQME:hover:not([aria-disabled]):not([data-inactive]):not([data-loading]),.lnYQME[data-focus-visible-added]:not([aria-disabled]):not([data-inactive]){--divider-color:transparent;}/*!sc*/ .lnYQME:hover:not([aria-disabled]):not([data-inactive]):not([data-loading]) + .Item__LiBox-sc-yeql7o-0,.lnYQME[data-focus-visible-added] + li{--divider-color:transparent;}/*!sc*/ @media (hover:hover) and (pointer:fine){.lnYQME:hover:not([aria-disabled]):not([data-inactive]){background-color:var(--control-transparent-bgColor-hover,var(--color-action-list-item-default-hover-bg,rgba(208,215,222,0.32)));color:var(--fgColor-default,var(--color-fg-default,#1F2328));box-shadow:inset 0 0 0 max(1px,0.0625rem) var(--control-transparent-borderColor-active,var(--color-action-list-item-default-active-border,transparent));}.lnYQME:focus-visible,.lnYQME > a.focus-visible,.lnYQME:focus.focus-visible{outline:none;border:2 solid;box-shadow:0 0 0 2px var(--bgColor-accent-emphasis,var(--color-accent-emphasis,#0969da));}.lnYQME:active:not([aria-disabled]):not([data-inactive]){background-color:var(--control-transparent-bgColor-active,var(--color-action-list-item-default-active-bg,rgba(208,215,222,0.48)));color:var(--fgColor-default,var(--color-fg-default,#1F2328));}}/*!sc*/ .kXKjOF{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-left:16px;padding-right:8px;font-size:12px;padding-top:6px;padding-bottom:6px;line-height:20px;min-height:5px;margin-left:8px;margin-right:8px;border-radius:6px;-webkit-transition:background 33.333ms linear;transition:background 33.333ms linear;color:var(--fgColor-default,var(--color-fg-default,#1F2328));cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:unset;border:unset;width:calc(100% - 16px);font-family:unset;text-align:unset;margin-top:unset;margin-bottom:unset;}/*!sc*/ .kXKjOF[data-loading]{cursor:default;}/*!sc*/ .kXKjOF[aria-disabled],.kXKjOF[data-inactive]{cursor:not-allowed;}/*!sc*/ .kXKjOF[aria-disabled] [data-component="ActionList.Checkbox"],.kXKjOF[data-inactive] [data-component="ActionList.Checkbox"]{cursor:not-allowed;background-color:var(--color-input-disabled-bg,rgba(175,184,193,0.2));border-color:var(--color-input-disabled-bg,rgba(175,184,193,0.2));}/*!sc*/ @media (forced-colors:active){.kXKjOF:focus,.kXKjOF:focus-visible,.kXKjOF > a.focus-visible{outline:solid 1px transparent !important;}}/*!sc*/ .kXKjOF [data-component="ActionList.Item--DividerContainer"]{position:relative;}/*!sc*/ .kXKjOF [data-component="ActionList.Item--DividerContainer"]::before{content:" ";display:block;position:absolute;width:100%;top:-7px;border:0 solid;border-top-width:0;border-color:var(--divider-color,transparent);}/*!sc*/ .kXKjOF:not(:first-of-type){--divider-color:var(--borderColor-muted,var(--color-action-list-item-inline-divider,rgba(208,215,222,0.48)));}/*!sc*/ [data-component="ActionList.Divider"] + .Item__LiBox-sc-yeql7o-0{--divider-color:transparent !important;}/*!sc*/ .kXKjOF:hover:not([aria-disabled]):not([data-inactive]):not([data-loading]),.kXKjOF[data-focus-visible-added]:not([aria-disabled]):not([data-inactive]){--divider-color:transparent;}/*!sc*/ .kXKjOF:hover:not([aria-disabled]):not([data-inactive]):not([data-loading]) + .Item__LiBox-sc-yeql7o-0,.kXKjOF[data-focus-visible-added] + li{--divider-color:transparent;}/*!sc*/ @media (hover:hover) and (pointer:fine){.kXKjOF:hover:not([aria-disabled]):not([data-inactive]){background-color:var(--control-transparent-bgColor-hover,var(--color-action-list-item-default-hover-bg,rgba(208,215,222,0.32)));color:var(--fgColor-default,var(--color-fg-default,#1F2328));box-shadow:inset 0 0 0 max(1px,0.0625rem) var(--control-transparent-borderColor-active,var(--color-action-list-item-default-active-border,transparent));}.kXKjOF:focus-visible,.kXKjOF > a.focus-visible,.kXKjOF:focus.focus-visible{outline:none;border:2 solid;box-shadow:0 0 0 2px var(--bgColor-accent-emphasis,var(--color-accent-emphasis,#0969da));}.kXKjOF:active:not([aria-disabled]):not([data-inactive]){background-color:var(--control-transparent-bgColor-active,var(--color-action-list-item-default-active-bg,rgba(208,215,222,0.48)));color:var(--fgColor-default,var(--color-fg-default,#1F2328));}}/*!sc*/ .hTSEii{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-left:0;padding-right:0;font-size:14px;padding-top:0;padding-bottom:0;line-height:20px;min-height:5px;margin-left:8px;margin-right:8px;border-radius:6px;-webkit-transition:background 33.333ms linear;transition:background 33.333ms linear;color:var(--fgColor-default,var(--color-fg-default,#1F2328));cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:unset;border:unset;width:calc(100% - 16px);font-family:unset;text-align:unset;margin-top:unset;margin-bottom:unset;font-weight:600;background-color:var(--control-transparent-bgColor-selected,var(--color-action-list-item-default-selected-bg,rgba(208,215,222,0.24)));}/*!sc*/ .hTSEii[data-loading]{cursor:default;}/*!sc*/ .hTSEii[aria-disabled],.hTSEii[data-inactive]{cursor:not-allowed;}/*!sc*/ .hTSEii[aria-disabled] [data-component="ActionList.Checkbox"],.hTSEii[data-inactive] [data-component="ActionList.Checkbox"]{cursor:not-allowed;background-color:var(--color-input-disabled-bg,rgba(175,184,193,0.2));border-color:var(--color-input-disabled-bg,rgba(175,184,193,0.2));}/*!sc*/ @media (forced-colors:active){.hTSEii:focus,.hTSEii:focus-visible,.hTSEii > a.focus-visible{outline:solid 1px transparent !important;}}/*!sc*/ .hTSEii [data-component="ActionList.Item--DividerContainer"]{position:relative;}/*!sc*/ .hTSEii [data-component="ActionList.Item--DividerContainer"]::before{content:" ";display:block;position:absolute;width:100%;top:-7px;border:0 solid;border-top-width:0;border-color:var(--divider-color,transparent);}/*!sc*/ .hTSEii:not(:first-of-type){--divider-color:var(--borderColor-muted,var(--color-action-list-item-inline-divider,rgba(208,215,222,0.48)));}/*!sc*/ [data-component="ActionList.Divider"] + .Item__LiBox-sc-yeql7o-0{--divider-color:transparent !important;}/*!sc*/ .hTSEii:hover:not([aria-disabled]):not([data-inactive]):not([data-loading]),.hTSEii[data-focus-visible-added]:not([aria-disabled]):not([data-inactive]){--divider-color:transparent;}/*!sc*/ .hTSEii:hover:not([aria-disabled]):not([data-inactive]):not([data-loading]) + .Item__LiBox-sc-yeql7o-0,.hTSEii[data-focus-visible-added] + li{--divider-color:transparent;}/*!sc*/ .hTSEii::after{position:absolute;top:calc(50% - 12px);left:-8px;width:4px;height:24px;content:"";background-color:var(--fgColor-accent,var(--color-accent-fg,#0969da));border-radius:6px;}/*!sc*/ @media (hover:hover) and (pointer:fine){.hTSEii:hover:not([aria-disabled]):not([data-inactive]){background-color:var(--control-transparent-bgColor-hover,var(--color-action-list-item-default-hover-bg,rgba(208,215,222,0.32)));color:var(--fgColor-default,var(--color-fg-default,#1F2328));box-shadow:inset 0 0 0 max(1px,0.0625rem) var(--control-transparent-borderColor-active,var(--color-action-list-item-default-active-border,transparent));}.hTSEii:focus-visible,.hTSEii > a.focus-visible,.hTSEii:focus.focus-visible{outline:none;border:2 solid;box-shadow:0 0 0 2px var(--bgColor-accent-emphasis,var(--color-accent-emphasis,#0969da));}.hTSEii:active:not([aria-disabled]):not([data-inactive]){background-color:var(--control-transparent-bgColor-active,var(--color-action-list-item-default-active-bg,rgba(208,215,222,0.48)));color:var(--fgColor-default,var(--color-fg-default,#1F2328));}}/*!sc*/ data-styled.g31[id="Item__LiBox-sc-yeql7o-0"]{content:"itjSOb,lnYQME,kXKjOF,hTSEii,"}/*!sc*/ .fuIgwR{color:var(--fgColor-accent,var(--color-accent-fg,#0969da));-webkit-text-decoration:none;text-decoration:none;padding-left:16px;padding-right:8px;padding-top:6px;padding-bottom:6px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;border-radius:6px;color:inherit;font-size:12px;font-weight:400;}/*!sc*/ [data-a11y-link-underlines='true'] .Link__StyledLink-sc-14289xe-0[data-inline='true']{-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/ .fuIgwR:hover{-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/ .fuIgwR:is(button){display:inline-block;padding:0;font-size:inherit;white-space:nowrap;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;}/*!sc*/ .fuIgwR:hover{color:inherit;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .dibTck{color:var(--fgColor-accent,var(--color-accent-fg,#0969da));-webkit-text-decoration:none;text-decoration:none;padding-left:24px;padding-right:8px;padding-top:6px;padding-bottom:6px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;border-radius:6px;color:inherit;font-size:12px;font-weight:400;}/*!sc*/ [data-a11y-link-underlines='true'] .Link__StyledLink-sc-14289xe-0[data-inline='true']{-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/ .dibTck:hover{-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/ .dibTck:is(button){display:inline-block;padding:0;font-size:inherit;white-space:nowrap;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;}/*!sc*/ .dibTck:hover{color:inherit;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .cJbOew{color:var(--fgColor-accent,var(--color-accent-fg,#0969da));-webkit-text-decoration:none;text-decoration:none;padding-left:8px;padding-right:8px;padding-top:6px;padding-bottom:6px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;border-radius:6px;color:inherit;}/*!sc*/ [data-a11y-link-underlines='true'] .Link__StyledLink-sc-14289xe-0[data-inline='true']{-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/ .cJbOew:hover{-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/ .cJbOew:is(button){display:inline-block;padding:0;font-size:inherit;white-space:nowrap;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;}/*!sc*/ .cJbOew:hover{color:inherit;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ data-styled.g32[id="Link__StyledLink-sc-14289xe-0"]{content:"fuIgwR,dibTck,cJbOew,"}/*!sc*/ .cnCOhW{font-size:14px;line-height:20px;color:var(--fgColor-default,var(--color-fg-default,#1F2328));vertical-align:middle;background-color:var(--bgColor-default,var(--color-canvas-default,#ffffff));border:1px solid var(--control-borderColor-rest,var(--borderColor-default,var(--color-border-default,#d0d7de)));border-radius:6px;outline:none;box-shadow:var(--shadow-inset,var(--color-primer-shadow-inset,inset 0 1px 0 rgba(208,215,222,0.2)));display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:stretch;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;min-height:32px;overflow:hidden;width:100%;height:2rem;-webkit-transition:width 0.3s ease-in-out;transition:width 0.3s ease-in-out;border-bottom-right-radius:unset;border-top-right-radius:unset;border-right:none;min-width:15rem;}/*!sc*/ .cnCOhW input,.cnCOhW textarea{cursor:text;}/*!sc*/ .cnCOhW select{cursor:pointer;}/*!sc*/ .cnCOhW input::-webkit-input-placeholder,.cnCOhW textarea::-webkit-input-placeholder,.cnCOhW select::-webkit-input-placeholder{color:var(---control-fgColor-placeholder,var(--fgColor-muted,var(--color-fg-muted,#656d76)));}/*!sc*/ .cnCOhW input::-moz-placeholder,.cnCOhW textarea::-moz-placeholder,.cnCOhW select::-moz-placeholder{color:var(---control-fgColor-placeholder,var(--fgColor-muted,var(--color-fg-muted,#656d76)));}/*!sc*/ .cnCOhW input:-ms-input-placeholder,.cnCOhW textarea:-ms-input-placeholder,.cnCOhW select:-ms-input-placeholder{color:var(---control-fgColor-placeholder,var(--fgColor-muted,var(--color-fg-muted,#656d76)));}/*!sc*/ .cnCOhW input::placeholder,.cnCOhW textarea::placeholder,.cnCOhW select::placeholder{color:var(---control-fgColor-placeholder,var(--fgColor-muted,var(--color-fg-muted,#656d76)));}/*!sc*/ .cnCOhW:focus-within{border-color:var(--fgColor-accent,var(--color-accent-fg,#0969da));outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-1px;}/*!sc*/ .cnCOhW > textarea{padding:12px;}/*!sc*/ @media (min-width:768px){.cnCOhW{font-size:14px;}}/*!sc*/ data-styled.g34[id="TextInputWrapper__TextInputBaseWrapper-sc-1mqhpbi-0"]{content:"cnCOhW,"}/*!sc*/ .hmJNAM{background-repeat:no-repeat;background-position:right 8px center;padding-left:0;padding-right:0;width:100%;height:2rem;-webkit-transition:width 0.3s ease-in-out;transition:width 0.3s ease-in-out;border-bottom-right-radius:unset;border-top-right-radius:unset;border-right:none;min-width:15rem;}/*!sc*/ .hmJNAM > :not(:last-child){margin-right:8px;}/*!sc*/ .hmJNAM .TextInput-icon,.hmJNAM .TextInput-action{-webkit-align-self:center;-ms-flex-item-align:center;align-self:center;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}/*!sc*/ .hmJNAM > input,.hmJNAM > select{padding-left:12px;padding-right:12px;}/*!sc*/ data-styled.g35[id="TextInputWrapper-sc-1mqhpbi-1"]{content:"hmJNAM,"}/*!sc*/ .jvumlb{border:0;font-size:inherit;font-family:inherit;background-color:transparent;-webkit-appearance:none;color:inherit;width:100%;}/*!sc*/ .jvumlb:focus{outline:0;}/*!sc*/ data-styled.g36[id="UnstyledTextInput-sc-14ypya-0"]{content:"jvumlb,"}/*!sc*/ </style></head><body><div id="__next"><a href="#main-content" class="visually-hidden skip-button color-bg-accent-emphasis color-fg-on-emphasis">Skip to main content</a><div data-container="header" class="border-bottom d-unset color-border-muted no-print z-3 color-bg-default Header_header__frpqb"><div data-container="notifications"></div><header class="color-bg-default p-2 position-sticky top-0 z-1 border-bottom" role="banner" aria-label="Main"><div class="d-flex flex-justify-between p-2 flex-items-center flex-wrap" data-testid="desktop-header"><div tabindex="-1" class="Header_logoWithClosedSearch__zhF6Q" id="github-logo"><a rel="" class="d-flex flex-items-center color-fg-default no-underline mr-3" href="/en"><svg aria-hidden="true" focusable="false" class="octicon octicon-mark-github" viewBox="0 0 24 24" width="32" height="32" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M12.5.75C6.146.75 1 5.896 1 12.25c0 5.089 3.292 9.387 7.863 10.91.575.101.79-.244.79-.546 0-.273-.014-1.178-.014-2.142-2.889.532-3.636-.704-3.866-1.35-.13-.331-.69-1.352-1.18-1.625-.402-.216-.977-.748-.014-.762.906-.014 1.553.834 1.769 1.179 1.035 1.74 2.688 1.25 3.349.948.1-.747.402-1.25.733-1.538-2.559-.287-5.232-1.279-5.232-5.678 0-1.25.445-2.285 1.178-3.09-.115-.288-.517-1.467.115-3.048 0 0 .963-.302 3.163 1.179.92-.259 1.897-.388 2.875-.388.977 0 1.955.13 2.875.388 2.2-1.495 3.162-1.179 3.162-1.179.633 1.581.23 2.76.115 3.048.733.805 1.179 1.825 1.179 3.09 0 4.413-2.688 5.39-5.247 5.678.417.36.776 1.05.776 2.128 0 1.538-.014 2.774-.014 3.162 0 .302.216.662.79.547C20.709 21.637 24 17.324 24 12.25 24 5.896 18.854.75 12.5.75Z"></path></svg><span class="h4 text-semibold ml-2 mr-3">GitHub Docs</span></a><div class="hide-sm border-left pl-3"><div data-testid="version-picker" class=""><button type="button" aria-label="Select GitHub product version: current version is free-pro-team@latest" class="types__StyledButton-sc-ws60qy-0 hXCKEr color-fg-default width-full p-1 pl-2 pr-2" aria-haspopup="true" aria-expanded="false" tabindex="0" data-loading="false" aria-describedby=":Ripn6:-loading-announcement" id=":Ripn6:"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 cEhRXB"><span data-component="text"><span style="white-space:pre-wrap">Version: </span><span class="f5 color-fg-muted text-normal" data-testid="field">Free, Pro, & Team</span></span></span><span data-component="trailingAction" class="Box-sc-g0xbh4-0 dmdEgz"><svg aria-hidden="true" focusable="false" class="octicon octicon-triangle-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"></path></svg></span></button></div></div></div><div class="d-flex flex-items-center"><div class="Header_searchContainerWithClosedSearch__h372b mr-3"><div data-testid="search"><div class="position-relative z-2"><form role="search" class="width-full d-flex"><meta name="viewport" content="width=device-width initial-scale=1"/><label class="text-normal width-full"><span class="visually-hidden" aria-describedby="Enter a search term to find it in the GitHub Docs.">Search GitHub Docs</span><span class="TextInputWrapper__TextInputBaseWrapper-sc-1mqhpbi-0 TextInputWrapper-sc-1mqhpbi-1 cnCOhW hmJNAM TextInput-wrapper" aria-busy="false"><input type="search" aria-required="true" data-testid="site-search-input" placeholder="Search GitHub Docs" autoComplete="off" autoCorrect="off" autoCapitalize="off" spellcheck="false" maxLength="512" aria-label="Search GitHub Docs" aria-describedby="Enter a search term to find it in the GitHub Docs." data-component="input" class="UnstyledTextInput-sc-14ypya-0 jvumlb" value=""/></span></label><button data-component="IconButton" type="submit" data-loading="false" data-no-visuals="true" aria-describedby=":Rucpn6:-loading-announcement" aria-labelledby=":R6cpn6:" class="types__StyledButton-sc-ws60qy-0 jOdgLl"><svg aria-hidden="true" focusable="false" class="octicon octicon-search" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path></svg></button><span data-direction="s" aria-hidden="true" id=":R6cpn6:" class="Tooltip__StyledTooltip-sc-e45c7z-0 eiGLpS">Search</span></form></div></div></div><div class="d-none d-lg-flex flex-items-center"><div data-testid="language-picker" class="d-flex"><button data-component="IconButton" type="button" aria-haspopup="true" aria-expanded="false" tabindex="0" data-loading="false" data-no-visuals="true" aria-describedby=":Rkpn6:-loading-announcement" aria-labelledby=":Rukpn6:" id=":Rkpn6:" class="types__StyledButton-sc-ws60qy-0 hmWbvh"><svg aria-hidden="true" focusable="false" class="octicon octicon-globe" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM5.78 8.75a9.64 9.64 0 0 0 1.363 4.177c.255.426.542.832.857 1.215.245-.296.551-.705.857-1.215A9.64 9.64 0 0 0 10.22 8.75Zm4.44-1.5a9.64 9.64 0 0 0-1.363-4.177c-.307-.51-.612-.919-.857-1.215a9.927 9.927 0 0 0-.857 1.215A9.64 9.64 0 0 0 5.78 7.25Zm-5.944 1.5H1.543a6.507 6.507 0 0 0 4.666 5.5c-.123-.181-.24-.365-.352-.552-.715-1.192-1.437-2.874-1.581-4.948Zm-2.733-1.5h2.733c.144-2.074.866-3.756 1.58-4.948.12-.197.237-.381.353-.552a6.507 6.507 0 0 0-4.666 5.5Zm10.181 1.5c-.144 2.074-.866 3.756-1.58 4.948-.12.197-.237.381-.353.552a6.507 6.507 0 0 0 4.666-5.5Zm2.733-1.5a6.507 6.507 0 0 0-4.666-5.5c.123.181.24.365.353.552.714 1.192 1.436 2.874 1.58 4.948Z"></path></svg></button><span data-direction="s" aria-hidden="true" id=":Rukpn6:" class="Tooltip__StyledTooltip-sc-e45c7z-0 eiGLpS">Select language: current language is English</span></div></div><button data-component="IconButton" type="button" class="types__StyledButton-sc-ws60qy-0 hmWbvh hide-lg hide-xl d-flex flex-items-center" data-testid="mobile-search-button" aria-expanded="false" data-loading="false" data-no-visuals="true" aria-describedby=":R74pn6:-loading-announcement" aria-labelledby=":R14pn6:"><svg aria-hidden="true" focusable="false" class="octicon octicon-search" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path></svg></button><span data-direction="s" aria-hidden="true" id=":R14pn6:" class="Tooltip__StyledTooltip-sc-e45c7z-0 eiGLpS">Open Search Bar</span><button data-component="IconButton" type="button" class="types__StyledButton-sc-ws60qy-0 lkeyoI px-3" data-testid="mobile-search-button" aria-expanded="false" data-loading="false" data-no-visuals="true" aria-describedby=":R7cpn6:-loading-announcement" aria-labelledby=":R1cpn6:"><svg aria-hidden="true" focusable="false" class="octicon octicon-x" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path></svg></button><span data-direction="s" aria-hidden="true" id=":R1cpn6:" class="Tooltip__StyledTooltip-sc-e45c7z-0 eiGLpS">Close Search Bar</span><div><button data-component="IconButton" type="button" data-testid="mobile-menu" aria-haspopup="true" aria-expanded="false" tabindex="0" data-loading="false" data-no-visuals="true" aria-describedby=":R1kpn6:-loading-announcement" aria-labelledby=":Rvkpn6:" id=":R1kpn6:" class="types__StyledButton-sc-ws60qy-0 htZXvk"><svg aria-hidden="true" focusable="false" class="octicon octicon-kebab-horizontal" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path></svg></button><span data-direction="s" aria-hidden="true" id=":Rvkpn6:" class="Tooltip__StyledTooltip-sc-e45c7z-0 eiGLpS">Open Menu</span></div></div></div><div class="d-flex flex-items-center d-xxl-none mt-2" data-testid="header-subnav"><div class="mr-2" data-testid="header-subnav-hamburger"><button data-component="IconButton" type="button" data-testid="sidebar-hamburger" class="types__StyledButton-sc-ws60qy-0 jCopKa color-fg-muted" data-loading="false" data-no-visuals="true" aria-describedby=":R3b9n6:-loading-announcement" aria-labelledby=":Rb9n6:"><svg aria-hidden="true" focusable="false" class="octicon octicon-three-bars" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M1 2.75A.75.75 0 0 1 1.75 2h12.5a.75.75 0 0 1 0 1.5H1.75A.75.75 0 0 1 1 2.75Zm0 5A.75.75 0 0 1 1.75 7h12.5a.75.75 0 0 1 0 1.5H1.75A.75.75 0 0 1 1 7.75ZM1.75 12h12.5a.75.75 0 0 1 0 1.5H1.75a.75.75 0 0 1 0-1.5Z"></path></svg></button><span data-direction="s" aria-hidden="true" id=":Rb9n6:" class="Tooltip__StyledTooltip-sc-e45c7z-0 eiGLpS">Open Sidebar</span></div><div class="mr-auto width-full" data-search="breadcrumbs"><nav data-testid="breadcrumbs-header" class="f5 breadcrumbs Breadcrumbs_breadcrumbs__xAC4i" aria-label="Breadcrumb" data-container="breadcrumbs"><ul><li class="d-inline-block"><a rel="" data-testid="breadcrumb-link" title="GitHub Actions" class="Link--primary mr-2 color-fg-muted" href="/en/actions">GitHub Actions</a><span class="color-fg-muted pr-2">/</span></li><li class="d-inline-block"><a rel="" data-testid="breadcrumb-link" title="Migrate to GitHub Actions" class="Link--primary mr-2 color-fg-muted" href="/en/actions/migrating-to-github-actions">Migrate to GitHub Actions</a><span class="color-fg-muted pr-2">/</span></li><li class="d-inline-block"><a rel="" data-testid="breadcrumb-link" title="Manual migrations" class="Link--primary mr-2 color-fg-muted" href="/en/actions/migrating-to-github-actions/manually-migrating-to-github-actions">Manual migrations</a><span class="color-fg-muted pr-2">/</span></li><li class="d-inline-block"><a rel="" data-testid="breadcrumb-link" title="Migrate from GitLab CI/CD" class="Link--primary mr-2 color-fg-muted" href="/en/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-gitlab-cicd-to-github-actions">Migrate from GitLab CI/CD</a></li></ul></nav></div></div></header></div><div class="d-lg-flex"><div data-container="nav" class="position-sticky d-none border-right d-xxl-block" style="width:326px;height:calc(100vh - 65px);top:65px"><nav aria-labelledby="allproducts-menu"><div class="d-none px-4 pb-3 border-bottom d-xxl-block"><div class="mt-3"><a rel="" class="f6 pl-2 pr-5 ml-n1 pb-1 Link--primary color-fg-default" href="/en"><svg aria-hidden="true" focusable="false" class="mr-1" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M7.78 12.53a.75.75 0 0 1-1.06 0L2.47 8.28a.75.75 0 0 1 0-1.06l4.25-4.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L4.81 7h7.44a.75.75 0 0 1 0 1.5H4.81l2.97 2.97a.75.75 0 0 1 0 1.06Z"></path></svg>Home</a></div><div class="mt-3" id="allproducts-menu"><a rel="" data-testid="sidebar-product-xl" class="d-block pl-1 mb-2 h3 color-fg-default no-underline _product-title" href="/en/actions">GitHub Actions</a></div></div><div class="border-right d-none d-xxl-block bg-primary overflow-y-auto flex-shrink-0" style="width:326px;height:calc(100vh - 175px);padding-bottom:185px"><div data-testid="sidebar" style="overflow-y:auto" class="pt-3"><div class="ml-3" data-testid="product-sidebar"><nav aria-label="Product sidebar" class="NavList__NavBox-sc-1c8ygf7-0"><ul class="List__ListBox-sc-1x7olzq-0 hgjakc"><li aria-labelledby=":R3b6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":R3b6n6:--label " id=":R3b6n6:" aria-expanded="false" aria-controls=":R3b6n6H1:" class="Item__LiBox-sc-yeql7o-0 itjSOb"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><div class="Box-sc-g0xbh4-0 cUxMoC"><span id=":R3b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">About GitHub Actions</span><span class="Box-sc-g0xbh4-0 lmYNOb"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 daAEFx" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></span></div></div></button><div><ul id=":R3b6n6H1:" aria-labelledby=":R3b6n6:" class="Box-sc-g0xbh4-0 gMkIpo"><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rd3b6n6:--label " id=":Rd3b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 fuIgwR" href="/en/actions/about-github-actions/understanding-github-actions"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rd3b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Understand GitHub Actions</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rl3b6n6:--label " id=":Rl3b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 fuIgwR" href="/en/actions/about-github-actions/about-continuous-integration-with-github-actions"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rl3b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Continuous integration</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rt3b6n6:--label " id=":Rt3b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 fuIgwR" href="/en/actions/about-github-actions/about-continuous-deployment-with-github-actions"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rt3b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Continuous deployment</span></div></a></li></ul></div></li><li aria-labelledby=":R5b6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":R5b6n6:--label " id=":R5b6n6:" aria-expanded="false" aria-controls=":R5b6n6H1:" class="Item__LiBox-sc-yeql7o-0 itjSOb"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><div class="Box-sc-g0xbh4-0 cUxMoC"><span id=":R5b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Write workflows</span><span class="Box-sc-g0xbh4-0 lmYNOb"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 daAEFx" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></span></div></div></button><div><ul id=":R5b6n6H1:" aria-labelledby=":R5b6n6:" class="Box-sc-g0xbh4-0 gMkIpo"><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rd5b6n6:--label " id=":Rd5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 fuIgwR" href="/en/actions/writing-workflows/quickstart"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rd5b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Quickstart</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rl5b6n6:--label " id=":Rl5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 fuIgwR" href="/en/actions/writing-workflows/about-workflows"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rl5b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">About workflows</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rt5b6n6:--label " id=":Rt5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 fuIgwR" href="/en/actions/writing-workflows/using-workflow-templates"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rt5b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Use workflow templates</span></div></a></li><li aria-labelledby=":R155b6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":R155b6n6:--label " id=":R155b6n6:" aria-expanded="false" aria-controls=":R155b6n6H1:" class="Item__LiBox-sc-yeql7o-0 kXKjOF"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><div class="Box-sc-g0xbh4-0 cUxMoC"><span id=":R155b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Choose when workflows run</span><span class="Box-sc-g0xbh4-0 lmYNOb"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 daAEFx" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></span></div></div></button><div><ul id=":R155b6n6H1:" aria-labelledby=":R155b6n6:" class="Box-sc-g0xbh4-0 gMkIpo"><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rr55b6n6:--label " id=":Rr55b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/writing-workflows/choosing-when-your-workflow-runs/triggering-a-workflow"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rr55b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Trigger a workflow</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1b55b6n6:--label " id=":R1b55b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/writing-workflows/choosing-when-your-workflow-runs/using-conditions-to-control-job-execution"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R1b55b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Use conditions to control job execution</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1r55b6n6:--label " id=":R1r55b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R1r55b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Events that trigger workflows</span></div></a></li></ul></div></li><li aria-labelledby=":R1d5b6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":R1d5b6n6:--label " id=":R1d5b6n6:" aria-expanded="false" aria-controls=":R1d5b6n6H1:" class="Item__LiBox-sc-yeql7o-0 kXKjOF"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><div class="Box-sc-g0xbh4-0 cUxMoC"><span id=":R1d5b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Choose where workflows run</span><span class="Box-sc-g0xbh4-0 lmYNOb"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 daAEFx" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></span></div></div></button><div><ul id=":R1d5b6n6H1:" aria-labelledby=":R1d5b6n6:" class="Box-sc-g0xbh4-0 gMkIpo"><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rrd5b6n6:--label " id=":Rrd5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/writing-workflows/choosing-where-your-workflow-runs/choosing-the-runner-for-a-job"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rrd5b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Choose the runner for a job</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1bd5b6n6:--label " id=":R1bd5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/writing-workflows/choosing-where-your-workflow-runs/running-jobs-in-a-container"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R1bd5b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Run jobs in a container</span></div></a></li></ul></div></li><li aria-labelledby=":R1l5b6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":R1l5b6n6:--label " id=":R1l5b6n6:" aria-expanded="false" aria-controls=":R1l5b6n6H1:" class="Item__LiBox-sc-yeql7o-0 kXKjOF"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><div class="Box-sc-g0xbh4-0 cUxMoC"><span id=":R1l5b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Choose what workflows do</span><span class="Box-sc-g0xbh4-0 lmYNOb"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 daAEFx" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></span></div></div></button><div><ul id=":R1l5b6n6H1:" aria-labelledby=":R1l5b6n6:" class="Box-sc-g0xbh4-0 gMkIpo"><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rrl5b6n6:--label " id=":Rrl5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/writing-workflows/choosing-what-your-workflow-does/using-jobs-in-a-workflow"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rrl5b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Use jobs in a workflow</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1bl5b6n6:--label " id=":R1bl5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/writing-workflows/choosing-what-your-workflow-does/using-pre-written-building-blocks-in-your-workflow"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R1bl5b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Find and customize actions</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1rl5b6n6:--label " id=":R1rl5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/writing-workflows/choosing-what-your-workflow-does/using-github-cli-in-workflows"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R1rl5b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">GitHub CLI in workflows</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R2bl5b6n6:--label " id=":R2bl5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/writing-workflows/choosing-what-your-workflow-does/workflow-commands-for-github-actions"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R2bl5b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Workflow commands</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R2rl5b6n6:--label " id=":R2rl5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/writing-workflows/choosing-what-your-workflow-does/adding-scripts-to-your-workflow"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R2rl5b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Add scripts</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R3bl5b6n6:--label " id=":R3bl5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/writing-workflows/choosing-what-your-workflow-does/controlling-permissions-for-github_token"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R3bl5b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Permissions for `GITHUB_TOKEN`</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R3rl5b6n6:--label " id=":R3rl5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/writing-workflows/choosing-what-your-workflow-does/evaluate-expressions-in-workflows-and-actions"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R3rl5b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Expressions</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R4bl5b6n6:--label " id=":R4bl5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/writing-workflows/choosing-what-your-workflow-does/store-information-in-variables"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R4bl5b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Variables</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R4rl5b6n6:--label " id=":R4rl5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/writing-workflows/choosing-what-your-workflow-does/accessing-contextual-information-about-workflow-runs"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R4rl5b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Contexts</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R5bl5b6n6:--label " id=":R5bl5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/writing-workflows/choosing-what-your-workflow-does/passing-information-between-jobs"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R5bl5b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Pass information</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R5rl5b6n6:--label " id=":R5rl5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/writing-workflows/choosing-what-your-workflow-does/setting-a-default-shell-and-working-directory"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R5rl5b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Set default values for jobs</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R6bl5b6n6:--label " id=":R6bl5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/writing-workflows/choosing-what-your-workflow-does/using-environments-for-deployment"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R6bl5b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Environments</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R6rl5b6n6:--label " id=":R6rl5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/writing-workflows/choosing-what-your-workflow-does/control-the-concurrency-of-workflows-and-jobs"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R6rl5b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Concurrency</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R7bl5b6n6:--label " id=":R7bl5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/writing-workflows/choosing-what-your-workflow-does/running-variations-of-jobs-in-a-workflow"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R7bl5b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Run job variations</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R7rl5b6n6:--label " id=":R7rl5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/writing-workflows/choosing-what-your-workflow-does/caching-dependencies-to-speed-up-workflows"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R7rl5b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Cache dependencies</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R8bl5b6n6:--label " id=":R8bl5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/writing-workflows/choosing-what-your-workflow-does/storing-and-sharing-data-from-a-workflow"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R8bl5b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Store artifacts</span></div></a></li></ul></div></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1t5b6n6:--label " id=":R1t5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 fuIgwR" href="/en/actions/writing-workflows/workflow-syntax-for-github-actions"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R1t5b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Workflow syntax</span></div></a></li></ul></div></li><li aria-labelledby=":R7b6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":R7b6n6:--label " id=":R7b6n6:" aria-expanded="false" aria-controls=":R7b6n6H1:" class="Item__LiBox-sc-yeql7o-0 itjSOb"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><div class="Box-sc-g0xbh4-0 cUxMoC"><span id=":R7b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Manage workflows and deployments</span><span class="Box-sc-g0xbh4-0 lmYNOb"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 daAEFx" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></span></div></div></button><div><ul id=":R7b6n6H1:" aria-labelledby=":R7b6n6:" class="Box-sc-g0xbh4-0 gMkIpo"><li aria-labelledby=":Rd7b6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":Rd7b6n6:--label " id=":Rd7b6n6:" aria-expanded="false" aria-controls=":Rd7b6n6H1:" class="Item__LiBox-sc-yeql7o-0 kXKjOF"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><div class="Box-sc-g0xbh4-0 cUxMoC"><span id=":Rd7b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Manage workflow runs</span><span class="Box-sc-g0xbh4-0 lmYNOb"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 daAEFx" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></span></div></div></button><div><ul id=":Rd7b6n6H1:" aria-labelledby=":Rd7b6n6:" class="Box-sc-g0xbh4-0 gMkIpo"><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rdd7b6n6:--label " id=":Rdd7b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/manually-running-a-workflow"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rdd7b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Manually run a workflow</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rld7b6n6:--label " id=":Rld7b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/re-running-workflows-and-jobs"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rld7b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Re-run workflows and jobs</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rtd7b6n6:--label " id=":Rtd7b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/canceling-a-workflow"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rtd7b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Cancel a workflow</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R15d7b6n6:--label " id=":R15d7b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/disabling-and-enabling-a-workflow"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R15d7b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Disable & enable a workflow</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1dd7b6n6:--label " id=":R1dd7b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/skipping-workflow-runs"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R1dd7b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Skip workflow runs</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1ld7b6n6:--label " id=":R1ld7b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/deleting-a-workflow-run"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R1ld7b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Delete a workflow run</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1td7b6n6:--label " id=":R1td7b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/downloading-workflow-artifacts"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R1td7b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Download workflow artifacts</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R25d7b6n6:--label " id=":R25d7b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/removing-workflow-artifacts"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R25d7b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Remove workflow artifacts</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R2dd7b6n6:--label " id=":R2dd7b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/approving-workflow-runs-from-public-forks"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R2dd7b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Approve public fork runs</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R2ld7b6n6:--label " id=":R2ld7b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/approving-workflow-runs-from-private-forks"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R2ld7b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Approve private fork runs</span></div></a></li></ul></div></li><li aria-labelledby=":Rl7b6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":Rl7b6n6:--label " id=":Rl7b6n6:" aria-expanded="false" aria-controls=":Rl7b6n6H1:" class="Item__LiBox-sc-yeql7o-0 kXKjOF"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><div class="Box-sc-g0xbh4-0 cUxMoC"><span id=":Rl7b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Manage deployments</span><span class="Box-sc-g0xbh4-0 lmYNOb"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 daAEFx" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></span></div></div></button><div><ul id=":Rl7b6n6H1:" aria-labelledby=":Rl7b6n6:" class="Box-sc-g0xbh4-0 gMkIpo"><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rdl7b6n6:--label " id=":Rdl7b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/managing-workflow-runs-and-deployments/managing-deployments/viewing-deployment-history"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rdl7b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Deployment history</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rll7b6n6:--label " id=":Rll7b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/managing-workflow-runs-and-deployments/managing-deployments/managing-environments-for-deployment"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rll7b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Manage environments</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rtl7b6n6:--label " id=":Rtl7b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/managing-workflow-runs-and-deployments/managing-deployments/reviewing-deployments"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rtl7b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Review deployments</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R15l7b6n6:--label " id=":R15l7b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/managing-workflow-runs-and-deployments/managing-deployments/creating-custom-deployment-protection-rules"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R15l7b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Create custom protection rules</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1dl7b6n6:--label " id=":R1dl7b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/managing-workflow-runs-and-deployments/managing-deployments/configuring-custom-deployment-protection-rules"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R1dl7b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Configure custom protection rules</span></div></a></li></ul></div></li></ul></div></li><li aria-labelledby=":R9b6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":R9b6n6:--label " id=":R9b6n6:" aria-expanded="false" aria-controls=":R9b6n6H1:" class="Item__LiBox-sc-yeql7o-0 itjSOb"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><div class="Box-sc-g0xbh4-0 cUxMoC"><span id=":R9b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Share automations</span><span class="Box-sc-g0xbh4-0 lmYNOb"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 daAEFx" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></span></div></div></button><div><ul id=":R9b6n6H1:" aria-labelledby=":R9b6n6:" class="Box-sc-g0xbh4-0 gMkIpo"><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rd9b6n6:--label " id=":Rd9b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 fuIgwR" href="/en/actions/sharing-automations/avoiding-duplication"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rd9b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Avoid duplication</span></div></a></li><li aria-labelledby=":Rl9b6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":Rl9b6n6:--label " id=":Rl9b6n6:" aria-expanded="false" aria-controls=":Rl9b6n6H1:" class="Item__LiBox-sc-yeql7o-0 kXKjOF"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><div class="Box-sc-g0xbh4-0 cUxMoC"><span id=":Rl9b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Create actions</span><span class="Box-sc-g0xbh4-0 lmYNOb"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 daAEFx" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></span></div></div></button><div><ul id=":Rl9b6n6H1:" aria-labelledby=":Rl9b6n6:" class="Box-sc-g0xbh4-0 gMkIpo"><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rql9b6n6:--label " id=":Rql9b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/sharing-automations/creating-actions/about-custom-actions"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rql9b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">About custom actions</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1al9b6n6:--label " id=":R1al9b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/sharing-automations/creating-actions/creating-a-docker-container-action"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R1al9b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Create a Docker container action</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1ql9b6n6:--label " id=":R1ql9b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/sharing-automations/creating-actions/creating-a-javascript-action"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R1ql9b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Create a JavaScript action</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R2al9b6n6:--label " id=":R2al9b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/sharing-automations/creating-actions/creating-a-composite-action"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R2al9b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Create a composite action</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R2ql9b6n6:--label " id=":R2ql9b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/sharing-automations/creating-actions/metadata-syntax-for-github-actions"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R2ql9b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Metadata syntax</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R3al9b6n6:--label " id=":R3al9b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/sharing-automations/creating-actions/dockerfile-support-for-github-actions"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R3al9b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Dockerfile support</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R3ql9b6n6:--label " id=":R3ql9b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/sharing-automations/creating-actions/setting-exit-codes-for-actions"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R3ql9b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Set exit codes</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R4al9b6n6:--label " id=":R4al9b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/sharing-automations/creating-actions/releasing-and-maintaining-actions"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R4al9b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Release and maintain actions</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R4ql9b6n6:--label " id=":R4ql9b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/sharing-automations/creating-actions/publishing-actions-in-github-marketplace"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R4ql9b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Publish in GitHub Marketplace</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R5al9b6n6:--label " id=":R5al9b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/sharing-automations/creating-actions/developing-a-third-party-cli-action"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R5al9b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">CLI setup action</span></div></a></li></ul></div></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rt9b6n6:--label " id=":Rt9b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 fuIgwR" href="/en/actions/sharing-automations/reusing-workflows"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rt9b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Reuse workflows</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R159b6n6:--label " id=":R159b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 fuIgwR" href="/en/actions/sharing-automations/creating-workflow-templates-for-your-organization"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R159b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Create workflow templates</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1d9b6n6:--label " id=":R1d9b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 fuIgwR" href="/en/actions/sharing-automations/sharing-actions-and-workflows-from-your-private-repository"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R1d9b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Share from your private repository</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1l9b6n6:--label " id=":R1l9b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 fuIgwR" href="/en/actions/sharing-automations/sharing-actions-and-workflows-with-your-organization"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R1l9b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Share with your organization</span></div></a></li></ul></div></li><li aria-labelledby=":Rbb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":Rbb6n6:--label " id=":Rbb6n6:" aria-expanded="false" aria-controls=":Rbb6n6H1:" class="Item__LiBox-sc-yeql7o-0 itjSOb"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><div class="Box-sc-g0xbh4-0 cUxMoC"><span id=":Rbb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Monitor & troubleshoot</span><span class="Box-sc-g0xbh4-0 lmYNOb"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 daAEFx" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></span></div></div></button><div><ul id=":Rbb6n6H1:" aria-labelledby=":Rbb6n6:" class="Box-sc-g0xbh4-0 gMkIpo"><li aria-labelledby=":Rdbb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":Rdbb6n6:--label " id=":Rdbb6n6:" aria-expanded="false" aria-controls=":Rdbb6n6H1:" class="Item__LiBox-sc-yeql7o-0 kXKjOF"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><div class="Box-sc-g0xbh4-0 cUxMoC"><span id=":Rdbb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Monitor</span><span class="Box-sc-g0xbh4-0 lmYNOb"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 daAEFx" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></span></div></div></button><div><ul id=":Rdbb6n6H1:" aria-labelledby=":Rdbb6n6:" class="Box-sc-g0xbh4-0 gMkIpo"><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rddbb6n6:--label " id=":Rddbb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/about-monitoring-workflows"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rddbb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">About monitoring</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rldbb6n6:--label " id=":Rldbb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/notifications-for-workflow-runs"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rldbb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Notifications for workflow runs</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rtdbb6n6:--label " id=":Rtdbb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/using-the-visualization-graph"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rtdbb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Visualization graph</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R15dbb6n6:--label " id=":R15dbb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/viewing-workflow-run-history"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R15dbb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Workflow run history</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1ddbb6n6:--label " id=":R1ddbb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/viewing-job-execution-time"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R1ddbb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">View job execution time</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1ldbb6n6:--label " id=":R1ldbb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/adding-a-workflow-status-badge"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R1ldbb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Add a status badge</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1tdbb6n6:--label " id=":R1tdbb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/using-workflow-run-logs"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R1tdbb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Workflow run logs</span></div></a></li></ul></div></li><li aria-labelledby=":Rlbb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":Rlbb6n6:--label " id=":Rlbb6n6:" aria-expanded="false" aria-controls=":Rlbb6n6H1:" class="Item__LiBox-sc-yeql7o-0 kXKjOF"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><div class="Box-sc-g0xbh4-0 cUxMoC"><span id=":Rlbb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Troubleshoot</span><span class="Box-sc-g0xbh4-0 lmYNOb"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 daAEFx" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></span></div></div></button><div><ul id=":Rlbb6n6H1:" aria-labelledby=":Rlbb6n6:" class="Box-sc-g0xbh4-0 gMkIpo"><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rdlbb6n6:--label " id=":Rdlbb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/monitoring-and-troubleshooting-workflows/troubleshooting-workflows/about-troubleshooting-workflows"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rdlbb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">About troubleshooting</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rllbb6n6:--label " id=":Rllbb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/monitoring-and-troubleshooting-workflows/troubleshooting-workflows/enabling-debug-logging"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rllbb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Enable debug logging</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rtlbb6n6:--label " id=":Rtlbb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/monitoring-and-troubleshooting-workflows/troubleshooting-workflows/working-with-support-for-github-actions"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rtlbb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Working with GitHub Support</span></div></a></li></ul></div></li></ul></div></li><li aria-labelledby=":Rdb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":Rdb6n6:--label " id=":Rdb6n6:" aria-expanded="false" aria-controls=":Rdb6n6H1:" class="Item__LiBox-sc-yeql7o-0 itjSOb"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><div class="Box-sc-g0xbh4-0 cUxMoC"><span id=":Rdb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">GitHub-hosted runners</span><span class="Box-sc-g0xbh4-0 lmYNOb"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 daAEFx" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></span></div></div></button><div><ul id=":Rdb6n6H1:" aria-labelledby=":Rdb6n6:" class="Box-sc-g0xbh4-0 gMkIpo"><li aria-labelledby=":Rddb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":Rddb6n6:--label " id=":Rddb6n6:" aria-expanded="false" aria-controls=":Rddb6n6H1:" class="Item__LiBox-sc-yeql7o-0 kXKjOF"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><div class="Box-sc-g0xbh4-0 cUxMoC"><span id=":Rddb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">About GitHub-hosted runners</span><span class="Box-sc-g0xbh4-0 lmYNOb"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 daAEFx" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></span></div></div></button><div><ul id=":Rddb6n6H1:" aria-labelledby=":Rddb6n6:" class="Box-sc-g0xbh4-0 gMkIpo"><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rdddb6n6:--label " id=":Rdddb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/using-github-hosted-runners/using-github-hosted-runners/about-github-hosted-runners"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rdddb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">About GitHub-hosted runners</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rlddb6n6:--label " id=":Rlddb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/using-github-hosted-runners/using-github-hosted-runners/monitoring-your-current-jobs"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rlddb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Monitor current jobs</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rtddb6n6:--label " id=":Rtddb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/using-github-hosted-runners/using-github-hosted-runners/customizing-github-hosted-runners"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rtddb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Customize runners</span></div></a></li></ul></div></li><li aria-labelledby=":Rldb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":Rldb6n6:--label " id=":Rldb6n6:" aria-expanded="false" aria-controls=":Rldb6n6H1:" class="Item__LiBox-sc-yeql7o-0 kXKjOF"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><div class="Box-sc-g0xbh4-0 cUxMoC"><span id=":Rldb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Using larger runners</span><span class="Box-sc-g0xbh4-0 lmYNOb"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 daAEFx" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></span></div></div></button><div><ul id=":Rldb6n6H1:" aria-labelledby=":Rldb6n6:" class="Box-sc-g0xbh4-0 gMkIpo"><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rdldb6n6:--label " id=":Rdldb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/using-github-hosted-runners/using-larger-runners/about-larger-runners"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rdldb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">About larger runners</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rlldb6n6:--label " id=":Rlldb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/using-github-hosted-runners/using-larger-runners/managing-larger-runners"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rlldb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Manage larger runners</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rtldb6n6:--label " id=":Rtldb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/using-github-hosted-runners/using-larger-runners/controlling-access-to-larger-runners"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rtldb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Control access to larger runners</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R15ldb6n6:--label " id=":R15ldb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/using-github-hosted-runners/using-larger-runners/running-jobs-on-larger-runners"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R15ldb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Run jobs on larger runners</span></div></a></li></ul></div></li><li aria-labelledby=":Rtdb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":Rtdb6n6:--label " id=":Rtdb6n6:" aria-expanded="false" aria-controls=":Rtdb6n6H1:" class="Item__LiBox-sc-yeql7o-0 kXKjOF"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><div class="Box-sc-g0xbh4-0 cUxMoC"><span id=":Rtdb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Private networking</span><span class="Box-sc-g0xbh4-0 lmYNOb"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 daAEFx" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></span></div></div></button><div><ul id=":Rtdb6n6H1:" aria-labelledby=":Rtdb6n6:" class="Box-sc-g0xbh4-0 gMkIpo"><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rdtdb6n6:--label " id=":Rdtdb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/using-github-hosted-runners/connecting-to-a-private-network/about-private-networking-with-github-hosted-runners"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rdtdb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">About private networking</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rltdb6n6:--label " id=":Rltdb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/using-github-hosted-runners/connecting-to-a-private-network/using-an-api-gateway-with-oidc"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rltdb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Using OIDC</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rttdb6n6:--label " id=":Rttdb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/using-github-hosted-runners/connecting-to-a-private-network/using-wireguard-to-create-a-network-overlay"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rttdb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Using WireGuard</span></div></a></li></ul></div></li></ul></div></li><li aria-labelledby=":Rfb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":Rfb6n6:--label " id=":Rfb6n6:" aria-expanded="false" aria-controls=":Rfb6n6H1:" class="Item__LiBox-sc-yeql7o-0 itjSOb"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><div class="Box-sc-g0xbh4-0 cUxMoC"><span id=":Rfb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Self-hosted runners</span><span class="Box-sc-g0xbh4-0 lmYNOb"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 daAEFx" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></span></div></div></button><div><ul id=":Rfb6n6H1:" aria-labelledby=":Rfb6n6:" class="Box-sc-g0xbh4-0 gMkIpo"><li aria-labelledby=":Rdfb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":Rdfb6n6:--label " id=":Rdfb6n6:" aria-expanded="false" aria-controls=":Rdfb6n6H1:" class="Item__LiBox-sc-yeql7o-0 kXKjOF"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><div class="Box-sc-g0xbh4-0 cUxMoC"><span id=":Rdfb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Manage self-hosted runners</span><span class="Box-sc-g0xbh4-0 lmYNOb"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 daAEFx" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></span></div></div></button><div><ul id=":Rdfb6n6H1:" aria-labelledby=":Rdfb6n6:" class="Box-sc-g0xbh4-0 gMkIpo"><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rddfb6n6:--label " id=":Rddfb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rddfb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">About self-hosted runners</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rldfb6n6:--label " id=":Rldfb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/hosting-your-own-runners/managing-self-hosted-runners/adding-self-hosted-runners"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rldfb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Add self-hosted runners</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rtdfb6n6:--label " id=":Rtdfb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/hosting-your-own-runners/managing-self-hosted-runners/autoscaling-with-self-hosted-runners"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rtdfb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Autoscale self-hosted runners</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R15dfb6n6:--label " id=":R15dfb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/hosting-your-own-runners/managing-self-hosted-runners/running-scripts-before-or-after-a-job"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R15dfb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Run a script before or after a job</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1ddfb6n6:--label " id=":R1ddfb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/hosting-your-own-runners/managing-self-hosted-runners/customizing-the-containers-used-by-jobs"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R1ddfb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Customize containers used by jobs</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1ldfb6n6:--label " id=":R1ldfb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/hosting-your-own-runners/managing-self-hosted-runners/configuring-the-self-hosted-runner-application-as-a-service"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R1ldfb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Run the runner app as a service</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1tdfb6n6:--label " id=":R1tdfb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/hosting-your-own-runners/managing-self-hosted-runners/using-a-proxy-server-with-self-hosted-runners"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R1tdfb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Proxy servers</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R25dfb6n6:--label " id=":R25dfb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/hosting-your-own-runners/managing-self-hosted-runners/using-labels-with-self-hosted-runners"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R25dfb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Label runners</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R2ddfb6n6:--label " id=":R2ddfb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/hosting-your-own-runners/managing-self-hosted-runners/using-self-hosted-runners-in-a-workflow"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R2ddfb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Use runners in a workflow</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R2ldfb6n6:--label " id=":R2ldfb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/hosting-your-own-runners/managing-self-hosted-runners/managing-access-to-self-hosted-runners-using-groups"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R2ldfb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Manage access with runner groups</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R2tdfb6n6:--label " id=":R2tdfb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/hosting-your-own-runners/managing-self-hosted-runners/monitoring-and-troubleshooting-self-hosted-runners"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R2tdfb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Monitor & troubleshoot</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R35dfb6n6:--label " id=":R35dfb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/hosting-your-own-runners/managing-self-hosted-runners/removing-self-hosted-runners"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R35dfb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Remove self-hosted runners</span></div></a></li></ul></div></li><li aria-labelledby=":Rlfb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":Rlfb6n6:--label " id=":Rlfb6n6:" aria-expanded="false" aria-controls=":Rlfb6n6H1:" class="Item__LiBox-sc-yeql7o-0 kXKjOF"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><div class="Box-sc-g0xbh4-0 cUxMoC"><span id=":Rlfb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Actions Runner Controller</span><span class="Box-sc-g0xbh4-0 lmYNOb"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 daAEFx" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></span></div></div></button><div><ul id=":Rlfb6n6H1:" aria-labelledby=":Rlfb6n6:" class="Box-sc-g0xbh4-0 gMkIpo"><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rdlfb6n6:--label " id=":Rdlfb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/about-actions-runner-controller"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rdlfb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">About ARC</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rllfb6n6:--label " id=":Rllfb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/quickstart-for-actions-runner-controller"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rllfb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Quickstart</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rtlfb6n6:--label " id=":Rtlfb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/authenticating-to-the-github-api"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rtlfb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Authenticating</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R15lfb6n6:--label " id=":R15lfb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/deploying-runner-scale-sets-with-actions-runner-controller"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R15lfb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Deploying runner scale sets</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1dlfb6n6:--label " id=":R1dlfb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/using-actions-runner-controller-runners-in-a-workflow"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R1dlfb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Using ARC in a workflow</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1llfb6n6:--label " id=":R1llfb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/troubleshooting-actions-runner-controller-errors"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R1llfb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Troubleshoot</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1tlfb6n6:--label " id=":R1tlfb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/about-support-for-actions-runner-controller"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R1tlfb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">About Support for ARC</span></div></a></li></ul></div></li></ul></div></li><li aria-labelledby=":Rhb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":Rhb6n6:--label " id=":Rhb6n6:" aria-expanded="false" aria-controls=":Rhb6n6H1:" class="Item__LiBox-sc-yeql7o-0 itjSOb"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><div class="Box-sc-g0xbh4-0 cUxMoC"><span id=":Rhb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Security</span><span class="Box-sc-g0xbh4-0 lmYNOb"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 daAEFx" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></span></div></div></button><div><ul id=":Rhb6n6H1:" aria-labelledby=":Rhb6n6:" class="Box-sc-g0xbh4-0 gMkIpo"><li aria-labelledby=":Rdhb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":Rdhb6n6:--label " id=":Rdhb6n6:" aria-expanded="false" aria-controls=":Rdhb6n6H1:" class="Item__LiBox-sc-yeql7o-0 kXKjOF"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><div class="Box-sc-g0xbh4-0 cUxMoC"><span id=":Rdhb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Security guides</span><span class="Box-sc-g0xbh4-0 lmYNOb"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 daAEFx" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></span></div></div></button><div><ul id=":Rdhb6n6H1:" aria-labelledby=":Rdhb6n6:" class="Box-sc-g0xbh4-0 gMkIpo"><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rddhb6n6:--label " id=":Rddhb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/security-for-github-actions/security-guides/security-hardening-for-github-actions"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rddhb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Security hardening</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rldhb6n6:--label " id=":Rldhb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rldhb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Using secrets</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rtdhb6n6:--label " id=":Rtdhb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/security-for-github-actions/security-guides/automatic-token-authentication"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rtdhb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Automatic token authentication</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R15dhb6n6:--label " id=":R15dhb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/security-for-github-actions/security-guides/using-githubs-security-features-to-secure-your-use-of-github-actions"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R15dhb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">GitHub security features</span></div></a></li></ul></div></li><li aria-labelledby=":Rlhb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":Rlhb6n6:--label " id=":Rlhb6n6:" aria-expanded="false" aria-controls=":Rlhb6n6H1:" class="Item__LiBox-sc-yeql7o-0 kXKjOF"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><div class="Box-sc-g0xbh4-0 cUxMoC"><span id=":Rlhb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Artifact attestations</span><span class="Box-sc-g0xbh4-0 lmYNOb"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 daAEFx" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></span></div></div></button><div><ul id=":Rlhb6n6H1:" aria-labelledby=":Rlhb6n6:" class="Box-sc-g0xbh4-0 gMkIpo"><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rdlhb6n6:--label " id=":Rdlhb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/security-for-github-actions/using-artifact-attestations/using-artifact-attestations-to-establish-provenance-for-builds"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rdlhb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Artifact attestations</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rllhb6n6:--label " id=":Rllhb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/security-for-github-actions/using-artifact-attestations/using-artifact-attestations-and-reusable-workflows-to-achieve-slsa-v1-build-level-3"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rllhb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Attest with reusable workflows</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rtlhb6n6:--label " id=":Rtlhb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/security-for-github-actions/using-artifact-attestations/enforcing-artifact-attestations-with-a-kubernetes-admission-controller"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rtlhb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Artifact attestations Kubernetes admission controller</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R15lhb6n6:--label " id=":R15lhb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/security-for-github-actions/using-artifact-attestations/verifying-attestations-offline"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R15lhb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Verifying attestations offline</span></div></a></li></ul></div></li><li aria-labelledby=":Rthb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":Rthb6n6:--label " id=":Rthb6n6:" aria-expanded="false" aria-controls=":Rthb6n6H1:" class="Item__LiBox-sc-yeql7o-0 kXKjOF"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><div class="Box-sc-g0xbh4-0 cUxMoC"><span id=":Rthb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Security harden deployments</span><span class="Box-sc-g0xbh4-0 lmYNOb"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 daAEFx" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></span></div></div></button><div><ul id=":Rthb6n6H1:" aria-labelledby=":Rthb6n6:" class="Box-sc-g0xbh4-0 gMkIpo"><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rdthb6n6:--label " id=":Rdthb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/security-for-github-actions/security-hardening-your-deployments/about-security-hardening-with-openid-connect"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rdthb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Security hardening with OpenID Connect</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rlthb6n6:--label " id=":Rlthb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rlthb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">OpenID Connect in AWS</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rtthb6n6:--label " id=":Rtthb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-azure"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rtthb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">OpenID Connect in Azure</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R15thb6n6:--label " id=":R15thb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-google-cloud-platform"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R15thb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">OpenID Connect in Google Cloud Platform</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1dthb6n6:--label " id=":R1dthb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-hashicorp-vault"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R1dthb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">OpenID Connect in HashiCorp Vault</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1lthb6n6:--label " id=":R1lthb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-jfrog"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R1lthb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">OpenID Connect in JFrog</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1tthb6n6:--label " id=":R1tthb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-pypi"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R1tthb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">OpenID Connect in PyPI</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R25thb6n6:--label " id=":R25thb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-cloud-providers"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R25thb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">OpenID Connect in cloud providers</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R2dthb6n6:--label " id=":R2dthb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/security-for-github-actions/security-hardening-your-deployments/using-openid-connect-with-reusable-workflows"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R2dthb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">OpenID Connect with reusable workflows</span></div></a></li></ul></div></li></ul></div></li><li aria-labelledby=":Rjb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":Rjb6n6:--label " id=":Rjb6n6:" aria-expanded="false" aria-controls=":Rjb6n6H1:" class="Item__LiBox-sc-yeql7o-0 itjSOb"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><div class="Box-sc-g0xbh4-0 cUxMoC"><span id=":Rjb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Use cases and examples</span><span class="Box-sc-g0xbh4-0 lmYNOb"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 daAEFx" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></span></div></div></button><div><ul id=":Rjb6n6H1:" aria-labelledby=":Rjb6n6:" class="Box-sc-g0xbh4-0 gMkIpo"><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rdjb6n6:--label " id=":Rdjb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 fuIgwR" href="/en/actions/use-cases-and-examples/creating-an-example-workflow"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rdjb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Create an example workflow</span></div></a></li><li aria-labelledby=":Rljb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":Rljb6n6:--label " id=":Rljb6n6:" aria-expanded="false" aria-controls=":Rljb6n6H1:" class="Item__LiBox-sc-yeql7o-0 kXKjOF"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><div class="Box-sc-g0xbh4-0 cUxMoC"><span id=":Rljb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Build and test</span><span class="Box-sc-g0xbh4-0 lmYNOb"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 daAEFx" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></span></div></div></button><div><ul id=":Rljb6n6H1:" aria-labelledby=":Rljb6n6:" class="Box-sc-g0xbh4-0 gMkIpo"><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rqljb6n6:--label " id=":Rqljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-go"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rqljb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Build & test Go</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1aljb6n6:--label " id=":R1aljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-java-with-ant"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R1aljb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Build & test Java & Ant</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1qljb6n6:--label " id=":R1qljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-java-with-gradle"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R1qljb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Build & test Java & Gradle</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R2aljb6n6:--label " id=":R2aljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-java-with-maven"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R2aljb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Build & test Java with Maven</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R2qljb6n6:--label " id=":R2qljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-net"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R2qljb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Build & test .NET</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R3aljb6n6:--label " id=":R3aljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-nodejs"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R3aljb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Build & test Node.js</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R3qljb6n6:--label " id=":R3qljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-powershell"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R3qljb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Build & test PowerShell</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R4aljb6n6:--label " id=":R4aljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-python"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R4aljb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Build & test Python</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R4qljb6n6:--label " id=":R4qljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-ruby"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R4qljb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Build & test Ruby</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R5aljb6n6:--label " id=":R5aljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-swift"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R5aljb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Build & test Swift</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R5qljb6n6:--label " id=":R5qljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-xamarin-applications"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R5qljb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Build & test Xamarin apps</span></div></a></li></ul></div></li><li aria-labelledby=":Rtjb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":Rtjb6n6:--label " id=":Rtjb6n6:" aria-expanded="false" aria-controls=":Rtjb6n6H1:" class="Item__LiBox-sc-yeql7o-0 kXKjOF"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><div class="Box-sc-g0xbh4-0 cUxMoC"><span id=":Rtjb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Deployment</span><span class="Box-sc-g0xbh4-0 lmYNOb"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 daAEFx" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></span></div></div></button><div><ul id=":Rtjb6n6H1:" aria-labelledby=":Rtjb6n6:" class="Box-sc-g0xbh4-0 gMkIpo"><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rqtjb6n6:--label " id=":Rqtjb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/use-cases-and-examples/deploying/deploying-with-github-actions"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rqtjb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Deploy with GitHub Actions</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1atjb6n6:--label " id=":R1atjb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/use-cases-and-examples/deploying/deploying-nodejs-to-azure-app-service"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R1atjb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Deploying Node.js to Azure App Service</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1qtjb6n6:--label " id=":R1qtjb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/use-cases-and-examples/deploying/deploying-python-to-azure-app-service"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R1qtjb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Deploying Python to Azure App Service</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R2atjb6n6:--label " id=":R2atjb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/use-cases-and-examples/deploying/deploying-java-to-azure-app-service"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R2atjb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Deploying Java to Azure App Service</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R2qtjb6n6:--label " id=":R2qtjb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/use-cases-and-examples/deploying/deploying-net-to-azure-app-service"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R2qtjb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Deploying .NET to Azure App Service</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R3atjb6n6:--label " id=":R3atjb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/use-cases-and-examples/deploying/deploying-php-to-azure-app-service"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R3atjb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Deploying PHP to Azure App Service</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R3qtjb6n6:--label " id=":R3qtjb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/use-cases-and-examples/deploying/deploying-docker-to-azure-app-service"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R3qtjb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Deploying Docker to Azure App Service</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R4atjb6n6:--label " id=":R4atjb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R4atjb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Deploying to Azure Static Web App</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R4qtjb6n6:--label " id=":R4qtjb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/use-cases-and-examples/deploying/deploying-to-azure-kubernetes-service"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R4qtjb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Deploying to Azure Kubernetes Service</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R5atjb6n6:--label " id=":R5atjb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/use-cases-and-examples/deploying/deploying-to-amazon-elastic-container-service"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R5atjb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Deploy to Amazon ECS</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R5qtjb6n6:--label " id=":R5qtjb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/use-cases-and-examples/deploying/deploying-to-google-kubernetes-engine"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R5qtjb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Deploy to Google Kubernetes Engine</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R6atjb6n6:--label " id=":R6atjb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/use-cases-and-examples/deploying/installing-an-apple-certificate-on-macos-runners-for-xcode-development"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R6atjb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Sign Xcode applications</span></div></a></li></ul></div></li><li aria-labelledby=":R15jb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":R15jb6n6:--label " id=":R15jb6n6:" aria-expanded="false" aria-controls=":R15jb6n6H1:" class="Item__LiBox-sc-yeql7o-0 kXKjOF"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><div class="Box-sc-g0xbh4-0 cUxMoC"><span id=":R15jb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Publish packages</span><span class="Box-sc-g0xbh4-0 lmYNOb"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 daAEFx" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></span></div></div></button><div><ul id=":R15jb6n6H1:" aria-labelledby=":R15jb6n6:" class="Box-sc-g0xbh4-0 gMkIpo"><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rr5jb6n6:--label " id=":Rr5jb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/use-cases-and-examples/publishing-packages/about-packaging-with-github-actions"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rr5jb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Packaging with GitHub Actions</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1b5jb6n6:--label " id=":R1b5jb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/use-cases-and-examples/publishing-packages/publishing-docker-images"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R1b5jb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Publish Docker images</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1r5jb6n6:--label " id=":R1r5jb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/use-cases-and-examples/publishing-packages/publishing-java-packages-with-gradle"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R1r5jb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Publish Java packages with Gradle</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R2b5jb6n6:--label " id=":R2b5jb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/use-cases-and-examples/publishing-packages/publishing-java-packages-with-maven"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R2b5jb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Publish Java packages with Maven</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R2r5jb6n6:--label " id=":R2r5jb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/use-cases-and-examples/publishing-packages/publishing-nodejs-packages"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R2r5jb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Publish Node.js packages</span></div></a></li></ul></div></li><li aria-labelledby=":R1djb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":R1djb6n6:--label " id=":R1djb6n6:" aria-expanded="false" aria-controls=":R1djb6n6H1:" class="Item__LiBox-sc-yeql7o-0 kXKjOF"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><div class="Box-sc-g0xbh4-0 cUxMoC"><span id=":R1djb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Project management</span><span class="Box-sc-g0xbh4-0 lmYNOb"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 daAEFx" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></span></div></div></button><div><ul id=":R1djb6n6H1:" aria-labelledby=":R1djb6n6:" class="Box-sc-g0xbh4-0 gMkIpo"><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rrdjb6n6:--label " id=":Rrdjb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/use-cases-and-examples/project-management/using-github-actions-for-project-management"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rrdjb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Actions for project management</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1bdjb6n6:--label " id=":R1bdjb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/use-cases-and-examples/project-management/adding-labels-to-issues"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R1bdjb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Add labels to issues</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1rdjb6n6:--label " id=":R1rdjb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/use-cases-and-examples/project-management/closing-inactive-issues"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R1rdjb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Close inactive issues</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R2bdjb6n6:--label " id=":R2bdjb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/use-cases-and-examples/project-management/commenting-on-an-issue-when-a-label-is-added"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R2bdjb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Add label to comment on issue</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R2rdjb6n6:--label " id=":R2rdjb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/use-cases-and-examples/project-management/scheduling-issue-creation"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R2rdjb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Schedule issue creation</span></div></a></li></ul></div></li><li aria-labelledby=":R1ljb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":R1ljb6n6:--label " id=":R1ljb6n6:" aria-expanded="false" aria-controls=":R1ljb6n6H1:" class="Item__LiBox-sc-yeql7o-0 kXKjOF"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><div class="Box-sc-g0xbh4-0 cUxMoC"><span id=":R1ljb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Containerized services</span><span class="Box-sc-g0xbh4-0 lmYNOb"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 daAEFx" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></span></div></div></button><div><ul id=":R1ljb6n6H1:" aria-labelledby=":R1ljb6n6:" class="Box-sc-g0xbh4-0 gMkIpo"><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rrljb6n6:--label " id=":Rrljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/use-cases-and-examples/using-containerized-services/about-service-containers"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rrljb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">About service containers</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1bljb6n6:--label " id=":R1bljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/use-cases-and-examples/using-containerized-services/creating-postgresql-service-containers"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R1bljb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Create PostgreSQL service containers</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1rljb6n6:--label " id=":R1rljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/use-cases-and-examples/using-containerized-services/creating-redis-service-containers"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R1rljb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Create Redis service containers</span></div></a></li></ul></div></li></ul></div></li><li aria-labelledby=":Rlb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":Rlb6n6:--label " id=":Rlb6n6:" aria-expanded="true" aria-controls=":Rlb6n6H1:" class="Item__LiBox-sc-yeql7o-0 itjSOb"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><div class="Box-sc-g0xbh4-0 cUxMoC"><span id=":Rlb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Migrate to GitHub Actions</span><span class="Box-sc-g0xbh4-0 lmYNOb"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 gzcJGA" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></span></div></div></button><div><ul id=":Rlb6n6H1:" aria-labelledby=":Rlb6n6:" class="Box-sc-g0xbh4-0 enEvIH"><li aria-labelledby=":Rdlb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":Rdlb6n6:--label " id=":Rdlb6n6:" aria-expanded="false" aria-controls=":Rdlb6n6H1:" class="Item__LiBox-sc-yeql7o-0 kXKjOF"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><div class="Box-sc-g0xbh4-0 cUxMoC"><span id=":Rdlb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Automated migrations</span><span class="Box-sc-g0xbh4-0 lmYNOb"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 daAEFx" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></span></div></div></button><div><ul id=":Rdlb6n6H1:" aria-labelledby=":Rdlb6n6:" class="Box-sc-g0xbh4-0 gMkIpo"><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rddlb6n6:--label " id=":Rddlb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/automating-migration-with-github-actions-importer"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rddlb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Automate migration with GitHub Actions Importer</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rldlb6n6:--label " id=":Rldlb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/extending-github-actions-importer-with-custom-transformers"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rldlb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Extending GitHub Actions Importer</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rtdlb6n6:--label " id=":Rtdlb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/supplemental-arguments-and-settings"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rtdlb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Supplemental arguments and settings</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R15dlb6n6:--label " id=":R15dlb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-azure-devops-with-github-actions-importer"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R15dlb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Azure DevOps migration</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1ddlb6n6:--label " id=":R1ddlb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-bamboo-with-github-actions-importer"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R1ddlb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Bamboo migration</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1ldlb6n6:--label " id=":R1ldlb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-bitbucket-pipelines-with-github-actions-importer"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R1ldlb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Bitbucket Pipelines migration</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1tdlb6n6:--label " id=":R1tdlb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-circleci-with-github-actions-importer"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R1tdlb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">CircleCI migration</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R25dlb6n6:--label " id=":R25dlb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-gitlab-with-github-actions-importer"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R25dlb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">GitLab migration</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R2ddlb6n6:--label " id=":R2ddlb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-jenkins-with-github-actions-importer"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R2ddlb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Jenkins migration</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R2ldlb6n6:--label " id=":R2ldlb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-travis-ci-with-github-actions-importer"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R2ldlb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Travis CI migration</span></div></a></li></ul></div></li><li aria-labelledby=":Rllb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":Rllb6n6:--label " id=":Rllb6n6:" aria-expanded="true" aria-controls=":Rllb6n6H1:" class="Item__LiBox-sc-yeql7o-0 kXKjOF"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><div class="Box-sc-g0xbh4-0 cUxMoC"><span id=":Rllb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Manual migrations</span><span class="Box-sc-g0xbh4-0 lmYNOb"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 gzcJGA" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></span></div></div></button><div><ul id=":Rllb6n6H1:" aria-labelledby=":Rllb6n6:" class="Box-sc-g0xbh4-0 enEvIH"><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rdllb6n6:--label " id=":Rdllb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-azure-pipelines-to-github-actions"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rdllb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Migrate from Azure Pipelines</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rlllb6n6:--label " id=":Rlllb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-circleci-to-github-actions"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rlllb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Migrate from CircleCI</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 hTSEii"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rtllb6n6:--label " id=":Rtllb6n6:" aria-current="page" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-gitlab-cicd-to-github-actions"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rtllb6n6:--label" class="Box-sc-g0xbh4-0 ivpQTm">Migrate from GitLab CI/CD</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R15llb6n6:--label " id=":R15llb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-jenkins-to-github-actions"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R15llb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Migrate from Jenkins</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1dllb6n6:--label " id=":R1dllb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="/en/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-travis-ci-to-github-actions"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R1dllb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Migrate from Travis CI</span></div></a></li></ul></div></li></ul></div></li><li aria-labelledby=":Rnb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":Rnb6n6:--label " id=":Rnb6n6:" aria-expanded="false" aria-controls=":Rnb6n6H1:" class="Item__LiBox-sc-yeql7o-0 itjSOb"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><div class="Box-sc-g0xbh4-0 cUxMoC"><span id=":Rnb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Administer GitHub Actions</span><span class="Box-sc-g0xbh4-0 lmYNOb"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 daAEFx" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></span></div></div></button><div><ul id=":Rnb6n6H1:" aria-labelledby=":Rnb6n6:" class="Box-sc-g0xbh4-0 gMkIpo"><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rdnb6n6:--label " id=":Rdnb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 fuIgwR" href="/en/actions/administering-github-actions/usage-limits-billing-and-administration"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rdnb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Workflow billing & limits</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rlnb6n6:--label " id=":Rlnb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 fuIgwR" href="/en/actions/administering-github-actions/viewing-github-actions-metrics"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rlnb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">GitHub Actions metrics</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rtnb6n6:--label " id=":Rtnb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 fuIgwR" href="/en/actions/administering-github-actions/sharing-workflows-secrets-and-runners-with-your-organization"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rtnb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Share workflows with your organization</span></div></a></li></ul></div></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rpb6n6:--label " id=":Rpb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 cJbOew" href="/en/actions/guides"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":Rpb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Guides for GitHub Actions</span></div></a></li></ul></nav></div></div></div></nav></div><div class="flex-column flex-1 min-width-0"><main id="main-content" style="scroll-margin-top:5rem"><div class="container-xl px-3 px-md-6 my-4"><div class="d-none d-xxl-block mt-3 mr-auto width-full"><nav data-testid="breadcrumbs-in-article" class="f5 breadcrumbs Breadcrumbs_breadcrumbs__xAC4i" aria-label="Breadcrumb" data-container="breadcrumbs"><ul><li class="d-inline-block"><a rel="" data-testid="breadcrumb-link" title="GitHub Actions" class="Link--primary mr-2 color-fg-muted" href="/en/actions">GitHub Actions</a><span class="color-fg-muted pr-2">/</span></li><li class="d-inline-block"><a rel="" data-testid="breadcrumb-link" title="Migrate to GitHub Actions" class="Link--primary mr-2 color-fg-muted" href="/en/actions/migrating-to-github-actions">Migrate to GitHub Actions</a><span class="color-fg-muted pr-2">/</span></li><li class="d-inline-block"><a rel="" data-testid="breadcrumb-link" title="Manual migrations" class="Link--primary mr-2 color-fg-muted" href="/en/actions/migrating-to-github-actions/manually-migrating-to-github-actions">Manual migrations</a><span class="color-fg-muted pr-2">/</span></li><li class="d-inline-block"><a rel="" data-testid="breadcrumb-link" title="Migrate from GitLab CI/CD" class="Link--primary mr-2 color-fg-muted d-none" href="/en/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-gitlab-cicd-to-github-actions">Migrate from GitLab CI/CD</a></li></ul></nav></div><div class="ArticleGridLayout_containerBox__lLLio"><div class="Box-sc-g0xbh4-0 eQiQea"><div class="d-flex flex-items-baseline flex-justify-between" data-container="title"><h1 id="title-h1" class="border-bottom-0">Migrating from GitLab CI/CD to GitHub Actions</h1></div></div><div id="article-intro" class="Box-sc-g0xbh4-0 ijSsTo f4 pb-4"><div class="f2 color-fg-muted mb-3 Lead_container__m3L5f _page-intro" data-container="lead" data-testid="lead" data-search="lead"><p>GitHub Actions and GitLab CI/CD share several configuration similarities, which makes migrating to GitHub Actions relatively straightforward.</p></div></div><div data-container="toc" class="Box-sc-g0xbh4-0 giVcWX ArticleGridLayout_sidebarBox__Cj_03 border-bottom border-lg-0 pb-4 mb-5 pb-xl-0 mb-xl-0"><h2 id="in-this-article" class="Heading__StyledHeading-sc-1c1dgg0-0 bebFBv mb-1 ml-3" aria-label="In this article">In this article</h2><nav data-testid="minitoc" class="NavList__NavBox-sc-1c8ygf7-0 Minitocs_miniToc__NaGol my-2" aria-labelledby="in-this-article"><ul class="List__ListBox-sc-1x7olzq-0 hgjakc"><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a tabindex="0" aria-labelledby=":R4dkteqn6:--label " id=":R4dkteqn6:" aria-current="false" href="#introduction" class="Link__StyledLink-sc-14289xe-0 cJbOew Minitocs_nested__JSAov"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R4dkteqn6:--label" class="Box-sc-g0xbh4-0 bmseMA">Introduction</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a tabindex="0" aria-labelledby=":R4lkteqn6:--label " id=":R4lkteqn6:" aria-current="false" href="#jobs" class="Link__StyledLink-sc-14289xe-0 cJbOew Minitocs_nested__JSAov"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R4lkteqn6:--label" class="Box-sc-g0xbh4-0 bmseMA">Jobs</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a tabindex="0" aria-labelledby=":R4tkteqn6:--label " id=":R4tkteqn6:" aria-current="false" href="#runners" class="Link__StyledLink-sc-14289xe-0 cJbOew Minitocs_nested__JSAov"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R4tkteqn6:--label" class="Box-sc-g0xbh4-0 bmseMA">Runners</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a tabindex="0" aria-labelledby=":R55kteqn6:--label " id=":R55kteqn6:" aria-current="false" href="#docker-images" class="Link__StyledLink-sc-14289xe-0 cJbOew Minitocs_nested__JSAov"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R55kteqn6:--label" class="Box-sc-g0xbh4-0 bmseMA">Docker images</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a tabindex="0" aria-labelledby=":R5dkteqn6:--label " id=":R5dkteqn6:" aria-current="false" href="#condition-and-expression-syntax" class="Link__StyledLink-sc-14289xe-0 cJbOew Minitocs_nested__JSAov"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R5dkteqn6:--label" class="Box-sc-g0xbh4-0 bmseMA">Condition and expression syntax</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a tabindex="0" aria-labelledby=":R5lkteqn6:--label " id=":R5lkteqn6:" aria-current="false" href="#dependencies-between-jobs" class="Link__StyledLink-sc-14289xe-0 cJbOew Minitocs_nested__JSAov"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R5lkteqn6:--label" class="Box-sc-g0xbh4-0 bmseMA">Dependencies between Jobs</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a tabindex="0" aria-labelledby=":R5tkteqn6:--label " id=":R5tkteqn6:" aria-current="false" href="#scheduling-workflows" class="Link__StyledLink-sc-14289xe-0 cJbOew Minitocs_nested__JSAov"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R5tkteqn6:--label" class="Box-sc-g0xbh4-0 bmseMA">Scheduling workflows</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a tabindex="0" aria-labelledby=":R65kteqn6:--label " id=":R65kteqn6:" aria-current="false" href="#variables-and-secrets" class="Link__StyledLink-sc-14289xe-0 cJbOew Minitocs_nested__JSAov"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R65kteqn6:--label" class="Box-sc-g0xbh4-0 bmseMA">Variables and secrets</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a tabindex="0" aria-labelledby=":R6dkteqn6:--label " id=":R6dkteqn6:" aria-current="false" href="#caching" class="Link__StyledLink-sc-14289xe-0 cJbOew Minitocs_nested__JSAov"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R6dkteqn6:--label" class="Box-sc-g0xbh4-0 bmseMA">Caching</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a tabindex="0" aria-labelledby=":R6lkteqn6:--label " id=":R6lkteqn6:" aria-current="false" href="#artifacts" class="Link__StyledLink-sc-14289xe-0 cJbOew Minitocs_nested__JSAov"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R6lkteqn6:--label" class="Box-sc-g0xbh4-0 bmseMA">Artifacts</span></div></a></li><li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a tabindex="0" aria-labelledby=":R6tkteqn6:--label " id=":R6tkteqn6:" aria-current="false" href="#databases-and-service-containers" class="Link__StyledLink-sc-14289xe-0 cJbOew Minitocs_nested__JSAov"><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"><span id=":R6tkteqn6:--label" class="Box-sc-g0xbh4-0 bmseMA">Databases and service containers</span></div></a></li></ul></nav></div><div data-container="article" data-search="article-body" class="Box-sc-g0xbh4-0 kohLxz"><div id="article-contents"><div class="MarkdownContent_markdownBody__v5MYy markdown-body"><h2 id="introduction" tabindex="-1"><a class="heading-link" href="#introduction">Introduction<span class="heading-link-symbol" aria-hidden="true"></span></a></h2> <p>GitLab CI/CD and GitHub Actions both allow you to create workflows that automatically build, test, publish, release, and deploy code. GitLab CI/CD and GitHub Actions share some similarities in workflow configuration:</p> <ul> <li>Workflow configuration files are written in YAML and are stored in the code's repository.</li> <li>Workflows include one or more jobs.</li> <li>Jobs include one or more steps or individual commands.</li> <li>Jobs can run on either managed or self-hosted machines.</li> </ul> <p>There are a few differences, and this guide will show you the important differences so that you can migrate your workflow to GitHub Actions.</p> <h2 id="jobs" tabindex="-1"><a class="heading-link" href="#jobs">Jobs<span class="heading-link-symbol" aria-hidden="true"></span></a></h2> <p>Jobs in GitLab CI/CD are very similar to jobs in GitHub Actions. In both systems, jobs have the following characteristics:</p> <ul> <li>Jobs contain a series of steps or scripts that run sequentially.</li> <li>Jobs can run on separate machines or in separate containers.</li> <li>Jobs run in parallel by default, but can be configured to run sequentially.</li> </ul> <p>You can run a script or a shell command in a job. In GitLab CI/CD, script steps are specified using the <code>script</code> key. In GitHub Actions, all scripts are specified using the <code>run</code> key.</p> <p>Below is an example of the syntax for each system.</p> <h3 id="gitlab-cicd-syntax-for-jobs" tabindex="-1"><a class="heading-link" href="#gitlab-cicd-syntax-for-jobs">GitLab CI/CD syntax for jobs<span class="heading-link-symbol" aria-hidden="true"></span></a></h3> <pre><code class="hljs language-yaml"><span class="hljs-attr">job1:</span> <span class="hljs-attr">variables:</span> <span class="hljs-attr">GIT_CHECKOUT:</span> <span class="hljs-string">"true"</span> <span class="hljs-attr">script:</span> <span class="hljs-bullet">-</span> <span class="hljs-string">echo</span> <span class="hljs-string">"Run your script here"</span> </code></pre> <h3 id="github-actions-syntax-for-jobs" tabindex="-1"><a class="heading-link" href="#github-actions-syntax-for-jobs">GitHub Actions syntax for jobs<span class="heading-link-symbol" aria-hidden="true"></span></a></h3> <pre><code class="hljs language-yaml"><span class="hljs-attr">jobs:</span> <span class="hljs-attr">job1:</span> <span class="hljs-attr">steps:</span> <span class="hljs-bullet">-</span> <span class="hljs-attr">uses:</span> <span class="hljs-string">actions/checkout@v4</span> <span class="hljs-bullet">-</span> <span class="hljs-attr">run:</span> <span class="hljs-string">echo</span> <span class="hljs-string">"Run your script here"</span> </code></pre> <h2 id="runners" tabindex="-1"><a class="heading-link" href="#runners">Runners<span class="heading-link-symbol" aria-hidden="true"></span></a></h2> <p>Runners are machines on which the jobs run. Both GitLab CI/CD and GitHub Actions offer managed and self-hosted variants of runners. In GitLab CI/CD, <code>tags</code> are used to run jobs on different platforms, while in GitHub Actions it is done with the <code>runs-on</code> key.</p> <p>Below is an example of the syntax for each system.</p> <h3 id="gitlab-cicd-syntax-for-runners" tabindex="-1"><a class="heading-link" href="#gitlab-cicd-syntax-for-runners">GitLab CI/CD syntax for runners<span class="heading-link-symbol" aria-hidden="true"></span></a></h3> <pre><code class="hljs language-yaml"><span class="hljs-attr">windows_job:</span> <span class="hljs-attr">tags:</span> <span class="hljs-bullet">-</span> <span class="hljs-string">windows</span> <span class="hljs-attr">script:</span> <span class="hljs-bullet">-</span> <span class="hljs-string">echo</span> <span class="hljs-string">Hello,</span> <span class="hljs-string">%USERNAME%!</span> <span class="hljs-attr">linux_job:</span> <span class="hljs-attr">tags:</span> <span class="hljs-bullet">-</span> <span class="hljs-string">linux</span> <span class="hljs-attr">script:</span> <span class="hljs-bullet">-</span> <span class="hljs-string">echo</span> <span class="hljs-string">"Hello, $USER!"</span> </code></pre> <h3 id="github-actions-syntax-for-runners" tabindex="-1"><a class="heading-link" href="#github-actions-syntax-for-runners">GitHub Actions syntax for runners<span class="heading-link-symbol" aria-hidden="true"></span></a></h3> <pre><code class="hljs language-yaml"><span class="hljs-attr">windows_job:</span> <span class="hljs-attr">runs-on:</span> <span class="hljs-string">windows-latest</span> <span class="hljs-attr">steps:</span> <span class="hljs-bullet">-</span> <span class="hljs-attr">run:</span> <span class="hljs-string">echo</span> <span class="hljs-string">Hello,</span> <span class="hljs-string">%USERNAME%!</span> <span class="hljs-attr">linux_job:</span> <span class="hljs-attr">runs-on:</span> <span class="hljs-string">ubuntu-latest</span> <span class="hljs-attr">steps:</span> <span class="hljs-bullet">-</span> <span class="hljs-attr">run:</span> <span class="hljs-string">echo</span> <span class="hljs-string">"Hello, $USER!"</span> </code></pre> <p>For more information, see "<a href="/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on" _originalHref="/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on">Workflow syntax for GitHub Actions</a>."</p> <h2 id="docker-images" tabindex="-1"><a class="heading-link" href="#docker-images">Docker images<span class="heading-link-symbol" aria-hidden="true"></span></a></h2> <p>Both GitLab CI/CD and GitHub Actions support running jobs in a Docker image. In GitLab CI/CD, Docker images are defined with an <code>image</code> key, while in GitHub Actions it is done with the <code>container</code> key.</p> <p>Below is an example of the syntax for each system.</p> <h3 id="gitlab-cicd-syntax-for-docker-images" tabindex="-1"><a class="heading-link" href="#gitlab-cicd-syntax-for-docker-images">GitLab CI/CD syntax for Docker images<span class="heading-link-symbol" aria-hidden="true"></span></a></h3> <pre><code class="hljs language-yaml"><span class="hljs-attr">my_job:</span> <span class="hljs-attr">image:</span> <span class="hljs-string">node:20-bookworm-slim</span> </code></pre> <h3 id="github-actions-syntax-for-docker-images" tabindex="-1"><a class="heading-link" href="#github-actions-syntax-for-docker-images">GitHub Actions syntax for Docker images<span class="heading-link-symbol" aria-hidden="true"></span></a></h3> <pre><code class="hljs language-yaml"><span class="hljs-attr">jobs:</span> <span class="hljs-attr">my_job:</span> <span class="hljs-attr">container:</span> <span class="hljs-string">node:20-bookworm-slim</span> </code></pre> <p>For more information, see "<a href="/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idcontainer" _originalHref="/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idcontainer">Workflow syntax for GitHub Actions</a>."</p> <h2 id="condition-and-expression-syntax" tabindex="-1"><a class="heading-link" href="#condition-and-expression-syntax">Condition and expression syntax<span class="heading-link-symbol" aria-hidden="true"></span></a></h2> <p>GitLab CI/CD uses <code>rules</code> to determine if a job will run for a specific condition. GitHub Actions uses the <code>if</code> keyword to prevent a job from running unless a condition is met.</p> <p>Below is an example of the syntax for each system.</p> <h3 id="gitlab-cicd-syntax-for-conditions-and-expressions" tabindex="-1"><a class="heading-link" href="#gitlab-cicd-syntax-for-conditions-and-expressions">GitLab CI/CD syntax for conditions and expressions<span class="heading-link-symbol" aria-hidden="true"></span></a></h3> <pre><code class="hljs language-yaml"><span class="hljs-attr">deploy_prod:</span> <span class="hljs-attr">stage:</span> <span class="hljs-string">deploy</span> <span class="hljs-attr">script:</span> <span class="hljs-bullet">-</span> <span class="hljs-string">echo</span> <span class="hljs-string">"Deploy to production server"</span> <span class="hljs-attr">rules:</span> <span class="hljs-bullet">-</span> <span class="hljs-attr">if:</span> <span class="hljs-string">'$CI_COMMIT_BRANCH == "master"'</span> </code></pre> <h3 id="github-actions-syntax-for-conditions-and-expressions" tabindex="-1"><a class="heading-link" href="#github-actions-syntax-for-conditions-and-expressions">GitHub Actions syntax for conditions and expressions<span class="heading-link-symbol" aria-hidden="true"></span></a></h3> <pre><code class="hljs language-yaml"><span class="hljs-attr">jobs:</span> <span class="hljs-attr">deploy_prod:</span> <span class="hljs-attr">if:</span> <span class="hljs-string">contains(</span> <span class="hljs-string">github.ref,</span> <span class="hljs-string">'master'</span><span class="hljs-string">)</span> <span class="hljs-attr">runs-on:</span> <span class="hljs-string">ubuntu-latest</span> <span class="hljs-attr">steps:</span> <span class="hljs-bullet">-</span> <span class="hljs-attr">run:</span> <span class="hljs-string">echo</span> <span class="hljs-string">"Deploy to production server"</span> </code></pre> <p>For more information, see "<a href="/en/actions/learn-github-actions/expressions" _originalHref="/actions/learn-github-actions/expressions">Evaluate expressions in workflows and actions</a>."</p> <h2 id="dependencies-between-jobs" tabindex="-1"><a class="heading-link" href="#dependencies-between-jobs">Dependencies between Jobs<span class="heading-link-symbol" aria-hidden="true"></span></a></h2> <p>Both GitLab CI/CD and GitHub Actions allow you to set dependencies for a job. In both systems, jobs run in parallel by default, but job dependencies in GitHub Actions can be specified explicitly with the <code>needs</code> key. GitLab CI/CD also has a concept of <code>stages</code>, where jobs in a stage run concurrently, but the next stage will start when all the jobs in the previous stage have completed. You can recreate this scenario in GitHub Actions with the <code>needs</code> key.</p> <p>Below is an example of the syntax for each system. The workflows start with two jobs named <code>build_a</code> and <code>build_b</code> running in parallel, and when those jobs complete, another job called <code>test_ab</code> will run. Finally, when <code>test_ab</code> completes, the <code>deploy_ab</code> job will run.</p> <h3 id="gitlab-cicd-syntax-for-dependencies-between-jobs" tabindex="-1"><a class="heading-link" href="#gitlab-cicd-syntax-for-dependencies-between-jobs">GitLab CI/CD syntax for dependencies between jobs<span class="heading-link-symbol" aria-hidden="true"></span></a></h3> <pre><code class="hljs language-yaml"><span class="hljs-attr">stages:</span> <span class="hljs-bullet">-</span> <span class="hljs-string">build</span> <span class="hljs-bullet">-</span> <span class="hljs-string">test</span> <span class="hljs-bullet">-</span> <span class="hljs-string">deploy</span> <span class="hljs-attr">build_a:</span> <span class="hljs-attr">stage:</span> <span class="hljs-string">build</span> <span class="hljs-attr">script:</span> <span class="hljs-bullet">-</span> <span class="hljs-string">echo</span> <span class="hljs-string">"This job will run first."</span> <span class="hljs-attr">build_b:</span> <span class="hljs-attr">stage:</span> <span class="hljs-string">build</span> <span class="hljs-attr">script:</span> <span class="hljs-bullet">-</span> <span class="hljs-string">echo</span> <span class="hljs-string">"This job will run first, in parallel with build_a."</span> <span class="hljs-attr">test_ab:</span> <span class="hljs-attr">stage:</span> <span class="hljs-string">test</span> <span class="hljs-attr">script:</span> <span class="hljs-bullet">-</span> <span class="hljs-string">echo</span> <span class="hljs-string">"This job will run after build_a and build_b have finished."</span> <span class="hljs-attr">deploy_ab:</span> <span class="hljs-attr">stage:</span> <span class="hljs-string">deploy</span> <span class="hljs-attr">script:</span> <span class="hljs-bullet">-</span> <span class="hljs-string">echo</span> <span class="hljs-string">"This job will run after test_ab is complete"</span> </code></pre> <h3 id="github-actions-syntax-for-dependencies-between-jobs" tabindex="-1"><a class="heading-link" href="#github-actions-syntax-for-dependencies-between-jobs">GitHub Actions syntax for dependencies between jobs<span class="heading-link-symbol" aria-hidden="true"></span></a></h3> <pre><code class="hljs language-yaml"><span class="hljs-attr">jobs:</span> <span class="hljs-attr">build_a:</span> <span class="hljs-attr">runs-on:</span> <span class="hljs-string">ubuntu-latest</span> <span class="hljs-attr">steps:</span> <span class="hljs-bullet">-</span> <span class="hljs-attr">run:</span> <span class="hljs-string">echo</span> <span class="hljs-string">"This job will be run first."</span> <span class="hljs-attr">build_b:</span> <span class="hljs-attr">runs-on:</span> <span class="hljs-string">ubuntu-latest</span> <span class="hljs-attr">steps:</span> <span class="hljs-bullet">-</span> <span class="hljs-attr">run:</span> <span class="hljs-string">echo</span> <span class="hljs-string">"This job will be run first, in parallel with build_a"</span> <span class="hljs-attr">test_ab:</span> <span class="hljs-attr">runs-on:</span> <span class="hljs-string">ubuntu-latest</span> <span class="hljs-attr">needs:</span> [<span class="hljs-string">build_a</span>,<span class="hljs-string">build_b</span>] <span class="hljs-attr">steps:</span> <span class="hljs-bullet">-</span> <span class="hljs-attr">run:</span> <span class="hljs-string">echo</span> <span class="hljs-string">"This job will run after build_a and build_b have finished"</span> <span class="hljs-attr">deploy_ab:</span> <span class="hljs-attr">runs-on:</span> <span class="hljs-string">ubuntu-latest</span> <span class="hljs-attr">needs:</span> [<span class="hljs-string">test_ab</span>] <span class="hljs-attr">steps:</span> <span class="hljs-bullet">-</span> <span class="hljs-attr">run:</span> <span class="hljs-string">echo</span> <span class="hljs-string">"This job will run after test_ab is complete"</span> </code></pre> <p>For more information, see "<a href="/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idneeds" _originalHref="/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idneeds">Workflow syntax for GitHub Actions</a>."</p> <h2 id="scheduling-workflows" tabindex="-1"><a class="heading-link" href="#scheduling-workflows">Scheduling workflows<span class="heading-link-symbol" aria-hidden="true"></span></a></h2> <p>Both GitLab CI/CD and GitHub Actions allow you to run workflows at a specific interval. In GitLab CI/CD, pipeline schedules are configured with the UI, while in GitHub Actions you can trigger a workflow on a scheduled interval with the "on" key.</p> <p>For more information, see "<a href="/en/actions/using-workflows/events-that-trigger-workflows#scheduled-events" _originalHref="/actions/using-workflows/events-that-trigger-workflows#scheduled-events">Events that trigger workflows</a>."</p> <h2 id="variables-and-secrets" tabindex="-1"><a class="heading-link" href="#variables-and-secrets">Variables and secrets<span class="heading-link-symbol" aria-hidden="true"></span></a></h2> <p>GitLab CI/CD and GitHub Actions support setting variables in the pipeline or workflow configuration file, and creating secrets using the GitLab or GitHub UI.</p> <p>For more information, see "<a href="/en/actions/learn-github-actions/variables" _originalHref="/actions/learn-github-actions/variables">Store information in variables</a>" and "<a href="/en/actions/security-guides/using-secrets-in-github-actions" _originalHref="/actions/security-guides/using-secrets-in-github-actions">Using secrets in GitHub Actions</a>."</p> <h2 id="caching" tabindex="-1"><a class="heading-link" href="#caching">Caching<span class="heading-link-symbol" aria-hidden="true"></span></a></h2> <p>GitLab CI/CD and GitHub Actions provide a method in the configuration file to manually cache workflow files.</p> <p>Below is an example of the syntax for each system.</p> <h3 id="gitlab-cicd-syntax-for-caching" tabindex="-1"><a class="heading-link" href="#gitlab-cicd-syntax-for-caching">GitLab CI/CD syntax for caching<span class="heading-link-symbol" aria-hidden="true"></span></a></h3> <pre><code class="hljs language-yaml"><span class="hljs-attr">image:</span> <span class="hljs-string">node:latest</span> <span class="hljs-attr">cache:</span> <span class="hljs-attr">key:</span> <span class="hljs-string">$CI_COMMIT_REF_SLUG</span> <span class="hljs-attr">paths:</span> <span class="hljs-bullet">-</span> <span class="hljs-string">.npm/</span> <span class="hljs-attr">before_script:</span> <span class="hljs-bullet">-</span> <span class="hljs-string">npm</span> <span class="hljs-string">ci</span> <span class="hljs-string">--cache</span> <span class="hljs-string">.npm</span> <span class="hljs-string">--prefer-offline</span> <span class="hljs-attr">test_async:</span> <span class="hljs-attr">script:</span> <span class="hljs-bullet">-</span> <span class="hljs-string">node</span> <span class="hljs-string">./specs/start.js</span> <span class="hljs-string">./specs/async.spec.js</span> </code></pre> <h3 id="github-actions-syntax-for-caching" tabindex="-1"><a class="heading-link" href="#github-actions-syntax-for-caching">GitHub Actions syntax for caching<span class="heading-link-symbol" aria-hidden="true"></span></a></h3> <pre><code class="hljs language-yaml"><span class="hljs-attr">jobs:</span> <span class="hljs-attr">test_async:</span> <span class="hljs-attr">runs-on:</span> <span class="hljs-string">ubuntu-latest</span> <span class="hljs-attr">steps:</span> <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Cache</span> <span class="hljs-string">node</span> <span class="hljs-string">modules</span> <span class="hljs-attr">uses:</span> <span class="hljs-string">actions/cache@v3</span> <span class="hljs-attr">with:</span> <span class="hljs-attr">path:</span> <span class="hljs-string">~/.npm</span> <span class="hljs-attr">key:</span> <span class="hljs-string">v1-npm-deps-${{</span> <span class="hljs-string">hashFiles('**/package-lock.json')</span> <span class="hljs-string">}}</span> <span class="hljs-attr">restore-keys:</span> <span class="hljs-string">v1-npm-deps-</span> </code></pre> <h2 id="artifacts" tabindex="-1"><a class="heading-link" href="#artifacts">Artifacts<span class="heading-link-symbol" aria-hidden="true"></span></a></h2> <p>Both GitLab CI/CD and GitHub Actions can upload files and directories created by a job as artifacts. In GitHub Actions, artifacts can be used to persist data across multiple jobs.</p> <p>Below is an example of the syntax for each system.</p> <h3 id="gitlab-cicd-syntax-for-artifacts" tabindex="-1"><a class="heading-link" href="#gitlab-cicd-syntax-for-artifacts">GitLab CI/CD syntax for artifacts<span class="heading-link-symbol" aria-hidden="true"></span></a></h3> <pre><code class="hljs language-yaml"><span class="hljs-attr">script:</span> <span class="hljs-attr">artifacts:</span> <span class="hljs-attr">paths:</span> <span class="hljs-bullet">-</span> <span class="hljs-string">math-homework.txt</span> </code></pre> <h3 id="github-actions-syntax-for-artifacts" tabindex="-1"><a class="heading-link" href="#github-actions-syntax-for-artifacts">GitHub Actions syntax for artifacts<span class="heading-link-symbol" aria-hidden="true"></span></a></h3> <pre><code class="hljs language-yaml"><span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Upload</span> <span class="hljs-string">math</span> <span class="hljs-string">result</span> <span class="hljs-string">for</span> <span class="hljs-string">job</span> <span class="hljs-number">1</span> <span class="hljs-attr">uses:</span> <span class="hljs-string">actions/upload-artifact@v4</span> <span class="hljs-attr">with:</span> <span class="hljs-attr">name:</span> <span class="hljs-string">homework</span> <span class="hljs-attr">path:</span> <span class="hljs-string">math-homework.txt</span> </code></pre> <p>For more information, see "<a href="/en/actions/using-workflows/storing-workflow-data-as-artifacts" _originalHref="/actions/using-workflows/storing-workflow-data-as-artifacts">Storing and sharing data from a workflow</a>."</p> <h2 id="databases-and-service-containers" tabindex="-1"><a class="heading-link" href="#databases-and-service-containers">Databases and service containers<span class="heading-link-symbol" aria-hidden="true"></span></a></h2> <p>Both systems enable you to include additional containers for databases, caching, or other dependencies.</p> <p>In GitLab CI/CD, a container for the job is specified with the <code>image</code> key, while GitHub Actions uses the <code>container</code> key. In both systems, additional service containers are specified with the <code>services</code> key.</p> <p>Below is an example of the syntax for each system.</p> <h3 id="gitlab-cicd-syntax-for-databases-and-service-containers" tabindex="-1"><a class="heading-link" href="#gitlab-cicd-syntax-for-databases-and-service-containers">GitLab CI/CD syntax for databases and service containers<span class="heading-link-symbol" aria-hidden="true"></span></a></h3> <pre><code class="hljs language-yaml"><span class="hljs-attr">container-job:</span> <span class="hljs-attr">variables:</span> <span class="hljs-attr">POSTGRES_PASSWORD:</span> <span class="hljs-string">postgres</span> <span class="hljs-comment"># The hostname used to communicate with the</span> <span class="hljs-comment"># PostgreSQL service container</span> <span class="hljs-attr">POSTGRES_HOST:</span> <span class="hljs-string">postgres</span> <span class="hljs-comment"># The default PostgreSQL port</span> <span class="hljs-attr">POSTGRES_PORT:</span> <span class="hljs-number">5432</span> <span class="hljs-attr">image:</span> <span class="hljs-string">node:20-bookworm-slim</span> <span class="hljs-attr">services:</span> <span class="hljs-bullet">-</span> <span class="hljs-string">postgres</span> <span class="hljs-attr">script:</span> <span class="hljs-comment"># Performs a clean installation of all dependencies</span> <span class="hljs-comment"># in the `package.json` file</span> <span class="hljs-bullet">-</span> <span class="hljs-string">npm</span> <span class="hljs-string">ci</span> <span class="hljs-comment"># Runs a script that creates a PostgreSQL client,</span> <span class="hljs-comment"># populates the client with data, and retrieves data</span> <span class="hljs-bullet">-</span> <span class="hljs-string">node</span> <span class="hljs-string">client.js</span> <span class="hljs-attr">tags:</span> <span class="hljs-bullet">-</span> <span class="hljs-string">docker</span> </code></pre> <h3 id="github-actions-syntax-for-databases-and-service-containers" tabindex="-1"><a class="heading-link" href="#github-actions-syntax-for-databases-and-service-containers">GitHub Actions syntax for databases and service containers<span class="heading-link-symbol" aria-hidden="true"></span></a></h3> <pre><code class="hljs language-yaml"><span class="hljs-attr">jobs:</span> <span class="hljs-attr">container-job:</span> <span class="hljs-attr">runs-on:</span> <span class="hljs-string">ubuntu-latest</span> <span class="hljs-attr">container:</span> <span class="hljs-string">node:20-bookworm-slim</span> <span class="hljs-attr">services:</span> <span class="hljs-attr">postgres:</span> <span class="hljs-attr">image:</span> <span class="hljs-string">postgres</span> <span class="hljs-attr">env:</span> <span class="hljs-attr">POSTGRES_PASSWORD:</span> <span class="hljs-string">postgres</span> <span class="hljs-attr">steps:</span> <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Check</span> <span class="hljs-string">out</span> <span class="hljs-string">repository</span> <span class="hljs-string">code</span> <span class="hljs-attr">uses:</span> <span class="hljs-string">actions/checkout@v4</span> <span class="hljs-comment"># Performs a clean installation of all dependencies</span> <span class="hljs-comment"># in the `package.json` file</span> <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Install</span> <span class="hljs-string">dependencies</span> <span class="hljs-attr">run:</span> <span class="hljs-string">npm</span> <span class="hljs-string">ci</span> <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Connect</span> <span class="hljs-string">to</span> <span class="hljs-string">PostgreSQL</span> <span class="hljs-comment"># Runs a script that creates a PostgreSQL client,</span> <span class="hljs-comment"># populates the client with data, and retrieves data</span> <span class="hljs-attr">run:</span> <span class="hljs-string">node</span> <span class="hljs-string">client.js</span> <span class="hljs-attr">env:</span> <span class="hljs-comment"># The hostname used to communicate with the</span> <span class="hljs-comment"># PostgreSQL service container</span> <span class="hljs-attr">POSTGRES_HOST:</span> <span class="hljs-string">postgres</span> <span class="hljs-comment"># The default PostgreSQL port</span> <span class="hljs-attr">POSTGRES_PORT:</span> <span class="hljs-number">5432</span> </code></pre> <p>For more information, see "<a href="/en/actions/using-containerized-services/about-service-containers" _originalHref="/actions/using-containerized-services/about-service-containers">About service containers</a>."</p></div></div></div></div></div></main><footer data-container="footer"><section class="container-xl mt-lg-8 mt-6 px-3 px-md-6 no-print mx-auto"><h2 class="f3">Help and support</h2><div class="container-xl mx-auto py-6 py-lg-6 clearfix border-top border-color-secondary"><div class="float-left pr-4 mb-6 mb-xl-0 col-12 col-lg-6 col-xl-3"><form class="f5" data-testid="survey-form" aria-live="polite"><h3 id="survey-title" class="f4 mb-3">Did you find what you needed?</h3><input type="text" class="d-none" name="survey-token" value=""/><div class="mb-2" role="radiogroup" aria-labelledby="survey-title"><input class="Survey_visuallyHidden__Xh_nl Survey_customRadio__aNqUl" id="survey-yes" type="radio" name="survey-vote" aria-label="Yes" value="Y"/><label class="btn mr-1" for="survey-yes"><svg aria-hidden="true" focusable="false" class="color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M8.834.066c.763.087 1.5.295 2.01.884.505.581.656 1.378.656 2.3 0 .467-.087 1.119-.157 1.637L11.328 5h1.422c.603 0 1.174.085 1.668.333.508.254.911.679 1.137 1.2.453.998.438 2.447.188 4.316l-.04.306c-.105.79-.195 1.473-.313 2.033-.131.63-.315 1.209-.668 1.672C13.97 15.847 12.706 16 11 16c-1.848 0-3.234-.333-4.388-.653-.165-.045-.323-.09-.475-.133-.658-.186-1.2-.34-1.725-.415A1.75 1.75 0 0 1 2.75 16h-1A1.75 1.75 0 0 1 0 14.25v-7.5C0 5.784.784 5 1.75 5h1a1.75 1.75 0 0 1 1.514.872c.258-.105.59-.268.918-.508C5.853 4.874 6.5 4.079 6.5 2.75v-.5c0-1.202.994-2.337 2.334-2.184ZM4.5 13.3c.705.088 1.39.284 2.072.478l.441.125c1.096.305 2.334.598 3.987.598 1.794 0 2.28-.223 2.528-.549.147-.193.276-.505.394-1.07.105-.502.188-1.124.295-1.93l.04-.3c.25-1.882.189-2.933-.068-3.497a.921.921 0 0 0-.442-.48c-.208-.104-.52-.174-.997-.174H11c-.686 0-1.295-.577-1.206-1.336.023-.192.05-.39.076-.586.065-.488.13-.97.13-1.328 0-.809-.144-1.15-.288-1.316-.137-.158-.402-.304-1.048-.378C8.357 1.521 8 1.793 8 2.25v.5c0 1.922-.978 3.128-1.933 3.825a5.831 5.831 0 0 1-1.567.81ZM2.75 6.5h-1a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h1a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg> <!-- -->Yes</label><input class="Survey_visuallyHidden__Xh_nl Survey_customRadio__aNqUl" id="survey-no" type="radio" name="survey-vote" aria-label="No" value="N"/><label class="btn" for="survey-no"><svg aria-hidden="true" focusable="false" class="color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M7.083 15.986c-.763-.087-1.499-.295-2.011-.884-.504-.581-.655-1.378-.655-2.299 0-.468.087-1.12.157-1.638l.015-.112H3.167c-.603 0-1.174-.086-1.669-.334a2.415 2.415 0 0 1-1.136-1.2c-.454-.998-.438-2.447-.188-4.316l.04-.306C.32 4.108.41 3.424.526 2.864c.132-.63.316-1.209.669-1.672C1.947.205 3.211.053 4.917.053c1.848 0 3.234.332 4.388.652l.474.133c.658.187 1.201.341 1.726.415a1.75 1.75 0 0 1 1.662-1.2h1c.966 0 1.75.784 1.75 1.75v7.5a1.75 1.75 0 0 1-1.75 1.75h-1a1.75 1.75 0 0 1-1.514-.872c-.259.105-.59.268-.919.508-.671.491-1.317 1.285-1.317 2.614v.5c0 1.201-.994 2.336-2.334 2.183Zm4.334-13.232c-.706-.089-1.39-.284-2.072-.479l-.441-.125c-1.096-.304-2.335-.597-3.987-.597-1.794 0-2.28.222-2.529.548-.147.193-.275.505-.393 1.07-.105.502-.188 1.124-.295 1.93l-.04.3c-.25 1.882-.19 2.933.067 3.497a.923.923 0 0 0 .443.48c.208.104.52.175.997.175h1.75c.685 0 1.295.577 1.205 1.335-.022.192-.049.39-.075.586-.066.488-.13.97-.13 1.329 0 .808.144 1.15.288 1.316.137.157.401.303 1.048.377.307.035.664-.237.664-.693v-.5c0-1.922.978-3.127 1.932-3.825a5.878 5.878 0 0 1 1.568-.809Zm1.75 6.798h1a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25h-1a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25Z"></path></svg> <!-- -->No</label></div><a rel="" class="f6 text-underline" target="_blank" href="/en/site-policy/privacy-policies/github-privacy-statement">Privacy policy</a></form></div><div class="float-left pr-4 mb-6 mb-xl-0 col-12 col-lg-6 col-xl-4 offset-xl-1"><div class="f5 contribution"><h3 class="f4 mb-3">Help us make these docs great!</h3><p class="max-w-xs color-fg-muted mb-3">All GitHub docs are open source. See something that's wrong or unclear? Submit a pull request.</p><a class="btn" href="https://github.com/github/docs/blob/main/content/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-gitlab-cicd-to-github-actions.md"><svg aria-hidden="true" focusable="false" class="octicon mr-1" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path></svg>Make a contribution</a><p class="color-fg-muted f6 mt-2"><a class="text-underline" href="/contributing" target="_blank" rel="noopener">Learn how to contribute</a></p></div></div><div class="float-left pr-4 mb-6 mb-xl-0 col-12 col-lg-6 col-xl-3 offset-xl-1"><div><h3 class="mb-3 f4">Still need help?</h3><div class="mb-2"><a id="ask-community" href="https://github.com/orgs/community/discussions" class="text-underline"><svg aria-hidden="true" focusable="false" class="octicon mr-1" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M2 5.5a3.5 3.5 0 1 1 5.898 2.549 5.508 5.508 0 0 1 3.034 4.084.75.75 0 1 1-1.482.235 4 4 0 0 0-7.9 0 .75.75 0 0 1-1.482-.236A5.507 5.507 0 0 1 3.102 8.05 3.493 3.493 0 0 1 2 5.5ZM11 4a3.001 3.001 0 0 1 2.22 5.018 5.01 5.01 0 0 1 2.56 3.012.749.749 0 0 1-.885.954.752.752 0 0 1-.549-.514 3.507 3.507 0 0 0-2.522-2.372.75.75 0 0 1-.574-.73v-.352a.75.75 0 0 1 .416-.672A1.5 1.5 0 0 0 11 5.5.75.75 0 0 1 11 4Zm-5.5-.5a2 2 0 1 0-.001 3.999A2 2 0 0 0 5.5 3.5Z"></path></svg>Ask the GitHub community</a></div><div><a id="support" href="https://support.github.com" class="text-underline"><svg aria-hidden="true" focusable="false" class="octicon mr-1" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path></svg>Contact support</a></div></div></div></div></section><section class="container-xl px-3 mt-6 pb-8 px-md-6 color-fg-muted"><h2 class="f4 mb-2 col-12">Legal</h2><ul class="d-flex flex-wrap list-style-none"><li class="mr-3">© <!-- -->2024<!-- --> GitHub, Inc.</li><li class="mr-3"><a class="text-underline" href="/en/site-policy/github-terms/github-terms-of-service">Terms</a></li><li class="mr-3"><a class="text-underline" href="/en/site-policy/privacy-policies/github-privacy-statement">Privacy</a></li><li class="mr-3"><a class="text-underline" href="https://www.githubstatus.com/">Status</a></li><li class="mr-3"><a class="text-underline" href="https://github.com/pricing">Pricing</a></li><li class="mr-3"><a class="text-underline" href="https://services.github.com">Expert services</a></li><li class="mr-3"><a class="text-underline" href="https://github.blog">Blog</a></li></ul></section><div role="tooltip" class="position-fixed bottom-0 mb-4 right-0 mr-4 z-1 ScrollButton_transition200__rLxBo ScrollButton_opacity0__vjKQD"><button class="ghd-scroll-to-top tooltipped tooltipped-n tooltipped-no-delay btn circle border-1 d-flex flex-items-center flex-justify-center ScrollButton_customFocus__L3FsX" style="width:40px;height:40px" aria-label="Scroll to top"><svg aria-hidden="true" focusable="false" class="octicon octicon-chevron-up" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M3.22 10.53a.749.749 0 0 1 0-1.06l4.25-4.25a.749.749 0 0 1 1.06 0l4.25 4.25a.749.749 0 1 1-1.06 1.06L8 6.811 4.28 10.53a.749.749 0 0 1-1.06 0Z"></path></svg></button></div></footer></div></div><script type="application/json" id="__PRIMER_DATA_:R16:__">{"resolvedServerColorMode":"day"}</script></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"mainContext":{"breadcrumbs":[{"href":"/en/actions","title":"GitHub Actions"},{"href":"/en/actions/migrating-to-github-actions","title":"Migrate to GitHub Actions"},{"href":"/en/actions/migrating-to-github-actions/manually-migrating-to-github-actions","title":"Manual migrations"},{"href":"/en/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-gitlab-cicd-to-github-actions","title":"Migrate from GitLab CI/CD"}],"communityRedirect":{},"currentProduct":{"id":"actions","name":"{% data variables.product.prodname_actions %}","href":"/actions","dir":"content/actions","toc":"content/actions/index.md","wip":false,"hidden":false,"versions":["free-pro-team@latest","enterprise-cloud@latest","enterprise-server@3.15","enterprise-server@3.14","enterprise-server@3.13","enterprise-server@3.12","enterprise-server@3.11","enterprise-server@3.10"]},"currentProductName":"GitHub Actions","isHomepageVersion":false,"error":"","data":{"ui":{"alerts":{"NOTE":"Note","IMPORTANT":"Important","WARNING":"Warning","TIP":"Tip","CAUTION":"Caution"},"header":{"github_docs":"GitHub Docs","contact":"Contact","notices":{"release_candidate":" is currently available as a \u003ca href=\"/admin/overview/about-upgrades-to-new-releases\"\u003erelease candidate\u003c/a\u003e.","early_access":"📣 Please \u003cb\u003edo not share\u003c/b\u003e this URL publicly. This page contains content about a private preview feature.","release_notes_use_latest":"Please use the latest release for the latest security, performance, and bug fixes.","ghes_release_notes_upgrade_patch_only":"📣 This is not the \u003ca href=\"#{{ latestPatch }}\"\u003elatest patch release\u003c/a\u003e of Enterprise Server.","ghes_release_notes_upgrade_release_only":"📣 This is not the \u003ca href=\"/enterprise-server@{{ latestRelease }}/admin/release-notes\"\u003elatest release\u003c/a\u003e of Enterprise Server.","ghes_release_notes_upgrade_patch_and_release":"📣 This is not the \u003ca href=\"#{{ latestPatch }}\"\u003elatest patch release\u003c/a\u003e of this release series, and this is not the \u003ca href=\"/enterprise-server@{{ latestRelease }}/admin/release-notes\"\u003elatest release\u003c/a\u003e of Enterprise Server."},"sign_up_cta":"Sign up","menu":"Menu","go_home":"Home"},"search":{"description":"Enter a search term to find it in the GitHub Docs.","placeholder":"Search GitHub Docs","label":"Search GitHub Docs"},"survey":{"able_to_find":"Did you find what you needed?","yes":"Yes","no":"No","cancel":"Cancel","additional_feedback":"Can you tell us more about your rating? (Optional)","optional":"Optional","required":"Required","email_label":"Leave your email if we can contact you. (Optional)","email_validation":"Please enter a valid email address","send":"Send","feedback":"Thank you! We received your feedback.","not_support":"If you need a reply, please contact \u003ca href=\"https://support.github.com/\"\u003esupport\u003c/a\u003e.","privacy_policy":"Privacy policy","server_error":"Unable to process comment at the moment. Please try again."},"toc":{"getting_started":"Getting started","popular":"Popular","startHere":"Start here","whats_new":"What's new","videos":"Videos","all_changelogs":"All changelog posts"},"meta":{"default_description":"Get started, troubleshoot, and make the most of GitHub. Documentation for new users, developers, administrators, and all of GitHub's products."},"scroll_button":{"scroll_to_top":"Scroll to top"},"pages":{"article_version":"Article version","miniToc":"In this article","all_enterprise_releases":"All Enterprise Server releases","about_versions":"About versions","permissions_callout_title":"Who can use this feature?","video_from_transcript":"See video for this transcript"},"picker":{"language_picker_label":"Language","product_picker_default_text":"All products","version_picker_default_text":"Choose a version"},"footer":{"support_heading":"Help and support","legal_heading":"Legal","imprint":"Imprint","terms":"Terms","privacy":"Privacy","status":"Status","pricing":"Pricing","expert_services":"Expert services","blog":"Blog"},"contribution_cta":{"title":"Help us make these docs great!","body":"All GitHub docs are open source. See something that's wrong or unclear? Submit a pull request.","button":"Make a contribution","to_guidelines":"Learn how to contribute"},"support":{"still_need_help":"Still need help?","contact_support":"Contact support","ask_community":"Ask the GitHub community"},"rest":{"banner":{"api_versioned":"The REST API is now versioned.","api_version_info":"For more information, see \"\u003ca href=\"{{ versionWithApiVersion }}/rest/overview/api-versions\"\u003eAbout API versioning\u003c/a\u003e.\"","ghes_api_versioned":"After a site administrator upgrades your Enterprise Server instance to {{ firstGhesReleaseWithApiVersions.versionTitle }} or later, the REST API will be versioned. To learn how to find your instance's version, see \"\u003ca href=\"/{{ currentVersion }}/get-started/learning-about-github/about-versions-of-github-docs#github-enterprise-server\"\u003eAbout versions of GitHub Docs\u003c/a\u003e\".","redirect_notice":"We've recently moved some of the REST API documentation.","redirect_repo":"If you can't find what you're looking for, you might try the new {{ newRestPagesLinks }} REST API pages.","redirect_enterprise":"If you can't find what you're looking for, you might try the {{ actionsPageLink }} REST API page.","actions_api_title":"Actions"},"versioning":{"about_versions":"About REST API versions"},"overview":{"permissions":{"access":"Access","endpoints":"Endpoint","tokens":"Token types","additionalPermissions":"Additional permissions","uat":"UAT","iat":"IAT"}},"screen_reader_text_checkmark_icon":"Multiple permissions are required, or a different permission may be used. For more information about the permissions, see the documentation for this endpoint."},"domain_edit":{"name":"Domain name","edit":"Edit","edit_your":"Edit your domain name","experimental":"Experimental","your_name":"Your domain name","cancel":"Cancel","save":"Save","snippet_about":"Updating will include the new domain name in all code snippets across GitHub Docs.","learn_more":"Learn more","submission_failed":"Submission failed. Please try again in a minute."},"popovers":{"role_description":"hovercard link"}},"reusables":{},"variables":{"release_candidate":{"version":"enterprise-server@3.15"}}},"currentCategory":"migrating-to-github-actions","currentPathWithoutLanguage":"/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-gitlab-cicd-to-github-actions","page":{"documentType":"article","type":"tutorial","title":"Migrating from GitLab CI/CD to GitHub Actions","fullTitle":"Migrating from GitLab CI/CD to GitHub Actions - GitHub Docs","topics":["GitLab","Migration","CI","CD"],"introPlainText":"GitHub Actions and GitLab CI/CD share several configuration similarities, which makes migrating to GitHub Actions relatively straightforward.","applicableVersions":["free-pro-team@latest","enterprise-cloud@latest","enterprise-server@3.15","enterprise-server@3.14","enterprise-server@3.13","enterprise-server@3.12","enterprise-server@3.11","enterprise-server@3.10"],"hidden":false,"noEarlyAccessBanner":false},"enterpriseServerReleases":{"isOldestReleaseDeprecated":true,"oldestSupported":"3.10","nextDeprecationDate":"2024-09-25","supported":["3.15","3.14","3.13","3.12","3.11","3.10"]},"enterpriseServerVersions":["enterprise-server@3.15","enterprise-server@3.14","enterprise-server@3.13","enterprise-server@3.12","enterprise-server@3.11","enterprise-server@3.10"],"allVersions":{"free-pro-team@latest":{"version":"free-pro-team@latest","versionTitle":"Free, Pro, \u0026 Team","apiVersions":["2022-11-28"],"latestApiVersion":"2022-11-28"},"enterprise-cloud@latest":{"version":"enterprise-cloud@latest","versionTitle":"Enterprise Cloud","apiVersions":["2022-11-28"],"latestApiVersion":"2022-11-28"},"enterprise-server@3.15":{"version":"enterprise-server@3.15","versionTitle":"Enterprise Server 3.15","apiVersions":["2022-11-28"],"latestApiVersion":"2022-11-28","isGHES":true},"enterprise-server@3.14":{"version":"enterprise-server@3.14","versionTitle":"Enterprise Server 3.14","apiVersions":["2022-11-28"],"latestApiVersion":"2022-11-28","isGHES":true},"enterprise-server@3.13":{"version":"enterprise-server@3.13","versionTitle":"Enterprise Server 3.13","apiVersions":["2022-11-28"],"latestApiVersion":"2022-11-28","isGHES":true},"enterprise-server@3.12":{"version":"enterprise-server@3.12","versionTitle":"Enterprise Server 3.12","apiVersions":["2022-11-28"],"latestApiVersion":"2022-11-28","isGHES":true},"enterprise-server@3.11":{"version":"enterprise-server@3.11","versionTitle":"Enterprise Server 3.11","apiVersions":["2022-11-28"],"latestApiVersion":"2022-11-28","isGHES":true},"enterprise-server@3.10":{"version":"enterprise-server@3.10","versionTitle":"Enterprise Server 3.10","apiVersions":["2022-11-28"],"latestApiVersion":"2022-11-28","isGHES":true}},"currentVersion":"free-pro-team@latest","currentProductTree":null,"sidebarTree":{"href":"/en/actions","title":"GitHub Actions","childPages":[{"href":"/en/actions/about-github-actions","title":"About GitHub Actions","childPages":[{"href":"/en/actions/about-github-actions/understanding-github-actions","title":"Understand GitHub Actions","childPages":[]},{"href":"/en/actions/about-github-actions/about-continuous-integration-with-github-actions","title":"Continuous integration","childPages":[]},{"href":"/en/actions/about-github-actions/about-continuous-deployment-with-github-actions","title":"Continuous deployment","childPages":[]}]},{"href":"/en/actions/writing-workflows","title":"Write workflows","childPages":[{"href":"/en/actions/writing-workflows/quickstart","title":"Quickstart","childPages":[]},{"href":"/en/actions/writing-workflows/about-workflows","title":"About workflows","childPages":[]},{"href":"/en/actions/writing-workflows/using-workflow-templates","title":"Use workflow templates","childPages":[]},{"href":"/en/actions/writing-workflows/choosing-when-your-workflow-runs","title":"Choose when workflows run","childPages":[{"href":"/en/actions/writing-workflows/choosing-when-your-workflow-runs/triggering-a-workflow","title":"Trigger a workflow","childPages":[]},{"href":"/en/actions/writing-workflows/choosing-when-your-workflow-runs/using-conditions-to-control-job-execution","title":"Use conditions to control job execution","childPages":[]},{"href":"/en/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows","title":"Events that trigger workflows","childPages":[]}]},{"href":"/en/actions/writing-workflows/choosing-where-your-workflow-runs","title":"Choose where workflows run","childPages":[{"href":"/en/actions/writing-workflows/choosing-where-your-workflow-runs/choosing-the-runner-for-a-job","title":"Choose the runner for a job","childPages":[]},{"href":"/en/actions/writing-workflows/choosing-where-your-workflow-runs/running-jobs-in-a-container","title":"Run jobs in a container","childPages":[]}]},{"href":"/en/actions/writing-workflows/choosing-what-your-workflow-does","title":"Choose what workflows do","childPages":[{"href":"/en/actions/writing-workflows/choosing-what-your-workflow-does/using-jobs-in-a-workflow","title":"Use jobs in a workflow","childPages":[]},{"href":"/en/actions/writing-workflows/choosing-what-your-workflow-does/using-pre-written-building-blocks-in-your-workflow","title":"Find and customize actions","childPages":[]},{"href":"/en/actions/writing-workflows/choosing-what-your-workflow-does/using-github-cli-in-workflows","title":"GitHub CLI in workflows","childPages":[]},{"href":"/en/actions/writing-workflows/choosing-what-your-workflow-does/workflow-commands-for-github-actions","title":"Workflow commands","childPages":[]},{"href":"/en/actions/writing-workflows/choosing-what-your-workflow-does/adding-scripts-to-your-workflow","title":"Add scripts","childPages":[]},{"href":"/en/actions/writing-workflows/choosing-what-your-workflow-does/controlling-permissions-for-github_token","title":"Permissions for `GITHUB_TOKEN`","childPages":[]},{"href":"/en/actions/writing-workflows/choosing-what-your-workflow-does/evaluate-expressions-in-workflows-and-actions","title":"Expressions","childPages":[]},{"href":"/en/actions/writing-workflows/choosing-what-your-workflow-does/store-information-in-variables","title":"Variables","childPages":[]},{"href":"/en/actions/writing-workflows/choosing-what-your-workflow-does/accessing-contextual-information-about-workflow-runs","title":"Contexts","childPages":[]},{"href":"/en/actions/writing-workflows/choosing-what-your-workflow-does/passing-information-between-jobs","title":"Pass information","childPages":[]},{"href":"/en/actions/writing-workflows/choosing-what-your-workflow-does/setting-a-default-shell-and-working-directory","title":"Set default values for jobs","childPages":[]},{"href":"/en/actions/writing-workflows/choosing-what-your-workflow-does/using-environments-for-deployment","title":"Environments","childPages":[]},{"href":"/en/actions/writing-workflows/choosing-what-your-workflow-does/control-the-concurrency-of-workflows-and-jobs","title":"Concurrency","childPages":[]},{"href":"/en/actions/writing-workflows/choosing-what-your-workflow-does/running-variations-of-jobs-in-a-workflow","title":"Run job variations","childPages":[]},{"href":"/en/actions/writing-workflows/choosing-what-your-workflow-does/caching-dependencies-to-speed-up-workflows","title":"Cache dependencies","childPages":[]},{"href":"/en/actions/writing-workflows/choosing-what-your-workflow-does/storing-and-sharing-data-from-a-workflow","title":"Store artifacts","childPages":[]}]},{"href":"/en/actions/writing-workflows/workflow-syntax-for-github-actions","title":"Workflow syntax","childPages":[]}]},{"href":"/en/actions/managing-workflow-runs-and-deployments","title":"Manage workflows and deployments","childPages":[{"href":"/en/actions/managing-workflow-runs-and-deployments/managing-workflow-runs","title":"Manage workflow runs","childPages":[{"href":"/en/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/manually-running-a-workflow","title":"Manually run a workflow","childPages":[]},{"href":"/en/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/re-running-workflows-and-jobs","title":"Re-run workflows and jobs","childPages":[]},{"href":"/en/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/canceling-a-workflow","title":"Cancel a workflow","childPages":[]},{"href":"/en/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/disabling-and-enabling-a-workflow","title":"Disable \u0026 enable a workflow","childPages":[]},{"href":"/en/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/skipping-workflow-runs","title":"Skip workflow runs","childPages":[]},{"href":"/en/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/deleting-a-workflow-run","title":"Delete a workflow run","childPages":[]},{"href":"/en/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/downloading-workflow-artifacts","title":"Download workflow artifacts","childPages":[]},{"href":"/en/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/removing-workflow-artifacts","title":"Remove workflow artifacts","childPages":[]},{"href":"/en/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/approving-workflow-runs-from-public-forks","title":"Approve public fork runs","childPages":[]},{"href":"/en/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/approving-workflow-runs-from-private-forks","title":"Approve private fork runs","childPages":[]}]},{"href":"/en/actions/managing-workflow-runs-and-deployments/managing-deployments","title":"Manage deployments","childPages":[{"href":"/en/actions/managing-workflow-runs-and-deployments/managing-deployments/viewing-deployment-history","title":"Deployment history","childPages":[]},{"href":"/en/actions/managing-workflow-runs-and-deployments/managing-deployments/managing-environments-for-deployment","title":"Manage environments","childPages":[]},{"href":"/en/actions/managing-workflow-runs-and-deployments/managing-deployments/reviewing-deployments","title":"Review deployments","childPages":[]},{"href":"/en/actions/managing-workflow-runs-and-deployments/managing-deployments/creating-custom-deployment-protection-rules","title":"Create custom protection rules","childPages":[]},{"href":"/en/actions/managing-workflow-runs-and-deployments/managing-deployments/configuring-custom-deployment-protection-rules","title":"Configure custom protection rules","childPages":[]}]}]},{"href":"/en/actions/sharing-automations","title":"Share automations","childPages":[{"href":"/en/actions/sharing-automations/avoiding-duplication","title":"Avoid duplication","childPages":[]},{"href":"/en/actions/sharing-automations/creating-actions","title":"Create actions","childPages":[{"href":"/en/actions/sharing-automations/creating-actions/about-custom-actions","title":"About custom actions","childPages":[]},{"href":"/en/actions/sharing-automations/creating-actions/creating-a-docker-container-action","title":"Create a Docker container action","childPages":[]},{"href":"/en/actions/sharing-automations/creating-actions/creating-a-javascript-action","title":"Create a JavaScript action","childPages":[]},{"href":"/en/actions/sharing-automations/creating-actions/creating-a-composite-action","title":"Create a composite action","childPages":[]},{"href":"/en/actions/sharing-automations/creating-actions/metadata-syntax-for-github-actions","title":"Metadata syntax","childPages":[]},{"href":"/en/actions/sharing-automations/creating-actions/dockerfile-support-for-github-actions","title":"Dockerfile support","childPages":[]},{"href":"/en/actions/sharing-automations/creating-actions/setting-exit-codes-for-actions","title":"Set exit codes","childPages":[]},{"href":"/en/actions/sharing-automations/creating-actions/releasing-and-maintaining-actions","title":"Release and maintain actions","childPages":[]},{"href":"/en/actions/sharing-automations/creating-actions/publishing-actions-in-github-marketplace","title":"Publish in GitHub Marketplace","childPages":[]},{"href":"/en/actions/sharing-automations/creating-actions/developing-a-third-party-cli-action","title":"CLI setup action","childPages":[]}]},{"href":"/en/actions/sharing-automations/reusing-workflows","title":"Reuse workflows","childPages":[]},{"href":"/en/actions/sharing-automations/creating-workflow-templates-for-your-organization","title":"Create workflow templates","childPages":[]},{"href":"/en/actions/sharing-automations/sharing-actions-and-workflows-from-your-private-repository","title":"Share from your private repository","childPages":[]},{"href":"/en/actions/sharing-automations/sharing-actions-and-workflows-with-your-organization","title":"Share with your organization","childPages":[]}]},{"href":"/en/actions/monitoring-and-troubleshooting-workflows","title":"Monitor \u0026 troubleshoot","childPages":[{"href":"/en/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows","title":"Monitor","childPages":[{"href":"/en/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/about-monitoring-workflows","title":"About monitoring","childPages":[]},{"href":"/en/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/notifications-for-workflow-runs","title":"Notifications for workflow runs","childPages":[]},{"href":"/en/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/using-the-visualization-graph","title":"Visualization graph","childPages":[]},{"href":"/en/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/viewing-workflow-run-history","title":"Workflow run history","childPages":[]},{"href":"/en/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/viewing-job-execution-time","title":"View job execution time","childPages":[]},{"href":"/en/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/adding-a-workflow-status-badge","title":"Add a status badge","childPages":[]},{"href":"/en/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/using-workflow-run-logs","title":"Workflow run logs","childPages":[]}]},{"href":"/en/actions/monitoring-and-troubleshooting-workflows/troubleshooting-workflows","title":"Troubleshoot","childPages":[{"href":"/en/actions/monitoring-and-troubleshooting-workflows/troubleshooting-workflows/about-troubleshooting-workflows","title":"About troubleshooting","childPages":[]},{"href":"/en/actions/monitoring-and-troubleshooting-workflows/troubleshooting-workflows/enabling-debug-logging","title":"Enable debug logging","childPages":[]},{"href":"/en/actions/monitoring-and-troubleshooting-workflows/troubleshooting-workflows/working-with-support-for-github-actions","title":"Working with GitHub Support","childPages":[]}]}]},{"href":"/en/actions/using-github-hosted-runners","title":"GitHub-hosted runners","childPages":[{"href":"/en/actions/using-github-hosted-runners/using-github-hosted-runners","title":"About GitHub-hosted runners","childPages":[{"href":"/en/actions/using-github-hosted-runners/using-github-hosted-runners/about-github-hosted-runners","title":"About GitHub-hosted runners","childPages":[]},{"href":"/en/actions/using-github-hosted-runners/using-github-hosted-runners/monitoring-your-current-jobs","title":"Monitor current jobs","childPages":[]},{"href":"/en/actions/using-github-hosted-runners/using-github-hosted-runners/customizing-github-hosted-runners","title":"Customize runners","childPages":[]}]},{"href":"/en/actions/using-github-hosted-runners/using-larger-runners","title":"Using larger runners","childPages":[{"href":"/en/actions/using-github-hosted-runners/using-larger-runners/about-larger-runners","title":"About larger runners","childPages":[]},{"href":"/en/actions/using-github-hosted-runners/using-larger-runners/managing-larger-runners","title":"Manage larger runners","childPages":[]},{"href":"/en/actions/using-github-hosted-runners/using-larger-runners/controlling-access-to-larger-runners","title":"Control access to larger runners","childPages":[]},{"href":"/en/actions/using-github-hosted-runners/using-larger-runners/running-jobs-on-larger-runners","title":"Run jobs on larger runners","childPages":[]}]},{"href":"/en/actions/using-github-hosted-runners/connecting-to-a-private-network","title":"Private networking","childPages":[{"href":"/en/actions/using-github-hosted-runners/connecting-to-a-private-network/about-private-networking-with-github-hosted-runners","title":"About private networking","childPages":[]},{"href":"/en/actions/using-github-hosted-runners/connecting-to-a-private-network/using-an-api-gateway-with-oidc","title":"Using OIDC","childPages":[]},{"href":"/en/actions/using-github-hosted-runners/connecting-to-a-private-network/using-wireguard-to-create-a-network-overlay","title":"Using WireGuard","childPages":[]}]}]},{"href":"/en/actions/hosting-your-own-runners","title":"Self-hosted runners","childPages":[{"href":"/en/actions/hosting-your-own-runners/managing-self-hosted-runners","title":"Manage self-hosted runners","childPages":[{"href":"/en/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners","title":"About self-hosted runners","childPages":[]},{"href":"/en/actions/hosting-your-own-runners/managing-self-hosted-runners/adding-self-hosted-runners","title":"Add self-hosted runners","childPages":[]},{"href":"/en/actions/hosting-your-own-runners/managing-self-hosted-runners/autoscaling-with-self-hosted-runners","title":"Autoscale self-hosted runners","childPages":[]},{"href":"/en/actions/hosting-your-own-runners/managing-self-hosted-runners/running-scripts-before-or-after-a-job","title":"Run a script before or after a job","childPages":[]},{"href":"/en/actions/hosting-your-own-runners/managing-self-hosted-runners/customizing-the-containers-used-by-jobs","title":"Customize containers used by jobs","childPages":[]},{"href":"/en/actions/hosting-your-own-runners/managing-self-hosted-runners/configuring-the-self-hosted-runner-application-as-a-service","title":"Run the runner app as a service","childPages":[]},{"href":"/en/actions/hosting-your-own-runners/managing-self-hosted-runners/using-a-proxy-server-with-self-hosted-runners","title":"Proxy servers","childPages":[]},{"href":"/en/actions/hosting-your-own-runners/managing-self-hosted-runners/using-labels-with-self-hosted-runners","title":"Label runners","childPages":[]},{"href":"/en/actions/hosting-your-own-runners/managing-self-hosted-runners/using-self-hosted-runners-in-a-workflow","title":"Use runners in a workflow","childPages":[]},{"href":"/en/actions/hosting-your-own-runners/managing-self-hosted-runners/managing-access-to-self-hosted-runners-using-groups","title":"Manage access with runner groups","childPages":[]},{"href":"/en/actions/hosting-your-own-runners/managing-self-hosted-runners/monitoring-and-troubleshooting-self-hosted-runners","title":"Monitor \u0026 troubleshoot","childPages":[]},{"href":"/en/actions/hosting-your-own-runners/managing-self-hosted-runners/removing-self-hosted-runners","title":"Remove self-hosted runners","childPages":[]}]},{"href":"/en/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller","title":"Actions Runner Controller","childPages":[{"href":"/en/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/about-actions-runner-controller","title":"About ARC","childPages":[]},{"href":"/en/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/quickstart-for-actions-runner-controller","title":"Quickstart","childPages":[]},{"href":"/en/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/authenticating-to-the-github-api","title":"Authenticating","childPages":[]},{"href":"/en/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/deploying-runner-scale-sets-with-actions-runner-controller","title":"Deploying runner scale sets","childPages":[]},{"href":"/en/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/using-actions-runner-controller-runners-in-a-workflow","title":"Using ARC in a workflow","childPages":[]},{"href":"/en/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/troubleshooting-actions-runner-controller-errors","title":"Troubleshoot","childPages":[]},{"href":"/en/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/about-support-for-actions-runner-controller","title":"About Support for ARC","childPages":[]}]}]},{"href":"/en/actions/security-for-github-actions","title":"Security","childPages":[{"href":"/en/actions/security-for-github-actions/security-guides","title":"Security guides","childPages":[{"href":"/en/actions/security-for-github-actions/security-guides/security-hardening-for-github-actions","title":"Security hardening","childPages":[]},{"href":"/en/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions","title":"Using secrets","childPages":[]},{"href":"/en/actions/security-for-github-actions/security-guides/automatic-token-authentication","title":"Automatic token authentication","childPages":[]},{"href":"/en/actions/security-for-github-actions/security-guides/using-githubs-security-features-to-secure-your-use-of-github-actions","title":"GitHub security features","childPages":[]}]},{"href":"/en/actions/security-for-github-actions/using-artifact-attestations","title":"Artifact attestations","childPages":[{"href":"/en/actions/security-for-github-actions/using-artifact-attestations/using-artifact-attestations-to-establish-provenance-for-builds","title":"Artifact attestations","childPages":[]},{"href":"/en/actions/security-for-github-actions/using-artifact-attestations/using-artifact-attestations-and-reusable-workflows-to-achieve-slsa-v1-build-level-3","title":"Attest with reusable workflows","childPages":[]},{"href":"/en/actions/security-for-github-actions/using-artifact-attestations/enforcing-artifact-attestations-with-a-kubernetes-admission-controller","title":"Artifact attestations Kubernetes admission controller","childPages":[]},{"href":"/en/actions/security-for-github-actions/using-artifact-attestations/verifying-attestations-offline","title":"Verifying attestations offline","childPages":[]}]},{"href":"/en/actions/security-for-github-actions/security-hardening-your-deployments","title":"Security harden deployments","childPages":[{"href":"/en/actions/security-for-github-actions/security-hardening-your-deployments/about-security-hardening-with-openid-connect","title":"Security hardening with OpenID Connect","childPages":[]},{"href":"/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services","title":"OpenID Connect in AWS","childPages":[]},{"href":"/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-azure","title":"OpenID Connect in Azure","childPages":[]},{"href":"/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-google-cloud-platform","title":"OpenID Connect in Google Cloud Platform","childPages":[]},{"href":"/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-hashicorp-vault","title":"OpenID Connect in HashiCorp Vault","childPages":[]},{"href":"/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-jfrog","title":"OpenID Connect in JFrog","childPages":[]},{"href":"/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-pypi","title":"OpenID Connect in PyPI","childPages":[]},{"href":"/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-cloud-providers","title":"OpenID Connect in cloud providers","childPages":[]},{"href":"/en/actions/security-for-github-actions/security-hardening-your-deployments/using-openid-connect-with-reusable-workflows","title":"OpenID Connect with reusable workflows","childPages":[]}]}]},{"href":"/en/actions/use-cases-and-examples","title":"Use cases and examples","childPages":[{"href":"/en/actions/use-cases-and-examples/creating-an-example-workflow","title":"Create an example workflow","childPages":[]},{"href":"/en/actions/use-cases-and-examples/building-and-testing","title":"Build and test","childPages":[{"href":"/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-go","title":"Build \u0026 test Go","childPages":[]},{"href":"/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-java-with-ant","title":"Build \u0026 test Java \u0026 Ant","childPages":[]},{"href":"/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-java-with-gradle","title":"Build \u0026 test Java \u0026 Gradle","childPages":[]},{"href":"/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-java-with-maven","title":"Build \u0026 test Java with Maven","childPages":[]},{"href":"/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-net","title":"Build \u0026 test .NET","childPages":[]},{"href":"/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-nodejs","title":"Build \u0026 test Node.js","childPages":[]},{"href":"/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-powershell","title":"Build \u0026 test PowerShell","childPages":[]},{"href":"/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-python","title":"Build \u0026 test Python","childPages":[]},{"href":"/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-ruby","title":"Build \u0026 test Ruby","childPages":[]},{"href":"/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-swift","title":"Build \u0026 test Swift","childPages":[]},{"href":"/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-xamarin-applications","title":"Build \u0026 test Xamarin apps","childPages":[]}]},{"href":"/en/actions/use-cases-and-examples/deploying","title":"Deployment","childPages":[{"href":"/en/actions/use-cases-and-examples/deploying/deploying-with-github-actions","title":"Deploy with GitHub Actions","childPages":[]},{"href":"/en/actions/use-cases-and-examples/deploying/deploying-nodejs-to-azure-app-service","title":"Deploying Node.js to Azure App Service","childPages":[]},{"href":"/en/actions/use-cases-and-examples/deploying/deploying-python-to-azure-app-service","title":"Deploying Python to Azure App Service","childPages":[]},{"href":"/en/actions/use-cases-and-examples/deploying/deploying-java-to-azure-app-service","title":"Deploying Java to Azure App Service","childPages":[]},{"href":"/en/actions/use-cases-and-examples/deploying/deploying-net-to-azure-app-service","title":"Deploying .NET to Azure App Service","childPages":[]},{"href":"/en/actions/use-cases-and-examples/deploying/deploying-php-to-azure-app-service","title":"Deploying PHP to Azure App Service","childPages":[]},{"href":"/en/actions/use-cases-and-examples/deploying/deploying-docker-to-azure-app-service","title":"Deploying Docker to Azure App Service","childPages":[]},{"href":"/en/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app","title":"Deploying to Azure Static Web App","childPages":[]},{"href":"/en/actions/use-cases-and-examples/deploying/deploying-to-azure-kubernetes-service","title":"Deploying to Azure Kubernetes Service","childPages":[]},{"href":"/en/actions/use-cases-and-examples/deploying/deploying-to-amazon-elastic-container-service","title":"Deploy to Amazon ECS","childPages":[]},{"href":"/en/actions/use-cases-and-examples/deploying/deploying-to-google-kubernetes-engine","title":"Deploy to Google Kubernetes Engine","childPages":[]},{"href":"/en/actions/use-cases-and-examples/deploying/installing-an-apple-certificate-on-macos-runners-for-xcode-development","title":"Sign Xcode applications","childPages":[]}]},{"href":"/en/actions/use-cases-and-examples/publishing-packages","title":"Publish packages","childPages":[{"href":"/en/actions/use-cases-and-examples/publishing-packages/about-packaging-with-github-actions","title":"Packaging with GitHub Actions","childPages":[]},{"href":"/en/actions/use-cases-and-examples/publishing-packages/publishing-docker-images","title":"Publish Docker images","childPages":[]},{"href":"/en/actions/use-cases-and-examples/publishing-packages/publishing-java-packages-with-gradle","title":"Publish Java packages with Gradle","childPages":[]},{"href":"/en/actions/use-cases-and-examples/publishing-packages/publishing-java-packages-with-maven","title":"Publish Java packages with Maven","childPages":[]},{"href":"/en/actions/use-cases-and-examples/publishing-packages/publishing-nodejs-packages","title":"Publish Node.js packages","childPages":[]}]},{"href":"/en/actions/use-cases-and-examples/project-management","title":"Project management","childPages":[{"href":"/en/actions/use-cases-and-examples/project-management/using-github-actions-for-project-management","title":"Actions for project management","childPages":[]},{"href":"/en/actions/use-cases-and-examples/project-management/adding-labels-to-issues","title":"Add labels to issues","childPages":[]},{"href":"/en/actions/use-cases-and-examples/project-management/closing-inactive-issues","title":"Close inactive issues","childPages":[]},{"href":"/en/actions/use-cases-and-examples/project-management/commenting-on-an-issue-when-a-label-is-added","title":"Add label to comment on issue","childPages":[]},{"href":"/en/actions/use-cases-and-examples/project-management/scheduling-issue-creation","title":"Schedule issue creation","childPages":[]}]},{"href":"/en/actions/use-cases-and-examples/using-containerized-services","title":"Containerized services","childPages":[{"href":"/en/actions/use-cases-and-examples/using-containerized-services/about-service-containers","title":"About service containers","childPages":[]},{"href":"/en/actions/use-cases-and-examples/using-containerized-services/creating-postgresql-service-containers","title":"Create PostgreSQL service containers","childPages":[]},{"href":"/en/actions/use-cases-and-examples/using-containerized-services/creating-redis-service-containers","title":"Create Redis service containers","childPages":[]}]}]},{"href":"/en/actions/migrating-to-github-actions","title":"Migrate to GitHub Actions","childPages":[{"href":"/en/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations","title":"Automated migrations","childPages":[{"href":"/en/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/automating-migration-with-github-actions-importer","title":"Automate migration with GitHub Actions Importer","childPages":[]},{"href":"/en/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/extending-github-actions-importer-with-custom-transformers","title":"Extending GitHub Actions Importer","childPages":[]},{"href":"/en/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/supplemental-arguments-and-settings","title":"Supplemental arguments and settings","childPages":[]},{"href":"/en/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-azure-devops-with-github-actions-importer","title":"Azure DevOps migration","childPages":[]},{"href":"/en/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-bamboo-with-github-actions-importer","title":"Bamboo migration","childPages":[]},{"href":"/en/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-bitbucket-pipelines-with-github-actions-importer","title":"Bitbucket Pipelines migration","childPages":[]},{"href":"/en/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-circleci-with-github-actions-importer","title":"CircleCI migration","childPages":[]},{"href":"/en/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-gitlab-with-github-actions-importer","title":"GitLab migration","childPages":[]},{"href":"/en/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-jenkins-with-github-actions-importer","title":"Jenkins migration","childPages":[]},{"href":"/en/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-travis-ci-with-github-actions-importer","title":"Travis CI migration","childPages":[]}]},{"href":"/en/actions/migrating-to-github-actions/manually-migrating-to-github-actions","title":"Manual migrations","childPages":[{"href":"/en/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-azure-pipelines-to-github-actions","title":"Migrate from Azure Pipelines","childPages":[]},{"href":"/en/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-circleci-to-github-actions","title":"Migrate from CircleCI","childPages":[]},{"href":"/en/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-gitlab-cicd-to-github-actions","title":"Migrate from GitLab CI/CD","childPages":[]},{"href":"/en/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-jenkins-to-github-actions","title":"Migrate from Jenkins","childPages":[]},{"href":"/en/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-travis-ci-to-github-actions","title":"Migrate from Travis CI","childPages":[]}]}]},{"href":"/en/actions/administering-github-actions","title":"Administer GitHub Actions","childPages":[{"href":"/en/actions/administering-github-actions/usage-limits-billing-and-administration","title":"Workflow billing \u0026 limits","childPages":[]},{"href":"/en/actions/administering-github-actions/viewing-github-actions-metrics","title":"GitHub Actions metrics","childPages":[]},{"href":"/en/actions/administering-github-actions/sharing-workflows-secrets-and-runners-with-your-organization","title":"Share workflows with your organization","childPages":[]}]},{"href":"/en/actions/guides","title":"Guides for GitHub Actions","childPages":[]}]},"featureFlags":{},"nonEnterpriseDefaultVersion":"free-pro-team@latest","status":200,"fullUrl":"https://docs.github.com/en/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-gitlab-cicd-to-github-actions","currentLayoutName":"default","relativePath":"actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-gitlab-cicd-to-github-actions.md"},"articleContext":{"title":"Migrating from GitLab CI/CD to GitHub Actions","intro":"\u003cp\u003eGitHub Actions and GitLab CI/CD share several configuration similarities, which makes migrating to GitHub Actions relatively straightforward.\u003c/p\u003e","effectiveDate":"","renderedPage":"\u003ch2 id=\"introduction\" tabindex=\"-1\"\u003e\u003ca class=\"heading-link\" href=\"#introduction\"\u003eIntroduction\u003cspan class=\"heading-link-symbol\" aria-hidden=\"true\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eGitLab CI/CD and GitHub Actions both allow you to create workflows that automatically build, test, publish, release, and deploy code. GitLab CI/CD and GitHub Actions share some similarities in workflow configuration:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWorkflow configuration files are written in YAML and are stored in the code's repository.\u003c/li\u003e\n\u003cli\u003eWorkflows include one or more jobs.\u003c/li\u003e\n\u003cli\u003eJobs include one or more steps or individual commands.\u003c/li\u003e\n\u003cli\u003eJobs can run on either managed or self-hosted machines.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThere are a few differences, and this guide will show you the important differences so that you can migrate your workflow to GitHub Actions.\u003c/p\u003e\n\u003ch2 id=\"jobs\" tabindex=\"-1\"\u003e\u003ca class=\"heading-link\" href=\"#jobs\"\u003eJobs\u003cspan class=\"heading-link-symbol\" aria-hidden=\"true\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eJobs in GitLab CI/CD are very similar to jobs in GitHub Actions. In both systems, jobs have the following characteristics:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eJobs contain a series of steps or scripts that run sequentially.\u003c/li\u003e\n\u003cli\u003eJobs can run on separate machines or in separate containers.\u003c/li\u003e\n\u003cli\u003eJobs run in parallel by default, but can be configured to run sequentially.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eYou can run a script or a shell command in a job. In GitLab CI/CD, script steps are specified using the \u003ccode\u003escript\u003c/code\u003e key. In GitHub Actions, all scripts are specified using the \u003ccode\u003erun\u003c/code\u003e key.\u003c/p\u003e\n\u003cp\u003eBelow is an example of the syntax for each system.\u003c/p\u003e\n\u003ch3 id=\"gitlab-cicd-syntax-for-jobs\" tabindex=\"-1\"\u003e\u003ca class=\"heading-link\" href=\"#gitlab-cicd-syntax-for-jobs\"\u003eGitLab CI/CD syntax for jobs\u003cspan class=\"heading-link-symbol\" aria-hidden=\"true\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"hljs language-yaml\"\u003e\u003cspan class=\"hljs-attr\"\u003ejob1:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003evariables:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eGIT_CHECKOUT:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e\"true\"\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003escript:\u003c/span\u003e\n \u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eecho\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e\"Run your script here\"\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"github-actions-syntax-for-jobs\" tabindex=\"-1\"\u003e\u003ca class=\"heading-link\" href=\"#github-actions-syntax-for-jobs\"\u003eGitHub Actions syntax for jobs\u003cspan class=\"heading-link-symbol\" aria-hidden=\"true\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"hljs language-yaml\"\u003e\u003cspan class=\"hljs-attr\"\u003ejobs:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003ejob1:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003esteps:\u003c/span\u003e\n \u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-attr\"\u003euses:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eactions/checkout@v4\u003c/span\u003e\n \u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-attr\"\u003erun:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eecho\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e\"Run your script here\"\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2 id=\"runners\" tabindex=\"-1\"\u003e\u003ca class=\"heading-link\" href=\"#runners\"\u003eRunners\u003cspan class=\"heading-link-symbol\" aria-hidden=\"true\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eRunners are machines on which the jobs run. Both GitLab CI/CD and GitHub Actions offer managed and self-hosted variants of runners. In GitLab CI/CD, \u003ccode\u003etags\u003c/code\u003e are used to run jobs on different platforms, while in GitHub Actions it is done with the \u003ccode\u003eruns-on\u003c/code\u003e key.\u003c/p\u003e\n\u003cp\u003eBelow is an example of the syntax for each system.\u003c/p\u003e\n\u003ch3 id=\"gitlab-cicd-syntax-for-runners\" tabindex=\"-1\"\u003e\u003ca class=\"heading-link\" href=\"#gitlab-cicd-syntax-for-runners\"\u003eGitLab CI/CD syntax for runners\u003cspan class=\"heading-link-symbol\" aria-hidden=\"true\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"hljs language-yaml\"\u003e\u003cspan class=\"hljs-attr\"\u003ewindows_job:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003etags:\u003c/span\u003e\n \u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003ewindows\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003escript:\u003c/span\u003e\n \u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eecho\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eHello,\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e%USERNAME%!\u003c/span\u003e\n\n\u003cspan class=\"hljs-attr\"\u003elinux_job:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003etags:\u003c/span\u003e\n \u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003elinux\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003escript:\u003c/span\u003e\n \u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eecho\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e\"Hello, $USER!\"\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"github-actions-syntax-for-runners\" tabindex=\"-1\"\u003e\u003ca class=\"heading-link\" href=\"#github-actions-syntax-for-runners\"\u003eGitHub Actions syntax for runners\u003cspan class=\"heading-link-symbol\" aria-hidden=\"true\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"hljs language-yaml\"\u003e\u003cspan class=\"hljs-attr\"\u003ewindows_job:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eruns-on:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003ewindows-latest\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003esteps:\u003c/span\u003e\n \u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-attr\"\u003erun:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eecho\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eHello,\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e%USERNAME%!\u003c/span\u003e\n\n\u003cspan class=\"hljs-attr\"\u003elinux_job:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eruns-on:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eubuntu-latest\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003esteps:\u003c/span\u003e\n \u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-attr\"\u003erun:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eecho\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e\"Hello, $USER!\"\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eFor more information, see \"\u003ca href=\"/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on\" _originalHref=\"/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on\"\u003eWorkflow syntax for GitHub Actions\u003c/a\u003e.\"\u003c/p\u003e\n\u003ch2 id=\"docker-images\" tabindex=\"-1\"\u003e\u003ca class=\"heading-link\" href=\"#docker-images\"\u003eDocker images\u003cspan class=\"heading-link-symbol\" aria-hidden=\"true\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eBoth GitLab CI/CD and GitHub Actions support running jobs in a Docker image. In GitLab CI/CD, Docker images are defined with an \u003ccode\u003eimage\u003c/code\u003e key, while in GitHub Actions it is done with the \u003ccode\u003econtainer\u003c/code\u003e key.\u003c/p\u003e\n\u003cp\u003eBelow is an example of the syntax for each system.\u003c/p\u003e\n\u003ch3 id=\"gitlab-cicd-syntax-for-docker-images\" tabindex=\"-1\"\u003e\u003ca class=\"heading-link\" href=\"#gitlab-cicd-syntax-for-docker-images\"\u003eGitLab CI/CD syntax for Docker images\u003cspan class=\"heading-link-symbol\" aria-hidden=\"true\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"hljs language-yaml\"\u003e\u003cspan class=\"hljs-attr\"\u003emy_job:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eimage:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003enode:20-bookworm-slim\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"github-actions-syntax-for-docker-images\" tabindex=\"-1\"\u003e\u003ca class=\"heading-link\" href=\"#github-actions-syntax-for-docker-images\"\u003eGitHub Actions syntax for Docker images\u003cspan class=\"heading-link-symbol\" aria-hidden=\"true\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"hljs language-yaml\"\u003e\u003cspan class=\"hljs-attr\"\u003ejobs:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003emy_job:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003econtainer:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003enode:20-bookworm-slim\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eFor more information, see \"\u003ca href=\"/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idcontainer\" _originalHref=\"/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idcontainer\"\u003eWorkflow syntax for GitHub Actions\u003c/a\u003e.\"\u003c/p\u003e\n\u003ch2 id=\"condition-and-expression-syntax\" tabindex=\"-1\"\u003e\u003ca class=\"heading-link\" href=\"#condition-and-expression-syntax\"\u003eCondition and expression syntax\u003cspan class=\"heading-link-symbol\" aria-hidden=\"true\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eGitLab CI/CD uses \u003ccode\u003erules\u003c/code\u003e to determine if a job will run for a specific condition. GitHub Actions uses the \u003ccode\u003eif\u003c/code\u003e keyword to prevent a job from running unless a condition is met.\u003c/p\u003e\n\u003cp\u003eBelow is an example of the syntax for each system.\u003c/p\u003e\n\u003ch3 id=\"gitlab-cicd-syntax-for-conditions-and-expressions\" tabindex=\"-1\"\u003e\u003ca class=\"heading-link\" href=\"#gitlab-cicd-syntax-for-conditions-and-expressions\"\u003eGitLab CI/CD syntax for conditions and expressions\u003cspan class=\"heading-link-symbol\" aria-hidden=\"true\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"hljs language-yaml\"\u003e\u003cspan class=\"hljs-attr\"\u003edeploy_prod:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003estage:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003edeploy\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003escript:\u003c/span\u003e\n \u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eecho\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e\"Deploy to production server\"\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003erules:\u003c/span\u003e\n \u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-attr\"\u003eif:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e'$CI_COMMIT_BRANCH == \"master\"'\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"github-actions-syntax-for-conditions-and-expressions\" tabindex=\"-1\"\u003e\u003ca class=\"heading-link\" href=\"#github-actions-syntax-for-conditions-and-expressions\"\u003eGitHub Actions syntax for conditions and expressions\u003cspan class=\"heading-link-symbol\" aria-hidden=\"true\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"hljs language-yaml\"\u003e\u003cspan class=\"hljs-attr\"\u003ejobs:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003edeploy_prod:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eif:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003econtains(\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003egithub.ref,\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e'master'\u003c/span\u003e\u003cspan class=\"hljs-string\"\u003e)\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eruns-on:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eubuntu-latest\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003esteps:\u003c/span\u003e\n \u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-attr\"\u003erun:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eecho\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e\"Deploy to production server\"\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eFor more information, see \"\u003ca href=\"/en/actions/learn-github-actions/expressions\" _originalHref=\"/actions/learn-github-actions/expressions\"\u003eEvaluate expressions in workflows and actions\u003c/a\u003e.\"\u003c/p\u003e\n\u003ch2 id=\"dependencies-between-jobs\" tabindex=\"-1\"\u003e\u003ca class=\"heading-link\" href=\"#dependencies-between-jobs\"\u003eDependencies between Jobs\u003cspan class=\"heading-link-symbol\" aria-hidden=\"true\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eBoth GitLab CI/CD and GitHub Actions allow you to set dependencies for a job. In both systems, jobs run in parallel by default, but job dependencies in GitHub Actions can be specified explicitly with the \u003ccode\u003eneeds\u003c/code\u003e key. GitLab CI/CD also has a concept of \u003ccode\u003estages\u003c/code\u003e, where jobs in a stage run concurrently, but the next stage will start when all the jobs in the previous stage have completed. You can recreate this scenario in GitHub Actions with the \u003ccode\u003eneeds\u003c/code\u003e key.\u003c/p\u003e\n\u003cp\u003eBelow is an example of the syntax for each system. The workflows start with two jobs named \u003ccode\u003ebuild_a\u003c/code\u003e and \u003ccode\u003ebuild_b\u003c/code\u003e running in parallel, and when those jobs complete, another job called \u003ccode\u003etest_ab\u003c/code\u003e will run. Finally, when \u003ccode\u003etest_ab\u003c/code\u003e completes, the \u003ccode\u003edeploy_ab\u003c/code\u003e job will run.\u003c/p\u003e\n\u003ch3 id=\"gitlab-cicd-syntax-for-dependencies-between-jobs\" tabindex=\"-1\"\u003e\u003ca class=\"heading-link\" href=\"#gitlab-cicd-syntax-for-dependencies-between-jobs\"\u003eGitLab CI/CD syntax for dependencies between jobs\u003cspan class=\"heading-link-symbol\" aria-hidden=\"true\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"hljs language-yaml\"\u003e\u003cspan class=\"hljs-attr\"\u003estages:\u003c/span\u003e\n \u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003ebuild\u003c/span\u003e\n \u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003etest\u003c/span\u003e\n \u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003edeploy\u003c/span\u003e\n\n\u003cspan class=\"hljs-attr\"\u003ebuild_a:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003estage:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003ebuild\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003escript:\u003c/span\u003e\n \u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eecho\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e\"This job will run first.\"\u003c/span\u003e\n\n\u003cspan class=\"hljs-attr\"\u003ebuild_b:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003estage:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003ebuild\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003escript:\u003c/span\u003e\n \u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eecho\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e\"This job will run first, in parallel with build_a.\"\u003c/span\u003e\n\n\u003cspan class=\"hljs-attr\"\u003etest_ab:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003estage:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003etest\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003escript:\u003c/span\u003e\n \u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eecho\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e\"This job will run after build_a and build_b have finished.\"\u003c/span\u003e\n\n\u003cspan class=\"hljs-attr\"\u003edeploy_ab:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003estage:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003edeploy\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003escript:\u003c/span\u003e\n \u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eecho\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e\"This job will run after test_ab is complete\"\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"github-actions-syntax-for-dependencies-between-jobs\" tabindex=\"-1\"\u003e\u003ca class=\"heading-link\" href=\"#github-actions-syntax-for-dependencies-between-jobs\"\u003eGitHub Actions syntax for dependencies between jobs\u003cspan class=\"heading-link-symbol\" aria-hidden=\"true\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"hljs language-yaml\"\u003e\u003cspan class=\"hljs-attr\"\u003ejobs:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003ebuild_a:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eruns-on:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eubuntu-latest\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003esteps:\u003c/span\u003e\n \u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-attr\"\u003erun:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eecho\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e\"This job will be run first.\"\u003c/span\u003e\n\n \u003cspan class=\"hljs-attr\"\u003ebuild_b:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eruns-on:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eubuntu-latest\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003esteps:\u003c/span\u003e\n \u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-attr\"\u003erun:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eecho\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e\"This job will be run first, in parallel with build_a\"\u003c/span\u003e\n\n \u003cspan class=\"hljs-attr\"\u003etest_ab:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eruns-on:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eubuntu-latest\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eneeds:\u003c/span\u003e [\u003cspan class=\"hljs-string\"\u003ebuild_a\u003c/span\u003e,\u003cspan class=\"hljs-string\"\u003ebuild_b\u003c/span\u003e]\n \u003cspan class=\"hljs-attr\"\u003esteps:\u003c/span\u003e\n \u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-attr\"\u003erun:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eecho\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e\"This job will run after build_a and build_b have finished\"\u003c/span\u003e\n\n \u003cspan class=\"hljs-attr\"\u003edeploy_ab:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eruns-on:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eubuntu-latest\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eneeds:\u003c/span\u003e [\u003cspan class=\"hljs-string\"\u003etest_ab\u003c/span\u003e]\n \u003cspan class=\"hljs-attr\"\u003esteps:\u003c/span\u003e\n \u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-attr\"\u003erun:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eecho\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e\"This job will run after test_ab is complete\"\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eFor more information, see \"\u003ca href=\"/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idneeds\" _originalHref=\"/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idneeds\"\u003eWorkflow syntax for GitHub Actions\u003c/a\u003e.\"\u003c/p\u003e\n\u003ch2 id=\"scheduling-workflows\" tabindex=\"-1\"\u003e\u003ca class=\"heading-link\" href=\"#scheduling-workflows\"\u003eScheduling workflows\u003cspan class=\"heading-link-symbol\" aria-hidden=\"true\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eBoth GitLab CI/CD and GitHub Actions allow you to run workflows at a specific interval. In GitLab CI/CD, pipeline schedules are configured with the UI, while in GitHub Actions you can trigger a workflow on a scheduled interval with the \"on\" key.\u003c/p\u003e\n\u003cp\u003eFor more information, see \"\u003ca href=\"/en/actions/using-workflows/events-that-trigger-workflows#scheduled-events\" _originalHref=\"/actions/using-workflows/events-that-trigger-workflows#scheduled-events\"\u003eEvents that trigger workflows\u003c/a\u003e.\"\u003c/p\u003e\n\u003ch2 id=\"variables-and-secrets\" tabindex=\"-1\"\u003e\u003ca class=\"heading-link\" href=\"#variables-and-secrets\"\u003eVariables and secrets\u003cspan class=\"heading-link-symbol\" aria-hidden=\"true\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eGitLab CI/CD and GitHub Actions support setting variables in the pipeline or workflow configuration file, and creating secrets using the GitLab or GitHub UI.\u003c/p\u003e\n\u003cp\u003eFor more information, see \"\u003ca href=\"/en/actions/learn-github-actions/variables\" _originalHref=\"/actions/learn-github-actions/variables\"\u003eStore information in variables\u003c/a\u003e\" and \"\u003ca href=\"/en/actions/security-guides/using-secrets-in-github-actions\" _originalHref=\"/actions/security-guides/using-secrets-in-github-actions\"\u003eUsing secrets in GitHub Actions\u003c/a\u003e.\"\u003c/p\u003e\n\u003ch2 id=\"caching\" tabindex=\"-1\"\u003e\u003ca class=\"heading-link\" href=\"#caching\"\u003eCaching\u003cspan class=\"heading-link-symbol\" aria-hidden=\"true\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eGitLab CI/CD and GitHub Actions provide a method in the configuration file to manually cache workflow files.\u003c/p\u003e\n\u003cp\u003eBelow is an example of the syntax for each system.\u003c/p\u003e\n\u003ch3 id=\"gitlab-cicd-syntax-for-caching\" tabindex=\"-1\"\u003e\u003ca class=\"heading-link\" href=\"#gitlab-cicd-syntax-for-caching\"\u003eGitLab CI/CD syntax for caching\u003cspan class=\"heading-link-symbol\" aria-hidden=\"true\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"hljs language-yaml\"\u003e\u003cspan class=\"hljs-attr\"\u003eimage:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003enode:latest\u003c/span\u003e\n\n\u003cspan class=\"hljs-attr\"\u003ecache:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003ekey:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e$CI_COMMIT_REF_SLUG\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003epaths:\u003c/span\u003e\n \u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e.npm/\u003c/span\u003e\n\n\u003cspan class=\"hljs-attr\"\u003ebefore_script:\u003c/span\u003e\n \u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003enpm\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eci\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e--cache\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e.npm\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e--prefer-offline\u003c/span\u003e\n\n\u003cspan class=\"hljs-attr\"\u003etest_async:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003escript:\u003c/span\u003e\n \u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003enode\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e./specs/start.js\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e./specs/async.spec.js\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"github-actions-syntax-for-caching\" tabindex=\"-1\"\u003e\u003ca class=\"heading-link\" href=\"#github-actions-syntax-for-caching\"\u003eGitHub Actions syntax for caching\u003cspan class=\"heading-link-symbol\" aria-hidden=\"true\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"hljs language-yaml\"\u003e\u003cspan class=\"hljs-attr\"\u003ejobs:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003etest_async:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eruns-on:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eubuntu-latest\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003esteps:\u003c/span\u003e\n \u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-attr\"\u003ename:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eCache\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003enode\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003emodules\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003euses:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eactions/cache@v3\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003ewith:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003epath:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e~/.npm\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003ekey:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003ev1-npm-deps-${{\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003ehashFiles('**/package-lock.json')\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e}}\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003erestore-keys:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003ev1-npm-deps-\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2 id=\"artifacts\" tabindex=\"-1\"\u003e\u003ca class=\"heading-link\" href=\"#artifacts\"\u003eArtifacts\u003cspan class=\"heading-link-symbol\" aria-hidden=\"true\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eBoth GitLab CI/CD and GitHub Actions can upload files and directories created by a job as artifacts. In GitHub Actions, artifacts can be used to persist data across multiple jobs.\u003c/p\u003e\n\u003cp\u003eBelow is an example of the syntax for each system.\u003c/p\u003e\n\u003ch3 id=\"gitlab-cicd-syntax-for-artifacts\" tabindex=\"-1\"\u003e\u003ca class=\"heading-link\" href=\"#gitlab-cicd-syntax-for-artifacts\"\u003eGitLab CI/CD syntax for artifacts\u003cspan class=\"heading-link-symbol\" aria-hidden=\"true\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"hljs language-yaml\"\u003e\u003cspan class=\"hljs-attr\"\u003escript:\u003c/span\u003e\n\u003cspan class=\"hljs-attr\"\u003eartifacts:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003epaths:\u003c/span\u003e\n \u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003emath-homework.txt\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"github-actions-syntax-for-artifacts\" tabindex=\"-1\"\u003e\u003ca class=\"heading-link\" href=\"#github-actions-syntax-for-artifacts\"\u003eGitHub Actions syntax for artifacts\u003cspan class=\"heading-link-symbol\" aria-hidden=\"true\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"hljs language-yaml\"\u003e\u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-attr\"\u003ename:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eUpload\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003emath\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eresult\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003efor\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003ejob\u003c/span\u003e \u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003euses:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eactions/upload-artifact@v4\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003ewith:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003ename:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003ehomework\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003epath:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003emath-homework.txt\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eFor more information, see \"\u003ca href=\"/en/actions/using-workflows/storing-workflow-data-as-artifacts\" _originalHref=\"/actions/using-workflows/storing-workflow-data-as-artifacts\"\u003eStoring and sharing data from a workflow\u003c/a\u003e.\"\u003c/p\u003e\n\u003ch2 id=\"databases-and-service-containers\" tabindex=\"-1\"\u003e\u003ca class=\"heading-link\" href=\"#databases-and-service-containers\"\u003eDatabases and service containers\u003cspan class=\"heading-link-symbol\" aria-hidden=\"true\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eBoth systems enable you to include additional containers for databases, caching, or other dependencies.\u003c/p\u003e\n\u003cp\u003eIn GitLab CI/CD, a container for the job is specified with the \u003ccode\u003eimage\u003c/code\u003e key, while GitHub Actions uses the \u003ccode\u003econtainer\u003c/code\u003e key. In both systems, additional service containers are specified with the \u003ccode\u003eservices\u003c/code\u003e key.\u003c/p\u003e\n\u003cp\u003eBelow is an example of the syntax for each system.\u003c/p\u003e\n\u003ch3 id=\"gitlab-cicd-syntax-for-databases-and-service-containers\" tabindex=\"-1\"\u003e\u003ca class=\"heading-link\" href=\"#gitlab-cicd-syntax-for-databases-and-service-containers\"\u003eGitLab CI/CD syntax for databases and service containers\u003cspan class=\"heading-link-symbol\" aria-hidden=\"true\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"hljs language-yaml\"\u003e\u003cspan class=\"hljs-attr\"\u003econtainer-job:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003evariables:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003ePOSTGRES_PASSWORD:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003epostgres\u003c/span\u003e\n \u003cspan class=\"hljs-comment\"\u003e# The hostname used to communicate with the\u003c/span\u003e\n \u003cspan class=\"hljs-comment\"\u003e# PostgreSQL service container\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003ePOSTGRES_HOST:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003epostgres\u003c/span\u003e\n \u003cspan class=\"hljs-comment\"\u003e# The default PostgreSQL port\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003ePOSTGRES_PORT:\u003c/span\u003e \u003cspan class=\"hljs-number\"\u003e5432\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eimage:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003enode:20-bookworm-slim\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eservices:\u003c/span\u003e\n \u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003epostgres\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003escript:\u003c/span\u003e\n \u003cspan class=\"hljs-comment\"\u003e# Performs a clean installation of all dependencies\u003c/span\u003e\n \u003cspan class=\"hljs-comment\"\u003e# in the `package.json` file\u003c/span\u003e\n \u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003enpm\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eci\u003c/span\u003e\n \u003cspan class=\"hljs-comment\"\u003e# Runs a script that creates a PostgreSQL client,\u003c/span\u003e\n \u003cspan class=\"hljs-comment\"\u003e# populates the client with data, and retrieves data\u003c/span\u003e\n \u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003enode\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eclient.js\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003etags:\u003c/span\u003e\n \u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003edocker\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"github-actions-syntax-for-databases-and-service-containers\" tabindex=\"-1\"\u003e\u003ca class=\"heading-link\" href=\"#github-actions-syntax-for-databases-and-service-containers\"\u003eGitHub Actions syntax for databases and service containers\u003cspan class=\"heading-link-symbol\" aria-hidden=\"true\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"hljs language-yaml\"\u003e\u003cspan class=\"hljs-attr\"\u003ejobs:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003econtainer-job:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eruns-on:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eubuntu-latest\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003econtainer:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003enode:20-bookworm-slim\u003c/span\u003e\n\n \u003cspan class=\"hljs-attr\"\u003eservices:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003epostgres:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eimage:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003epostgres\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eenv:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003ePOSTGRES_PASSWORD:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003epostgres\u003c/span\u003e\n\n \u003cspan class=\"hljs-attr\"\u003esteps:\u003c/span\u003e\n \u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-attr\"\u003ename:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eCheck\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eout\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003erepository\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003ecode\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003euses:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eactions/checkout@v4\u003c/span\u003e\n\n \u003cspan class=\"hljs-comment\"\u003e# Performs a clean installation of all dependencies\u003c/span\u003e\n \u003cspan class=\"hljs-comment\"\u003e# in the `package.json` file\u003c/span\u003e\n \u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-attr\"\u003ename:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eInstall\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003edependencies\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003erun:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003enpm\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eci\u003c/span\u003e\n\n \u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-attr\"\u003ename:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eConnect\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eto\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003ePostgreSQL\u003c/span\u003e\n \u003cspan class=\"hljs-comment\"\u003e# Runs a script that creates a PostgreSQL client,\u003c/span\u003e\n \u003cspan class=\"hljs-comment\"\u003e# populates the client with data, and retrieves data\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003erun:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003enode\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eclient.js\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eenv:\u003c/span\u003e\n \u003cspan class=\"hljs-comment\"\u003e# The hostname used to communicate with the\u003c/span\u003e\n \u003cspan class=\"hljs-comment\"\u003e# PostgreSQL service container\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003ePOSTGRES_HOST:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003epostgres\u003c/span\u003e\n \u003cspan class=\"hljs-comment\"\u003e# The default PostgreSQL port\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003ePOSTGRES_PORT:\u003c/span\u003e \u003cspan class=\"hljs-number\"\u003e5432\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eFor more information, see \"\u003ca href=\"/en/actions/using-containerized-services/about-service-containers\" _originalHref=\"/actions/using-containerized-services/about-service-containers\"\u003eAbout service containers\u003c/a\u003e.\"\u003c/p\u003e","miniTocItems":[{"contents":{"href":"#introduction","title":"Introduction"}},{"contents":{"href":"#jobs","title":"Jobs"}},{"contents":{"href":"#runners","title":"Runners"}},{"contents":{"href":"#docker-images","title":"Docker images"}},{"contents":{"href":"#condition-and-expression-syntax","title":"Condition and expression syntax"}},{"contents":{"href":"#dependencies-between-jobs","title":"Dependencies between Jobs"}},{"contents":{"href":"#scheduling-workflows","title":"Scheduling workflows"}},{"contents":{"href":"#variables-and-secrets","title":"Variables and secrets"}},{"contents":{"href":"#caching","title":"Caching"}},{"contents":{"href":"#artifacts","title":"Artifacts"}},{"contents":{"href":"#databases-and-service-containers","title":"Databases and service containers"}}],"permissions":"","includesPlatformSpecificContent":false,"includesToolSpecificContent":false,"defaultPlatform":"","defaultTool":"","product":"","productVideoUrl":"","currentLearningTrack":null,"detectedPlatforms":[],"detectedTools":[],"allTools":{"agents":"Agents","api":"API","azure_data_studio":"Azure Data Studio","bash":"Bash","cli":"GitHub CLI","codespaces":"Codespaces","curl":"curl","desktop":"Desktop","importer_cli":"GitHub Enterprise Importer CLI","javascript":"JavaScript","jetbrains":"JetBrains IDEs","jetbrains_beta":"JetBrains IDEs (Beta)","skillsets":"Skillsets","vimneovim":"Vim/Neovim","powershell":"PowerShell","visualstudio":"Visual Studio","vscode":"Visual Studio Code","webui":"Web browser","windowsterminal":"Windows Terminal","xcode":"Xcode"},"supportPortalVaIframeProps":{"supportPortalUrl":"https://support.github.com","vaFlowUrlParameter":""},"currentLayout":"default"}},"languagesContext":{"languages":{"en":{"name":"English","code":"en"},"zh":{"name":"Simplified Chinese","code":"zh","hreflang":"zh-Hans","nativeName":"简体中文"},"es":{"name":"Spanish","code":"es","nativeName":"Español"},"pt":{"name":"Portuguese","code":"pt","nativeName":"Português do Brasil"},"ru":{"name":"Russian","code":"ru","nativeName":"Русский"},"ja":{"name":"Japanese","code":"ja","nativeName":"日本語"},"fr":{"name":"French","code":"fr","nativeName":"Français"},"de":{"name":"German","code":"de","nativeName":"Deutsch"},"ko":{"name":"Korean","code":"ko","nativeName":"한국어"}}},"__N_SSP":true},"page":"/[versionId]/[productId]/[...restPage]","query":{"versionId":"free-pro-team@latest","productId":"actions","restPage":["migrating-to-github-actions","manually-migrating-to-github-actions","migrating-from-gitlab-cicd-to-github-actions"]},"buildId":"Mi6mQpzw-NSehtRuzNy6V","isFallback":false,"isExperimentalCompile":false,"gssp":true,"appGip":true,"locale":"en","locales":["en","zh","es","pt","ru","ja","fr","de","ko"],"defaultLocale":"en","scriptLoader":[]}</script></body></html>