Repo2docker-action: *binderhub*์—์„œ ์บ์‹œ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ๊ธฐ๋Šฅ ์ถ”๊ฐ€

์— ๋งŒ๋“  2020๋…„ 06์›” 24์ผ  ยท  8์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: jupyterhub/repo2docker-action

์ €๋Š” ์ด ์ž‘์—…์ด Binder๋กœ ์‚ฌ๋žŒ๋“ค์˜ ์›Œํฌํ”Œ๋กœ๋ฅผ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜๊ณ  ์žˆ์—ˆ๊ณ  ํŠน์ • BinderHub์—์„œ ๋นŒ๋“œ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์ปค๋ฐ‹์ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ํ‘ธ์‹œ๋˜๋ฉด ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ https://<mybinderhub.org>/v2/gh/org/repo/master ๋ฅผ ๋ˆ„๋ฅด๊ธฐ๋งŒ ํ•˜๋ฉด ํ•ด๋‹น BinderHub์˜ Docker ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œํ•˜๊ณ  ์บ์‹œํ•˜๋„๋ก ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ์ด ๋นŒ๋“œ๋ฅผ ์ž๋™์œผ๋กœ ํŠธ๋ฆฌ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด GitHub ์ž‘์—…์ด ํŠน์ • URL์„ "๋ฐฉ๋ฌธ"ํ•˜๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ด๊ฒƒ์€ ํŠน์ • BinderHub(์˜ˆ mybinder.org )์—์„œ ์‹คํ–‰๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋” ๊นจ๋—ํ•œ ๋ฐฉ๋ฒ•์ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ Docker ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์™€์˜ ์ˆ˜๋™ ์ƒํ˜ธ ์ž‘์šฉ๋„ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(BinderHub์—์„œ ์ˆ˜ํ–‰ํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— )

์•„๋งˆ๋„ ์ด๊ฒƒ์€ BinderHub ์ „์šฉ์ด๊ธฐ ๋•Œ๋ฌธ์— jupyterhub ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ํ˜ธ์ŠคํŒ…ํ•ด์•ผ ํ•˜๋Š” ์ž‘์—…์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ ๋‚˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๋งŒ๋“  PR/๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๊ฒ€ํ† ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ง์ ‘ ๊ตฌํ˜„ํ•ด ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

feature_request

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋ฐ”์ธ๋”ํ—ˆ๋ธŒ์— ๋นŒ๋“œ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•œ ๋‹ค์Œ ์ค€๋น„๊ฐ€ ๋˜๋ฉด ๋งํฌ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋Š” API๊ฐ€ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๊ฒƒ์ด ์กด์žฌํ•ฉ๋‹ˆ๊นŒ?

๋„ค, ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. pyhf ๋Š” ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ PR์„ ๋ณ‘ํ•ฉํ•  ๋•Œ Binder ๋นŒ๋“œ๋ฅผ ์ž๋™์œผ๋กœ ํŠธ๋ฆฌ๊ฑฐํ•˜์—ฌ ์ถœ์‹œ Binder ๋ฐฐ์ง€๊ฐ€ ํ•ญ์ƒ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ๋ฏธ๋ฆฌ ๋นŒ๋“œ๋œ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ–๋„๋ก ํ•˜์ง€๋งŒ @betatim ๊ณผ์˜ ํ† ๋ก ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ธฐ์–ต๋‚œ๋‹ค๋ฉด ์ด๊ฒƒ์€ ๋‹ค์Œ์—์„œ ์ •ํ™•ํžˆ ๋ณด์ฆํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐ”์ธ๋” ํŒ€.

๋ชจ๋“  8 ๋Œ“๊ธ€

Issue-Label Bot์€ ์ด ๋ฌธ์ œ์— feature_request ๋ ˆ์ด๋ธ”์„ 0.97์˜ ์‹ ๋ขฐ๋„๋กœ ์ž๋™์œผ๋กœ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ด‡ ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•˜๋ ค๋ฉด ์ด ๋Œ“๊ธ€์„ :thumbsup: ๋˜๋Š” :thumbsdown:์œผ๋กœ ํ‘œ์‹œํ•˜์‹ญ์‹œ์˜ค!

๋งํฌ: ์ด ๋ด‡์— ๋Œ€ํ•œ ์•ฑ ํ™ˆํŽ˜์ด์ง€ , ๋Œ€์‹œ๋ณด๋“œ ๋ฐ ์ฝ”๋“œ .

@choldgraf ์ด๊ฒƒ์€ ํ›Œ๋ฅญํ•œ ์•„์ด๋””์–ด์ž…๋‹ˆ๋‹ค. ๋งํฌ "๋ฐฉ๋ฌธ"์€ ํŠน์ • ์ž‘์—…๊ณผ ๊ฐ™์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ๋งํฌ๋ฅผ "๋ฐฉ๋ฌธ"ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”์ธ๋”ํ—ˆ๋ธŒ์— ๋นŒ๋“œ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•œ ๋‹ค์Œ ๋งํฌ๊ฐ€ ์ค€๋น„๋˜๋ฉด? ๊ทธ๋Ÿฐ ๊ฒƒ์ด ์กด์žฌํ•ฉ๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์ด ์—†์œผ๋ฉด ์…€๋ ˆ๋Š„ ์œผ๋กœ ์ผ์ข…์˜ ํ•ดํ‚น์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ƒ๊ฐ์„ ์•Œ๋ ค์ฃผ์„ธ์š”. ๋ฐ”์ธ๋” ๋นŒ๋“œ ํ• ๋‹น์„ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ์•„์ด๋””์–ด๊ฐ€ ๋งˆ์Œ์— ๋“ญ๋‹ˆ๋‹ค. ํ•œ ๋‹จ๊ณ„ ๋œ ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋ฐ”์ธ๋”ํ—ˆ๋ธŒ์— ๋นŒ๋“œ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•œ ๋‹ค์Œ ์ค€๋น„๊ฐ€ ๋˜๋ฉด ๋งํฌ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋Š” API๊ฐ€ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๊ฒƒ์ด ์กด์žฌํ•ฉ๋‹ˆ๊นŒ?

๋„ค, ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. pyhf ๋Š” ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ PR์„ ๋ณ‘ํ•ฉํ•  ๋•Œ Binder ๋นŒ๋“œ๋ฅผ ์ž๋™์œผ๋กœ ํŠธ๋ฆฌ๊ฑฐํ•˜์—ฌ ์ถœ์‹œ Binder ๋ฐฐ์ง€๊ฐ€ ํ•ญ์ƒ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ๋ฏธ๋ฆฌ ๋นŒ๋“œ๋œ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ–๋„๋ก ํ•˜์ง€๋งŒ @betatim ๊ณผ์˜ ํ† ๋ก ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ธฐ์–ต๋‚œ๋‹ค๋ฉด ์ด๊ฒƒ์€ ๋‹ค์Œ์—์„œ ์ •ํ™•ํžˆ ๋ณด์ฆํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐ”์ธ๋” ํŒ€.

@betatim ์ด์™€ ๊ฐ™์ด ๋ฐ”์ธ๋” ๋นŒ๋“œ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋˜์ง€ ์•Š๋Š” ์ด์œ ์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๊ฐ€ ๋ฌป๋Š” ์ด์œ ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ด ์•ก์…˜์ด ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์„ ์ตœ์ ํ™”ํ•˜๋ ค๊ณ  ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋ฉฐ @choldgraf ๋Š” mybinder.org์˜ ๊ฒฝ์šฐ ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์€ ์ด ์•ก์…˜์˜ API๋ฅผ ๋”์šฑ ๋‹จ์ˆœํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ”์ธ๋” ๋นŒ๋“œ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ง€์ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ๋žŒ๋“ค์ด ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ์ ๊ทน์ ์œผ๋กœ ๊ถŒ์žฅํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ์ด ๊ธฐ๋Šฅ์„ ๋Œ€๊ทœ๋ชจ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์†๋„ ์ œํ•œ์˜ ์ผ๋ถ€ ํ˜•ํƒœ๋ฅผ ๊ตฌํ˜„ํ•˜๊ฑฐ๋‚˜ "์ด์ „ ๋ฒ„์ „ ๋นŒ๋“œ๋ฅผ ์ค‘์ง€"ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ์ฃผ์š” ๋ถ„๊ธฐ์— ๋ณ‘ํ•ฉํ•  ๋•Œ ์ž๋™์œผ๋กœ ๋นŒ๋“œ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ์„ฑ์‹คํ•œ ์†Œ์œ ์ž๊ฐ€ ์žˆ๋Š” ๊ฐœ๋ณ„ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋Š” ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  PR์˜ ๋ชจ๋“  ์ปค๋ฐ‹์—์„œ ๋นŒ๋“œ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ์„ธ์ฒ™๋˜์ง€ ์•Š์€ ๋Œ€์ค‘์€ mybinder.org๋ฅผ ๋น ๋ฅด๊ฒŒ ์••๋„ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค(์ผ๋ถ€ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋Š” ๋นŒ๋“œํ•˜๋Š” ๋ฐ CPU ์‹œ๊ฐ„์ด ๋ช‡ ์‹œ๊ฐ„ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค). .

์ž˜ ์œ ์ง€ ๊ด€๋ฆฌ๋˜๊ณ  mybinder.org(๋ฉ”์ธ ๋ธŒ๋žœ์น˜์— ๋ณ‘ํ•ฉ ์‹œ ์ž๋™ ๋นŒ๋“œ)์— ์ข‹์€ ๋™์ž‘์„ ๊ตฌํ˜„ํ•˜๋Š” ํ•˜๋‚˜์˜ GH ์ž‘์—…์„ ๊ฐ–๋Š” ๊ฒƒ์ด ๊ฐˆ ๊ธธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์•ˆ์€ ์ ์  ๋” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ด์— ๋Œ€ํ•ด ํ˜„๋ช…ํ•ด์ง€๊ณ  ์ž์‹ ์˜ ๊ฒƒ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(์ด ๊ฒฝ์šฐ ๊ฐœ๋ณ„ ์ €์žฅ์†Œ๋ฅผ ์ถ”์ ํ•ด์•ผ ํ•จ).

์ถ”๊ฐ€ ๋ณด๋„ˆ์Šค ํฌ์ธํŠธ๋ฅผ ์–ป์œผ๋ ค๋ฉด GH ์กฐ์น˜๊ฐ€ PR์ด "mybinder.org์—์„œ ์—ฌ์ „ํžˆ ์ž‘๋™"ํ•˜๋Š” ๊ฒฝ์šฐ ๊ถŒ์žฅ๋˜๋Š” ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•๋„ ๊ตฌํ˜„ํ•˜๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” CI์—์„œ repo2docker . ์™€ ๊ฐ™์€ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ์ปฌ์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. . ํด๋ฆญํ•˜๋ฉด ๋ฐ”์ธ๋”๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋งํฌ๋ฅผ PR ๋Œ“๊ธ€์— ๊ฒŒ์‹œํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค(์ž๋™ ๋นŒ๋“œ๋Š” ์•„๋‹˜).

์ถ”๊ฐ€ ํฌ๋ ˆ๋”ง์„ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์ฝ”๋“œ๊ฐ€ ์—ฌ์ „ํžˆ ์‹คํ–‰๋˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ์•ˆํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค(์ €๋Š” repo2docker . -- jupyter-nbconvert --execute some/notebook.ipynb ์™€ ๊ฐ™์€ ๊ฒƒ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค).

๋”ฐ๋ผ์„œ ์ „๋ฐ˜์ ์œผ๋กœ ์ด๊ฒƒ์€ ์‚ฌ๋žŒ๋“ค์ด ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋„๋ก mybinder.org์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ปดํ“จํŒ… ๋ฆฌ์†Œ์Šค์™€ ์ด๊ฒƒ์ด ๋„๋ฆฌ ํผ์งˆ ๊ฒฝ์šฐ ํ•„์š”ํ•œ ์†๋„ ์ œํ•œ/๋‚จ์šฉ ๋ฐฉ์ง€ ๊ธฐ๋Šฅ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ธ์  ๋ฆฌ์†Œ์Šค์˜ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด ์กด์žฌํ•˜๊ธฐ๋ฅผ ์›ํ•˜๊ณ  ์•ฝ๊ฐ„์˜ ์กฐ์ •๊ณผ ํ˜‘๋ ฅ์œผ๋กœ ๊ทธ๊ฒƒ์„ ํ•ด๋‚ผ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.


์›๋ž˜ "API" ์ฝ”๋“œ: https://github.com/jupyterhub/binderhub/blob/master/examples/binder-api.py

์ข‹์•„ ์ด๊ฒƒ์€ ํ™•์‹คํžˆ ๋‹ค๋ฃจ๊ธฐ ์‰ฌ์šด ์ผ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ”ผ๋“œ๋ฐฑ์„ ๋“ค์€ ํ›„์˜ ์ƒ๊ฐ:

  1. ์ด ์ž‘์—…์—์„œ ์ด API๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด ๊ดœ์ฐฎ์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค(์‚ฌ๋žŒ๋“ค์ด ์—ฌ์ „ํžˆ ์ด๋ฅผ ๋‚จ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์›์น™์  ์œ„ํ—˜์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค).
  2. Binder์— ๋Œ€ํ•œ ๋งํฌ๊ฐ€ ์žˆ๋Š” PR์— ๋Œ€ํ•œ ์ฃผ์„ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ๋ถ€๋ถ„์€ ๋ชจ๋“ˆ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ด Action ์™ธ๋ถ€์—์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”์ธ๋”๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ฅผ ์‰ฝ๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์›Œํฌํ”Œ๋กœ์— ์‰ฝ๊ฒŒ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์˜ˆ์ œ๋Š” ์ง€๋‚œ์ฃผ github ๋ธ”๋กœ๊ทธ์—๋„ ์†Œ๊ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค!

name: Binder
on: 
  pull_request:
    types: [opened, reopened]

jobs:
  Create-Binder-Badge:
    runs-on: ubuntu-latest
    steps:
    - name: comment on PR with Binder link
      uses: actions/github-script<strong i="11">@v1</strong>
      with:
        github-token: ${{secrets.GITHUB_TOKEN}}
        script: |
          var BRANCH_NAME = process.env.BRANCH_NAME;
          github.issues.createComment({
            issue_number: context.issue.number,
            owner: context.repo.owner,
            repo: context.repo.repo,
            body: `[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/${context.repo.owner}/${context.repo.repo}/${BRANCH_NAME}) :point_left: Launch a binder notebook on this branch`
          }) 
      env:
        BRANCH_NAME: ${{ github.event.pull_request.head.ref }}

์ œ์ณ๋‘๊ณ : @betatim ์•„๋งˆ๋„ ์œ„์˜ ์˜ˆ๊ฐ€ ๋ฐ”์ธ๋” ๋ฌธ์„œ์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

  1. ์ถ”๊ฐ€ ํฌ๋ ˆ๋”ง์— ๋Œ€ํ•ด ์ƒ๊ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํฅ๋ฏธ๋กญ๋„ค์š”. repo2docker๊ฐ€ ์‹คํ–‰๋œ ํ›„ ๋‹ค์šด์ŠคํŠธ๋ฆผ ๋‹จ๊ณ„๊ฐ€ ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ด ์ž‘์—…์— ์ ์šฉํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์งˆ๋ฌธ์ด๋‚˜ ํ”ผ๋“œ๋ฐฑ์ด ์žˆ์œผ๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š”. mybinder.org ์บ์‹ฑ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๊ธฐ ์œ„ํ•ด API ํ˜ธ์ถœ์—์„œ ๋ฒ ์ดํ‚น ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

@choldgraf ๋‚˜๋Š” ์ด๊ฒƒ์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ  ์ž์‹ ์˜ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ํ‘ธ์‹œํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„๊ตํ•˜์—ฌ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ฆ๊ธฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. API๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ผ์ด ์‹คํŒจํ•˜๋ฉด ํˆฌ๋ช…ํ•˜์ง€ ์•Š๊ณ  ๋นŒ๋“œ์— ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์ด์œ ๋‚˜ ๋นŒ๋“œ๊ฐ€ ์ค‘๋‹จ๋˜๋Š” ์›์ธ์„ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์‚ฌ์šฉํ•˜๋ ค๊ณ  ์‹œ๋„ํ•œ ๊ฒฐ๊ณผ ๋นŒ๋“œ ์‹œ๊ฐ„์ด ์‹ค์ œ๋กœ ์ƒ๋‹นํžˆ ๊ธธ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค(์•ก์…˜์—์„œ ๋นŒ๋“œํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„๊ตํ•˜์—ฌ) -- ์™œ ๊ทธ๋Ÿฐ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ ๋‹น์žฅ์€ ์บ์‹œ๋ฅผ ์œ„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์ž์‹ ์˜ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Actions์—์„œ ๋นŒ๋“œํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•œ README์— ๋Œ€ํ•œ ๊ถŒ์žฅ ์‚ฌํ•ญ์ด ์žˆ์ง€๋งŒ mybinder.org๋กœ ์—ฐ๊ธฐํ•˜๋Š” ์˜ˆ๋„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

ํ”ผ๋“œ๋ฐฑ์ด๋‚˜ ๋” ๋งŽ์€ ์•„์ด๋””์–ด๋ฅผ ๋“ฃ๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค.

ํ  - ํฅ๋ฏธ๋กญ๋„ค์š”. ๋‹ค์Œ์— ๋Œ€ํ•ด ์ข€ ๋” ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

API๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ผ์ด ์‹คํŒจํ•˜๋ฉด ํˆฌ๋ช…ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฐ”์ธ๋” ๋ฌธ์ œ์ธ๊ฐ€์š”? ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ๋” ๋‚˜์€ ์˜ค๋ฅ˜ ๋กœ๊น…์ด ํ•„์š”ํ•œ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋‹น๋ถ„๊ฐ„์€ ์ €๋„ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. mybinder.org๋Š” Google ์ปจํ…Œ์ด๋„ˆ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์—์„œ ์‹คํ–‰๋˜๋ฉฐ(?) Dockerhub๋ณด๋‹ค ํŠนํžˆ ๋Š๋ฆฌ๊ฑฐ๋‚˜ ๋นจ๋ผ์„œ๋Š” ์•ˆ ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. Dockerhub์— ์บ์‹œ๋œ ๋ ˆ์ด์–ด ๋˜๋Š” ์ด์™€ ์œ ์‚ฌํ•œ ๊ฒƒ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ์ž ์ง€์ • ๊ฐœ์ธ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ Docker์— ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ์‚ฌ๋žŒ๋“ค์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ”์ธ๋”์— ์ด์ƒ์ ์ด์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‚ฌ์šฉ์ž ์ง€์ • ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๊ฐ€ ํ›Œ๋ฅญํ•œ ์žฅ๊ธฐ์  ์†”๋ฃจ์…˜์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(๋‚ด ์ƒ๊ฐ์—๋Š” ๊ธฐ์ˆ ์ ์œผ๋กœ ๋” ์ž˜ ์•Œ๊ณ  ์žˆ๋Š” ํŠน์ • ์—ฐ๊ตฌ์›์ด ์žˆ์–ด ๋งค์šฐ ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค!)

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰