Skip to content

Latest commit

Β 

History

History
93 lines (72 loc) Β· 2.63 KB

File metadata and controls

93 lines (72 loc) Β· 2.63 KB

gsmsv CLI

GSM SV ν”Œλž«νΌ(VM Β· μ„œλ²„λ¦¬μŠ€ ν•¨μˆ˜)을 ν„°λ―Έλ„μ—μ„œ κ΄€λ¦¬ν•˜λŠ” CLI μž…λ‹ˆλ‹€. vercel CLI 와 λΉ„μŠ·ν•œ μ‚¬μš©κ°μ„ λͺ©ν‘œλ‘œ ν•©λ‹ˆλ‹€.

  • μ˜μ‘΄μ„± 0 β€” Node 20+ 의 λ‚΄μž₯ fetch / util.parseArgs 만 μ‚¬μš©. λΉŒλ“œ 단계 μ—†μŒ.
  • λ°±μ—”λ“œμ˜ Authorization: Bearer 인증을 μ‚¬μš©ν•˜λ©°, access token 만료 μ‹œ refresh token 으둜 μžλ™ κ°±μ‹ ν•©λ‹ˆλ‹€.
  • 자격증λͺ…은 ~/.gsmsv/auth.json (κΆŒν•œ 600) 에 μ €μž₯λ©λ‹ˆλ‹€.

μ„€μΉ˜

cd cli
npm link        # 전역에 gsmsv / gsm λͺ…λ Ή 등둝
# λ˜λŠ” μ„€μΉ˜ 없이 직접 μ‹€ν–‰
node src/index.js <λͺ…λ Ή>

μ‹œμž‘ν•˜κΈ°

gsmsv login                         # 이메일/λΉ„λ°€λ²ˆν˜Έ μž…λ ₯
gsmsv login --email me@gsm.hs.kr --role project_owner
gsmsv whoami

κΈ°λ³Έ λ°±μ—”λ“œλŠ” https://gsmsv.site μž…λ‹ˆλ‹€. 둜컬 개발 λ°±μ—”λ“œλ‘œ λ°”κΎΈλ €λ©΄:

gsmsv config set api http://localhost:8000
# λ˜λŠ” ν•œ 번만:  gsmsv --api http://localhost:8000 vm ls
# λ˜λŠ” ν™˜κ²½λ³€μˆ˜: GSMSV_API_URL=http://localhost:8000 gsmsv vm ls

VM

gsmsv vm ls                         # λ‚΄ VM λͺ©λ‘
gsmsv vm inspect 105                # 상세 + 접속 정보 (IP, λΉ„λ°€λ²ˆν˜Έ)
gsmsv vm start 105
gsmsv vm stop 105
gsmsv vm reboot 105
gsmsv vm create --tier small --os ubuntu2204 --name my-server
gsmsv vm rm 105 --yes

# μŠ€λƒ…μƒ·
gsmsv vm snapshot ls 105
gsmsv vm snapshot create 105 before-deploy --desc "배포 μ „ λ°±μ—…"
gsmsv vm snapshot rollback 105 before-deploy
gsmsv vm snapshot rm 105 before-deploy

VM λͺ…령은 vmid 만 μ£Όλ©΄ CLI κ°€ my-vms μ—μ„œ λ…Έλ“œλ₯Ό μžλ™μœΌλ‘œ μ°Ύμ•„λƒ…λ‹ˆλ‹€.

μ„œλ²„λ¦¬μŠ€ ν•¨μˆ˜

gsmsv fn ls
gsmsv fn deploy index.js            # 이름이 κ°™μœΌλ©΄ κ°±μ‹ , μ—†μœΌλ©΄ μ‹ κ·œ (idempotent)
gsmsv fn exec my-fn --data '{"hello":"world"}'
gsmsv fn logs my-fn --limit 30
gsmsv fn inspect my-fn
gsmsv fn rm my-fn --yes

id μžλ¦¬μ—λŠ” ν•¨μˆ˜ ID 전체/μ•ž 8자리/이름 쀑 μ•„λ¬΄κ±°λ‚˜ μ“Έ 수 μžˆμŠ΅λ‹ˆλ‹€.

gsmsv.json (ν”„λ‘œμ νŠΈ μ„€μ •)

ν•¨μˆ˜ 폴더에 gsmsv.json 을 두면 gsmsv fn deploy 만으둜 λ°°ν¬λ©λ‹ˆλ‹€:

{
  "name": "my-fn",
  "entry": "index.js",
  "runtime": "javascript",
  "timeout": 10000,
  "memoryLimit": 128,
  "description": "μ˜ˆμ‹œ ν•¨μˆ˜",
  "env": { "API_KEY": "..." }
}

examples/hello-fn/ 에 λ™μž‘ν•˜λŠ” μ˜ˆμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€.

μ „μ—­ μ˜΅μ…˜

μ˜΅μ…˜ μ„€λͺ…
--json κ²°κ³Όλ₯Ό JSON 으둜 좜λ ₯ (슀크립트/νŒŒμ΄ν”„μš©)
--api <url> 이번 μ‹€ν–‰μ—λ§Œ λ°±μ—”λ“œ μ£Όμ†Œ μ§€μ •
-y, --yes 확인 ν”„λ‘¬ν”„νŠΈ μžλ™ 승인
-h, --help 도움말
-v, --version 버전