驗證{#authentication}
要與伺服器互動,CLI 需要使用 bearer authentication 來驗證請求。CLI 支援以使用者、帳號或使用 OIDC 令牌進行驗證。
身為使用者{#as-a-user}#
在本機使用 CLI 時,我們建議您以使用者身份進行驗證。要以使用者身份驗證,您需要執行以下指令:
tuist auth login
該指令會帶您經過網頁式驗證流程。驗證完成後,CLI 會在~/.config/tuist/credentials
下儲存一個長效的刷新令牌和一個短效的存取令牌。該目錄中的每個檔案代表您驗證的網域,預設應為tuist.dev.json
。該目錄中儲存的資訊相當敏感,因此請務必妥善保管 。
CLI 在向伺服器提出要求時會自動查詢憑證。如果存取權限已過期,CLI 會使用刷新權限來取得新的存取權限。
OIDC 代幣{#oidc-tokens}#
對於支援 OpenID Connect (OIDC) 的 CI 環境,Tuist 可以自動進行驗證,而不需要您管理長期保密資訊。在支援的 CI 環境中執行時,CLI 會自動偵測 OIDC 令牌提供者,並將 CI 提供的令牌交換為 Tuist 存取令牌。
支援的 CI 提供者{#supported-ci-providers}#
- GitHub 動作
- CircleCI
- Bitrise
設定 OIDC 驗證{#setting-up-oidc-authentication}#
-
將您的套件庫連接到 Tuist: 按照 GitHub 整合指南,將您的 GitHub 套件庫連接到 Tuist 專案。
-
執行
tuist auth login:在您的 CI 工作流程中,在任何需要驗證的指令之前執行tuist auth login。CLI 會自動偵測 CI 環境,並使用 OIDC 進行驗證。
請參閱 Continuous Integration 指南,以瞭解特定提供商的配置範例。
OIDC 令牌範圍{#oidc-token-scopes}#
OIDC 原始碼授權給ci scope group,可存取與儲存庫相連的所有專案。有關ci 範圍包括的詳細資訊,請參閱
範圍群組。
OIDC 驗證比長期使用的權杖更安全,因為:
- 無須輪換或管理秘密
- 代幣的有效期很短,而且只適用於個別工作流程的執行
- 驗證與您的儲存庫身分掛鉤
帳戶代幣{#account-tokens}#
對於不支援 OIDC 的 CI 環境,或當您需要對權限進行精細控制時,您可以使用帳戶令牌。帳戶令牌可讓您精確指定令牌可以存取的範圍和專案。
建立帳戶標記{#creating-an-account-token}#
tuist account tokens create my-account \
--scopes project:cache:read project:cache:write \
--name ci-cache-token \
--expires 1y
指令接受下列選項:
| 選項 | 說明 |
|---|---|
-範圍 |
必填。以逗號分隔的範圍清單,以授予權標。 |
--名稱 |
必須填寫。令牌的唯一識別碼(1-32 個字元,僅限字母、數字、連字符號及底線)。 |
--到期 |
可選擇。令牌的到期時間。使用格式如30d (天)、6m (月),或1y (年)。如果未指定,令牌永不過期。 |
--項目 |
限制令牌存取特定專案句柄。如果未指定,令牌可存取所有專案。 |
可用範圍{#available-scopes}#
| 範圍 | 說明 |
|---|---|
帳戶:成員:讀取 |
讀取帳戶成員 |
account:members:write |
管理帳戶成員 |
帳號:註冊表:讀取 |
從 Swift 套件註冊表讀取 |
account:registry:write |
發佈至 Swift 套件註冊表 |
專案:預覽:閱讀 |
下載預覽 |
project:previews:write |
上傳預覽 |
project:admin:read |
讀取專案設定 |
project:admin:write |
管理專案設定 |
專案:快取:讀取 |
下載快取的二進位檔 |
project:cache:write |
上傳快取的二進位檔 |
project:bundles:read |
檢視束裝產品 |
project:bundles:write |
上傳束裝 |
project:tests:read |
讀取測試結果 |
project:tests:write |
上傳測試結果 |
專案:建置:讀取 |
閱讀建立分析 |
project:builds:write |
上傳建立分析 |
專案:執行:讀取 |
讀取指令執行 |
project:runs:write |
建立與更新指令執行 |
範圍群組{#scope-groups}#
作用域群組提供了一種方便的方式,可以使用單一識別碼授予多個相關的作用域。當您使用作用域群組時,它會自動展開以包含它所包含的所有個別作用域。
| 範圍組 | 包含的鏡頭 |
|---|---|
ci |
project:cache:write,project:previews:write,project:bundles:write,project:tests:write,project:builds:write,project:runs:write |
持續整合 (CI){#continuous-integration-ci}#
對於不支援 OIDC 的 CI 環境,您可以使用ci 範圍群組建立帳號令牌,以驗證您的 CI 工作流程:
tuist account tokens create my-account --scopes ci --name ci
這會建立一個具有典型 CI 作業 (快取、預覽、bundles、測試、建立和執行) 所需的所有權限的標記。在您的 CI
環境中,將產生的標記儲存為秘密,並設定為TUIST_TOKEN 環境變數。
管理帳戶代幣{#managing-account-tokens}#
列出帳戶的所有代幣:
tuist account tokens list my-account
以名稱撤銷權限:
tuist account tokens revoke my-account ci-cache-token
使用帳戶代幣{#using-account-tokens}#
帳號代碼預期會定義為環境變數TUIST_TOKEN :
export TUIST_TOKEN=your-account-token
需要時使用帳戶代用幣:
- 在不支援 OIDC 的 CI 環境中進行驗證
- 對於令牌可執行的操作進行細粒度控制
- 可存取帳戶內多個專案的標記
- 自動過期的限時代用幣