本頁說明如何安裝及設定多層級 CI/CD 工作流程後,在 Looker 中使用這類工作流程。
這些操作說明使用三層式系統,包含開發、QA 和正式環境。不過,您也可以將相同原則套用至雙層或四層系統。
這些操作說明也假設您使用 GitHub 做為 Git 供應商。您可以使用其他 Git 供應商建立 CI/CD 工作流程,但必須具備相關專業知識,才能根據供應商修改這些操作說明。
工作流程總覽
LookML 開發人員首先會在開發分支中編寫程式碼 (通常會命名為 dev-my-user-ydnv),然後使用 Looker 持續整合 (或手動執行 CI 套件) 測試變更,並提交程式碼。最後,他們開啟提取要求,將程式碼與 main 分支版本合併。
開啟提取要求後,開發人員會前往 GitHub。開發人員應使用傳統式提交訊息樣式撰寫有意義的 PR 標題,並在說明中新增註解,註解內容會納入變更記錄。如果已設定提取要求觸發,Looker 持續整合會自動驗證提取要求,開發人員可以在 Looker 或 GitHub 中查看結果。
接著,開發人員應在 GitHub 中選取審查人員。審查者會收到通知,並可將審查結果新增至 PR。如果審查者核准變更,系統會將 PR 與 main 分支合併。系統會呼叫 WebHook,開發環境現在會看到變更。
Release Please 自動化動作會自動執行,並開啟第二個 PR 來建立新的已標記版本。或者,如果已為此目的開啟 PR,Release Please 會更新該 PR。發布 PR 會附上版本號碼,以及包含變更標題和說明的修訂記錄。
當 Release Please 產生的 PR 獲得核准並合併後,系統會產生新的版本標記,並將變更記錄合併至 main 分支。Looker 的 QA 和正式版例項可使用「進階部署模式」選取這個版本。
發布版本編號和提交命名最佳做法
您可以根據環境需求,為版本和相關聯的標記命名及編號。不過,這裡使用的是語意化版本,強烈建議您採用,因為這與 Release Please 外掛程式搭配使用效果良好。
在語意化版本中,版本由三個以半形句號分隔的數字組成:MAJOR.MINOR.PATCH
- 每次發布版本修正錯誤時,
PATCH就會遞增 - 每當版本新增或改善功能時,
MINOR就會遞增,而PATCH則會重設為零,同時保持回溯相容性 - 新增不具回溯相容性的功能時,
MAJOR會遞增,而MINOR和PATCH都會設為零
傳統提交是一種系統,可根據提交對使用者的影響來命名提交。雖然不是必要條件,但使用傳統的提交命名方式,對 Release Please 外掛程式也很有幫助。
在傳統的提交命名方式中,每個提交訊息都會加上變更範圍的指標:
- 錯誤修正會以
fix:表示,例如fix: set proper currency symbol on sale_amt format - 新功能會以
feat:表示,例如feat: added explore for sales by territory - 如果功能有重大變更,會以
feat!:表示,例如feat!: rewrote sales explore to use the new calendar view - 如果文件已更新,但 LookML 未變更,提交訊息會以
doc:開頭
如果一律使用傳統式提交訊息,通常就能輕鬆判斷下一個要使用的語意版本號碼。如果提交記錄只包含 fix: 和 doc: 提交,則應遞增 PATCH。如有 feat: 提交,則應遞增 MINOR。如有 feat!:,則應遞增 MAJOR。Release Please 外掛程式甚至可以自動產生 CHANGELOG 檔案,並為版本加上標記。
使用進階部署模式
在開發例項上以 PR 形式提交變更後,Release Please 外掛程式會使用 v1.2.3 等版本標記標記變更。Looker 的進階部署模式隨後會在 Looker UI 中提供這些版本,供 QA 和正式環境例項使用。
如要部署變更,請從 Looker IDE 選擇 Deployment Manager:

按一下 Deployment Manager 右上方的「Select Commit」連結。接著,選取要部署代碼的三點圖示選單,然後選擇「Deploy to Environment」(部署至環境):

您不需要再次標記部署作業,因此請選擇「Deploy without tagging」(部署但不標記),然後按下「Deploy to Environment」(部署至環境) 按鈕:

最後,使用 Deployment Manager 推送至正式環境。
使用 Looker 持續整合
如要驗證開發分支版本中的變更,或驗證提取要求中的變更,開發人員可以使用 Looker 持續整合。持續整合提供下列驗證器:
- SQL 驗證工具:確認探索中的維度是否能針對資料庫正確執行。
- 斷言驗證工具:執行 Looker 開發人員建立的所有 LookML 資料測試,並傳回所有失敗和錯誤。
- 內容驗證器:執行 Looker 內容驗證,測試 LookML 專案中的 Look 和資訊主頁是否有錯誤。
- LookML 驗證器:執行 LookML 驗證器,測試專案中的 LookML 錯誤。
- 樣式驗證器:在專案中強制執行 LookML 程式碼標準、命名慣例和結構最佳做法。
您可以將這些驗證器分組到持續整合套件中,並在提取要求、排定時間或手動時自動執行。
SQL Validator
持續整合 SQL 驗證工具會驗證您「探索」中的維度是否能針對資料庫正確執行。這項測試會檢查 LookML 檢視表中定義的欄位,是否對應資料庫中的有效 SQL 資料欄或運算式。
SQL 驗證工具具有下列主要功能:
- 使用
LIMIT 0和WHERE 1=2子句執行查詢,驗證 SQL,不必支付資料掃描費用。 - 支援增量驗證,僅測試開發分支中變更的探索。
- 將範圍驗證限制為要查詢的特定探索或排除。
- 使用 LookML 標記或 SQL 註解 (
tags: ["ci: ignore"]或-- ci: ignore) 從驗證中排除特定維度。
如要瞭解詳情和設定選項,請參閱「持續整合 SQL 驗證器」說明文件頁面。
LookML Validator
持續整合 LookML 驗證器會檢查 LookML 專案是否有語法錯誤,例如缺少括號或無效的欄位參照。如果開發人員在 Looker IDE 以外編寫 LookML,這個驗證工具就特別實用。
LookML 驗證器具備下列主要功能:
如要瞭解詳情和設定選項,請參閱「持續整合 LookML 驗證器」說明文件頁面。
Content Validator
Continuous Integration Content Validator 會驗證儲存的內容 (例如 Look 和使用者定義的資訊主頁 (UDD)) 在 LookML 變更後是否仍能正常運作。
Content Validator 具備下列主要功能:
如要瞭解詳情和設定選項,請參閱「持續整合內容驗證器」說明文件頁面。
Assert Validator
持續整合斷言驗證器會執行專案中定義的 LookML 資料測試,驗證模型邏輯和資料完整性。
舉例來說,LookML 資料測試可能如下所示:
test: historic_revenue_is_accurate {
explore_source: orders {
column: total_revenue { field: orders.total_revenue }
filters: [orders.created_date: "2024"]
}
assert: revenue_is_expected_value {
expression: ${orders.total_revenue} = 626000 ;;
}
}
斷言驗證器具備下列主要功能:
如要瞭解詳情和設定選項,請參閱「持續整合斷言驗證器」說明文件頁面。
管理及執行 CI 套件
如要管理及執行持續整合測試,請按照下列步驟操作:
- 建立套件:在 Looker IDE 的「套件」頁面中,設定要執行的驗證器並設定選項。詳情請參閱「建立持續整合套件」說明文件頁面。
- 觸發執行:在提取要求中自動觸發驗證執行、依排程觸發驗證執行,或手動觸發驗證執行 (適用於開發分支版本或正式環境)。詳情請參閱「執行持續整合套件」說明文件頁面。
- 查看結果:在 CI 執行結果頁面上,查看錯誤訊息、受影響的 LookML 行,以及「探索」和資訊主頁的連結。詳情請參閱「查看 CI 執行結果」說明文件頁面。
Look 和資訊主頁的連結穩定性
根據預設,系統會為 Look 和資訊主頁提供遞增的數字 ID,這些 ID 會用於 Look 或資訊主頁的網址。不過,這些項目無法在不同系統之間保持同步。因此,開發中的特定資訊主頁網址不會指向 QA 或正式環境中的相同資訊主頁。
對於 UDD,您可以選擇使用 Slug,而非 ID 做為網址的一部分。Slug 是半隨機的字元組合,而非數字。您可以在匯入時設定代碼,這樣類似的網址就能在開發、QA 和正式環境中指向相同的 UDD。使用代碼而非 ID 是最佳做法,特別是從 Look 或其他 UDD「按一下」前往 UDD 時。
檢查 gzr dashboard cat 的輸出內容,即可找到 slug。您可以在資訊主頁網址中使用 Slug,取代數字 ID。
使用 Gazer 遷移使用者內容
在開發、QA 和正式環境之間複製外觀和資訊主頁等內容,通常很有用。您可能想製作內容來展示新增的 LookML,或是驗證儲存的內容在 LookML 變更後是否仍能正常運作。在這種情況下,可以使用 Gazer 在執行個體之間複製內容。
LookML 資訊主頁
在一般的 LookML CI/CD 工作流程中,系統會在執行個體之間同步處理 LookML 資訊主頁。不過,如果任何 UDD 都與 LookML 資訊主頁同步,可以使用下列指令透過 Gazer 更新:
gzr dashboard sync_lookml DASHBOARD_ID --host TARGET_SYSTEM_URL
使用者定義的資訊主頁
您可以透過 Gazer 遷移使用者定義的資訊主頁 (UDD),方法是參照資訊主頁的 ID,以及 UDD 所在的 Looker 執行個體網址。Gazer 會將資訊主頁設定儲存至 JSON 檔案,然後匯入目標 Looker 執行個體。
擷取 UDD 設定的指令如下:
gzr dashboard cat DASHBOARD_ID --host TARGET_SYSTEM_URL --dir .
這會產生名為 Dashboard_DASHBOARD_ID_DASHBOARD_NAME.json 的檔案,其中包含資訊主頁的設定。
您可以使用下列指令,將 UDD 匯入目標系統:
gzr dashboard import Dashboard_DASHBOARD_ID_DASHBOARD_NAME.json FOLDER_ID \
--host TARGET_SYSTEM_URL
Look 圖表
Look 圖表遷移作業與 使用者定義資訊主頁:UDD 遷移作業非常相似。首先,請使用 Gazer 將 Look 設定儲存至 JSON 檔案:
gzr look cat LOOK_ID --host SOURCE_SYSTEM_URL --dir .
接著,將 Look 匯入目標執行個體:
gzr look import Look_LOOK_ID_LOOK_NAME.json FOLDER_ID \
--host TARGET_SYSTEM_URL