跳转至

命令列工具

使用 cscc-cli 登入平台、提交映像檔建置、串流建置日誌,並管理自己的 API token。

存取權限: 所有已登入使用者。


登入

cscc-cli 不再 fallback 到 Kubernetes 內部 service 名稱。新機器首次使用時, 請用 --api-urlCSCC_API_URL 明確指定公開 API URL。URL 可包含 /api/v1,CLI 會自動正規化。

cscc-cli login --api-url https://api.cscc.nthu.edu.tw --username alice

CLI 會提示您輸入密碼,並呼叫 /api/v1/cli/login。此流程不使用 CAPTCHA,也不需要 X-API-Key

登入成功後,CLI 會把 cscc_... 使用者 API token 存在本機設定檔,權限為 0600。後端只保存 token 的 SHA-256 雜湊,因此明文 token 只會在建立時顯示一次。

可選擇 token 名稱:

cscc-cli login --api-url https://api.cscc.nthu.edu.tw --username alice --name workstation

匯入由儀表板建立的 token

您也可以在儀表板的 設定 → API Key & CLI 建立 API token,然後匯入 cscc-cli

cscc-cli login --api-url https://api.cscc.nthu.edu.tw --token cscc_...

CLI 會先用 /api/v1/auth/status 驗證 token,成功後才存入本機設定。這適合 已經登入瀏覽器、不想在終端機再次輸入密碼的情境。

無狀態 token 覆寫

自動化腳本可使用 CSCC_API_TOKEN,不必儲存本機設定:

CSCC_API_URL=https://api.cscc.nthu.edu.tw CSCC_API_TOKEN=cscc_... cscc-cli whoami

CSCC_DEV_TOKEN 仍作為舊版相容 alias,但新的腳本應改用 CSCC_API_TOKEN

TLS / 內部 CA

官方 cscc-cli release 已內建平台內部 root CA,因此大多數使用者不需要另外下載 憑證。若平台 root CA 輪替,請先下載新發布的 CLI binary 再重新連線。

手動 CA 設定仍保留給自訂 CLI build、緊急 CA 輪替期間,以及 TLS 除錯:

環境變數 說明
CSCC_API_URL API base URL,例如 https://api.cscc.nthu.edu.tw/api/v1
CSCC_API_TOKEN 選用的無狀態 cscc_... token 覆寫
CSCC_API_CA_CERT_PATH 一個或多個 PEM 檔路徑,可用 ,; 分隔
CSCC_API_TLS_SERVER_NAME 選用 TLS SNI 名稱;未設定時使用 config fallback
SSL_CERT_FILE 包含內部 root CA 的 PEM 檔路徑
REQUESTS_CA_BUNDLE 另一個 PEM bundle 路徑環境變數

範例:

CSCC_API_CA_CERT_PATH=/Users/me/platform-internal-root-ca.pem \
  cscc-cli login --api-url https://api.cscc.nthu.edu.tw --username alice

進階:從設定頁下載並信任 CLI CA

開啟 https://dashboard.cscc.nthu.edu.tw/settings,進入 API Key & CLI

只有在使用自訂 CLI build、測試 CA 輪替或除錯 TLS trust 時才需要這個流程。 官方 CLI 已內建平台 CA。

  1. 點擊 Download CLI CA,儲存 platform-internal-root-ca.pem
  2. 執行儀表板產生的安裝指令。
  3. 用手動 CA override 驗證 CLI 連線:
CSCC_API_CA_CERT_PATH=~/.config/cscc-cli/platform-internal-root-ca.pem \
  CSCC_API_URL=https://api.cscc.nthu.edu.tw \
  cscc-cli whoami

若不想每次設定環境變數,可將 platform-internal-root-ca.pemca.crt 放在 ~/.config/cscc-cli/;CLI 會在檢查明確 env 與 saved config path 後自動偵測。


確認身分

cscc-cli whoami

此指令會驗證已儲存的 token,並印出目前使用者與角色資訊。角色變更會立即生效,因為每次請求都會由後端 RBAC/Casbin 狀態重新解析授權。


建置映像檔

Upload 模式為預設,接受目錄、.tar.gz.zip

cscc-cli build --project <project-id> --name trainer --tag v1.0.1 .
cscc-cli build --project <project-id> --name trainer ./context.tar.gz

若來源是目錄,CLI 會打包成 .tar.gz build context;目錄或上傳的 archive 根目錄必須包含 Dockerfile。

Dockerfile-only 模式與儀表板貼上 Dockerfile 的流程一致,會呼叫 /api/v1/images/build/dockerfile

cscc-cli build --source dockerfile \
  --project <project-id> \
  --name trainer \
  --tag v1.0.1 \
  --dockerfile ./Dockerfile

cat Dockerfile | cscc-cli build --source dockerfile \
  --project <project-id> \
  --name trainer \
  --dockerfile -

Storage 模式會從可讀的平台 storage path 建置,並呼叫 /api/v1/images/build/from-storage

cscc-cli build --source storage \
  --project <project-id> \
  --name trainer \
  --storage-source personal \
  --storage-path apps/trainer

cscc-cli build --source storage \
  --project <project-id> \
  --name trainer \
  --storage-source project_storage \
  --storage-id <storage-id> \
  --storage-path apps/trainer

常用選項:

選項 說明
--project 擁有此映像檔建置的專案 ID
--name 簡短映像檿名稱,例如 trainer-api
--tag 選用映像檔 tag;省略時使用平台預設值
--source uploaddockerfilestorage
--dockerfile --source dockerfile 時的 Dockerfile 路徑,或用 - 讀 stdin
--storage-source --source storage 時使用 personalproject_storage
--storage-path 所選 storage 內的來源路徑
--storage-id project_storage 建置使用的專案 storage ID
--cpu-cores 選用建置 CPU request
--memory-gb 選用建置記憶體 request,單位 GiB
--timeout-minutes 選用建置 timeout 覆寫
--follow=false 只提交建置,不串流日誌

提交後,--follow=true 會輪詢直到建置日誌可用,串流 /api/v1/images/build/:jobName/logs?follow=true,並在 backend 回報 completedfaileddeleted 時停止且印出狀態。

CLI 會依序從登入/匯入時的 --api-urlCSCC_API_URL、已儲存 config 取得 API endpoint;沒有內部 service fallback。Production 請使用 gateway API host:

export CSCC_API_URL=https://api.cscc.nthu.edu.tw

建置請求與日誌串流會使用 cscc-cli login 建立的使用者 token:

Authorization: Bearer cscc_...

CLI 建置不需要 CSCC_API_KEYPLATFORM_API_KEYX-API-Key header。專案必須啟用 Image Build Permission,且您的專案角色必須允許建置。


Token 管理

列出有效 API token:

cscc-cli tokens list

用 token ID 撤銷 token:

cscc-cli tokens revoke <token-id>

登出目前機器:

cscc-cli logout

登出會先呼叫 DELETE /api/v1/me/api-tokens/current 撤銷目前使用的 token,接著保留 TLS 設定並清除本機 token 欄位,讓手動憑證 override 可以重複使用。


預設值

設定 預設值 說明
USER_API_TOKEN_TTL_HOURS 2160 Token 有效時間,以小時計算(90 天)
USER_API_TOKEN_MAX_ACTIVE 20 每位使用者最多可同時持有的有效 token 數
CLI_LOGIN_MAX_ATTEMPTS 5 登入失敗幾次後鎖定
CLI_LOGIN_LOCKOUT_SECONDS 900 鎖定時間,單位為秒