Share via


開發生命週期

開發生命週期策略提供存放庫、分支、自動化組建、部署和復原策略在自動登陸區域建立期間的重要設計考慮和建議。

存放庫策略

設計考量

  • 請考慮採用 Git 之類的版本控制系統,為您的小組提供程式碼共用和管理的彈性。

    • Git 是業界標準的版本控制系統。 這是分散式版本控制系統,程式碼的本機複本是存放庫的完整版本。
  • 瞭解 mono-repo 與 multirepo 存放庫結構

    • 在單一存放庫結構中,所有原始程式碼都位於單一存放庫中。
    • 在多存放庫結構中,所有專案都會組織成不同的存放庫。
  • 選擇適合存放庫內容的可見度設定。

    • 您可以匿名存取公用存放庫。
    • 私人存放庫要求使用者獲得存放庫的存取權,並登入存取服務。
    • 您可以設定 Azure DevOps ProjectsGitHub 存放庫的公用和私人可見度。
  • 請考慮設定存放庫許可權,以協助您控制誰可以參與原始程式碼及管理其他功能。

  • 請考慮使用 基礎結構即程式碼 (IaC) 資源部署至 Azure。 IaC 可讓您管理宣告式模型中的基礎結構、協助減少設定工作、確保部署之間的一致性,以及避免手動環境設定。

  • Azure 透過下列方式,為登陸區域提供 IaC 的支援:

設計建議

  • 使用 Git 作為版本控制系統。

  • 建置 Azure 登陸區域時使用私人存放庫

  • 共用非機密資訊時,請使用公用存放庫,例如自動化範例、公用檔和開放原始碼共同作業資料。

  • 採用 IaC 方法來部署、管理、控管及支援雲端資源。

分支策略

設計考量

  • 請考慮使用 分支策略 ,讓小組能夠更妥善且有效率地管理版本控制。

  • 請考慮針對您的分支使用特定的 命名慣例

  • 請考慮使用 分支許可權 來控制使用者功能。

  • 請考慮使用分支原則來協助小組保護重要的開發分支。 可協助強制執行程式碼品質和變更管理標準的原則。 分支原則的範例包括:

  • 採用提取要求策略可協助您控制合併至分支的程式碼變更。

    • 定義 合併策略
    • 提取要求應該很簡單,將檔案數目保留到最低,以協助檢閱者更有效率地驗證認可和變更。
    • 提取要求應該有清楚的標題和描述,讓檢閱者知道在檢閱程式碼時預期的情況。
    • 您可以使用 提取要求範本
    • 您可以在提取要求完成之後刪除原始分支,這可讓您更充分掌控和更好的分支管理。

設計建議

  • 採用 主幹型開發模型,讓開發人員認可至單一分支。 此模型有助於持續整合。 所有功能工作都會在主幹中完成,而且在認可發生時會解決任何合併衝突。

  • 讓小組定義並使用分支的一致命名慣例來識別完成的工作。

  • 設定許可權來控制誰可以在 Git 存放庫的分支中讀取和更新程式碼。 您可以設定個別使用者和群組的許可權。

  • 設定分支原則:

    • 需要對分支合併使用提取要求至主要分支。
    • 提取要求需要最少的檢閱者數目。
    • 重設所有核准投票以移除所有核准投票,但每當來源分支變更時,請保留投票以拒絕或等候。
    • 自動包含程式碼檢閱者。
    • 檢查批註解析。
  • 將 squash 設定為合併策略,可讓您在完成提取要求時壓縮主題分支的 Git 歷程記錄。 squash merge 會將主題分支上的每個認可新增至預設分支的歷程記錄,而是將所有檔案變更新增至預設分支上的單一新認可。

自動化組建

設計考量

  • 請考慮實作 持續整合 (CI) 。 CI 牽涉到將所有開發人員程式碼合併成一般排程的中央程式碼基底,並自動執行標準組建和測試程式。

  • 請考慮使用 CI 觸發程式:

    • Azure Repos Git。 您可以將分支、路徑和標記設定為執行 CI 組建的觸發程式。
    • GitHub。 您可以設定分支、路徑和標記觸發程式來執行 CI 組建。
  • 請考慮在建置程式中納入 IaC 單元測試,以驗證語法。

  • 請考慮在應用程式建置程式中納入單元測試。 檢閱 Azure DevOps Pipeline可用的工作。

  • 使用 Azure DevOps 服務連線或 GitHub 秘密來管理與 Azure 的連線。 每個連線都應該具有 Azure 資源的正確許可權存取權。

  • 請考慮使用Azure 金鑰保存庫秘密來儲存和管理機密資訊,例如密碼、API 金鑰、憑證。

  • Azure DevOps 代理程式 可以自我裝載或 Microsoft 裝載。

    • 當您使用 Microsoft 裝載的代理程式時,會為您處理維護和升級。 每次執行建置作業時,都會建立全新的虛擬機器。
    • 您可以自行設定和管理自我裝載代理程式,以執行建置作業。

設計建議

  • 每次小組成員認可版本控制變更時,使用 CI 將程式碼的建置和測試自動化。

  • 包含 IaC 和應用程式程式碼的單元測試,作為建置程式的一部分。

  • 可能的話,請使用 Microsoft 裝載的集區,而不是自我裝載集區,因為它們會為每個管線執行提供隔離和全新 VM。

  • 當您透過服務連線或 GitHub 秘密將 Azure DevOps 或 GitHub 連線至 Azure 時,請務必一律定義範圍,使其只能存取所需的資源。

  • 使用金鑰保存庫秘密來避免硬式編碼敏感性資訊,例如認證 (虛擬機器的使用者密碼) 、憑證或金鑰。 然後使用秘密作為組建和發行作業中的變數。

部署策略

設計考量

  • 請考慮使用 持續傳遞 (CD) 。 CD 牽涉到從組建建置、測試、設定及部署至環境。

  • 請考慮使用 環境。 環境可讓您以傳遞作業中的資源集合為目標。 常見環境名稱的範例包括:

    • Dev
    • 測試
    • QA
    • 預備
    • 生產
  • 請考慮使用 IaC 作為策略的一部分,以驗證和確認預先部署的變更。

設計建議

  • 使用 CD 確保程式碼一律已準備好部署,方法是自動建置、測試及將程式碼部署到類似生產環境。 新增持續傳遞以建立完整的 CI/CD 整合,以協助您儘快偵測程式碼瑕疵,並確保您可以快速發行正確測試的更新。

  • 使用環境作為部署策略的一部分。 環境提供優點,例如:

    • 部署歷程記錄
    • 認可和工作專案的可追蹤性
    • 診斷資源健康情況
    • 安全性
  • 包含 IaC 部署前檢查,以便預覽變更。 並查看資源是否已建立、修改或刪除的詳細資料。

復原策略

設計考量

  • 請考慮建立復原計畫。 復原部署牽涉到將部署還原為已知的良好狀態,並提供從失敗部署復原的重要功能。

  • 如果您需要還原認可中的變更、捨棄變更或將分支重設為先前的狀態,請考慮在 Git 中使用 復原 變更。

設計建議

  • 當您需要將變更還原至已認可的檔案、捨棄未認可的變更或將分支重設為先前狀態時,請採用 Git 中的復原變更。