開發生命週期
開發生命週期策略提供存放庫、分支、自動化組建、部署和復原策略在自動登陸區域建立期間的主要設計考慮和建議。
存放庫策略
設計考量
請考慮採用 Git 之類的版本控制系統,為您的小組提供程式碼共用和管理的彈性。
- Git 是業界標準版本控制系統。 它是分散式版本控制系統,您的程式碼本地副本是存放庫的完整版本。
瞭解mono-repo與 multirepo 存放庫結構。
- 在單一存放庫結構中,所有原始程式碼都存在於單一存放庫中。
- 在多存放庫結構中,所有專案都會組織成個別的存放庫。
選擇適合您存放庫內容的可見度設定。
- 公用存放庫可以匿名存取。
- 私人存放庫要求用戶獲得存放庫的存取權,並登入以存取服務。
- 您可以設定 Azure DevOps Projects 和 GitHub 存放庫的公開和私人可見度。
請考慮設定存放庫許可權,以協助您控制誰可以參與原始程式碼及管理其他功能。
請考慮使用 基礎結構即程序代碼 (IaC) 資源部署至 Azure。 IaC 可讓您管理宣告式模型中的基礎結構,協助減少設定工作、確保部署之間的一致性,以及避免手動環境設定。
Azure 可透過下列方式支援登陸區域的 IaC:
設計建議
使用 Git 作為版本控制系統。
建置 Azure 登陸區域時,請使用私人存放庫
共用非公開資訊時,請使用公用存放庫,例如自動化範例、公用檔和開放原始碼共同作業數據。
採用 IaC 方法來部署、管理、控管和支援雲端資源。
分支策略
設計考量
請考慮使用 分支策略 ,讓小組能夠更妥善且有效率地管理版本控制。
請考慮為您的分支使用特定的 命名慣例 。
請考慮使用 分支許可權 來控制使用者功能。
請考慮使用分支原則來協助小組保護重要的開發分支。 可協助強制執行程式代碼質量和變更管理標準的原則。 分支原則的範例包括:
- 一律使用提取要求將變更合併至重要分支。
- 要求提取要求的最低檢閱 者數目。
- 自動包含程式代碼檢閱者。
- 檢查連結的工作專案 可讓您保留可追蹤性。
- 檢查批註解析 會驗證是否已解決所有PR批注。
- 限制合併類型。
採用提取要求策略可協助您控制合併至分支的程式代碼變更。
設計建議
採用以主幹為基礎的開發模型,其中開發人員會認可至單一分支。 此模型有助於持續整合。 所有功能工作都會在主幹中完成,而且在認可發生時會解決任何合併衝突。
讓您的小組定義並使用分支的一致命名慣例來識別完成的工作。
設定許可權來控制誰可以在 Git 存放庫的分支中讀取和更新程式代碼。 您可以設定個別使用者和群組的許可權。
設定分支原則:
- 要求使用分支合併至主要分支的提取要求。
- 提取要求需要最少的檢閱者數目。
- 重設所有核准投票以移除所有核准投票,但每當來源分支變更時,請保留投票以拒絕或等候。
- 自動包括程式碼檢閱者。
- 檢查註解解析。
將 squash 設定為合併策略,可讓您在完成提取要求時壓縮主題分支的 Git 歷程記錄。 squash merge 會將主題分支上的每個認可新增至預設分支的歷程記錄,而是將所有檔案變更新增至預設分支上的單一新認可。
自動化建置
設計考量
請考慮實作 持續整合 (CI)。 CI 牽涉到將所有開發人員程式代碼合併成一般排程的中央程式代碼基底,並自動執行標準組建和測試程式。
請考慮使用 CI 觸發程式:
- Azure Repos Git。 您可以將分支、路徑和標記設定為觸發程式,以執行 CI 組建。
- GitHub。 您可以設定分支、路徑和標記觸發程式來執行 CI 組建。
請考慮在建置程式中納入 IaC 單元測試,以驗證語法。
- ARM 範本測試工具組會檢查範本是否遵循建議的做法。
- Bicep linter 會檢查 Bicep 檔案是否有語法錯誤和最佳做法違規。
請考慮在應用程式建置程式中納入單元測試。 檢閱 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 牽涉到從組建建置、測試、設定及部署至環境。
請考慮使用 環境。 環境可讓您以傳遞作業中的資源集合為目標。 常見環境名稱的範例包括:
- 開發
- Test
- QA
- 預備
- 實際執行環境
請考慮使用 IaC 作為策略的一部分,以驗證和確認預先部署的變更。
設計建議
使用 CD 確保程式碼一律準備好部署,方法是自動建置、測試及將程式代碼部署到類似生產環境的環境。 新增持續傳遞,以建立完整的 CI/CD 整合,以協助您儘早偵測程式代碼缺陷,並確保您可以快速發行經過適當測試的更新。
使用環境作為部署策略的一部分。 環境提供優點,例如:
- 部署歷程記錄
- 認可和工作專案的可追蹤性
- 診斷資源健康情況
- 安全性
包含 IaC 預先部署檢查,讓您可以預覽變更,並查看資源是否已建立、修改或刪除的詳細數據。
復原策略
設計考量
請考慮建立復原計劃。 復原部署牽涉到將部署還原為已知良好狀態,並提供從失敗部署復原的關鍵能力。
如果您需要還原認可中的變更、捨棄變更,或將分支重設為先前的狀態,請考慮在 Git 中使用復原變更。
設計建議
- 當您需要將變更還原為已認可的檔案、捨棄未認可的變更,或將分支重設為先前的狀態時,請採用在 Git 中使用復原變更。