Skip to main content

GitHub.com์—์„œ ์ˆ˜๋™์œผ๋กœ ์ž‘์—… ๋™๊ธฐํ™”

GitHub.com์˜ ์ž‘์—…์— ์•ก์„ธ์Šคํ•ด์•ผ ํ•˜๋Š” ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ ํŠน์ • ์ž‘์—…์„ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ์— ๋™๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ  ํ•ญ๋ชฉ

GitHub ํ˜ธ์ŠคํŠธ ์‹คํ–‰๊ธฐ๋Š” ํ˜„์žฌ GitHub Enterprise Server์—์„œ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

GitHub Enterprise Server์˜ GitHub Actions๋Š” ์™„์ „ํ•œ ์ธํ„ฐ๋„ท ์•ก์„ธ์Šค๊ฐ€ ์—†๋Š” ํ™˜๊ฒฝ์—์„œ๋„ ์ž‘๋™ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์›Œํฌํ”Œ๋กœ๋Š” GitHub.com ๋ฐ GitHub Marketplace์˜ ์ž‘์—…์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

GitHub Connect๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ GitHub Enterprise Server๋ฅผ GitHub Enterprise Cloud์™€ ํ†ตํ•ฉํ•˜์—ฌ ๋ชจ๋“  ํผ๋ธ”๋ฆญ ์ž‘์—…์— ์ž๋™ ์•ก์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. GitHub Connect๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ GitHub.com ์ž‘์—…์— ์ž๋™ ์•ก์„ธ์Šค ์‚ฌ์šฉ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

์—”ํ„ฐํ”„๋ผ์ด์ฆˆ์—์„œ ํ—ˆ์šฉ๋˜๋Š” ์ž‘์—…์„ ๋” ์—„๊ฒฉํ•˜๊ฒŒ ์ œ์–ดํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์ด ๊ฐ€์ด๋“œ์— ๋”ฐ๋ผ ์˜คํ”ˆ ์†Œ์Šค actions-sync ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ GitHub.com์˜ ๊ฐœ๋ณ„ ์ž‘์—… ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ์— ๋™๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

GitHub Enterprise Server๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ฉด ๋ฒˆ๋“ค ์ž‘์—…์€ ์—…๊ทธ๋ ˆ์ด๋“œ ํŒจํ‚ค์ง€์˜ ๊ธฐ๋ณธ ๋ฒ„์ „์œผ๋กœ ์ž๋™ ๊ต์ฒด๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฒ„์ „์€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ตœ์‹  ๋ฒ„์ „์ด ์•„๋‹ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋ฒ” ์‚ฌ๋ก€๋กœ, actions-sync๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—…์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒฝ์šฐ GitHub Enterprise Server ์—…๊ทธ๋ ˆ์ด๋“œ(๋ฉ”์ด์ € ๋˜๋Š” ๋งˆ์ด๋„ˆ) ํ›„ ํ•ญ์ƒ actions-sync๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•˜์—ฌ ์ž‘์—…์ด ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€๋˜๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

actions-sync ๋„๊ตฌ ์ •๋ณด

GitHub.com API ๋ฐ GitHub Enterprise Server ์ธ์Šคํ„ด์Šค API์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๋จธ์‹ ์—์„œ actions-sync ๋„๊ตฌ๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋™์‹œ์— ๋‘˜ ๋‹ค์— ๋จธ์‹ ์„ ์—ฐ๊ฒฐํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋จธ์‹ ์ด ๋™์‹œ์— ๋‘ ์‹œ์Šคํ…œ์— ๋ชจ๋‘ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ๋‹จ์ผ actions-sync sync ๋ช…๋ น์œผ๋กœ ๋™๊ธฐํ™”๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์‹œ์Šคํ…œ์—๋งŒ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ actions-sync pull ๋ฐ push ๋ช…๋ น์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

actions-sync ๋„๊ตฌ๋Š” ํผ๋ธ”๋ฆญ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์ €์žฅ๋œ GitHub.com์˜ ์ž‘์—…๋งŒ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ  ํ•ญ๋ชฉ

actions-sync ๋„๊ตฌ๋Š” GitHub Connect๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. GitHub Connect๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ์Šคํ…œ์—์„œ ๋„๊ตฌ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด The repository <repo_name> has been retired and cannot be reused ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์˜ค๋ฅ˜๋Š” ์›Œํฌํ”Œ๋กœ๊ฐ€ GitHub.com์—์„œ ์ง์ ‘ ํ•ด๋‹น ์ž‘์—…์„ ์‚ฌ์šฉํ–ˆ์œผ๋ฉฐ GitHub Enterprise Server ์ธ์Šคํ„ด์Šค์—์„œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ์‚ฌ์šฉ ์ค‘์ง€๋˜์—ˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. GitHub Connect๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ GitHub.com ์ž‘์—…์— ์ž๋™ ์•ก์„ธ์Šค ์‚ฌ์šฉ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

ํ•„์ˆ˜ ์กฐ๊ฑด

  • actions-sync ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋ชจ๋“  ๋Œ€์ƒ ์กฐ์ง์ด ์ด๋ฏธ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ์— ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์˜ˆ์ œ์—์„œ๋Š” synced-actions๋ผ๋Š” ์กฐ์ง์— ์ž‘์—…์„ ๋™๊ธฐํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ ์ค๋‹ˆ๋‹ค. ์ฒ˜์Œ๋ถ€ํ„ฐ ์ƒˆ ์กฐ์ง ๋งŒ๋“ค๊ธฐ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

  • ๋Œ€์ƒ ์กฐ์ง์— ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ  ์“ธ ์ˆ˜ ์žˆ๋Š” personal access token์„(๋ฅผ) ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ์— ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ์ธ์šฉ ์•ก์„ธ์Šค ํ† ํฐ ๊ด€๋ฆฌ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

  • GitHub Enterprise Server ์ธ์Šคํ„ด์Šค์—์„œ actions ์กฐ์ง์˜ ๋ฒˆ๋“ค ์ž‘์—…์„ ๋™๊ธฐํ™”ํ•˜๋ ค๋ฉด actions ์กฐ์ง์˜ ์†Œ์œ ์ž์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ์ฐธ๊ณ  ํ•ญ๋ชฉ

    ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์ดํŠธ ๊ด€๋ฆฌ์ž๋„ ๋ฒˆ๋“ค๋œ actions ์กฐ์ง์˜ ์†Œ์œ ์ž๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

    ์‚ฌ์ดํŠธ ๊ด€๋ฆฌ์ž๋Š” ๊ด€๋ฆฌ ์…ธ์—์„œ ghe-org-admin-promote ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž๋ฅผ ๋ฒˆ๋“ค๋œ actions ์กฐ์ง์˜ ์†Œ์œ ์ž๋กœ ์Šน๊ฒฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ด€๋ฆฌ ์…ธ(SSH)์— ์•ก์„ธ์Šค ๋ฐ ๋ช…๋ น์ค„ ์œ ํ‹ธ๋ฆฌํ‹ฐ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

    ghe-org-admin-promote -u USERNAME -o actions
    

์˜ˆ์ œ: actions-sync ๋„๊ตฌ ์‚ฌ์šฉ

์ด ์˜ˆ์ œ์—์„œ๋Š” actions-sync ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ GitHub.com์—์„œ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์ธ์Šคํ„ด์Šค๋กœ ๊ฐœ๋ณ„ ์ž‘์—…์„ ๋™๊ธฐํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ ์ค๋‹ˆ๋‹ค.

์ฐธ๊ณ  ํ•ญ๋ชฉ

์ด ์˜ˆ์ œ์—์„œ๋Š” GitHub.com API์™€ ๋จธ์‹ ์˜ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์ธ์Šคํ„ด์Šค API ๋ชจ๋‘ ๋™์‹œ์— ์•ก์„ธ์Šคํ•ด์•ผ ํ•˜๋Š” actions-sync sync ๋ช…๋ น์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์‹œ์Šคํ…œ์—๋งŒ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ actions-sync pull ๋ฐ push ๋ช…๋ น์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. actions-sync ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

  1. ๋จธ์‹ ์˜ ์šด์˜ ์ฒด์ œ์— ๋Œ€ํ•œ ์ตœ์‹  actions-sync ๋ฆด๋ฆฌ์Šค๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.

  2. ๋„๊ตฌ์šฉ ์บ์‹œ ํŒŒ์ผ์„ ์ €์žฅํ•  ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

  3. ํ„ฐ๋ฏธ๋„์—์„œ ๋ฐฉ๊ธˆ ์ถ”์ถœํ•œ ๋ฆด๋ฆฌ์Šค ๋””๋ ‰ํ„ฐ๋ฆฌ ๋‚ด์˜ bin ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์‹œ:

    cd PATH/TO/gh_DATETIME_OS_ARCHITECTURE/bin
    
  4. actions-sync sync ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    ./actions-sync sync \
      --cache-dir "cache" \
      --destination-token "aabbccddeeffgg" \
      --destination-url "https://my-ghes-instance" \
      --repo-name "actions/stale:synced-actions/actions-stale"
    

    ์œ„ ๋ช…๋ น์€ ๋‹ค์Œ ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    • --cache-dir: ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋Š” ๋จธ์‹ ์˜ ์บ์‹œ ๋””๋ ‰ํ„ฐ๋ฆฌ์ž…๋‹ˆ๋‹ค.

    • --destination-token: ๋Œ€์ƒ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ personal access token์ž…๋‹ˆ๋‹ค.

    • --destination-url: ๋Œ€์ƒ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์ธ์Šคํ„ด์Šค์˜ URL์ž…๋‹ˆ๋‹ค.

    • --repo-name: ๋™๊ธฐํ™”ํ•  ์ž‘์—… ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์ž…๋‹ˆ๋‹ค. owner/repository:destination_owner/destination_repository ํ˜•์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

      • ์œ„ ์˜ˆ์ œ์—์„œ๋Š” actions/stale ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋Œ€์ƒ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์ธ์Šคํ„ด์Šค์˜ synced-actions/actions-stale ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋™๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค. ์œ„ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ์—์„œ synced-actions๋ผ๋Š” ์กฐ์ง์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
      • :destination_owner/destination_repository๋ฅผ ์ƒ๋žตํ•˜๋ฉด ๋„๊ตฌ์—์„œ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ์˜ ์›๋ž˜ ์†Œ์œ ์ž ๋ฐ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ์ž‘์—…์˜ ์†Œ์œ ์ž ์ด๋ฆ„๊ณผ ์ผ์น˜ํ•˜๋Š” ์ƒˆ ์กฐ์ง์„ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ์—์„œ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ค‘์•™ ์กฐ์ง์„ ์‚ฌ์šฉํ•˜์—ฌ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ์—์„œ ๋™๊ธฐํ™”๋œ ์ž‘์—…์„ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์—ฌ๋Ÿฌ ์†Œ์œ ์ž์˜ ์ž‘์—…์„ ๋™๊ธฐํ™”ํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ์ƒˆ ์กฐ์ง์„ ์—ฌ๋Ÿฌ ๊ฐœ ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
      • --repo-name ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ --repo-name-list ๋˜๋Š” --repo-name-list-file๋กœ ๋ฐ”๊ฟ” ์—ฌ๋Ÿฌ ์ž‘์—…์„ ๋™๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. actions-sync ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
  5. ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ์— ์ž‘์—… ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋œ ํ›„์—๋Š” ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์‚ฌ์šฉ์ž๊ฐ€ ๋Œ€์ƒ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›Œํฌํ”Œ๋กœ์—์„œ ์ž‘์—…์„ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ„์— ํ‘œ์‹œ๋œ ์˜ˆ์ œ ์ž‘์—…์˜ ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค.

    uses: synced-actions/actions-stale@v1
    

    GitHub Actions์— ๋Œ€ํ•œ ์›Œํฌํ”Œ๋กœ ๊ตฌ๋ฌธ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.