CINXE.COM

<!doctype html> <html data-color-mode="auto" data-light-theme="light" data-dark-theme="dark" lang="en"> <head> <base href="https://docs.github.com/en/actions/use-cases-and-examples/publishing-packages/publishing-docker-images"> <meta charset="utf-8" data-next-head=""> <meta name="viewport" content="width=device-width, initial-scale=1" data-next-head=""> <link rel="icon" type="image/png" href="/assets/cb-345/images/site/favicon.png" data-next-head=""> <link href="/manifest.json" rel="manifest" data-next-head=""> <meta name="google-site-verification" content="c1kuD-K2HIVF635lypcsWPoD4kilo5-jA_wBFyT4uMY" data-next-head=""> <title data-next-head="">Publishing Docker images - GitHub Docs</title> <meta name="description" content="You can publish Docker images to a registry, such as Docker Hub or GitHub Packages, as part of your continuous integration (CI) workflow." data-next-head=""> <link rel="alternate" hreflang="zh-Hans" href="https://docs.github.com/zh/actions/use-cases-and-examples/publishing-packages/publishing-docker-images" data-next-head=""> <link rel="alternate" hreflang="es" href="https://docs.github.com/es/actions/use-cases-and-examples/publishing-packages/publishing-docker-images" data-next-head=""> <link rel="alternate" hreflang="pt" href="https://docs.github.com/pt/actions/use-cases-and-examples/publishing-packages/publishing-docker-images" data-next-head=""> <link rel="alternate" hreflang="ru" href="https://docs.github.com/ru/actions/use-cases-and-examples/publishing-packages/publishing-docker-images" data-next-head=""> <link rel="alternate" hreflang="ja" href="https://docs.github.com/ja/actions/use-cases-and-examples/publishing-packages/publishing-docker-images" data-next-head=""> <link rel="alternate" hreflang="fr" href="https://docs.github.com/fr/actions/use-cases-and-examples/publishing-packages/publishing-docker-images" data-next-head=""> <link rel="alternate" hreflang="de" href="https://docs.github.com/de/actions/use-cases-and-examples/publishing-packages/publishing-docker-images" data-next-head=""> <link rel="alternate" hreflang="ko" href="https://docs.github.com/ko/actions/use-cases-and-examples/publishing-packages/publishing-docker-images" data-next-head=""> <meta name="keywords" content="Packaging,Publishing,Docker" data-next-head=""> <meta name="path-language" content="en" data-next-head=""> <meta name="path-version" content="free-pro-team@latest" data-next-head=""> <meta name="path-product" content="actions" data-next-head=""> <meta name="path-article" content="actions/use-cases-and-examples/publishing-packages/publishing-docker-images" data-next-head=""> <meta name="page-type" content="tutorial" data-next-head=""> <meta name="page-document-type" content="article" data-next-head=""> <meta name="status" content="200" data-next-head=""> <meta property="og:site_name" content="GitHub Docs" data-next-head=""> <meta property="og:title" content="Publishing Docker images - GitHub Docs" data-next-head=""> <meta property="og:type" content="article" data-next-head=""> <meta property="og:url" content="https://docs-internal.github.com/en/actions/use-cases-and-examples/publishing-packages/publishing-docker-images" data-next-head=""> <meta property="og:image" content="https://github.githubassets.com/images/modules/open_graph/github-logo.png" data-next-head=""> <link rel="preload" href="/_next/static/css/befc662d3a7d0204.css" as="style"> <link rel="stylesheet" href="/_next/static/css/befc662d3a7d0204.css" data-n-g=""> <link rel="preload" href="/_next/static/css/c48aebeabc14a7b5.css" as="style"> <link rel="stylesheet" href="/_next/static/css/c48aebeabc14a7b5.css" data-n-p=""> <noscript data-n-css=""></noscript> <script defer nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script> <script src="/_next/static/chunks/webpack-e1031e9bd5db1252.js" defer></script> <script src="/_next/static/chunks/framework-19baaf6675f9027b.js" defer></script> <script src="/_next/static/chunks/main-a2c1e924d9046c3c.js" defer></script> <script src="/_next/static/chunks/pages/_app-ed2149ad90aeada5.js" defer></script> <script src="/_next/static/chunks/727f57db-4bd4b01815458cf5.js" defer></script> <script src="/_next/static/chunks/4197-10db3e81f24542eb.js" defer></script> <script src="/_next/static/chunks/2872-eaff82eddfa86435.js" defer></script> <script src="/_next/static/chunks/690-9f438af70d12addb.js" defer></script> <script src="/_next/static/chunks/3460-dd9d4ed72839fb08.js" defer></script> <script src="/_next/static/chunks/824-cd3224cdbacbc6e5.js" defer></script> <script src="/_next/static/chunks/7685-9ca829555005f024.js" defer></script> <script src="/_next/static/chunks/pages/%5BversionId%5D/%5BproductId%5D/%5B...restPage%5D-800cc696b967ab14.js" defer></script> <script src="/_next/static/FlQxg4xomDnwLh5_scO8d/_buildManifest.js" defer></script> <script src="/_next/static/FlQxg4xomDnwLh5_scO8d/_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*/ .bxiMxO{grid-area:breadcrumbs;}/*!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,bxiMxO,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> <meta http-equiv="X-Translated-By" content="Google"> <meta http-equiv="X-Translated-To" content="ja"> <script type="text/javascript" src="https://www.gstatic.com/_/translate_http/_/js/k=translate_http.tr.en_GB.toE3TeqoPfM.O/am=gAE/d=1/rs=AN8SPfrb-VvLXC7-HeDEZvWKxfMnVTOFhw/m=corsproxy" data-sourceurl="https://docs.github.com/en/actions/use-cases-and-examples/publishing-packages/publishing-docker-images"></script> <link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200" rel="stylesheet"> <script type="text/javascript" src="https://www.gstatic.com/_/translate_http/_/js/k=translate_http.tr.en_GB.toE3TeqoPfM.O/am=gAE/d=1/exm=corsproxy/ed=1/rs=AN8SPfrb-VvLXC7-HeDEZvWKxfMnVTOFhw/m=phishing_protection" data-phishing-protection-enabled="false" data-forms-warning-enabled="true" data-source-url="https://docs.github.com/en/actions/use-cases-and-examples/publishing-packages/publishing-docker-images"></script> <meta name="robots" content="none"> </head> <body> <script type="text/javascript" src="https://www.gstatic.com/_/translate_http/_/js/k=translate_http.tr.en_GB.toE3TeqoPfM.O/am=gAE/d=1/exm=corsproxy,phishing_protection/ed=1/rs=AN8SPfrb-VvLXC7-HeDEZvWKxfMnVTOFhw/m=navigationui" data-environment="prod" data-proxy-url="https://docs-github-com.translate.goog" data-proxy-full-url="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/publishing-packages/publishing-docker-images?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB" data-source-url="https://docs.github.com/en/actions/use-cases-and-examples/publishing-packages/publishing-docker-images" data-source-language="pl" data-target-language="ja" data-display-language="en-GB" data-detected-source-language="" data-is-source-untranslated="false" data-source-untranslated-url="https://translate.google.com/website?sl=pl&amp;tl=ja&amp;hl=en-GB&amp;u=https://docs.github.com/en/actions/use-cases-and-examples/publishing-packages/publishing-docker-images&amp;anno=2" data-client="tr"></script> <div id="__next"> <a href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/publishing-packages/publishing-docker-images?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB#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" style="row-gap:1rem" 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="https://docs-github-com.translate.goog/en?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <svg aria-hidden="true" focusable="false" class="octicon octicon-mark-github" viewbox="0 0 24 24" width="32" height="32" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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, &amp; 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" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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="OldHeaderSearchAndWidgets_searchContainerWithClosedSearch__Lkq6t 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" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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="https://docs-github-com.translate.goog/en/actions?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB">GitHub Actions</a><span class="color-fg-muted pr-2">/</span></li> <li class="d-inline-block"><a rel="" data-testid="breadcrumb-link" title="Use cases and examples" class="Link--primary mr-2 color-fg-muted" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB">Use cases and examples</a><span class="color-fg-muted pr-2">/</span></li> <li class="d-inline-block"><a rel="" data-testid="breadcrumb-link" title="Publish packages" class="Link--primary mr-2 color-fg-muted" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/publishing-packages?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB">Publish packages</a><span class="color-fg-muted pr-2">/</span></li> <li class="d-inline-block"><a rel="" data-testid="breadcrumb-link" title="Publish Docker images" class="Link--primary mr-2 color-fg-muted" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/publishing-packages/publishing-docker-images?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB">Publish Docker images</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="https://docs-github-com.translate.goog/en?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <svg aria-hidden="true" focusable="false" class="octicon octicon-arrow-left mr-1" viewbox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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="https://docs-github-com.translate.goog/en/actions?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB">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 sx="[object Object]" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0 daAEFx" viewbox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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=":R1l3b6n6:--label " id=":R1l3b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 fuIgwR" href="https://docs-github-com.translate.goog/en/actions/about-github-actions/understanding-github-actions?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R1l3b6n6:--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=":R2l3b6n6:--label " id=":R2l3b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 fuIgwR" href="https://docs-github-com.translate.goog/en/actions/about-github-actions/about-continuous-integration-with-github-actions?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R2l3b6n6:--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=":R3l3b6n6:--label " id=":R3l3b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 fuIgwR" href="https://docs-github-com.translate.goog/en/actions/about-github-actions/about-continuous-deployment-with-github-actions?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R3l3b6n6:--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 sx="[object Object]" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0 daAEFx" viewbox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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=":R1l5b6n6:--label " id=":R1l5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 fuIgwR" href="https://docs-github-com.translate.goog/en/actions/writing-workflows/quickstart?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R1l5b6n6:--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=":R2l5b6n6:--label " id=":R2l5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 fuIgwR" href="https://docs-github-com.translate.goog/en/actions/writing-workflows/about-workflows?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R2l5b6n6:--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=":R3l5b6n6:--label " id=":R3l5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 fuIgwR" href="https://docs-github-com.translate.goog/en/actions/writing-workflows/using-workflow-templates?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R3l5b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Use workflow templates</span> </div></a></li> <li aria-labelledby=":R4l5b6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":R4l5b6n6:--label " id=":R4l5b6n6:" aria-expanded="false" aria-controls=":R4l5b6n6H1:" 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=":R4l5b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Choose when workflows run</span><span class="Box-sc-g0xbh4-0 lmYNOb"> <svg sx="[object Object]" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0 daAEFx" viewbox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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=":R4l5b6n6H1:" aria-labelledby=":R4l5b6n6:" class="Box-sc-g0xbh4-0 gMkIpo"> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rdcl5b6n6:--label " id=":Rdcl5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/writing-workflows/choosing-when-your-workflow-runs/triggering-a-workflow?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rdcl5b6n6:--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=":Rlcl5b6n6:--label " id=":Rlcl5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/writing-workflows/choosing-when-your-workflow-runs/using-conditions-to-control-job-execution?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rlcl5b6n6:--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=":Rtcl5b6n6:--label " id=":Rtcl5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rtcl5b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Events that trigger workflows</span> </div></a></li> </ul> </div></li> <li aria-labelledby=":R5l5b6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":R5l5b6n6:--label " id=":R5l5b6n6:" aria-expanded="false" aria-controls=":R5l5b6n6H1:" 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=":R5l5b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Choose where workflows run</span><span class="Box-sc-g0xbh4-0 lmYNOb"> <svg sx="[object Object]" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0 daAEFx" viewbox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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=":R5l5b6n6H1:" aria-labelledby=":R5l5b6n6:" class="Box-sc-g0xbh4-0 gMkIpo"> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rddl5b6n6:--label " id=":Rddl5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/writing-workflows/choosing-where-your-workflow-runs/choosing-the-runner-for-a-job?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rddl5b6n6:--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=":Rldl5b6n6:--label " id=":Rldl5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/writing-workflows/choosing-where-your-workflow-runs/running-jobs-in-a-container?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rldl5b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Run jobs in a container</span> </div></a></li> </ul> </div></li> <li aria-labelledby=":R6l5b6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":R6l5b6n6:--label " id=":R6l5b6n6:" aria-expanded="false" aria-controls=":R6l5b6n6H1:" 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=":R6l5b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Choose what workflows do</span><span class="Box-sc-g0xbh4-0 lmYNOb"> <svg sx="[object Object]" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0 daAEFx" viewbox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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=":R6l5b6n6H1:" aria-labelledby=":R6l5b6n6:" class="Box-sc-g0xbh4-0 gMkIpo"> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rdel5b6n6:--label " id=":Rdel5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/writing-workflows/choosing-what-your-workflow-does/using-jobs-in-a-workflow?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rdel5b6n6:--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=":Rlel5b6n6:--label " id=":Rlel5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/writing-workflows/choosing-what-your-workflow-does/using-pre-written-building-blocks-in-your-workflow?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rlel5b6n6:--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=":Rtel5b6n6:--label " id=":Rtel5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/writing-workflows/choosing-what-your-workflow-does/using-github-cli-in-workflows?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rtel5b6n6:--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=":R15el5b6n6:--label " id=":R15el5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/writing-workflows/choosing-what-your-workflow-does/workflow-commands-for-github-actions?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R15el5b6n6:--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=":R1del5b6n6:--label " id=":R1del5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/writing-workflows/choosing-what-your-workflow-does/adding-scripts-to-your-workflow?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R1del5b6n6:--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=":R1lel5b6n6:--label " id=":R1lel5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/writing-workflows/choosing-what-your-workflow-does/controlling-permissions-for-github_token?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R1lel5b6n6:--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=":R1tel5b6n6:--label " id=":R1tel5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/writing-workflows/choosing-what-your-workflow-does/evaluate-expressions-in-workflows-and-actions?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R1tel5b6n6:--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=":R25el5b6n6:--label " id=":R25el5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/writing-workflows/choosing-what-your-workflow-does/store-information-in-variables?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R25el5b6n6:--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=":R2del5b6n6:--label " id=":R2del5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/writing-workflows/choosing-what-your-workflow-does/accessing-contextual-information-about-workflow-runs?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R2del5b6n6:--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=":R2lel5b6n6:--label " id=":R2lel5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/writing-workflows/choosing-what-your-workflow-does/passing-information-between-jobs?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R2lel5b6n6:--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=":R2tel5b6n6:--label " id=":R2tel5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/writing-workflows/choosing-what-your-workflow-does/setting-a-default-shell-and-working-directory?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R2tel5b6n6:--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=":R35el5b6n6:--label " id=":R35el5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/writing-workflows/choosing-what-your-workflow-does/using-environments-for-deployment?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R35el5b6n6:--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=":R3del5b6n6:--label " id=":R3del5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/writing-workflows/choosing-what-your-workflow-does/control-the-concurrency-of-workflows-and-jobs?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R3del5b6n6:--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=":R3lel5b6n6:--label " id=":R3lel5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/writing-workflows/choosing-what-your-workflow-does/running-variations-of-jobs-in-a-workflow?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R3lel5b6n6:--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=":R3tel5b6n6:--label " id=":R3tel5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/writing-workflows/choosing-what-your-workflow-does/caching-dependencies-to-speed-up-workflows?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R3tel5b6n6:--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=":R45el5b6n6:--label " id=":R45el5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/writing-workflows/choosing-what-your-workflow-does/storing-and-sharing-data-from-a-workflow?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R45el5b6n6:--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=":R7l5b6n6:--label " id=":R7l5b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 fuIgwR" href="https://docs-github-com.translate.goog/en/actions/writing-workflows/workflow-syntax-for-github-actions?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R7l5b6n6:--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 sx="[object Object]" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0 daAEFx" viewbox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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=":R1l7b6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":R1l7b6n6:--label " id=":R1l7b6n6:" aria-expanded="false" aria-controls=":R1l7b6n6H1:" 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=":R1l7b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Manage workflow runs</span><span class="Box-sc-g0xbh4-0 lmYNOb"> <svg sx="[object Object]" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0 daAEFx" viewbox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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=":R1l7b6n6H1:" aria-labelledby=":R1l7b6n6:" class="Box-sc-g0xbh4-0 gMkIpo"> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R6ll7b6n6:--label " id=":R6ll7b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/manually-running-a-workflow?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R6ll7b6n6:--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=":Rall7b6n6:--label " id=":Rall7b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/re-running-workflows-and-jobs?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rall7b6n6:--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=":Rell7b6n6:--label " id=":Rell7b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/canceling-a-workflow?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rell7b6n6:--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=":Rill7b6n6:--label " id=":Rill7b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/disabling-and-enabling-a-workflow?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rill7b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Disable &amp; enable a workflow</span> </div></a></li> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rmll7b6n6:--label " id=":Rmll7b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/skipping-workflow-runs?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rmll7b6n6:--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=":Rqll7b6n6:--label " id=":Rqll7b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/deleting-a-workflow-run?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rqll7b6n6:--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=":Rull7b6n6:--label " id=":Rull7b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/downloading-workflow-artifacts?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rull7b6n6:--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=":R12ll7b6n6:--label " id=":R12ll7b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/removing-workflow-artifacts?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R12ll7b6n6:--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=":R16ll7b6n6:--label " id=":R16ll7b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/approving-workflow-runs-from-public-forks?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R16ll7b6n6:--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=":R1all7b6n6:--label " id=":R1all7b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/approving-workflow-runs-from-private-forks?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R1all7b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Approve private fork runs</span> </div></a></li> </ul> </div></li> <li aria-labelledby=":R2l7b6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":R2l7b6n6:--label " id=":R2l7b6n6:" aria-expanded="false" aria-controls=":R2l7b6n6H1:" 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=":R2l7b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Manage deployments</span><span class="Box-sc-g0xbh4-0 lmYNOb"> <svg sx="[object Object]" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0 daAEFx" viewbox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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=":R2l7b6n6H1:" aria-labelledby=":R2l7b6n6:" class="Box-sc-g0xbh4-0 gMkIpo"> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R6ml7b6n6:--label " id=":R6ml7b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/managing-workflow-runs-and-deployments/managing-deployments/viewing-deployment-history?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R6ml7b6n6:--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=":Raml7b6n6:--label " id=":Raml7b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/managing-workflow-runs-and-deployments/managing-deployments/managing-environments-for-deployment?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Raml7b6n6:--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=":Reml7b6n6:--label " id=":Reml7b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/managing-workflow-runs-and-deployments/managing-deployments/reviewing-deployments?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Reml7b6n6:--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=":Riml7b6n6:--label " id=":Riml7b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/managing-workflow-runs-and-deployments/managing-deployments/creating-custom-deployment-protection-rules?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Riml7b6n6:--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=":Rmml7b6n6:--label " id=":Rmml7b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/managing-workflow-runs-and-deployments/managing-deployments/configuring-custom-deployment-protection-rules?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rmml7b6n6:--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 sx="[object Object]" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0 daAEFx" viewbox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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=":R1l9b6n6:--label " id=":R1l9b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 fuIgwR" href="https://docs-github-com.translate.goog/en/actions/sharing-automations/avoiding-duplication?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R1l9b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Avoid duplication</span> </div></a></li> <li aria-labelledby=":R2l9b6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":R2l9b6n6:--label " id=":R2l9b6n6:" aria-expanded="false" aria-controls=":R2l9b6n6H1:" 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=":R2l9b6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Create actions</span><span class="Box-sc-g0xbh4-0 lmYNOb"> <svg sx="[object Object]" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0 daAEFx" viewbox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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=":R2l9b6n6H1:" aria-labelledby=":R2l9b6n6:" class="Box-sc-g0xbh4-0 gMkIpo"> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rdal9b6n6:--label " id=":Rdal9b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/sharing-automations/creating-actions/about-custom-actions?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rdal9b6n6:--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=":Rlal9b6n6:--label " id=":Rlal9b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/sharing-automations/creating-actions/creating-a-docker-container-action?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rlal9b6n6:--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=":Rtal9b6n6:--label " id=":Rtal9b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/sharing-automations/creating-actions/creating-a-javascript-action?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rtal9b6n6:--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=":R15al9b6n6:--label " id=":R15al9b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/sharing-automations/creating-actions/creating-a-composite-action?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R15al9b6n6:--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=":R1dal9b6n6:--label " id=":R1dal9b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/sharing-automations/creating-actions/metadata-syntax-for-github-actions?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R1dal9b6n6:--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=":R1lal9b6n6:--label " id=":R1lal9b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/sharing-automations/creating-actions/dockerfile-support-for-github-actions?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R1lal9b6n6:--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=":R1tal9b6n6:--label " id=":R1tal9b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/sharing-automations/creating-actions/setting-exit-codes-for-actions?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R1tal9b6n6:--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=":R25al9b6n6:--label " id=":R25al9b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/sharing-automations/creating-actions/releasing-and-maintaining-actions?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R25al9b6n6:--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=":R2dal9b6n6:--label " id=":R2dal9b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/sharing-automations/creating-actions/publishing-actions-in-github-marketplace?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R2dal9b6n6:--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=":R2lal9b6n6:--label " id=":R2lal9b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/sharing-automations/creating-actions/developing-a-third-party-cli-action?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R2lal9b6n6:--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=":R3l9b6n6:--label " id=":R3l9b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 fuIgwR" href="https://docs-github-com.translate.goog/en/actions/sharing-automations/reusing-workflows?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R3l9b6n6:--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=":R4l9b6n6:--label " id=":R4l9b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 fuIgwR" href="https://docs-github-com.translate.goog/en/actions/sharing-automations/creating-workflow-templates-for-your-organization?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R4l9b6n6:--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=":R5l9b6n6:--label " id=":R5l9b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 fuIgwR" href="https://docs-github-com.translate.goog/en/actions/sharing-automations/sharing-actions-and-workflows-from-your-private-repository?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R5l9b6n6:--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=":R6l9b6n6:--label " id=":R6l9b6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 fuIgwR" href="https://docs-github-com.translate.goog/en/actions/sharing-automations/sharing-actions-and-workflows-with-your-organization?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R6l9b6n6:--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 &amp; troubleshoot</span><span class="Box-sc-g0xbh4-0 lmYNOb"> <svg sx="[object Object]" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0 daAEFx" viewbox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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=":R1lbb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":R1lbb6n6:--label " id=":R1lbb6n6:" aria-expanded="false" aria-controls=":R1lbb6n6H1:" 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=":R1lbb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Monitor</span><span class="Box-sc-g0xbh4-0 lmYNOb"> <svg sx="[object Object]" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0 daAEFx" viewbox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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=":R1lbb6n6H1:" aria-labelledby=":R1lbb6n6:" class="Box-sc-g0xbh4-0 gMkIpo"> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R6llbb6n6:--label " id=":R6llbb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/about-monitoring-workflows?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R6llbb6n6:--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=":Rallbb6n6:--label " id=":Rallbb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/notifications-for-workflow-runs?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rallbb6n6:--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=":Rellbb6n6:--label " id=":Rellbb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/using-the-visualization-graph?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rellbb6n6:--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=":Rillbb6n6:--label " id=":Rillbb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/viewing-workflow-run-history?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rillbb6n6:--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=":Rmllbb6n6:--label " id=":Rmllbb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/viewing-job-execution-time?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rmllbb6n6:--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=":Rqllbb6n6:--label " id=":Rqllbb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/adding-a-workflow-status-badge?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rqllbb6n6:--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=":Rullbb6n6:--label " id=":Rullbb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/using-workflow-run-logs?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rullbb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Workflow run logs</span> </div></a></li> </ul> </div></li> <li aria-labelledby=":R2lbb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":R2lbb6n6:--label " id=":R2lbb6n6:" aria-expanded="false" aria-controls=":R2lbb6n6H1:" 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=":R2lbb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Troubleshoot</span><span class="Box-sc-g0xbh4-0 lmYNOb"> <svg sx="[object Object]" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0 daAEFx" viewbox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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=":R2lbb6n6H1:" aria-labelledby=":R2lbb6n6:" class="Box-sc-g0xbh4-0 gMkIpo"> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R6mlbb6n6:--label " id=":R6mlbb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/monitoring-and-troubleshooting-workflows/troubleshooting-workflows/about-troubleshooting-workflows?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R6mlbb6n6:--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=":Ramlbb6n6:--label " id=":Ramlbb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/monitoring-and-troubleshooting-workflows/troubleshooting-workflows/using-copilot-to-troubleshoot-workflows?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Ramlbb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Use Copilot</span> </div></a></li> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Remlbb6n6:--label " id=":Remlbb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/monitoring-and-troubleshooting-workflows/troubleshooting-workflows/enabling-debug-logging?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Remlbb6n6:--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=":Rimlbb6n6:--label " id=":Rimlbb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/monitoring-and-troubleshooting-workflows/troubleshooting-workflows/working-with-support-for-github-actions?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rimlbb6n6:--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 sx="[object Object]" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0 daAEFx" viewbox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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=":R1ldb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":R1ldb6n6:--label " id=":R1ldb6n6:" aria-expanded="false" aria-controls=":R1ldb6n6H1:" 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=":R1ldb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">About GitHub-hosted runners</span><span class="Box-sc-g0xbh4-0 lmYNOb"> <svg sx="[object Object]" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0 daAEFx" viewbox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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=":R1ldb6n6H1:" aria-labelledby=":R1ldb6n6:" class="Box-sc-g0xbh4-0 gMkIpo"> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R6lldb6n6:--label " id=":R6lldb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/using-github-hosted-runners/using-github-hosted-runners/about-github-hosted-runners?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R6lldb6n6:--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=":Ralldb6n6:--label " id=":Ralldb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/using-github-hosted-runners/using-github-hosted-runners/monitoring-your-current-jobs?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Ralldb6n6:--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=":Relldb6n6:--label " id=":Relldb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/using-github-hosted-runners/using-github-hosted-runners/customizing-github-hosted-runners?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Relldb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Customize runners</span> </div></a></li> </ul> </div></li> <li aria-labelledby=":R2ldb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":R2ldb6n6:--label " id=":R2ldb6n6:" aria-expanded="false" aria-controls=":R2ldb6n6H1:" 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=":R2ldb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Using larger runners</span><span class="Box-sc-g0xbh4-0 lmYNOb"> <svg sx="[object Object]" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0 daAEFx" viewbox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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=":R2ldb6n6H1:" aria-labelledby=":R2ldb6n6:" class="Box-sc-g0xbh4-0 gMkIpo"> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R6mldb6n6:--label " id=":R6mldb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/using-github-hosted-runners/using-larger-runners/about-larger-runners?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R6mldb6n6:--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=":Ramldb6n6:--label " id=":Ramldb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/using-github-hosted-runners/using-larger-runners/managing-larger-runners?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Ramldb6n6:--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=":Remldb6n6:--label " id=":Remldb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/using-github-hosted-runners/using-larger-runners/controlling-access-to-larger-runners?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Remldb6n6:--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=":Rimldb6n6:--label " id=":Rimldb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/using-github-hosted-runners/using-larger-runners/running-jobs-on-larger-runners?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rimldb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Run jobs on larger runners</span> </div></a></li> </ul> </div></li> <li aria-labelledby=":R3ldb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":R3ldb6n6:--label " id=":R3ldb6n6:" aria-expanded="false" aria-controls=":R3ldb6n6H1:" 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=":R3ldb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Private networking</span><span class="Box-sc-g0xbh4-0 lmYNOb"> <svg sx="[object Object]" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0 daAEFx" viewbox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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=":R3ldb6n6H1:" aria-labelledby=":R3ldb6n6:" class="Box-sc-g0xbh4-0 gMkIpo"> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R6nldb6n6:--label " id=":R6nldb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/using-github-hosted-runners/connecting-to-a-private-network/about-private-networking-with-github-hosted-runners?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R6nldb6n6:--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=":Ranldb6n6:--label " id=":Ranldb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/using-github-hosted-runners/connecting-to-a-private-network/using-an-api-gateway-with-oidc?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Ranldb6n6:--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=":Renldb6n6:--label " id=":Renldb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/using-github-hosted-runners/connecting-to-a-private-network/using-wireguard-to-create-a-network-overlay?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Renldb6n6:--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 sx="[object Object]" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0 daAEFx" viewbox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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=":R1lfb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":R1lfb6n6:--label " id=":R1lfb6n6:" aria-expanded="false" aria-controls=":R1lfb6n6H1:" 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=":R1lfb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Manage self-hosted runners</span><span class="Box-sc-g0xbh4-0 lmYNOb"> <svg sx="[object Object]" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0 daAEFx" viewbox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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=":R1lfb6n6H1:" aria-labelledby=":R1lfb6n6:" class="Box-sc-g0xbh4-0 gMkIpo"> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R6llfb6n6:--label " id=":R6llfb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R6llfb6n6:--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=":Rallfb6n6:--label " id=":Rallfb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/hosting-your-own-runners/managing-self-hosted-runners/adding-self-hosted-runners?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rallfb6n6:--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=":Rellfb6n6:--label " id=":Rellfb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/hosting-your-own-runners/managing-self-hosted-runners/autoscaling-with-self-hosted-runners?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rellfb6n6:--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=":Rillfb6n6:--label " id=":Rillfb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/hosting-your-own-runners/managing-self-hosted-runners/running-scripts-before-or-after-a-job?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rillfb6n6:--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=":Rmllfb6n6:--label " id=":Rmllfb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/hosting-your-own-runners/managing-self-hosted-runners/customizing-the-containers-used-by-jobs?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rmllfb6n6:--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=":Rqllfb6n6:--label " id=":Rqllfb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/hosting-your-own-runners/managing-self-hosted-runners/configuring-the-self-hosted-runner-application-as-a-service?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rqllfb6n6:--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=":Rullfb6n6:--label " id=":Rullfb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/hosting-your-own-runners/managing-self-hosted-runners/using-a-proxy-server-with-self-hosted-runners?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rullfb6n6:--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=":R12llfb6n6:--label " id=":R12llfb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/hosting-your-own-runners/managing-self-hosted-runners/using-labels-with-self-hosted-runners?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R12llfb6n6:--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=":R16llfb6n6:--label " id=":R16llfb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/hosting-your-own-runners/managing-self-hosted-runners/using-self-hosted-runners-in-a-workflow?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R16llfb6n6:--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=":R1allfb6n6:--label " id=":R1allfb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/hosting-your-own-runners/managing-self-hosted-runners/managing-access-to-self-hosted-runners-using-groups?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R1allfb6n6:--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=":R1ellfb6n6:--label " id=":R1ellfb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/hosting-your-own-runners/managing-self-hosted-runners/monitoring-and-troubleshooting-self-hosted-runners?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R1ellfb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Monitor &amp; troubleshoot</span> </div></a></li> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1illfb6n6:--label " id=":R1illfb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/hosting-your-own-runners/managing-self-hosted-runners/removing-self-hosted-runners?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R1illfb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Remove self-hosted runners</span> </div></a></li> </ul> </div></li> <li aria-labelledby=":R2lfb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":R2lfb6n6:--label " id=":R2lfb6n6:" aria-expanded="false" aria-controls=":R2lfb6n6H1:" 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=":R2lfb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Actions Runner Controller</span><span class="Box-sc-g0xbh4-0 lmYNOb"> <svg sx="[object Object]" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0 daAEFx" viewbox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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=":R2lfb6n6H1:" aria-labelledby=":R2lfb6n6:" class="Box-sc-g0xbh4-0 gMkIpo"> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R6mlfb6n6:--label " id=":R6mlfb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/about-actions-runner-controller?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R6mlfb6n6:--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=":Ramlfb6n6:--label " id=":Ramlfb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/quickstart-for-actions-runner-controller?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Ramlfb6n6:--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=":Remlfb6n6:--label " id=":Remlfb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/authenticating-to-the-github-api?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Remlfb6n6:--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=":Rimlfb6n6:--label " id=":Rimlfb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/deploying-runner-scale-sets-with-actions-runner-controller?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rimlfb6n6:--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=":Rmmlfb6n6:--label " id=":Rmmlfb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/using-actions-runner-controller-runners-in-a-workflow?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rmmlfb6n6:--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=":Rqmlfb6n6:--label " id=":Rqmlfb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/troubleshooting-actions-runner-controller-errors?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rqmlfb6n6:--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=":Rumlfb6n6:--label " id=":Rumlfb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/about-support-for-actions-runner-controller?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rumlfb6n6:--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 sx="[object Object]" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0 daAEFx" viewbox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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=":R1lhb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":R1lhb6n6:--label " id=":R1lhb6n6:" aria-expanded="false" aria-controls=":R1lhb6n6H1:" 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=":R1lhb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Security guides</span><span class="Box-sc-g0xbh4-0 lmYNOb"> <svg sx="[object Object]" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0 daAEFx" viewbox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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=":R1lhb6n6H1:" aria-labelledby=":R1lhb6n6:" class="Box-sc-g0xbh4-0 gMkIpo"> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R6llhb6n6:--label " id=":R6llhb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/security-for-github-actions/security-guides/security-hardening-for-github-actions?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R6llhb6n6:--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=":Rallhb6n6:--label " id=":Rallhb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rallhb6n6:--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=":Rellhb6n6:--label " id=":Rellhb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/security-for-github-actions/security-guides/automatic-token-authentication?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rellhb6n6:--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=":Rillhb6n6:--label " id=":Rillhb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/security-for-github-actions/security-guides/using-githubs-security-features-to-secure-your-use-of-github-actions?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rillhb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">GitHub security features</span> </div></a></li> </ul> </div></li> <li aria-labelledby=":R2lhb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":R2lhb6n6:--label " id=":R2lhb6n6:" aria-expanded="false" aria-controls=":R2lhb6n6H1:" 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=":R2lhb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Artifact attestations</span><span class="Box-sc-g0xbh4-0 lmYNOb"> <svg sx="[object Object]" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0 daAEFx" viewbox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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=":R2lhb6n6H1:" aria-labelledby=":R2lhb6n6:" class="Box-sc-g0xbh4-0 gMkIpo"> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R6mlhb6n6:--label " id=":R6mlhb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/security-for-github-actions/using-artifact-attestations/using-artifact-attestations-to-establish-provenance-for-builds?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R6mlhb6n6:--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=":Ramlhb6n6:--label " id=":Ramlhb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/security-for-github-actions/using-artifact-attestations/using-artifact-attestations-and-reusable-workflows-to-achieve-slsa-v1-build-level-3?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Ramlhb6n6:--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=":Remlhb6n6:--label " id=":Remlhb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/security-for-github-actions/using-artifact-attestations/enforcing-artifact-attestations-with-a-kubernetes-admission-controller?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Remlhb6n6:--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=":Rimlhb6n6:--label " id=":Rimlhb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/security-for-github-actions/using-artifact-attestations/verifying-attestations-offline?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rimlhb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Verifying attestations offline</span> </div></a></li> </ul> </div></li> <li aria-labelledby=":R3lhb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":R3lhb6n6:--label " id=":R3lhb6n6:" aria-expanded="false" aria-controls=":R3lhb6n6H1:" 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=":R3lhb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Security harden deployments</span><span class="Box-sc-g0xbh4-0 lmYNOb"> <svg sx="[object Object]" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0 daAEFx" viewbox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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=":R3lhb6n6H1:" aria-labelledby=":R3lhb6n6:" class="Box-sc-g0xbh4-0 gMkIpo"> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R6nlhb6n6:--label " id=":R6nlhb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/security-for-github-actions/security-hardening-your-deployments/about-security-hardening-with-openid-connect?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R6nlhb6n6:--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=":Ranlhb6n6:--label " id=":Ranlhb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Ranlhb6n6:--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=":Renlhb6n6:--label " id=":Renlhb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-azure?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Renlhb6n6:--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=":Rinlhb6n6:--label " id=":Rinlhb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-google-cloud-platform?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rinlhb6n6:--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=":Rmnlhb6n6:--label " id=":Rmnlhb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-hashicorp-vault?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rmnlhb6n6:--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=":Rqnlhb6n6:--label " id=":Rqnlhb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-jfrog?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rqnlhb6n6:--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=":Runlhb6n6:--label " id=":Runlhb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-pypi?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Runlhb6n6:--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=":R12nlhb6n6:--label " id=":R12nlhb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-cloud-providers?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R12nlhb6n6:--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=":R16nlhb6n6:--label " id=":R16nlhb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/security-for-github-actions/security-hardening-your-deployments/using-openid-connect-with-reusable-workflows?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R16nlhb6n6:--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="true" 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 sx="[object Object]" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0 gzcJGA" viewbox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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 enEvIH"> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1ljb6n6:--label " id=":R1ljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 fuIgwR" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/creating-an-example-workflow?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R1ljb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Create an example workflow</span> </div></a></li> <li aria-labelledby=":R2ljb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":R2ljb6n6:--label " id=":R2ljb6n6:" aria-expanded="false" aria-controls=":R2ljb6n6H1:" 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=":R2ljb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Build and test</span><span class="Box-sc-g0xbh4-0 lmYNOb"> <svg sx="[object Object]" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0 daAEFx" viewbox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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=":R2ljb6n6H1:" aria-labelledby=":R2ljb6n6:" class="Box-sc-g0xbh4-0 gMkIpo"> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rdaljb6n6:--label " id=":Rdaljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-go?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rdaljb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Build &amp; test Go</span> </div></a></li> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rlaljb6n6:--label " id=":Rlaljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-java-with-ant?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rlaljb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Build &amp; test Java &amp; Ant</span> </div></a></li> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rtaljb6n6:--label " id=":Rtaljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-java-with-gradle?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rtaljb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Build &amp; test Java &amp; Gradle</span> </div></a></li> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R15aljb6n6:--label " id=":R15aljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-java-with-maven?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R15aljb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Build &amp; test Java with Maven</span> </div></a></li> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1daljb6n6:--label " id=":R1daljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-net?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R1daljb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Build &amp; test .NET</span> </div></a></li> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1laljb6n6:--label " id=":R1laljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-nodejs?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R1laljb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Build &amp; test Node.js</span> </div></a></li> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R1taljb6n6:--label " id=":R1taljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-powershell?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R1taljb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Build &amp; test PowerShell</span> </div></a></li> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R25aljb6n6:--label " id=":R25aljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-python?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R25aljb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Build &amp; test Python</span> </div></a></li> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R2daljb6n6:--label " id=":R2daljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-ruby?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R2daljb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Build &amp; test Ruby</span> </div></a></li> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R2laljb6n6:--label " id=":R2laljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-rust?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R2laljb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Build &amp; test Rust</span> </div></a></li> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R2taljb6n6:--label " id=":R2taljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-swift?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R2taljb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Build &amp; test Swift</span> </div></a></li> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R35aljb6n6:--label " id=":R35aljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-xamarin-applications?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R35aljb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Build &amp; test Xamarin apps</span> </div></a></li> </ul> </div></li> <li aria-labelledby=":R3ljb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":R3ljb6n6:--label " id=":R3ljb6n6:" aria-expanded="false" aria-controls=":R3ljb6n6H1:" 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=":R3ljb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Deployment</span><span class="Box-sc-g0xbh4-0 lmYNOb"> <svg sx="[object Object]" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0 daAEFx" viewbox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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=":R3ljb6n6H1:" aria-labelledby=":R3ljb6n6:" class="Box-sc-g0xbh4-0 gMkIpo"> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rdbljb6n6:--label " id=":Rdbljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/deploying/deploying-with-github-actions?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rdbljb6n6:--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=":Rlbljb6n6:--label " id=":Rlbljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/deploying/deploying-nodejs-to-azure-app-service?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rlbljb6n6:--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=":Rtbljb6n6:--label " id=":Rtbljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/deploying/deploying-python-to-azure-app-service?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rtbljb6n6:--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=":R15bljb6n6:--label " id=":R15bljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/deploying/deploying-java-to-azure-app-service?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R15bljb6n6:--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=":R1dbljb6n6:--label " id=":R1dbljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/deploying/deploying-net-to-azure-app-service?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R1dbljb6n6:--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=":R1lbljb6n6:--label " id=":R1lbljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/deploying/deploying-php-to-azure-app-service?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R1lbljb6n6:--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=":R1tbljb6n6:--label " id=":R1tbljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/deploying/deploying-docker-to-azure-app-service?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R1tbljb6n6:--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=":R25bljb6n6:--label " id=":R25bljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R25bljb6n6:--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=":R2dbljb6n6:--label " id=":R2dbljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/deploying/deploying-to-azure-kubernetes-service?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R2dbljb6n6:--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=":R2lbljb6n6:--label " id=":R2lbljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/deploying/deploying-to-amazon-elastic-container-service?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R2lbljb6n6:--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=":R2tbljb6n6:--label " id=":R2tbljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/deploying/deploying-to-google-kubernetes-engine?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R2tbljb6n6:--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=":R35bljb6n6:--label " id=":R35bljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/deploying/installing-an-apple-certificate-on-macos-runners-for-xcode-development?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R35bljb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Sign Xcode applications</span> </div></a></li> </ul> </div></li> <li aria-labelledby=":R4ljb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":R4ljb6n6:--label " id=":R4ljb6n6:" aria-expanded="true" aria-controls=":R4ljb6n6H1:" 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=":R4ljb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Publish packages</span><span class="Box-sc-g0xbh4-0 lmYNOb"> <svg sx="[object Object]" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0 gzcJGA" viewbox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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=":R4ljb6n6H1:" aria-labelledby=":R4ljb6n6:" class="Box-sc-g0xbh4-0 enEvIH"> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rdcljb6n6:--label " id=":Rdcljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/publishing-packages/about-packaging-with-github-actions?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rdcljb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Packaging with GitHub Actions</span> </div></a></li> <li class="Item__LiBox-sc-yeql7o-0 hTSEii"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rlcljb6n6:--label " id=":Rlcljb6n6:" aria-current="page" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/publishing-packages/publishing-docker-images?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rlcljb6n6:--label" class="Box-sc-g0xbh4-0 ivpQTm">Publish Docker images</span> </div></a></li> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rtcljb6n6:--label " id=":Rtcljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/publishing-packages/publishing-java-packages-with-gradle?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rtcljb6n6:--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=":R15cljb6n6:--label " id=":R15cljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/publishing-packages/publishing-java-packages-with-maven?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R15cljb6n6:--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=":R1dcljb6n6:--label " id=":R1dcljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/publishing-packages/publishing-nodejs-packages?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R1dcljb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Publish Node.js packages</span> </div></a></li> </ul> </div></li> <li aria-labelledby=":R5ljb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":R5ljb6n6:--label " id=":R5ljb6n6:" aria-expanded="false" aria-controls=":R5ljb6n6H1:" 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=":R5ljb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Project management</span><span class="Box-sc-g0xbh4-0 lmYNOb"> <svg sx="[object Object]" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0 daAEFx" viewbox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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=":R5ljb6n6H1:" aria-labelledby=":R5ljb6n6:" class="Box-sc-g0xbh4-0 gMkIpo"> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rddljb6n6:--label " id=":Rddljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/project-management/using-github-actions-for-project-management?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rddljb6n6:--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=":Rldljb6n6:--label " id=":Rldljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/project-management/adding-labels-to-issues?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rldljb6n6:--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=":Rtdljb6n6:--label " id=":Rtdljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/project-management/closing-inactive-issues?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rtdljb6n6:--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=":R15dljb6n6:--label " id=":R15dljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/project-management/commenting-on-an-issue-when-a-label-is-added?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R15dljb6n6:--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=":R1ddljb6n6:--label " id=":R1ddljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/project-management/scheduling-issue-creation?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R1ddljb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Schedule issue creation</span> </div></a></li> </ul> </div></li> <li aria-labelledby=":R6ljb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":R6ljb6n6:--label " id=":R6ljb6n6:" aria-expanded="false" aria-controls=":R6ljb6n6H1:" 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=":R6ljb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Containerized services</span><span class="Box-sc-g0xbh4-0 lmYNOb"> <svg sx="[object Object]" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0 daAEFx" viewbox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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=":R6ljb6n6H1:" aria-labelledby=":R6ljb6n6:" class="Box-sc-g0xbh4-0 gMkIpo"> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Rdeljb6n6:--label " id=":Rdeljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/using-containerized-services/about-service-containers?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rdeljb6n6:--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=":Rleljb6n6:--label " id=":Rleljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/using-containerized-services/creating-postgresql-service-containers?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rleljb6n6:--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=":Rteljb6n6:--label " id=":Rteljb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/using-containerized-services/creating-redis-service-containers?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rteljb6n6:--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="false" 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 sx="[object Object]" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0 daAEFx" viewbox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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 gMkIpo"> <li aria-labelledby=":R1llb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":R1llb6n6:--label " id=":R1llb6n6:" aria-expanded="false" aria-controls=":R1llb6n6H1:" 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=":R1llb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Automated migrations</span><span class="Box-sc-g0xbh4-0 lmYNOb"> <svg sx="[object Object]" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0 daAEFx" viewbox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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=":R1llb6n6H1:" aria-labelledby=":R1llb6n6:" class="Box-sc-g0xbh4-0 gMkIpo"> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R6lllb6n6:--label " id=":R6lllb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/automating-migration-with-github-actions-importer?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R6lllb6n6:--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=":Ralllb6n6:--label " id=":Ralllb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/extending-github-actions-importer-with-custom-transformers?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Ralllb6n6:--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=":Relllb6n6:--label " id=":Relllb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/supplemental-arguments-and-settings?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Relllb6n6:--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=":Rilllb6n6:--label " id=":Rilllb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-azure-devops-with-github-actions-importer?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rilllb6n6:--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=":Rmlllb6n6:--label " id=":Rmlllb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-bamboo-with-github-actions-importer?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rmlllb6n6:--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=":Rqlllb6n6:--label " id=":Rqlllb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-bitbucket-pipelines-with-github-actions-importer?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rqlllb6n6:--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=":Rulllb6n6:--label " id=":Rulllb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-circleci-with-github-actions-importer?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rulllb6n6:--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=":R12lllb6n6:--label " id=":R12lllb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-gitlab-with-github-actions-importer?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R12lllb6n6:--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=":R16lllb6n6:--label " id=":R16lllb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-jenkins-with-github-actions-importer?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R16lllb6n6:--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=":R1alllb6n6:--label " id=":R1alllb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-travis-ci-with-github-actions-importer?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R1alllb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Travis CI migration</span> </div></a></li> </ul> </div></li> <li aria-labelledby=":R2llb6n6:" class="Box-sc-g0xbh4-0 Ywlla"><button tabindex="0" aria-labelledby=":R2llb6n6:--label " id=":R2llb6n6:" aria-expanded="false" aria-controls=":R2llb6n6H1:" 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=":R2llb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Manual migrations</span><span class="Box-sc-g0xbh4-0 lmYNOb"> <svg sx="[object Object]" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0 daAEFx" viewbox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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=":R2llb6n6H1:" aria-labelledby=":R2llb6n6:" class="Box-sc-g0xbh4-0 gMkIpo"> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R6mllb6n6:--label " id=":R6mllb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-azure-pipelines-to-github-actions?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R6mllb6n6:--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=":Ramllb6n6:--label " id=":Ramllb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-circleci-to-github-actions?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Ramllb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Migrate from CircleCI</span> </div></a></li> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":Remllb6n6:--label " id=":Remllb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-gitlab-cicd-to-github-actions?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Remllb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">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=":Rimllb6n6:--label " id=":Rimllb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-jenkins-to-github-actions?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rimllb6n6:--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=":Rmmllb6n6:--label " id=":Rmmllb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 dibTck" href="https://docs-github-com.translate.goog/en/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-travis-ci-to-github-actions?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rmmllb6n6:--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 sx="[object Object]" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0 daAEFx" viewbox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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=":R1lnb6n6:--label " id=":R1lnb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 fuIgwR" href="https://docs-github-com.translate.goog/en/actions/administering-github-actions/usage-limits-billing-and-administration?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R1lnb6n6:--label" class="Box-sc-g0xbh4-0 bmseMA">Workflow billing &amp; limits</span> </div></a></li> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a sx="[object Object]" tabindex="0" aria-labelledby=":R2lnb6n6:--label " id=":R2lnb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 fuIgwR" href="https://docs-github-com.translate.goog/en/actions/administering-github-actions/viewing-github-actions-metrics?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R2lnb6n6:--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=":R3lnb6n6:--label " id=":R3lnb6n6:" aria-current="false" class="Link__StyledLink-sc-14289xe-0 fuIgwR" href="https://docs-github-com.translate.goog/en/actions/administering-github-actions/sharing-workflows-secrets-and-runners-with-your-organization?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":R3lnb6n6:--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="https://docs-github-com.translate.goog/en/actions/guides?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB"> <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="ArticleInlineLayout_containerBox__p5DcK"> <div class="Box-sc-g0xbh4-0 bxiMxO 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="https://docs-github-com.translate.goog/en/actions?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB">GitHub Actions</a><span class="color-fg-muted pr-2">/</span></li> <li class="d-inline-block"><a rel="" data-testid="breadcrumb-link" title="Use cases and examples" class="Link--primary mr-2 color-fg-muted" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB">Use cases and examples</a><span class="color-fg-muted pr-2">/</span></li> <li class="d-inline-block"><a rel="" data-testid="breadcrumb-link" title="Publish packages" class="Link--primary mr-2 color-fg-muted" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/publishing-packages?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB">Publish packages</a><span class="color-fg-muted pr-2">/</span></li> <li class="d-inline-block"><a rel="" data-testid="breadcrumb-link" title="Publish Docker images" class="Link--primary mr-2 color-fg-muted d-none" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/publishing-packages/publishing-docker-images?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB">Publish Docker images</a></li> </ul> </nav> </div> <div class="ArticleInlineLayout_contentBox__Guuxy"> <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">Publishing Docker images</h1> </div> </div> <div id="article-intro" class="Box-sc-g0xbh4-0 ijSsTo f4"> <div class="f2 color-fg-muted mb-3 Lead_container__m3L5f _page-intro" data-container="lead" data-testid="lead" data-search="lead"> <p>You can publish Docker images to a registry, such as Docker Hub or GitHub Packages, as part of your continuous integration (CI) workflow.</p> </div> </div> <div class="Box-sc-g0xbh4-0 ijSsTo f4 mb-4"></div> <div data-container="toc" class="Box-sc-g0xbh4-0 giVcWX ArticleInlineLayout_sidebarBox__nMJ_o 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=":R9mkjeqn6:--label " id=":R9mkjeqn6:" aria-current="false" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/publishing-packages/publishing-docker-images?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB#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=":R9mkjeqn6:--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=":Ramkjeqn6:--label " id=":Ramkjeqn6:" aria-current="false" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/publishing-packages/publishing-docker-images?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB#prerequisites" class="Link__StyledLink-sc-14289xe-0 cJbOew Minitocs_nested__JSAov"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Ramkjeqn6:--label" class="Box-sc-g0xbh4-0 bmseMA">Prerequisites</span> </div></a></li> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a tabindex="0" aria-labelledby=":Rbmkjeqn6:--label " id=":Rbmkjeqn6:" aria-current="false" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/publishing-packages/publishing-docker-images?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB#about-image-configuration" class="Link__StyledLink-sc-14289xe-0 cJbOew Minitocs_nested__JSAov"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rbmkjeqn6:--label" class="Box-sc-g0xbh4-0 bmseMA">About image configuration</span> </div></a></li> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a tabindex="0" aria-labelledby=":Rcmkjeqn6:--label " id=":Rcmkjeqn6:" aria-current="false" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/publishing-packages/publishing-docker-images?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB#publishing-images-to-docker-hub" class="Link__StyledLink-sc-14289xe-0 cJbOew Minitocs_nested__JSAov"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rcmkjeqn6:--label" class="Box-sc-g0xbh4-0 bmseMA">Publishing images to Docker Hub</span> </div></a></li> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a tabindex="0" aria-labelledby=":Rdmkjeqn6:--label " id=":Rdmkjeqn6:" aria-current="false" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/publishing-packages/publishing-docker-images?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB#publishing-images-to-github-packages" class="Link__StyledLink-sc-14289xe-0 cJbOew Minitocs_nested__JSAov"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Rdmkjeqn6:--label" class="Box-sc-g0xbh4-0 bmseMA">Publishing images to GitHub Packages</span> </div></a></li> <li class="Item__LiBox-sc-yeql7o-0 lnYQME"><a tabindex="0" aria-labelledby=":Remkjeqn6:--label " id=":Remkjeqn6:" aria-current="false" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/publishing-packages/publishing-docker-images?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB#publishing-images-to-docker-hub-and-github-packages" class="Link__StyledLink-sc-14289xe-0 cJbOew Minitocs_nested__JSAov"> <div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 hROlum"> <span id=":Remkjeqn6:--label" class="Box-sc-g0xbh4-0 bmseMA">Publishing images to Docker Hub and GitHub Packages</span> </div></a></li> </ul> </nav> </div> <div data-container="article" data-search="article-body" class="Box-sc-g0xbh4-0 kohLxz ArticleInlineLayout_articleContainer__Sb_Af"> <div id="article-contents"> <div class="MarkdownContent_markdownBody__v5MYy markdown-body"> <h2 id="introduction" tabindex="-1"><a class="heading-link" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/publishing-packages/publishing-docker-images?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB#introduction">Introduction<span class="heading-link-symbol" aria-hidden="true"></span></a></h2> <p>This guide shows you how to create a workflow that performs a Docker build, and then publishes Docker images to Docker Hub or GitHub Packages. With a single workflow, you can publish images to a single registry or to multiple registries.</p> <div class="ghd-alert ghd-alert-accent"> <p class="ghd-alert-title"> <svg version="1.1" width="16" height="16" viewbox="0 0 16 16" class="octicon mr-2" aria-hidden> <path d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path> </svg>Note</p> <p>If you want to push to another third-party Docker registry, the example in the <a href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/publishing-packages/publishing-docker-images?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB#publishing-images-to-github-packages">Publishing images to GitHub Packages</a> section can serve as a good template.</p> </div> <h2 id="prerequisites" tabindex="-1"><a class="heading-link" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/publishing-packages/publishing-docker-images?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB#prerequisites">Prerequisites<span class="heading-link-symbol" aria-hidden="true"></span></a></h2> <p>We recommend that you have a basic understanding of workflow configuration options and how to create a workflow file. For more information, see <a href="https://docs-github-com.translate.goog/en/actions/learn-github-actions?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB" _originalhref="/actions/learn-github-actions">Writing workflows</a>.</p> <p>You might also find it helpful to have a basic understanding of the following:</p> <ul> <li><a href="https://docs-github-com.translate.goog/en/actions/security-guides/using-secrets-in-github-actions?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB" _originalhref="/actions/security-guides/using-secrets-in-github-actions">Using secrets in GitHub Actions</a></li> <li><a href="https://docs-github-com.translate.goog/en/actions/security-guides/automatic-token-authentication?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB" _originalhref="/actions/security-guides/automatic-token-authentication">Automatic token authentication</a></li> <li><a href="https://docs-github-com.translate.goog/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB" _originalhref="/packages/working-with-a-github-packages-registry/working-with-the-container-registry">Working with the Container registry</a></li> </ul> <h2 id="about-image-configuration" tabindex="-1"><a class="heading-link" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/publishing-packages/publishing-docker-images?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB#about-image-configuration">About image configuration<span class="heading-link-symbol" aria-hidden="true"></span></a></h2> <p>This guide assumes that you have a complete definition for a Docker image stored in a GitHub repository. For example, your repository must contain a <em>Dockerfile</em>, and any other files needed to perform a Docker build to create an image.</p> <p>You can use pre-defined annotation keys to add metadata including a description, a license, and a source repository to your container image. For more information, see <a href="https://docs-github-com.translate.goog/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB#labelling-container-images" _originalhref="/packages/working-with-a-github-packages-registry/working-with-the-container-registry#labelling-container-images">Working with the Container registry</a>.</p> <p>In this guide, we will use the Docker <code>build-push-action</code> action to build the Docker image and push it to one or more Docker registries. For more information, see <a href="https://translate.google.com/website?sl=pl&amp;tl=ja&amp;hl=en-GB&amp;u=https://github.com/marketplace/actions/build-and-push-docker-images"><code>build-push-action</code></a>.</p> <h2 id="publishing-images-to-docker-hub" tabindex="-1"><a class="heading-link" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/publishing-packages/publishing-docker-images?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB#publishing-images-to-docker-hub">Publishing images to Docker Hub<span class="heading-link-symbol" aria-hidden="true"></span></a></h2> <p>Each time you create a new release on GitHub, you can trigger a workflow to publish your image. The workflow in the example below runs when the <code>release</code> event triggers with the <code>published</code> activity type.</p> <p>In the example workflow below, we use the Docker <code>login-action</code> and <code>build-push-action</code> actions to build the Docker image and, if the build succeeds, push the built image to Docker Hub.</p> <p>To push to Docker Hub, you will need to have a Docker Hub account, and have a Docker Hub repository created. For more information, see <a href="https://translate.google.com/website?sl=pl&amp;tl=ja&amp;hl=en-GB&amp;u=https://docs.docker.com/docker-hub/quickstart/%23step-3-build-and-push-an-image-to-docker-hub">Pushing a Docker container image to Docker Hub</a> in the Docker documentation.</p> <p>The <code>login-action</code> options required for Docker Hub are:</p> <ul> <li><code>username</code> and <code>password</code>: This is your Docker Hub username and password. We recommend storing your Docker Hub username and password as secrets so they aren't exposed in your workflow file. For more information, see <a href="https://docs-github-com.translate.goog/en/actions/security-guides/using-secrets-in-github-actions?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB" _originalhref="/actions/security-guides/using-secrets-in-github-actions">Using secrets in GitHub Actions</a>.</li> </ul> <p>The <code>metadata-action</code> option required for Docker Hub is:</p> <ul> <li><code>images</code>: The namespace and name for the Docker image you are building/pushing to Docker Hub.</li> </ul> <p>The <code>build-push-action</code> options required for Docker Hub are:</p> <ul> <li><code>tags</code>: The tag of your new image in the format <code>DOCKER-HUB-NAMESPACE/DOCKER-HUB-REPOSITORY:VERSION</code>. You can set a single tag as shown below, or specify multiple tags in a list.</li> <li><code>push</code>: If set to <code>true</code>, the image will be pushed to the registry if it is built successfully.</li> </ul> <div class="code-example"> <header class="d-flex flex-items-center flex-justify-between p-2 text-small rounded-top-1 border-top border-left border-right"> <span class="flex-1">YAML</span><button class="js-btn-copy btn btn-sm tooltipped tooltipped-nw" aria-label="Copy YAML code to clipboard" data-clipboard="110038332"> <svg version="1.1" width="16" height="16" viewbox="0 0 16 16" class="octicon octicon-copy" aria-hidden="true"> <path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path> </svg></button> <pre hidden data-clipboard="110038332"># This workflow uses actions that are not certified by GitHub. # They are provided by a third-party and are governed by # separate terms of service, privacy policy, and support # documentation. # GitHub recommends pinning actions to a commit SHA. # To get a newer version, you will need to update the SHA. # You can also reference a tag or branch, but the action may change without warning. name: Publish Docker image on: release: types: [published] jobs: push_to_registry: name: Push Docker image to Docker Hub runs-on: ubuntu-latest permissions: packages: write contents: read attestations: write id-token: write steps: - name: Check out the repo uses: actions/checkout@v4 - name: Log in to Docker Hub uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Extract metadata (tags, labels) for Docker id: meta uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 with: images: my-docker-hub-namespace/my-docker-hub-repository - name: Build and push Docker image id: push uses: docker/build-push-action@3b5e8027fcad23fda98b2e3ac259d8d67585f671 with: context: . file: ./Dockerfile push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} - name: Generate artifact attestation uses: actions/attest-build-provenance@v2 with: subject-name: index.docker.io/my-docker-hub-namespace/my-docker-hub-repository subject-digest: ${{ steps.push.outputs.digest }} push-to-registry: true </pre> </header> <pre><code class="hljs language-yaml"><span class="hljs-comment"># This workflow uses actions that are not certified by GitHub.</span> <span class="hljs-comment"># They are provided by a third-party and are governed by</span> <span class="hljs-comment"># separate terms of service, privacy policy, and support</span> <span class="hljs-comment"># documentation.</span> <span class="hljs-comment"># GitHub recommends pinning actions to a commit SHA.</span> <span class="hljs-comment"># To get a newer version, you will need to update the SHA.</span> <span class="hljs-comment"># You can also reference a tag or branch, but the action may change without warning.</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Publish</span> <span class="hljs-string">Docker</span> <span class="hljs-string">image</span> <span class="hljs-attr">on:</span> <span class="hljs-attr">release:</span> <span class="hljs-attr">types:</span> [<span class="hljs-string">published</span>] <span class="hljs-attr">jobs:</span> <span class="hljs-attr">push_to_registry:</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Push</span> <span class="hljs-string">Docker</span> <span class="hljs-string">image</span> <span class="hljs-string">to</span> <span class="hljs-string">Docker</span> <span class="hljs-string">Hub</span> <span class="hljs-attr">runs-on:</span> <span class="hljs-string">ubuntu-latest</span> <span class="hljs-attr">permissions:</span> <span class="hljs-attr">packages:</span> <span class="hljs-string">write</span> <span class="hljs-attr">contents:</span> <span class="hljs-string">read</span> <span class="hljs-attr">attestations:</span> <span class="hljs-string">write</span> <span class="hljs-attr">id-token:</span> <span class="hljs-string">write</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">the</span> <span class="hljs-string">repo</span> <span class="hljs-attr">uses:</span> <span class="hljs-string">actions/checkout@v4</span> <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Log</span> <span class="hljs-string">in</span> <span class="hljs-string">to</span> <span class="hljs-string">Docker</span> <span class="hljs-string">Hub</span> <span class="hljs-attr">uses:</span> <span class="hljs-string">docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a</span> <span class="hljs-attr">with:</span> <span class="hljs-attr">username:</span> <span class="hljs-string">${{</span> <span class="hljs-string">secrets.DOCKER_USERNAME</span> <span class="hljs-string">}}</span> <span class="hljs-attr">password:</span> <span class="hljs-string">${{</span> <span class="hljs-string">secrets.DOCKER_PASSWORD</span> <span class="hljs-string">}}</span> <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Extract</span> <span class="hljs-string">metadata</span> <span class="hljs-string">(tags,</span> <span class="hljs-string">labels)</span> <span class="hljs-string">for</span> <span class="hljs-string">Docker</span> <span class="hljs-attr">id:</span> <span class="hljs-string">meta</span> <span class="hljs-attr">uses:</span> <span class="hljs-string">docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7</span> <span class="hljs-attr">with:</span> <span class="hljs-attr">images:</span> <span class="hljs-string">my-docker-hub-namespace/my-docker-hub-repository</span> <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Build</span> <span class="hljs-string">and</span> <span class="hljs-string">push</span> <span class="hljs-string">Docker</span> <span class="hljs-string">image</span> <span class="hljs-attr">id:</span> <span class="hljs-string">push</span> <span class="hljs-attr">uses:</span> <span class="hljs-string">docker/build-push-action@3b5e8027fcad23fda98b2e3ac259d8d67585f671</span> <span class="hljs-attr">with:</span> <span class="hljs-attr">context:</span> <span class="hljs-string">.</span> <span class="hljs-attr">file:</span> <span class="hljs-string">./Dockerfile</span> <span class="hljs-attr">push:</span> <span class="hljs-literal">true</span> <span class="hljs-attr">tags:</span> <span class="hljs-string">${{</span> <span class="hljs-string">steps.meta.outputs.tags</span> <span class="hljs-string">}}</span> <span class="hljs-attr">labels:</span> <span class="hljs-string">${{</span> <span class="hljs-string">steps.meta.outputs.labels</span> <span class="hljs-string">}}</span> <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Generate</span> <span class="hljs-string">artifact</span> <span class="hljs-string">attestation</span> <span class="hljs-attr">uses:</span> <span class="hljs-string">actions/attest-build-provenance@v2</span> <span class="hljs-attr">with:</span> <span class="hljs-attr">subject-name:</span> <span class="hljs-string">index.docker.io/my-docker-hub-namespace/my-docker-hub-repository</span> <span class="hljs-attr">subject-digest:</span> <span class="hljs-string">${{</span> <span class="hljs-string">steps.push.outputs.digest</span> <span class="hljs-string">}}</span> <span class="hljs-attr">push-to-registry:</span> <span class="hljs-literal">true</span> </code></pre> </div> <p>The above workflow checks out the GitHub repository, uses the <code>login-action</code> to log in to the registry, and then uses the <code>build-push-action</code> action to: build a Docker image based on your repository's <code>Dockerfile</code>; push the image to Docker Hub, and apply a tag to the image.</p> <p>In the last step, it generates an artifact attestation for the image, which increases supply chain security. For more information, see <a href="https://docs-github-com.translate.goog/en/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB" _originalhref="/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds">Using artifact attestations to establish provenance for builds</a>.</p> <h2 id="publishing-images-to-github-packages" tabindex="-1"><a class="heading-link" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/publishing-packages/publishing-docker-images?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB#publishing-images-to-github-packages">Publishing images to GitHub Packages<span class="heading-link-symbol" aria-hidden="true"></span></a></h2> <p>Each time you create a new release on GitHub, you can trigger a workflow to publish your image. The workflow in the example below runs when a change is pushed to the <code>release</code> branch.</p> <p>In the example workflow below, we use the Docker <code>login-action</code>, <code>metadata-action</code>, and <code>build-push-action</code> actions to build the Docker image, and if the build succeeds, push the built image to GitHub Packages.</p> <p>The <code>login-action</code> options required for GitHub Packages are:</p> <ul> <li><code>registry</code>: Must be set to <code>ghcr.io</code>.</li> <li><code>username</code>: You can use the <code>${{ github.actor }}</code> context to automatically use the username of the user that triggered the workflow run. For more information, see <a href="https://docs-github-com.translate.goog/en/actions/learn-github-actions/contexts?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB#github-context" _originalhref="/actions/learn-github-actions/contexts#github-context">Accessing contextual information about workflow runs</a>.</li> <li><code>password</code>: You can use the automatically-generated <code>GITHUB_TOKEN</code> secret for the password. For more information, see <a href="https://docs-github-com.translate.goog/en/actions/security-guides/automatic-token-authentication?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB" _originalhref="/actions/security-guides/automatic-token-authentication">Automatic token authentication</a>.</li> </ul> <p>The <code>metadata-action</code> option required for GitHub Packages is:</p> <ul> <li><code>images</code>: The namespace and name for the Docker image you are building.</li> </ul> <p>The <code>build-push-action</code> options required for GitHub Packages are:</p> <ul> <li><code>context</code>: Defines the build's context as the set of files located in the specified path.</li> <li><code>push</code>: If set to <code>true</code>, the image will be pushed to the registry if it is built successfully.</li> <li><code>tags</code> and <code>labels</code>: These are populated by output from <code>metadata-action</code>.</li> </ul> <div class="ghd-alert ghd-alert-accent"> <p class="ghd-alert-title"> <svg version="1.1" width="16" height="16" viewbox="0 0 16 16" class="octicon mr-2" aria-hidden> <path d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path> </svg>Note</p> <p></p> <ul> <li>This workflow uses actions that are not certified by GitHub. They are provided by a third-party and are governed by separate terms of service, privacy policy, and support documentation.</li> <li>GitHub recommends pinning actions to a commit SHA. To get a newer version, you will need to update the SHA. You can also reference a tag or branch, but the action may change without warning.</li> </ul> </div> <div class="annotate beside"> <div class="annotate-header"> <header class="d-flex flex-items-center flex-justify-between p-2 text-small rounded-top-1 border-top border-left border-right"> <span class="flex-1">YAML</span> <div class="annotate-toggle"> <button name="annotate-display" value="beside" type="button" class="annotate-option">Beside</button><button name="annotate-display" value="inline" type="button" class="annotate-option">Inline</button> </div><button class="js-btn-copy btn btn-sm tooltipped tooltipped-nw" aria-label="Copy YAML code to clipboard" data-clipboard="1173902677"> <svg version="1.1" width="16" height="16" viewbox="0 0 16 16" class="octicon octicon-copy" aria-hidden="true"> <path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path> </svg></button> <pre hidden data-clipboard="1173902677"># name: Create and publish a Docker image # Configures this workflow to run every time a change is pushed to the branch called `release`. on: push: branches: ['release'] # Defines two custom environment variables for the workflow. These are used for the Container registry domain, and a name for the Docker image that this workflow builds. env: REGISTRY: ghcr.io IMAGE_NAME: ${{ github.repository }} # There is a single job in this workflow. It's configured to run on the latest available version of Ubuntu. jobs: build-and-push-image: runs-on: ubuntu-latest # Sets the permissions granted to the `GITHUB_TOKEN` for the actions in this job. permissions: contents: read packages: write attestations: write id-token: write # steps: - name: Checkout repository uses: actions/checkout@v4 # Uses the `docker/login-action` action to log in to the Container registry registry using the account and password that will publish the packages. Once published, the packages are scoped to the account defined here. - name: Log in to the Container registry uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1 with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} # This step uses [docker/metadata-action](https://github.com/docker/metadata-action#about) to extract tags and labels that will be applied to the specified image. The `id` "meta" allows the output of this step to be referenced in a subsequent step. The `images` value provides the base name for the tags and labels. - name: Extract metadata (tags, labels) for Docker id: meta uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 with: images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} # This step uses the `docker/build-push-action` action to build the image, based on your repository's `Dockerfile`. If the build succeeds, it pushes the image to GitHub Packages. # It uses the `context` parameter to define the build's context as the set of files located in the specified path. For more information, see [Usage](https://github.com/docker/build-push-action#usage) in the README of the `docker/build-push-action` repository. # It uses the `tags` and `labels` parameters to tag and label the image with the output from the "meta" step. - name: Build and push Docker image id: push uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4 with: context: . push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} # This step generates an artifact attestation for the image, which is an unforgeable statement about where and how it was built. It increases supply chain security for people who consume the image. For more information, see [Using artifact attestations to establish provenance for builds](/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds). - name: Generate artifact attestation uses: actions/attest-build-provenance@v2 with: subject-name: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME}} subject-digest: ${{ steps.push.outputs.digest }} push-to-registry: true </pre> </header> </div> <div class="annotate-beside"> <div class="annotate-row"> <div class="annotate-code"> <pre><code class="hljs language-yaml"><span class="hljs-attr">name:</span> <span class="hljs-string">Create</span> <span class="hljs-string">and</span> <span class="hljs-string">publish</span> <span class="hljs-string">a</span> <span class="hljs-string">Docker</span> <span class="hljs-string">image</span></code></pre> </div> <div class="annotate-note"></div> </div> <div class="annotate-row"> <div class="annotate-code"> <pre><code class="hljs language-yaml"><span class="hljs-attr">on:</span> <span class="hljs-attr">push:</span> <span class="hljs-attr">branches:</span> [<span class="hljs-string">'release'</span>]</code></pre> </div> <div class="annotate-note"> <p>Configures this workflow to run every time a change is pushed to the branch called <code>release</code>.</p> </div> </div> <div class="annotate-row"> <div class="annotate-code"> <pre><code class="hljs language-yaml"><span class="hljs-attr">env:</span> <span class="hljs-attr">REGISTRY:</span> <span class="hljs-string">ghcr.io</span> <span class="hljs-attr">IMAGE_NAME:</span> <span class="hljs-string">${{</span> <span class="hljs-string">github.repository</span> <span class="hljs-string">}}</span></code></pre> </div> <div class="annotate-note"> <p>Defines two custom environment variables for the workflow. These are used for the Container registry domain, and a name for the Docker image that this workflow builds.</p> </div> </div> <div class="annotate-row"> <div class="annotate-code"> <pre><code class="hljs language-yaml"><span class="hljs-attr">jobs:</span> <span class="hljs-attr">build-and-push-image:</span> <span class="hljs-attr">runs-on:</span> <span class="hljs-string">ubuntu-latest</span></code></pre> </div> <div class="annotate-note"> <p>There is a single job in this workflow. It's configured to run on the latest available version of Ubuntu.</p> </div> </div> <div class="annotate-row"> <div class="annotate-code"> <pre><code class="hljs language-yaml"> <span class="hljs-attr">permissions:</span> <span class="hljs-attr">contents:</span> <span class="hljs-string">read</span> <span class="hljs-attr">packages:</span> <span class="hljs-string">write</span> <span class="hljs-attr">attestations:</span> <span class="hljs-string">write</span> <span class="hljs-attr">id-token:</span> <span class="hljs-string">write</span></code></pre> </div> <div class="annotate-note"> <p>Sets the permissions granted to the <code>GITHUB_TOKEN</code> for the actions in this job.</p> </div> </div> <div class="annotate-row"> <div class="annotate-code"> <pre><code class="hljs language-yaml"> <span class="hljs-attr">steps:</span> <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Checkout</span> <span class="hljs-string">repository</span> <span class="hljs-attr">uses:</span> <span class="hljs-string">actions/checkout@v4</span></code></pre> </div> <div class="annotate-note"></div> </div> <div class="annotate-row"> <div class="annotate-code"> <pre><code class="hljs language-yaml"> <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Log</span> <span class="hljs-string">in</span> <span class="hljs-string">to</span> <span class="hljs-string">the</span> <span class="hljs-string">Container</span> <span class="hljs-string">registry</span> <span class="hljs-attr">uses:</span> <span class="hljs-string">docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1</span> <span class="hljs-attr">with:</span> <span class="hljs-attr">registry:</span> <span class="hljs-string">${{</span> <span class="hljs-string">env.REGISTRY</span> <span class="hljs-string">}}</span> <span class="hljs-attr">username:</span> <span class="hljs-string">${{</span> <span class="hljs-string">github.actor</span> <span class="hljs-string">}}</span> <span class="hljs-attr">password:</span> <span class="hljs-string">${{</span> <span class="hljs-string">secrets.GITHUB_TOKEN</span> <span class="hljs-string">}}</span></code></pre> </div> <div class="annotate-note"> <p>Uses the <code>docker/login-action</code> action to log in to the Container registry registry using the account and password that will publish the packages. Once published, the packages are scoped to the account defined here.</p> </div> </div> <div class="annotate-row"> <div class="annotate-code"> <pre><code class="hljs language-yaml"> <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Extract</span> <span class="hljs-string">metadata</span> <span class="hljs-string">(tags,</span> <span class="hljs-string">labels)</span> <span class="hljs-string">for</span> <span class="hljs-string">Docker</span> <span class="hljs-attr">id:</span> <span class="hljs-string">meta</span> <span class="hljs-attr">uses:</span> <span class="hljs-string">docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7</span> <span class="hljs-attr">with:</span> <span class="hljs-attr">images:</span> <span class="hljs-string">${{</span> <span class="hljs-string">env.REGISTRY</span> <span class="hljs-string">}}/${{</span> <span class="hljs-string">env.IMAGE_NAME</span> <span class="hljs-string">}}</span></code></pre> </div> <div class="annotate-note"> <p>This step uses <a href="https://translate.google.com/website?sl=pl&amp;tl=ja&amp;hl=en-GB&amp;u=https://github.com/docker/metadata-action%23about">docker/metadata-action</a> to extract tags and labels that will be applied to the specified image. The <code>id</code> "meta" allows the output of this step to be referenced in a subsequent step. The <code>images</code> value provides the base name for the tags and labels.</p> </div> </div> <div class="annotate-row"> <div class="annotate-code"> <pre><code class="hljs language-yaml"> <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Build</span> <span class="hljs-string">and</span> <span class="hljs-string">push</span> <span class="hljs-string">Docker</span> <span class="hljs-string">image</span> <span class="hljs-attr">id:</span> <span class="hljs-string">push</span> <span class="hljs-attr">uses:</span> <span class="hljs-string">docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4</span> <span class="hljs-attr">with:</span> <span class="hljs-attr">context:</span> <span class="hljs-string">.</span> <span class="hljs-attr">push:</span> <span class="hljs-literal">true</span> <span class="hljs-attr">tags:</span> <span class="hljs-string">${{</span> <span class="hljs-string">steps.meta.outputs.tags</span> <span class="hljs-string">}}</span> <span class="hljs-attr">labels:</span> <span class="hljs-string">${{</span> <span class="hljs-string">steps.meta.outputs.labels</span> <span class="hljs-string">}}</span></code></pre> </div> <div class="annotate-note"> <p>This step uses the <code>docker/build-push-action</code> action to build the image, based on your repository's <code>Dockerfile</code>. If the build succeeds, it pushes the image to GitHub Packages. It uses the <code>context</code> parameter to define the build's context as the set of files located in the specified path. For more information, see <a href="https://translate.google.com/website?sl=pl&amp;tl=ja&amp;hl=en-GB&amp;u=https://github.com/docker/build-push-action%23usage">Usage</a> in the README of the <code>docker/build-push-action</code> repository. It uses the <code>tags</code> and <code>labels</code> parameters to tag and label the image with the output from the "meta" step.</p> </div> </div> <div class="annotate-row"> <div class="annotate-code"> <pre><code class="hljs language-yaml"> <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Generate</span> <span class="hljs-string">artifact</span> <span class="hljs-string">attestation</span> <span class="hljs-attr">uses:</span> <span class="hljs-string">actions/attest-build-provenance@v2</span> <span class="hljs-attr">with:</span> <span class="hljs-attr">subject-name:</span> <span class="hljs-string">${{</span> <span class="hljs-string">env.REGISTRY</span> <span class="hljs-string">}}/${{</span> <span class="hljs-string">env.IMAGE_NAME}}</span> <span class="hljs-attr">subject-digest:</span> <span class="hljs-string">${{</span> <span class="hljs-string">steps.push.outputs.digest</span> <span class="hljs-string">}}</span> <span class="hljs-attr">push-to-registry:</span> <span class="hljs-literal">true</span></code></pre> </div> <div class="annotate-note"> <p>This step generates an artifact attestation for the image, which is an unforgeable statement about where and how it was built. It increases supply chain security for people who consume the image. For more information, see <a href="https://docs-github-com.translate.goog/en/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB" _originalhref="/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds">Using artifact attestations to establish provenance for builds</a>.</p> </div> </div> </div> <div class="annotate-inline"> <pre><code class="hljs language-yaml"><span class="hljs-comment">#</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Create</span> <span class="hljs-string">and</span> <span class="hljs-string">publish</span> <span class="hljs-string">a</span> <span class="hljs-string">Docker</span> <span class="hljs-string">image</span> <span class="hljs-comment"># Configures this workflow to run every time a change is pushed to the branch called `release`.</span> <span class="hljs-attr">on:</span> <span class="hljs-attr">push:</span> <span class="hljs-attr">branches:</span> [<span class="hljs-string">'release'</span>] <span class="hljs-comment"># Defines two custom environment variables for the workflow. These are used for the Container registry domain, and a name for the Docker image that this workflow builds.</span> <span class="hljs-attr">env:</span> <span class="hljs-attr">REGISTRY:</span> <span class="hljs-string">ghcr.io</span> <span class="hljs-attr">IMAGE_NAME:</span> <span class="hljs-string">${{</span> <span class="hljs-string">github.repository</span> <span class="hljs-string">}}</span> <span class="hljs-comment"># There is a single job in this workflow. It's configured to run on the latest available version of Ubuntu.</span> <span class="hljs-attr">jobs:</span> <span class="hljs-attr">build-and-push-image:</span> <span class="hljs-attr">runs-on:</span> <span class="hljs-string">ubuntu-latest</span> <span class="hljs-comment"># Sets the permissions granted to the `GITHUB_TOKEN` for the actions in this job.</span> <span class="hljs-attr">permissions:</span> <span class="hljs-attr">contents:</span> <span class="hljs-string">read</span> <span class="hljs-attr">packages:</span> <span class="hljs-string">write</span> <span class="hljs-attr">attestations:</span> <span class="hljs-string">write</span> <span class="hljs-attr">id-token:</span> <span class="hljs-string">write</span> <span class="hljs-comment">#</span> <span class="hljs-attr">steps:</span> <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Checkout</span> <span class="hljs-string">repository</span> <span class="hljs-attr">uses:</span> <span class="hljs-string">actions/checkout@v4</span> <span class="hljs-comment"># Uses the `docker/login-action` action to log in to the Container registry registry using the account and password that will publish the packages. Once published, the packages are scoped to the account defined here.</span> <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Log</span> <span class="hljs-string">in</span> <span class="hljs-string">to</span> <span class="hljs-string">the</span> <span class="hljs-string">Container</span> <span class="hljs-string">registry</span> <span class="hljs-attr">uses:</span> <span class="hljs-string">docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1</span> <span class="hljs-attr">with:</span> <span class="hljs-attr">registry:</span> <span class="hljs-string">${{</span> <span class="hljs-string">env.REGISTRY</span> <span class="hljs-string">}}</span> <span class="hljs-attr">username:</span> <span class="hljs-string">${{</span> <span class="hljs-string">github.actor</span> <span class="hljs-string">}}</span> <span class="hljs-attr">password:</span> <span class="hljs-string">${{</span> <span class="hljs-string">secrets.GITHUB_TOKEN</span> <span class="hljs-string">}}</span> <span class="hljs-comment"># This step uses [docker/metadata-action](https://github.com/docker/metadata-action#about) to extract tags and labels that will be applied to the specified image. The `id` "meta" allows the output of this step to be referenced in a subsequent step. The `images` value provides the base name for the tags and labels.</span> <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Extract</span> <span class="hljs-string">metadata</span> <span class="hljs-string">(tags,</span> <span class="hljs-string">labels)</span> <span class="hljs-string">for</span> <span class="hljs-string">Docker</span> <span class="hljs-attr">id:</span> <span class="hljs-string">meta</span> <span class="hljs-attr">uses:</span> <span class="hljs-string">docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7</span> <span class="hljs-attr">with:</span> <span class="hljs-attr">images:</span> <span class="hljs-string">${{</span> <span class="hljs-string">env.REGISTRY</span> <span class="hljs-string">}}/${{</span> <span class="hljs-string">env.IMAGE_NAME</span> <span class="hljs-string">}}</span> <span class="hljs-comment"># This step uses the `docker/build-push-action` action to build the image, based on your repository's `Dockerfile`. If the build succeeds, it pushes the image to GitHub Packages.</span> <span class="hljs-comment"># It uses the `context` parameter to define the build's context as the set of files located in the specified path. For more information, see [Usage](https://github.com/docker/build-push-action#usage) in the README of the `docker/build-push-action` repository.</span> <span class="hljs-comment"># It uses the `tags` and `labels` parameters to tag and label the image with the output from the "meta" step.</span> <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Build</span> <span class="hljs-string">and</span> <span class="hljs-string">push</span> <span class="hljs-string">Docker</span> <span class="hljs-string">image</span> <span class="hljs-attr">id:</span> <span class="hljs-string">push</span> <span class="hljs-attr">uses:</span> <span class="hljs-string">docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4</span> <span class="hljs-attr">with:</span> <span class="hljs-attr">context:</span> <span class="hljs-string">.</span> <span class="hljs-attr">push:</span> <span class="hljs-literal">true</span> <span class="hljs-attr">tags:</span> <span class="hljs-string">${{</span> <span class="hljs-string">steps.meta.outputs.tags</span> <span class="hljs-string">}}</span> <span class="hljs-attr">labels:</span> <span class="hljs-string">${{</span> <span class="hljs-string">steps.meta.outputs.labels</span> <span class="hljs-string">}}</span> <span class="hljs-comment"># This step generates an artifact attestation for the image, which is an unforgeable statement about where and how it was built. It increases supply chain security for people who consume the image. For more information, see [Using artifact attestations to establish provenance for builds](/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds).</span> <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Generate</span> <span class="hljs-string">artifact</span> <span class="hljs-string">attestation</span> <span class="hljs-attr">uses:</span> <span class="hljs-string">actions/attest-build-provenance@v2</span> <span class="hljs-attr">with:</span> <span class="hljs-attr">subject-name:</span> <span class="hljs-string">${{</span> <span class="hljs-string">env.REGISTRY</span> <span class="hljs-string">}}/${{</span> <span class="hljs-string">env.IMAGE_NAME}}</span> <span class="hljs-attr">subject-digest:</span> <span class="hljs-string">${{</span> <span class="hljs-string">steps.push.outputs.digest</span> <span class="hljs-string">}}</span> <span class="hljs-attr">push-to-registry:</span> <span class="hljs-literal">true</span> </code></pre> </div> </div> <p>The above workflow is triggered by a push to the "release" branch. It checks out the GitHub repository, and uses the <code>login-action</code> to log in to the Container registry. It then extracts labels and tags for the Docker image. Finally, it uses the <code>build-push-action</code> action to build the image and publish it on the Container registry.</p> <h2 id="publishing-images-to-docker-hub-and-github-packages" tabindex="-1"><a class="heading-link" href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/publishing-packages/publishing-docker-images?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB#publishing-images-to-docker-hub-and-github-packages">Publishing images to Docker Hub and GitHub Packages<span class="heading-link-symbol" aria-hidden="true"></span></a></h2> <p>In a single workflow, you can publish your Docker image to multiple registries by using the <code>login-action</code> and <code>build-push-action</code> actions for each registry.</p> <p>The following example workflow uses the steps from the previous sections (<a href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/publishing-packages/publishing-docker-images?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB#publishing-images-to-docker-hub">Publishing images to Docker Hub</a> and <a href="https://docs-github-com.translate.goog/en/actions/use-cases-and-examples/publishing-packages/publishing-docker-images?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB#publishing-images-to-github-packages">Publishing images to GitHub Packages</a>) to create a single workflow that pushes to both registries.</p> <div class="code-example"> <header class="d-flex flex-items-center flex-justify-between p-2 text-small rounded-top-1 border-top border-left border-right"> <span class="flex-1">YAML</span><button class="js-btn-copy btn btn-sm tooltipped tooltipped-nw" aria-label="Copy YAML code to clipboard" data-clipboard="2982505377"> <svg version="1.1" width="16" height="16" viewbox="0 0 16 16" class="octicon octicon-copy" aria-hidden="true"> <path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path> </svg></button> <pre hidden data-clipboard="2982505377"># This workflow uses actions that are not certified by GitHub. # They are provided by a third-party and are governed by # separate terms of service, privacy policy, and support # documentation. # GitHub recommends pinning actions to a commit SHA. # To get a newer version, you will need to update the SHA. # You can also reference a tag or branch, but the action may change without warning. name: Publish Docker image on: release: types: [published] jobs: push_to_registries: name: Push Docker image to multiple registries runs-on: ubuntu-latest permissions: packages: write contents: read attestations: write id-token: write steps: - name: Check out the repo uses: actions/checkout@v4 - name: Log in to Docker Hub uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Log in to the Container registry uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Extract metadata (tags, labels) for Docker id: meta uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 with: images: | my-docker-hub-namespace/my-docker-hub-repository ghcr.io/${{ github.repository }} - name: Build and push Docker images id: push uses: docker/build-push-action@3b5e8027fcad23fda98b2e3ac259d8d67585f671 with: context: . push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} - name: Generate artifact attestation uses: actions/attest-build-provenance@v2 with: subject-name: ghcr.io/${{ github.repository }} subject-digest: ${{ steps.push.outputs.digest }} push-to-registry: true </pre> </header> <pre><code class="hljs language-yaml"><span class="hljs-comment"># This workflow uses actions that are not certified by GitHub.</span> <span class="hljs-comment"># They are provided by a third-party and are governed by</span> <span class="hljs-comment"># separate terms of service, privacy policy, and support</span> <span class="hljs-comment"># documentation.</span> <span class="hljs-comment"># GitHub recommends pinning actions to a commit SHA.</span> <span class="hljs-comment"># To get a newer version, you will need to update the SHA.</span> <span class="hljs-comment"># You can also reference a tag or branch, but the action may change without warning.</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Publish</span> <span class="hljs-string">Docker</span> <span class="hljs-string">image</span> <span class="hljs-attr">on:</span> <span class="hljs-attr">release:</span> <span class="hljs-attr">types:</span> [<span class="hljs-string">published</span>] <span class="hljs-attr">jobs:</span> <span class="hljs-attr">push_to_registries:</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Push</span> <span class="hljs-string">Docker</span> <span class="hljs-string">image</span> <span class="hljs-string">to</span> <span class="hljs-string">multiple</span> <span class="hljs-string">registries</span> <span class="hljs-attr">runs-on:</span> <span class="hljs-string">ubuntu-latest</span> <span class="hljs-attr">permissions:</span> <span class="hljs-attr">packages:</span> <span class="hljs-string">write</span> <span class="hljs-attr">contents:</span> <span class="hljs-string">read</span> <span class="hljs-attr">attestations:</span> <span class="hljs-string">write</span> <span class="hljs-attr">id-token:</span> <span class="hljs-string">write</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">the</span> <span class="hljs-string">repo</span> <span class="hljs-attr">uses:</span> <span class="hljs-string">actions/checkout@v4</span> <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Log</span> <span class="hljs-string">in</span> <span class="hljs-string">to</span> <span class="hljs-string">Docker</span> <span class="hljs-string">Hub</span> <span class="hljs-attr">uses:</span> <span class="hljs-string">docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a</span> <span class="hljs-attr">with:</span> <span class="hljs-attr">username:</span> <span class="hljs-string">${{</span> <span class="hljs-string">secrets.DOCKER_USERNAME</span> <span class="hljs-string">}}</span> <span class="hljs-attr">password:</span> <span class="hljs-string">${{</span> <span class="hljs-string">secrets.DOCKER_PASSWORD</span> <span class="hljs-string">}}</span> <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Log</span> <span class="hljs-string">in</span> <span class="hljs-string">to</span> <span class="hljs-string">the</span> <span class="hljs-string">Container</span> <span class="hljs-string">registry</span> <span class="hljs-attr">uses:</span> <span class="hljs-string">docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1</span> <span class="hljs-attr">with:</span> <span class="hljs-attr">registry:</span> <span class="hljs-string">ghcr.io</span> <span class="hljs-attr">username:</span> <span class="hljs-string">${{</span> <span class="hljs-string">github.actor</span> <span class="hljs-string">}}</span> <span class="hljs-attr">password:</span> <span class="hljs-string">${{</span> <span class="hljs-string">secrets.GITHUB_TOKEN</span> <span class="hljs-string">}}</span> <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Extract</span> <span class="hljs-string">metadata</span> <span class="hljs-string">(tags,</span> <span class="hljs-string">labels)</span> <span class="hljs-string">for</span> <span class="hljs-string">Docker</span> <span class="hljs-attr">id:</span> <span class="hljs-string">meta</span> <span class="hljs-attr">uses:</span> <span class="hljs-string">docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7</span> <span class="hljs-attr">with:</span> <span class="hljs-attr">images:</span> <span class="hljs-string">| my-docker-hub-namespace/my-docker-hub-repository ghcr.io/${{ github.repository }} </span> <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Build</span> <span class="hljs-string">and</span> <span class="hljs-string">push</span> <span class="hljs-string">Docker</span> <span class="hljs-string">images</span> <span class="hljs-attr">id:</span> <span class="hljs-string">push</span> <span class="hljs-attr">uses:</span> <span class="hljs-string">docker/build-push-action@3b5e8027fcad23fda98b2e3ac259d8d67585f671</span> <span class="hljs-attr">with:</span> <span class="hljs-attr">context:</span> <span class="hljs-string">.</span> <span class="hljs-attr">push:</span> <span class="hljs-literal">true</span> <span class="hljs-attr">tags:</span> <span class="hljs-string">${{</span> <span class="hljs-string">steps.meta.outputs.tags</span> <span class="hljs-string">}}</span> <span class="hljs-attr">labels:</span> <span class="hljs-string">${{</span> <span class="hljs-string">steps.meta.outputs.labels</span> <span class="hljs-string">}}</span> <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Generate</span> <span class="hljs-string">artifact</span> <span class="hljs-string">attestation</span> <span class="hljs-attr">uses:</span> <span class="hljs-string">actions/attest-build-provenance@v2</span> <span class="hljs-attr">with:</span> <span class="hljs-attr">subject-name:</span> <span class="hljs-string">ghcr.io/${{</span> <span class="hljs-string">github.repository</span> <span class="hljs-string">}}</span> <span class="hljs-attr">subject-digest:</span> <span class="hljs-string">${{</span> <span class="hljs-string">steps.push.outputs.digest</span> <span class="hljs-string">}}</span> <span class="hljs-attr">push-to-registry:</span> <span class="hljs-literal">true</span> </code></pre> </div> <p>The above workflow checks out the GitHub repository, uses the <code>login-action</code> twice to log in to both registries and generates tags and labels with the <code>metadata-action</code> action. Then the <code>build-push-action</code> action builds and pushes the Docker image to Docker Hub and the Container registry.</p> <p>In the last step, it generates an artifact attestation for the image, which increases supply chain security. For more information, see <a href="https://docs-github-com.translate.goog/en/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB" _originalhref="/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds">Using artifact attestations to establish provenance for builds</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="octicon octicon-thumbsup color-fg-muted" viewbox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <path d="M8.347.631A.75.75 0 0 1 9.123.26l.238.04a3.25 3.25 0 0 1 2.591 4.098L11.494 6h.665a3.25 3.25 0 0 1 3.118 4.167l-1.135 3.859A2.751 2.751 0 0 1 11.503 16H6.586a3.75 3.75 0 0 1-2.184-.702A1.75 1.75 0 0 1 3 16H1.75A1.75 1.75 0 0 1 0 14.25v-6.5C0 6.784.784 6 1.75 6h3.417a.25.25 0 0 0 .217-.127ZM4.75 13.649l.396.33c.404.337.914.521 1.44.521h4.917a1.25 1.25 0 0 0 1.2-.897l1.135-3.859A1.75 1.75 0 0 0 12.159 7.5H10.5a.75.75 0 0 1-.721-.956l.731-2.558a1.75 1.75 0 0 0-1.127-2.14L6.69 6.611a1.75 1.75 0 0 1-1.523.889H4.75ZM3.25 7.5h-1.5a.25.25 0 0 0-.25.25v6.5c0 .138.112.25.25.25H3a.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="octicon octicon-thumbsdown color-fg-muted" viewbox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <path d="M7.653 15.369a.75.75 0 0 1-.776.371l-.238-.04a3.25 3.25 0 0 1-2.591-4.099L4.506 10h-.665A3.25 3.25 0 0 1 .723 5.833l1.135-3.859A2.75 2.75 0 0 1 4.482 0H9.43c.78.003 1.538.25 2.168.702A1.752 1.752 0 0 1 12.989 0h1.272A1.75 1.75 0 0 1 16 1.75v6.5A1.75 1.75 0 0 1 14.25 10h-3.417a.25.25 0 0 0-.217.127ZM11.25 2.351l-.396-.33a2.248 2.248 0 0 0-1.44-.521H4.496a1.25 1.25 0 0 0-1.199.897L2.162 6.256A1.75 1.75 0 0 0 3.841 8.5H5.5a.75.75 0 0 1 .721.956l-.731 2.558a1.75 1.75 0 0 0 1.127 2.14L9.31 9.389a1.75 1.75 0 0 1 1.523-.889h.417Zm1.5 6.149h1.5a.25.25 0 0 0 .25-.25v-6.5a.25.25 0 0 0-.25-.25H13a.25.25 0 0 0-.25.25Z"></path> </svg><!-- -->No</label> </div><a rel="" class="f6 text-underline" target="_blank" href="https://docs-github-com.translate.goog/en/site-policy/privacy-policies/github-privacy-statement?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB">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://translate.google.com/website?sl=pl&amp;tl=ja&amp;hl=en-GB&amp;u=https://github.com/github/docs/blob/main/content/actions/use-cases-and-examples/publishing-packages/publishing-docker-images.md"> <svg aria-hidden="true" focusable="false" class="octicon octicon-git-pull-request octicon mr-1" viewbox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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="https://docs-github-com.translate.goog/contributing?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB" 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://translate.google.com/website?sl=pl&amp;tl=ja&amp;hl=en-GB&amp;u=https://github.com/orgs/community/discussions" class="text-underline"> <svg aria-hidden="true" focusable="false" class="octicon octicon-people octicon mr-1" viewbox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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://translate.google.com/website?sl=pl&amp;tl=ja&amp;hl=en-GB&amp;u=https://support.github.com" class="text-underline"> <svg aria-hidden="true" focusable="false" class="octicon octicon-comment-discussion octicon mr-1" viewbox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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">© <!-- -->2025<!-- --> GitHub, Inc.</li> <li class="mr-3"><a class="text-underline" href="https://docs-github-com.translate.goog/en/site-policy/github-terms/github-terms-of-service?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB">Terms</a></li> <li class="mr-3"><a class="text-underline" href="https://docs-github-com.translate.goog/en/site-policy/privacy-policies/github-privacy-statement?_x_tr_sl=pl&amp;_x_tr_tl=ja&amp;_x_tr_hl=en-GB">Privacy</a></li> <li class="mr-3"><a class="text-underline" href="https://translate.google.com/website?sl=pl&amp;tl=ja&amp;hl=en-GB&amp;u=https://www.githubstatus.com/">Status</a></li> <li class="mr-3"><a class="text-underline" href="https://translate.google.com/website?sl=pl&amp;tl=ja&amp;hl=en-GB&amp;u=https://github.com/pricing">Pricing</a></li> <li class="mr-3"><a class="text-underline" href="https://translate.google.com/website?sl=pl&amp;tl=ja&amp;hl=en-GB&amp;u=https://services.github.com">Expert services</a></li> <li class="mr-3"><a class="text-underline" href="https://translate.google.com/website?sl=pl&amp;tl=ja&amp;hl=en-GB&amp;u=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" display="inline-block" overflow="visible" style="vertical-align:text-bottom"> <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/use-cases-and-examples","title":"Use cases and examples"},{"href":"/en/actions/use-cases-and-examples/publishing-packages","title":"Publish packages"},{"href":"/en/actions/use-cases-and-examples/publishing-packages/publishing-docker-images","title":"Publish Docker images"}],"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"]},"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","open_menu_label":"Open menu","go_home":"Home"},"search":{"input":{"aria_label":"Open search overlay","placeholder":"Search or ask Copilot"},"overlay":{"input_aria_label":"Search or ask Copilot","suggestions_list_aria_label":"Search suggestions","ai_suggestions_list_aria_label":"Copilot search suggestions","general_suggestions_list_aria_label":"Docs search suggestions","general_suggestions_list_heading":"Search docs","ai_autocomplete_list_heading":"Ask Copilot","give_feedback":"Give feedback","beta_tag":"Beta","return_to_search":"Return to search","clear_search_query":"Clear"},"ai":{"disclaimer":"Copilot uses AI. Check for mistakes by reviewing the links in the response.","references":"References from these articles","loading_status_message":"Loading Copilot response...","done_loading_status_message":"Done loading Copilot response","unable_to_answer":"Sorry, I'm unable to answer that question. Please try a different query.","copy_answer":"Copy answer","copied_announcement":"Copied!","thumbs_up":"This answer was helpful","thumbs_down":"This answer was not helpful","thumbs_announcement":"Thank you for your feedback!"},"failure":{"autocomplete_title":"There was an error loading autocomplete results.","ai_title":"There was an error loading the AI assistant.","description":"You can still use this field to search our docs."}},"old_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."},"cookbook_landing":{"spotlight":"Spotlight","explore_articles":"Explore {{ number }} prompt articles","reset_filters":"Reset filters","search_articles":"Search articles","category":"Category","complexity":"Complexity"},"popovers":{"role_description":"hovercard link"}},"reusables":{},"variables":{"release_candidate":{"version":null}}},"currentCategory":"use-cases-and-examples","currentPathWithoutLanguage":"/actions/use-cases-and-examples/publishing-packages/publishing-docker-images","page":{"documentType":"article","type":"tutorial","title":"Publishing Docker images","fullTitle":"Publishing Docker images - GitHub Docs","topics":["Packaging","Publishing","Docker"],"introPlainText":"You can publish Docker images to a registry, such as Docker Hub or GitHub Packages, as part of your continuous integration (CI) workflow.","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"],"hidden":false,"noEarlyAccessBanner":false},"enterpriseServerReleases":{"isOldestReleaseDeprecated":true,"oldestSupported":"3.11","nextDeprecationDate":"2024-12-19","supported":["3.15","3.14","3.13","3.12","3.11"]},"enterpriseServerVersions":["enterprise-server@3.15","enterprise-server@3.14","enterprise-server@3.13","enterprise-server@3.12","enterprise-server@3.11"],"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}},"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/using-copilot-to-troubleshoot-workflows","title":"Use Copilot","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-rust","title":"Build \u0026 test Rust","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-internal.github.com/en/actions/use-cases-and-examples/publishing-packages/publishing-docker-images","currentLayoutName":"inline","relativePath":"actions/use-cases-and-examples/publishing-packages/publishing-docker-images.md"},"articleContext":{"title":"Publishing Docker images","intro":"\u003cp\u003eYou can publish Docker images to a registry, such as Docker Hub or GitHub Packages, as part of your continuous integration (CI) workflow.\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\u003eThis guide shows you how to create a workflow that performs a Docker build, and then publishes Docker images to Docker Hub or GitHub Packages. With a single workflow, you can publish images to a single registry or to multiple registries.\u003c/p\u003e\n\u003cdiv class=\"ghd-alert ghd-alert-accent\"\u003e\u003cp class=\"ghd-alert-title\"\u003e\u003csvg version=\"1.1\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"octicon mr-2\" aria-hidden\u003e\u003cpath d=\"M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z\"\u003e\u003c/path\u003e\u003c/svg\u003eNote\u003c/p\u003e\n\u003cp\u003e\nIf you want to push to another third-party Docker registry, the example in the \u003ca href=\"#publishing-images-to-github-packages\"\u003ePublishing images to GitHub Packages\u003c/a\u003e section can serve as a good template.\u003c/p\u003e\n\u003c/div\u003e\n\u003ch2 id=\"prerequisites\" tabindex=\"-1\"\u003e\u003ca class=\"heading-link\" href=\"#prerequisites\"\u003ePrerequisites\u003cspan class=\"heading-link-symbol\" aria-hidden=\"true\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eWe recommend that you have a basic understanding of workflow configuration options and how to create a workflow file. For more information, see \u003ca href=\"/en/actions/learn-github-actions\" _originalHref=\"/actions/learn-github-actions\"\u003eWriting workflows\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eYou might also find it helpful to have a basic understanding of the following:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\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/li\u003e\n\u003cli\u003e\u003ca href=\"/en/actions/security-guides/automatic-token-authentication\" _originalHref=\"/actions/security-guides/automatic-token-authentication\"\u003eAutomatic token authentication\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry\" _originalHref=\"/packages/working-with-a-github-packages-registry/working-with-the-container-registry\"\u003eWorking with the Container registry\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"about-image-configuration\" tabindex=\"-1\"\u003e\u003ca class=\"heading-link\" href=\"#about-image-configuration\"\u003eAbout image configuration\u003cspan class=\"heading-link-symbol\" aria-hidden=\"true\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThis guide assumes that you have a complete definition for a Docker image stored in a GitHub repository. For example, your repository must contain a \u003cem\u003eDockerfile\u003c/em\u003e, and any other files needed to perform a Docker build to create an image.\u003c/p\u003e\n\u003cp\u003eYou can use pre-defined annotation keys to add metadata including a description, a license, and a source repository to your container image. For more information, see \u003ca href=\"/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry#labelling-container-images\" _originalHref=\"/packages/working-with-a-github-packages-registry/working-with-the-container-registry#labelling-container-images\"\u003eWorking with the Container registry\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eIn this guide, we will use the Docker \u003ccode\u003ebuild-push-action\u003c/code\u003e action to build the Docker image and push it to one or more Docker registries. For more information, see \u003ca href=\"https://github.com/marketplace/actions/build-and-push-docker-images\"\u003e\u003ccode\u003ebuild-push-action\u003c/code\u003e\u003c/a\u003e.\u003c/p\u003e\n\u003ch2 id=\"publishing-images-to-docker-hub\" tabindex=\"-1\"\u003e\u003ca class=\"heading-link\" href=\"#publishing-images-to-docker-hub\"\u003ePublishing images to Docker Hub\u003cspan class=\"heading-link-symbol\" aria-hidden=\"true\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eEach time you create a new release on GitHub, you can trigger a workflow to publish your image. The workflow in the example below runs when the \u003ccode\u003erelease\u003c/code\u003e event triggers with the \u003ccode\u003epublished\u003c/code\u003e activity type.\u003c/p\u003e\n\u003cp\u003eIn the example workflow below, we use the Docker \u003ccode\u003elogin-action\u003c/code\u003e and \u003ccode\u003ebuild-push-action\u003c/code\u003e actions to build the Docker image and, if the build succeeds, push the built image to Docker Hub.\u003c/p\u003e\n\u003cp\u003eTo push to Docker Hub, you will need to have a Docker Hub account, and have a Docker Hub repository created. For more information, see \u003ca href=\"https://docs.docker.com/docker-hub/quickstart/#step-3-build-and-push-an-image-to-docker-hub\"\u003ePushing a Docker container image to Docker Hub\u003c/a\u003e in the Docker documentation.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003elogin-action\u003c/code\u003e options required for Docker Hub are:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eusername\u003c/code\u003e and \u003ccode\u003epassword\u003c/code\u003e: This is your Docker Hub username and password. We recommend storing your Docker Hub username and password as secrets so they aren't exposed in your workflow file. For more information, see \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/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe \u003ccode\u003emetadata-action\u003c/code\u003e option required for Docker Hub is:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eimages\u003c/code\u003e: The namespace and name for the Docker image you are building/pushing to Docker Hub.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe \u003ccode\u003ebuild-push-action\u003c/code\u003e options required for Docker Hub are:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003etags\u003c/code\u003e: The tag of your new image in the format \u003ccode\u003eDOCKER-HUB-NAMESPACE/DOCKER-HUB-REPOSITORY:VERSION\u003c/code\u003e. You can set a single tag as shown below, or specify multiple tags in a list.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003epush\u003c/code\u003e: If set to \u003ccode\u003etrue\u003c/code\u003e, the image will be pushed to the registry if it is built successfully.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"code-example\"\u003e\u003cheader class=\"d-flex flex-items-center flex-justify-between p-2 text-small rounded-top-1 border-top border-left border-right\"\u003e\u003cspan class=\"flex-1\"\u003eYAML\u003c/span\u003e\u003cbutton class=\"js-btn-copy btn btn-sm tooltipped tooltipped-nw\" aria-label=\"Copy YAML code to clipboard\" data-clipboard=\"110038332\"\u003e\u003csvg version=\"1.1\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"octicon octicon-copy\" aria-hidden=\"true\"\u003e\u003cpath d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"\u003e\u003c/path\u003e\u003cpath d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/button\u003e\u003cpre hidden data-clipboard=\"110038332\"\u003e# This workflow uses actions that are not certified by GitHub.\n# They are provided by a third-party and are governed by\n# separate terms of service, privacy policy, and support\n# documentation.\n\n# GitHub recommends pinning actions to a commit SHA.\n# To get a newer version, you will need to update the SHA.\n# You can also reference a tag or branch, but the action may change without warning.\n\nname: Publish Docker image\n\non:\n release:\n types: [published]\n\njobs:\n push_to_registry:\n name: Push Docker image to Docker Hub\n runs-on: ubuntu-latest\n permissions:\n packages: write\n contents: read\n attestations: write\n id-token: write\n steps:\n - name: Check out the repo\n uses: actions/checkout@v4\n\n - name: Log in to Docker Hub\n uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a\n with:\n username: ${{ secrets.DOCKER_USERNAME }}\n password: ${{ secrets.DOCKER_PASSWORD }}\n\n - name: Extract metadata (tags, labels) for Docker\n id: meta\n uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7\n with:\n images: my-docker-hub-namespace/my-docker-hub-repository\n\n - name: Build and push Docker image\n id: push\n uses: docker/build-push-action@3b5e8027fcad23fda98b2e3ac259d8d67585f671\n with:\n context: .\n file: ./Dockerfile\n push: true\n tags: ${{ steps.meta.outputs.tags }}\n labels: ${{ steps.meta.outputs.labels }}\n\n - name: Generate artifact attestation\n uses: actions/attest-build-provenance@v2\n with:\n subject-name: index.docker.io/my-docker-hub-namespace/my-docker-hub-repository\n subject-digest: ${{ steps.push.outputs.digest }}\n push-to-registry: true\n\u003c/pre\u003e\u003c/header\u003e\u003cpre\u003e\u003ccode class=\"hljs language-yaml\"\u003e\u003cspan class=\"hljs-comment\"\u003e# This workflow uses actions that are not certified by GitHub.\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e# They are provided by a third-party and are governed by\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e# separate terms of service, privacy policy, and support\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e# documentation.\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e# GitHub recommends pinning actions to a commit SHA.\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e# To get a newer version, you will need to update the SHA.\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e# You can also reference a tag or branch, but the action may change without warning.\u003c/span\u003e\n\n\u003cspan class=\"hljs-attr\"\u003ename:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003ePublish\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eDocker\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eimage\u003c/span\u003e\n\n\u003cspan class=\"hljs-attr\"\u003eon:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003erelease:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003etypes:\u003c/span\u003e [\u003cspan class=\"hljs-string\"\u003epublished\u003c/span\u003e]\n\n\u003cspan class=\"hljs-attr\"\u003ejobs:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003epush_to_registry:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003ename:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003ePush\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eDocker\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eimage\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eto\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eDocker\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eHub\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\"\u003epermissions:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003epackages:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003ewrite\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003econtents:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eread\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eattestations:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003ewrite\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eid-token:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003ewrite\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\"\u003eCheck\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eout\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003ethe\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003erepo\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-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-attr\"\u003ename:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eLog\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003ein\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eto\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eDocker\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eHub\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003euses:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003edocker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003ewith:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eusername:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e${{\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003esecrets.DOCKER_USERNAME\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e}}\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003epassword:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e${{\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003esecrets.DOCKER_PASSWORD\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e}}\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\"\u003eExtract\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003emetadata\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e(tags,\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003elabels)\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003efor\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eDocker\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eid:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003emeta\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003euses:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003edocker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003ewith:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eimages:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003emy-docker-hub-namespace/my-docker-hub-repository\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\"\u003eBuild\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eand\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003epush\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eDocker\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eimage\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eid:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003epush\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003euses:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003edocker/build-push-action@3b5e8027fcad23fda98b2e3ac259d8d67585f671\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003ewith:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003econtext:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e.\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003efile:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e./Dockerfile\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003epush:\u003c/span\u003e \u003cspan class=\"hljs-literal\"\u003etrue\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003etags:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e${{\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003esteps.meta.outputs.tags\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e}}\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003elabels:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e${{\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003esteps.meta.outputs.labels\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e}}\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\"\u003eGenerate\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eartifact\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eattestation\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003euses:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eactions/attest-build-provenance@v2\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003ewith:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003esubject-name:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eindex.docker.io/my-docker-hub-namespace/my-docker-hub-repository\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003esubject-digest:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e${{\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003esteps.push.outputs.digest\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e}}\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003epush-to-registry:\u003c/span\u003e \u003cspan class=\"hljs-literal\"\u003etrue\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe above workflow checks out the GitHub repository, uses the \u003ccode\u003elogin-action\u003c/code\u003e to log in to the registry, and then uses the \u003ccode\u003ebuild-push-action\u003c/code\u003e action to: build a Docker image based on your repository's \u003ccode\u003eDockerfile\u003c/code\u003e; push the image to Docker Hub, and apply a tag to the image.\u003c/p\u003e\n\u003cp\u003eIn the last step, it generates an artifact attestation for the image, which increases supply chain security. For more information, see \u003ca href=\"/en/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds\" _originalHref=\"/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds\"\u003eUsing artifact attestations to establish provenance for builds\u003c/a\u003e.\u003c/p\u003e\n\u003ch2 id=\"publishing-images-to-github-packages\" tabindex=\"-1\"\u003e\u003ca class=\"heading-link\" href=\"#publishing-images-to-github-packages\"\u003ePublishing images to GitHub Packages\u003cspan class=\"heading-link-symbol\" aria-hidden=\"true\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eEach time you create a new release on GitHub, you can trigger a workflow to publish your image. The workflow in the example below runs when a change is pushed to the \u003ccode\u003erelease\u003c/code\u003e branch.\u003c/p\u003e\n\u003cp\u003eIn the example workflow below, we use the Docker \u003ccode\u003elogin-action\u003c/code\u003e, \u003ccode\u003emetadata-action\u003c/code\u003e, and \u003ccode\u003ebuild-push-action\u003c/code\u003e actions to build the Docker image, and if the build succeeds, push the built image to GitHub Packages.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003elogin-action\u003c/code\u003e options required for GitHub Packages are:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eregistry\u003c/code\u003e: Must be set to \u003ccode\u003eghcr.io\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eusername\u003c/code\u003e: You can use the \u003ccode\u003e${{ github.actor }}\u003c/code\u003e context to automatically use the username of the user that triggered the workflow run. For more information, see \u003ca href=\"/en/actions/learn-github-actions/contexts#github-context\" _originalHref=\"/actions/learn-github-actions/contexts#github-context\"\u003eAccessing contextual information about workflow runs\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003epassword\u003c/code\u003e: You can use the automatically-generated \u003ccode\u003eGITHUB_TOKEN\u003c/code\u003e secret for the password. For more information, see \u003ca href=\"/en/actions/security-guides/automatic-token-authentication\" _originalHref=\"/actions/security-guides/automatic-token-authentication\"\u003eAutomatic token authentication\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe \u003ccode\u003emetadata-action\u003c/code\u003e option required for GitHub Packages is:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eimages\u003c/code\u003e: The namespace and name for the Docker image you are building.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe \u003ccode\u003ebuild-push-action\u003c/code\u003e options required for GitHub Packages are:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003econtext\u003c/code\u003e: Defines the build's context as the set of files located in the specified path.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003epush\u003c/code\u003e: If set to \u003ccode\u003etrue\u003c/code\u003e, the image will be pushed to the registry if it is built successfully.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003etags\u003c/code\u003e and \u003ccode\u003elabels\u003c/code\u003e: These are populated by output from \u003ccode\u003emetadata-action\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"ghd-alert ghd-alert-accent\"\u003e\u003cp class=\"ghd-alert-title\"\u003e\u003csvg version=\"1.1\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"octicon mr-2\" aria-hidden\u003e\u003cpath d=\"M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z\"\u003e\u003c/path\u003e\u003c/svg\u003eNote\u003c/p\u003e\n\u003cp\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThis workflow uses actions that are not certified by GitHub. They are provided by a third-party and are governed by separate terms of service, privacy policy, and support documentation.\u003c/li\u003e\n\u003cli\u003eGitHub recommends pinning actions to a commit SHA. To get a newer version, you will need to update the SHA. You can also reference a tag or branch, but the action may change without warning.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/div\u003e\n\u003cdiv class=\"annotate beside\"\u003e\u003cdiv class=\"annotate-header\"\u003e\u003cheader class=\"d-flex flex-items-center flex-justify-between p-2 text-small rounded-top-1 border-top border-left border-right\"\u003e\u003cspan class=\"flex-1\"\u003eYAML\u003c/span\u003e\u003cdiv class=\"annotate-toggle\"\u003e\u003cbutton name=\"annotate-display\" value=\"beside\" type=\"button\" class=\"annotate-option\"\u003eBeside\u003c/button\u003e\u003cbutton name=\"annotate-display\" value=\"inline\" type=\"button\" class=\"annotate-option\"\u003eInline\u003c/button\u003e\u003c/div\u003e\u003cbutton class=\"js-btn-copy btn btn-sm tooltipped tooltipped-nw\" aria-label=\"Copy YAML code to clipboard\" data-clipboard=\"1173902677\"\u003e\u003csvg version=\"1.1\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"octicon octicon-copy\" aria-hidden=\"true\"\u003e\u003cpath d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"\u003e\u003c/path\u003e\u003cpath d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/button\u003e\u003cpre hidden data-clipboard=\"1173902677\"\u003e#\nname: Create and publish a Docker image\n\n# Configures this workflow to run every time a change is pushed to the branch called `release`.\non:\n push:\n branches: ['release']\n\n# Defines two custom environment variables for the workflow. These are used for the Container registry domain, and a name for the Docker image that this workflow builds.\nenv:\n REGISTRY: ghcr.io\n IMAGE_NAME: ${{ github.repository }}\n\n# There is a single job in this workflow. It's configured to run on the latest available version of Ubuntu.\njobs:\n build-and-push-image:\n runs-on: ubuntu-latest\n # Sets the permissions granted to the `GITHUB_TOKEN` for the actions in this job.\n permissions:\n contents: read\n packages: write\n attestations: write\n id-token: write\n #\n steps:\n - name: Checkout repository\n uses: actions/checkout@v4\n # Uses the `docker/login-action` action to log in to the Container registry registry using the account and password that will publish the packages. Once published, the packages are scoped to the account defined here.\n - name: Log in to the Container registry\n uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1\n with:\n registry: ${{ env.REGISTRY }}\n username: ${{ github.actor }}\n password: ${{ secrets.GITHUB_TOKEN }}\n # This step uses [docker/metadata-action](https://github.com/docker/metadata-action#about) to extract tags and labels that will be applied to the specified image. The `id` \"meta\" allows the output of this step to be referenced in a subsequent step. The `images` value provides the base name for the tags and labels.\n - name: Extract metadata (tags, labels) for Docker\n id: meta\n uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7\n with:\n images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}\n # This step uses the `docker/build-push-action` action to build the image, based on your repository's `Dockerfile`. If the build succeeds, it pushes the image to GitHub Packages.\n # It uses the `context` parameter to define the build's context as the set of files located in the specified path. For more information, see [Usage](https://github.com/docker/build-push-action#usage) in the README of the `docker/build-push-action` repository.\n # It uses the `tags` and `labels` parameters to tag and label the image with the output from the \"meta\" step.\n - name: Build and push Docker image\n id: push\n uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4\n with:\n context: .\n push: true\n tags: ${{ steps.meta.outputs.tags }}\n labels: ${{ steps.meta.outputs.labels }}\n \n # This step generates an artifact attestation for the image, which is an unforgeable statement about where and how it was built. It increases supply chain security for people who consume the image. For more information, see [Using artifact attestations to establish provenance for builds](/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds).\n - name: Generate artifact attestation\n uses: actions/attest-build-provenance@v2\n with:\n subject-name: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME}}\n subject-digest: ${{ steps.push.outputs.digest }}\n push-to-registry: true\n \n\u003c/pre\u003e\u003c/header\u003e\u003c/div\u003e\u003cdiv class=\"annotate-beside\"\u003e\u003cdiv class=\"annotate-row\"\u003e\u003cdiv class=\"annotate-code\"\u003e\u003cpre\u003e\u003ccode class=\"hljs language-yaml\"\u003e\u003cspan class=\"hljs-attr\"\u003ename:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eCreate\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eand\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003epublish\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003ea\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eDocker\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eimage\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cdiv class=\"annotate-note\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"annotate-row\"\u003e\u003cdiv class=\"annotate-code\"\u003e\u003cpre\u003e\u003ccode class=\"hljs language-yaml\"\u003e\u003cspan class=\"hljs-attr\"\u003eon:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003epush:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003ebranches:\u003c/span\u003e [\u003cspan class=\"hljs-string\"\u003e'release'\u003c/span\u003e]\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cdiv class=\"annotate-note\"\u003e\u003cp\u003eConfigures this workflow to run every time a change is pushed to the branch called \u003ccode\u003erelease\u003c/code\u003e.\u003c/p\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"annotate-row\"\u003e\u003cdiv class=\"annotate-code\"\u003e\u003cpre\u003e\u003ccode class=\"hljs language-yaml\"\u003e\u003cspan class=\"hljs-attr\"\u003eenv:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eREGISTRY:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eghcr.io\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eIMAGE_NAME:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e${{\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003egithub.repository\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e}}\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cdiv class=\"annotate-note\"\u003e\u003cp\u003eDefines two custom environment variables for the workflow. These are used for the Container registry domain, and a name for the Docker image that this workflow builds.\u003c/p\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"annotate-row\"\u003e\u003cdiv class=\"annotate-code\"\u003e\u003cpre\u003e\u003ccode class=\"hljs language-yaml\"\u003e\u003cspan class=\"hljs-attr\"\u003ejobs:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003ebuild-and-push-image:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eruns-on:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eubuntu-latest\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cdiv class=\"annotate-note\"\u003e\u003cp\u003eThere is a single job in this workflow. It's configured to run on the latest available version of Ubuntu.\u003c/p\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"annotate-row\"\u003e\u003cdiv class=\"annotate-code\"\u003e\u003cpre\u003e\u003ccode class=\"hljs language-yaml\"\u003e \u003cspan class=\"hljs-attr\"\u003epermissions:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003econtents:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eread\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003epackages:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003ewrite\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eattestations:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003ewrite\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eid-token:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003ewrite\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cdiv class=\"annotate-note\"\u003e\u003cp\u003eSets the permissions granted to the \u003ccode\u003eGITHUB_TOKEN\u003c/code\u003e for the actions in this job.\u003c/p\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"annotate-row\"\u003e\u003cdiv class=\"annotate-code\"\u003e\u003cpre\u003e\u003ccode class=\"hljs language-yaml\"\u003e \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\"\u003eCheckout\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003erepository\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003euses:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eactions/checkout@v4\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cdiv class=\"annotate-note\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"annotate-row\"\u003e\u003cdiv class=\"annotate-code\"\u003e\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\"\u003eLog\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003ein\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eto\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003ethe\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eContainer\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eregistry\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003euses:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003edocker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003ewith:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eregistry:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e${{\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eenv.REGISTRY\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e}}\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eusername:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e${{\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003egithub.actor\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e}}\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003epassword:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e${{\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003esecrets.GITHUB_TOKEN\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e}}\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cdiv class=\"annotate-note\"\u003e\u003cp\u003eUses the \u003ccode\u003edocker/login-action\u003c/code\u003e action to log in to the Container registry registry using the account and password that will publish the packages. Once published, the packages are scoped to the account defined here.\u003c/p\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"annotate-row\"\u003e\u003cdiv class=\"annotate-code\"\u003e\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\"\u003eExtract\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003emetadata\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e(tags,\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003elabels)\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003efor\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eDocker\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eid:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003emeta\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003euses:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003edocker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003ewith:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eimages:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e${{\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eenv.REGISTRY\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e}}/${{\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eenv.IMAGE_NAME\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e}}\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cdiv class=\"annotate-note\"\u003e\u003cp\u003eThis step uses \u003ca href=\"https://github.com/docker/metadata-action#about\"\u003edocker/metadata-action\u003c/a\u003e to extract tags and labels that will be applied to the specified image. The \u003ccode\u003eid\u003c/code\u003e \"meta\" allows the output of this step to be referenced in a subsequent step. The \u003ccode\u003eimages\u003c/code\u003e value provides the base name for the tags and labels.\u003c/p\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"annotate-row\"\u003e\u003cdiv class=\"annotate-code\"\u003e\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\"\u003eBuild\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eand\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003epush\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eDocker\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eimage\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eid:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003epush\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003euses:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003edocker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003ewith:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003econtext:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e.\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003epush:\u003c/span\u003e \u003cspan class=\"hljs-literal\"\u003etrue\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003etags:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e${{\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003esteps.meta.outputs.tags\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e}}\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003elabels:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e${{\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003esteps.meta.outputs.labels\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e}}\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cdiv class=\"annotate-note\"\u003e\u003cp\u003eThis step uses the \u003ccode\u003edocker/build-push-action\u003c/code\u003e action to build the image, based on your repository's \u003ccode\u003eDockerfile\u003c/code\u003e. If the build succeeds, it pushes the image to GitHub Packages.\nIt uses the \u003ccode\u003econtext\u003c/code\u003e parameter to define the build's context as the set of files located in the specified path. For more information, see \u003ca href=\"https://github.com/docker/build-push-action#usage\"\u003eUsage\u003c/a\u003e in the README of the \u003ccode\u003edocker/build-push-action\u003c/code\u003e repository.\nIt uses the \u003ccode\u003etags\u003c/code\u003e and \u003ccode\u003elabels\u003c/code\u003e parameters to tag and label the image with the output from the \"meta\" step.\u003c/p\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"annotate-row\"\u003e\u003cdiv class=\"annotate-code\"\u003e\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\"\u003eGenerate\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eartifact\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eattestation\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003euses:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eactions/attest-build-provenance@v2\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003ewith:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003esubject-name:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e${{\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eenv.REGISTRY\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e}}/${{\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eenv.IMAGE_NAME}}\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003esubject-digest:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e${{\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003esteps.push.outputs.digest\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e}}\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003epush-to-registry:\u003c/span\u003e \u003cspan class=\"hljs-literal\"\u003etrue\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cdiv class=\"annotate-note\"\u003e\u003cp\u003eThis step generates an artifact attestation for the image, which is an unforgeable statement about where and how it was built. It increases supply chain security for people who consume the image. For more information, see \u003ca href=\"/en/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds\" _originalHref=\"/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds\"\u003eUsing artifact attestations to establish provenance for builds\u003c/a\u003e.\u003c/p\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"annotate-inline\"\u003e\u003cpre\u003e\u003ccode class=\"hljs language-yaml\"\u003e\u003cspan class=\"hljs-comment\"\u003e#\u003c/span\u003e\n\u003cspan class=\"hljs-attr\"\u003ename:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eCreate\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eand\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003epublish\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003ea\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eDocker\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eimage\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e# Configures this workflow to run every time a change is pushed to the branch called `release`.\u003c/span\u003e\n\u003cspan class=\"hljs-attr\"\u003eon:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003epush:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003ebranches:\u003c/span\u003e [\u003cspan class=\"hljs-string\"\u003e'release'\u003c/span\u003e]\n\n\u003cspan class=\"hljs-comment\"\u003e# Defines two custom environment variables for the workflow. These are used for the Container registry domain, and a name for the Docker image that this workflow builds.\u003c/span\u003e\n\u003cspan class=\"hljs-attr\"\u003eenv:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eREGISTRY:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eghcr.io\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eIMAGE_NAME:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e${{\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003egithub.repository\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e}}\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e# There is a single job in this workflow. It's configured to run on the latest available version of Ubuntu.\u003c/span\u003e\n\u003cspan class=\"hljs-attr\"\u003ejobs:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003ebuild-and-push-image:\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-comment\"\u003e# Sets the permissions granted to the `GITHUB_TOKEN` for the actions in this job.\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003epermissions:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003econtents:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eread\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003epackages:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003ewrite\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eattestations:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003ewrite\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eid-token:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003ewrite\u003c/span\u003e\n \u003cspan class=\"hljs-comment\"\u003e#\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\"\u003eCheckout\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003erepository\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003euses:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eactions/checkout@v4\u003c/span\u003e\n \u003cspan class=\"hljs-comment\"\u003e# Uses the `docker/login-action` action to log in to the Container registry registry using the account and password that will publish the packages. Once published, the packages are scoped to the account defined here.\u003c/span\u003e\n \u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-attr\"\u003ename:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eLog\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003ein\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eto\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003ethe\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eContainer\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eregistry\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003euses:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003edocker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003ewith:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eregistry:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e${{\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eenv.REGISTRY\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e}}\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eusername:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e${{\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003egithub.actor\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e}}\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003epassword:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e${{\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003esecrets.GITHUB_TOKEN\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e}}\u003c/span\u003e\n \u003cspan class=\"hljs-comment\"\u003e# This step uses [docker/metadata-action](https://github.com/docker/metadata-action#about) to extract tags and labels that will be applied to the specified image. The `id` \"meta\" allows the output of this step to be referenced in a subsequent step. The `images` value provides the base name for the tags and labels.\u003c/span\u003e\n \u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-attr\"\u003ename:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eExtract\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003emetadata\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e(tags,\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003elabels)\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003efor\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eDocker\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eid:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003emeta\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003euses:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003edocker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003ewith:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eimages:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e${{\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eenv.REGISTRY\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e}}/${{\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eenv.IMAGE_NAME\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e}}\u003c/span\u003e\n \u003cspan class=\"hljs-comment\"\u003e# This step uses the `docker/build-push-action` action to build the image, based on your repository's `Dockerfile`. If the build succeeds, it pushes the image to GitHub Packages.\u003c/span\u003e\n \u003cspan class=\"hljs-comment\"\u003e# It uses the `context` parameter to define the build's context as the set of files located in the specified path. For more information, see [Usage](https://github.com/docker/build-push-action#usage) in the README of the `docker/build-push-action` repository.\u003c/span\u003e\n \u003cspan class=\"hljs-comment\"\u003e# It uses the `tags` and `labels` parameters to tag and label the image with the output from the \"meta\" step.\u003c/span\u003e\n \u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-attr\"\u003ename:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eBuild\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eand\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003epush\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eDocker\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eimage\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eid:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003epush\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003euses:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003edocker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003ewith:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003econtext:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e.\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003epush:\u003c/span\u003e \u003cspan class=\"hljs-literal\"\u003etrue\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003etags:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e${{\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003esteps.meta.outputs.tags\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e}}\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003elabels:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e${{\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003esteps.meta.outputs.labels\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e}}\u003c/span\u003e\n \n \u003cspan class=\"hljs-comment\"\u003e# This step generates an artifact attestation for the image, which is an unforgeable statement about where and how it was built. It increases supply chain security for people who consume the image. For more information, see [Using artifact attestations to establish provenance for builds](/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds).\u003c/span\u003e\n \u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-attr\"\u003ename:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eGenerate\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eartifact\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eattestation\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003euses:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eactions/attest-build-provenance@v2\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003ewith:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003esubject-name:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e${{\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eenv.REGISTRY\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e}}/${{\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eenv.IMAGE_NAME}}\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003esubject-digest:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e${{\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003esteps.push.outputs.digest\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e}}\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003epush-to-registry:\u003c/span\u003e \u003cspan class=\"hljs-literal\"\u003etrue\u003c/span\u003e\n \n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/div\u003e\n\u003cp\u003eThe above workflow is triggered by a push to the \"release\" branch. It checks out the GitHub repository, and uses the \u003ccode\u003elogin-action\u003c/code\u003e to log in to the Container registry. It then extracts labels and tags for the Docker image. Finally, it uses the \u003ccode\u003ebuild-push-action\u003c/code\u003e action to build the image and publish it on the Container registry.\u003c/p\u003e\n\u003ch2 id=\"publishing-images-to-docker-hub-and-github-packages\" tabindex=\"-1\"\u003e\u003ca class=\"heading-link\" href=\"#publishing-images-to-docker-hub-and-github-packages\"\u003ePublishing images to Docker Hub and GitHub Packages\u003cspan class=\"heading-link-symbol\" aria-hidden=\"true\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eIn a single workflow, you can publish your Docker image to multiple registries by using the \u003ccode\u003elogin-action\u003c/code\u003e and \u003ccode\u003ebuild-push-action\u003c/code\u003e actions for each registry.\u003c/p\u003e\n\u003cp\u003eThe following example workflow uses the steps from the previous sections (\u003ca href=\"#publishing-images-to-docker-hub\"\u003ePublishing images to Docker Hub\u003c/a\u003e and \u003ca href=\"#publishing-images-to-github-packages\"\u003ePublishing images to GitHub Packages\u003c/a\u003e) to create a single workflow that pushes to both registries.\u003c/p\u003e\n\u003cdiv class=\"code-example\"\u003e\u003cheader class=\"d-flex flex-items-center flex-justify-between p-2 text-small rounded-top-1 border-top border-left border-right\"\u003e\u003cspan class=\"flex-1\"\u003eYAML\u003c/span\u003e\u003cbutton class=\"js-btn-copy btn btn-sm tooltipped tooltipped-nw\" aria-label=\"Copy YAML code to clipboard\" data-clipboard=\"2982505377\"\u003e\u003csvg version=\"1.1\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"octicon octicon-copy\" aria-hidden=\"true\"\u003e\u003cpath d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"\u003e\u003c/path\u003e\u003cpath d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/button\u003e\u003cpre hidden data-clipboard=\"2982505377\"\u003e# This workflow uses actions that are not certified by GitHub.\n# They are provided by a third-party and are governed by\n# separate terms of service, privacy policy, and support\n# documentation.\n\n# GitHub recommends pinning actions to a commit SHA.\n# To get a newer version, you will need to update the SHA.\n# You can also reference a tag or branch, but the action may change without warning.\n\nname: Publish Docker image\n\non:\n release:\n types: [published]\n\njobs:\n push_to_registries:\n name: Push Docker image to multiple registries\n runs-on: ubuntu-latest\n permissions:\n packages: write\n contents: read\n attestations: write\n id-token: write\n steps:\n - name: Check out the repo\n uses: actions/checkout@v4\n\n - name: Log in to Docker Hub\n uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a\n with:\n username: ${{ secrets.DOCKER_USERNAME }}\n password: ${{ secrets.DOCKER_PASSWORD }}\n\n - name: Log in to the Container registry\n uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1\n with:\n registry: ghcr.io\n username: ${{ github.actor }}\n password: ${{ secrets.GITHUB_TOKEN }}\n\n - name: Extract metadata (tags, labels) for Docker\n id: meta\n uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7\n with:\n images: |\n my-docker-hub-namespace/my-docker-hub-repository\n ghcr.io/${{ github.repository }}\n\n - name: Build and push Docker images\n id: push\n uses: docker/build-push-action@3b5e8027fcad23fda98b2e3ac259d8d67585f671\n with:\n context: .\n push: true\n tags: ${{ steps.meta.outputs.tags }}\n labels: ${{ steps.meta.outputs.labels }}\n\n - name: Generate artifact attestation\n uses: actions/attest-build-provenance@v2\n with:\n subject-name: ghcr.io/${{ github.repository }}\n subject-digest: ${{ steps.push.outputs.digest }}\n push-to-registry: true\n\u003c/pre\u003e\u003c/header\u003e\u003cpre\u003e\u003ccode class=\"hljs language-yaml\"\u003e\u003cspan class=\"hljs-comment\"\u003e# This workflow uses actions that are not certified by GitHub.\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e# They are provided by a third-party and are governed by\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e# separate terms of service, privacy policy, and support\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e# documentation.\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e# GitHub recommends pinning actions to a commit SHA.\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e# To get a newer version, you will need to update the SHA.\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e# You can also reference a tag or branch, but the action may change without warning.\u003c/span\u003e\n\n\u003cspan class=\"hljs-attr\"\u003ename:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003ePublish\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eDocker\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eimage\u003c/span\u003e\n\n\u003cspan class=\"hljs-attr\"\u003eon:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003erelease:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003etypes:\u003c/span\u003e [\u003cspan class=\"hljs-string\"\u003epublished\u003c/span\u003e]\n\n\u003cspan class=\"hljs-attr\"\u003ejobs:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003epush_to_registries:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003ename:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003ePush\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eDocker\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eimage\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eto\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003emultiple\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eregistries\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\"\u003epermissions:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003epackages:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003ewrite\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003econtents:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eread\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eattestations:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003ewrite\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eid-token:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003ewrite\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\"\u003eCheck\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eout\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003ethe\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003erepo\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-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-attr\"\u003ename:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eLog\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003ein\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eto\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eDocker\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eHub\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003euses:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003edocker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003ewith:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eusername:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e${{\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003esecrets.DOCKER_USERNAME\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e}}\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003epassword:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e${{\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003esecrets.DOCKER_PASSWORD\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e}}\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\"\u003eLog\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003ein\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eto\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003ethe\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eContainer\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eregistry\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003euses:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003edocker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003ewith:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eregistry:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eghcr.io\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eusername:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e${{\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003egithub.actor\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e}}\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003epassword:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e${{\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003esecrets.GITHUB_TOKEN\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e}}\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\"\u003eExtract\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003emetadata\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e(tags,\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003elabels)\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003efor\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eDocker\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eid:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003emeta\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003euses:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003edocker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003ewith:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eimages:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e|\n my-docker-hub-namespace/my-docker-hub-repository\n ghcr.io/${{ github.repository }}\n\u003c/span\u003e\n \u003cspan class=\"hljs-bullet\"\u003e-\u003c/span\u003e \u003cspan class=\"hljs-attr\"\u003ename:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eBuild\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eand\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003epush\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eDocker\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eimages\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003eid:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003epush\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003euses:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003edocker/build-push-action@3b5e8027fcad23fda98b2e3ac259d8d67585f671\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003ewith:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003econtext:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e.\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003epush:\u003c/span\u003e \u003cspan class=\"hljs-literal\"\u003etrue\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003etags:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e${{\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003esteps.meta.outputs.tags\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e}}\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003elabels:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e${{\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003esteps.meta.outputs.labels\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e}}\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\"\u003eGenerate\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eartifact\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eattestation\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003euses:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eactions/attest-build-provenance@v2\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003ewith:\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003esubject-name:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003eghcr.io/${{\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003egithub.repository\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e}}\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003esubject-digest:\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e${{\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003esteps.push.outputs.digest\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e}}\u003c/span\u003e\n \u003cspan class=\"hljs-attr\"\u003epush-to-registry:\u003c/span\u003e \u003cspan class=\"hljs-literal\"\u003etrue\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe above workflow checks out the GitHub repository, uses the \u003ccode\u003elogin-action\u003c/code\u003e twice to log in to both registries and generates tags and labels with the \u003ccode\u003emetadata-action\u003c/code\u003e action.\nThen the \u003ccode\u003ebuild-push-action\u003c/code\u003e action builds and pushes the Docker image to Docker Hub and the Container registry.\u003c/p\u003e\n\u003cp\u003eIn the last step, it generates an artifact attestation for the image, which increases supply chain security. For more information, see \u003ca href=\"/en/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds\" _originalHref=\"/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds\"\u003eUsing artifact attestations to establish provenance for builds\u003c/a\u003e.\u003c/p\u003e","miniTocItems":[{"contents":{"href":"#introduction","title":"Introduction"}},{"contents":{"href":"#prerequisites","title":"Prerequisites"}},{"contents":{"href":"#about-image-configuration","title":"About image configuration"}},{"contents":{"href":"#publishing-images-to-docker-hub","title":"Publishing images to Docker Hub"}},{"contents":{"href":"#publishing-images-to-github-packages","title":"Publishing images to GitHub Packages"}},{"contents":{"href":"#publishing-images-to-docker-hub-and-github-packages","title":"Publishing images to Docker Hub and GitHub Packages"}}],"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","eclipse":"Eclipse","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":"inline"}},"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":["use-cases-and-examples","publishing-packages","publishing-docker-images"]},"buildId":"FlQxg4xomDnwLh5_scO8d","isFallback":false,"isExperimentalCompile":false,"gssp":true,"appGip":true,"locale":"en","locales":["en","zh","es","pt","ru","ja","fr","de","ko"],"defaultLocale":"en","scriptLoader":[]}</script> <script>function gtElInit() {var lib = new google.translate.TranslateService();lib.translatePage('pl', 'ja', function () {});}</script> <script src="https://translate.google.com/translate_a/element.js?cb=gtElInit&amp;hl=en-GB&amp;client=wt" type="text/javascript"></script> </body> </html>

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