根據前面提到的 dbt Core 架構, CI/CD 是必須的流程,也是 dbt Cloud 在 deploy 前可以設定的流程,那用 dbt Core 要做什麼事及怎麼做呢?
我們可以從下面方向整理
根據大部分 CI 的定義,要做到兩件事
建置: 確保提交的程式碼可以執行
**自動化測試:**確保功能正常與品質
在 dbt 的框架下要通過以上 CI 項目就是跑過一次沒有出現錯誤的 dbt run
根據 dbt Cloud 的 CI 介紹文中的一段
dbt Labs recommends that you create your CI job in a dedicated dbt Cloud deployment environment that's connected to a staging database
所以我們應該把 CI 流程的 db 與正式 db 隔開,以 bigquery 為例,可以在正式 {dataset} 加上後綴 {dataset}_staging。
總和上述3點,我們大概知道要做什麼 CI 項目,接下來分享 Migo 的 data team 團隊怎麼做 dbt CI
以 jenkins 寫法為例,我們在 branch PR 的階段可以執行以下語法當作 CI 項目
sh "dbt clean"
sh "dbt deps "
sh "dbt compile "
sh "dbt build --select ${files} --vars 'env: staging' --exclude 'source:*'"
下一篇會介紹 CD 的項目及完整 jenkins