應用主幹型開發

已完成

有了你的訓練腳本和程式碼控制中的工作定義,下一個挑戰是如何保護它們。 兩位資料科學家同時在 main 分支上編輯同一個檔案,可能會造成衝突,更重要的是,還可能意外破壞其他人所依賴的程式碼。 主幹型開發能讓您的團隊以結構化的方式逐步演進模型,同時維持生產程式碼的穩定。

保持共享分支的穩定

在基於主幹的開發中,貢獻者將變更整合到一個共享分支,通常是 main。 團隊維持這個分支的健康,使其成為新工作可靠的起點。

對 Proseware 專案而言,團隊要求變更必須透過提取要求達到 main。 此政策讓審查人員與自動檢查人員有機會在整合前評估每項變更。

短期功能分支

當資料科學家想要嘗試新的特徵——例如在糖尿病模型中加入 BMI 變數——他們會從main建立一個短期分支。 工作就在那裡進行,與其他人的程式碼隔離。 當實驗已可供審查時,資料科學家會提出拉取請求。

短生命週期的分支可降低與 main 相差過大的可能性,使合併更容易,衝突也更少。

提取要求、審查和必要檢查

提取要求有兩個作用:它會讓審查者清楚看到究竟變更了哪些內容,並成為自動化檢查的觸發點。 審查員可以提出問題、要求修改或批准作品。 自動化與審查同步進行。

分支保護規則或規則集可以強制執行此流程。 根據儲存庫設定,在 main 上設定的規則可以:

  • 限制直接推送
  • 合併前要求至少通過一定數量的核准
  • 合併前必須通過特定的狀態檢查

GitHub Actions 工作流程可以產生規則所需的檢查。 你會在下一個單元了解這些檢查。

注意

分支保護規則和規則集是 GitHub 倉庫的設定,不是 GitHub Actions。 工作流程定義執行什麼。 保護規則根據結果決定 是否允許合併 。

Tip

考慮一個需要數週時間的模型變更。 您要如何將其拆分成較小的變更,並在不留下長期分支的情況下合併到 main?