Repo2docker-action: Repo2Docker ์˜ˆ์ œ ๋ธŒ๋ ˆ์ธ์Šคํ† ๋ฐ

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

repo2docker ์‚ฌ์šฉ์— ๋Œ€ํ•œ ์‹ค์ œ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๊ด€๋ จ ์˜ˆ์ œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ์ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ๋ฌธ์„œ๋ฅผ ์ข€ ๋” ๊ตฌ์ฒดํ™”ํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค.

  1. PR์—์„œ ์ž๋™์œผ๋กœ ๋ฐ”์ธ๋” ๋ฐฐ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ PR์—์„œ ์ฐธ์กฐ๋œ ๋ถ„๊ธฐ์— ํ•ด๋‹นํ•˜๋Š” chatops ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ Actions๊ฐ€ ๋Œ“๊ธ€์„ ์ž‘์„ฑํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ฒ€ํ† ์ž๊ฐ€ ํด๋ฆญ ํ•œ ๋ฒˆ์œผ๋กœ ๋ผ์ด๋ธŒ ๋…ธํŠธ๋ถ์— ์‰ฝ๊ฒŒ ์•ก์„ธ์Šคํ•˜์—ฌ PR์—์„œ ๋…ธํŠธ๋ถ์„ ๊ฒ€ํ† ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณด์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

    image

  2. PR์ด ์—ด๋ฆฌ๊ฑฐ๋‚˜ ์ข…์ด ๊ณต๊ฐ„ ๊ทธ๋ผ๋ฐ์ด์…˜ ์—์„œ chatops ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๋…ธํŠธ๋ถ์„ ์ž๋™์œผ๋กœ ์‹คํ–‰

    ๋Œ€๋žต์ ์ธ ์Šค์ผ€์น˜๋Š” ์ด๋ ‡์Šต๋‹ˆ๋‹ค.

    ...
      - name: build-environment
        id: repo2docker
        uses: machine-learning-apps/repo2docker-action
        with:
            DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
            DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
            IMAGE_NAME: "hamelsmu/repo2docker-test"
    
      - name: paperspace-deploy
        id: paperspace
        run: |
            pip install gradient
            gradient apiKey ${PAPERSPACE_TOKEN}
            gradient jobs create --container ${IMAGE_NAME} --projectId ${PAPERSPACE_PROJECT_ID} --machineType K80 --ports 8888:8888
        env:
            PAPERSPACE_TOKEN: ${{ secrets.PAPERSPACE_TOKEN }}
            PAPERSPACE_PROJECT_ID: ${{ secrets.PAPERSPACE_PROJECT_ID }}
            IMAGE_NAME: ${{ steps.repo2docker.outputs.IMAGE_SHA_NAME }}
    
    
  3. ์‹œ์ž‘ repo2docker์˜ ์ฃผ์š” ๊ตฌ๋ฆ„ ์ด๋ฏธ์ง€ : GCP, AWS, ํ‘ธ๋ฅธ ์–ด์ฉŒ๋ฉด FloydHub

    GCP์—์„œ ๋Œ€๋žต์ ์ธ ์Šค์ผ€์น˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. - Google Cloud Functions

    ....
      - uses: exelban/gcloud<strong i="21">@master</strong>
        env:
            PROJECT_ID: ${{ secrets.GOOGLE_PROJECT_ID }}
            APPLICATION_CREDENTIALS: ${{ secrets.GOOGLE_APPLICATION_CREDENTIALS }}
            IMAGE_NAME: ${{ steps.repo2docker.outputs.IMAGE_SHA_NAME }}
        with:
            args: --quiet beta run deploy notebook-serve-action --allow-unauthenticated --platform managed --region us-west1 --image $IMAGE_NAME
    
  4. ์ฝ”๋“œ์ŠคํŽ˜์ด์Šค๊ฐ€ ์žˆ๋Š” ์˜ˆ


๋‹ค๋ฅธ ์•„์ด๋””์–ด: ๋ฏธ์ •

@betatim , @willingc @neovintage ๋‹ค๋ฅธ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ฐ€๋Šฅ์„ฑ์€ ๋งค์šฐ ํฅ๋ฏธ๋กญ๊ณ  ๊ท€ํ•˜์˜ ์•„์ด๋””์–ด์™€ ์ƒ๊ฐ์„ ์‚ฌ๋ž‘ํ•ฉ๋‹ˆ๋‹ค!

help wanted

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

@psychemedia ์˜ ์ œ์•ˆ์— ๋Œ€ํ•œ

Binder ์ด์™ธ์˜ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์„ ํ˜ธํ•˜๋Š” ํด๋ผ์šฐ๋“œ ์ œ๊ณต์—…์ฒด๋‚˜ ๋…ธํŠธ๋ถ์šฉ ํ˜ธ์ŠคํŒ… ์„œ๋น„์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚ด๊ฐ€ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์šด ๊ฒƒ์€ ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ Paperspace์™€ Google Cloud์ž…๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์„œ๋ฒ„๋ฆฌ์Šค ํŒจ๋Ÿฌ๋‹ค์ž„์ด ์žˆ์ง€๋งŒ ํ•ญ์ƒ ๋…ธํŠธ๋ถ์— ์ž˜ ๋งž๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์ฃผ์š” ํด๋ผ์šฐ๋“œ๊ฐ€ ๊ฐœ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•ด Binder-as-a-Service๋ฅผ ์ œ๊ณตํ•œ๋‹ค๋ฉด ๋ฉ‹์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

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

datasette publish ๋ช…๋ น [ code ]์€ ๋ฐ์ดํ„ฐ ์„ธํŠธ ์ธ์Šคํ„ด์Šค๊ฐ€ ํฌํ•จ๋œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ๋‹ค์–‘ํ•œ ์˜จ๋ผ์ธ ํด๋ผ์šฐ๋“œ ํ˜ธ์ŠคํŠธ์— ํ‘ธ์‹œํ•ฉ๋‹ˆ๋‹ค.

์ด ์ž‘์—…์—์„œ ๋˜๋Š” ์•„๋งˆ๋„ repo2docker [@betatim]์˜ ์ผ๋ถ€๋กœ ์ด์™€ ๊ฐ™์€ ๊ฒƒ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ์œ ์šฉํ• ๊นŒ์š”?

๋˜ํ•œ ํ•ด๋‹น ๊ฒŒ์‹œ ๋ ˆ์‹œํ”ผ๋ฅผ ๋‹ค๋ฅธ Github ์ž‘์—…์œผ๋กœ ์ถ”์ถœํ•˜๊ฑฐ๋‚˜ repo2docker ์ปจํ…์ŠคํŠธ์—์„œ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์—์„œ ์ฑ„ํƒํ•  ์ˆ˜ ์žˆ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ ์Šคํƒ€์ผ ํŒจํ‚ค์ง€๋กœ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. (์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐ์ดํ„ฐ์„ธํŠธ๋Š” ์ด๋ฏธ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. (์—ฌ๊ธฐ์— @simonw ์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ชจ๋ธ ์ง€์ •์— ๋Œ€ํ•œ ์ดˆ๊ธฐ ๋ฉ”๋ชจ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.)

@psychemedia ์˜ ์ œ์•ˆ์— ๋Œ€ํ•œ

Binder ์ด์™ธ์˜ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์„ ํ˜ธํ•˜๋Š” ํด๋ผ์šฐ๋“œ ์ œ๊ณต์—…์ฒด๋‚˜ ๋…ธํŠธ๋ถ์šฉ ํ˜ธ์ŠคํŒ… ์„œ๋น„์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚ด๊ฐ€ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์šด ๊ฒƒ์€ ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ Paperspace์™€ Google Cloud์ž…๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์„œ๋ฒ„๋ฆฌ์Šค ํŒจ๋Ÿฌ๋‹ค์ž„์ด ์žˆ์ง€๋งŒ ํ•ญ์ƒ ๋…ธํŠธ๋ถ์— ์ž˜ ๋งž๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์ฃผ์š” ํด๋ผ์šฐ๋“œ๊ฐ€ ๊ฐœ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•ด Binder-as-a-Service๋ฅผ ์ œ๊ณตํ•œ๋‹ค๋ฉด ๋ฉ‹์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

@hamelsmu ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์•„๋‹ˆ์ง€๋งŒ GitHub ๊ต์‹ค๊ณผ ํ†ตํ•ฉ๋œ ์ด์™€ ๊ฐ™์€ ๊ฒƒ์„ ์ œ๊ณตํ•˜๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฐ”์ธ๋”์˜ ํ•œ ๊ฐ€์ง€ ํฐ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ๋…ธํŠธ๋ถ์„ ์‚ฌ์šฉํ•˜์—ฌ ์†Œ๊ทœ๋ชจ ์›Œํฌ์ƒต/ํšŒ์˜/์ž์Šต์„œ๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋„ˆ๋ฌด ๋ฉ‹์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค! JupyterLab์—๋Š” ์‹ค์ œ๋กœ PR์— ๋ฐ”์ธ๋” ๋งํฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ์ž‘์€ ๋ด‡์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๋ฌผ์–ด๋ณผ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: https://github.com/jupyterlab/jupyterlab/pull/8410#issuecomment -626757346).

@choldgraf ์ด๋ฏธ ์ด

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