使用持續整合的建議
適用於此 Azure 架構完善的架構營運卓越檢查清單建議:
OE:04 | 遵循經過業界證明的開發與測試做法,將軟體開發和品質保證程序優化。 如需清楚的角色指定,請將工具、原始檔控制、應用程式設計模式、檔和樣式指南等元件之間的做法標準化。 |
---|
隨著程式碼的開發、更新或甚至移除,透過直覺且安全的方法將這些變更整合到主程式碼分支中,可讓開發人員能夠提供價值。
身為開發人員,您可以進行小型程式碼變更、將這些變更推送至程式代碼存放庫,並取得品質、測試涵蓋範圍和引進 Bug 的近乎實時的意見反應。 此程式可讓您更快速且更有信心且風險較低。
持續整合 (CI) 是一種做法,原始檔控制系統和軟體部署管線會整合,以提供軟體開發小組的自動化建置、測試和意見反應機制。
關鍵設計策略
持續整合是一種軟體開發實務,開發人員會用來定期將軟體更新整合到原始檔控制系統中。
當工程師建立 GitHub 提取要求,以向 CI 系統發出訊號,表示程式代碼變更已準備好整合時,就會開始持續整合程式。 在理想情況下,整合程式會根據數個基準和測試來驗證程序代碼。 然後,它會針對這些測試的狀態,向要求工程師提供意見反應。
如果基準檢查和測試順利進行,整合程式會產生並將將部署已更新軟體的資產分階段。 這些資產包括已編譯的程式代碼和容器映像。
持續整合可藉由執行下列動作,協助您更快速地提供高質量的軟體:
- 針對程式代碼執行自動化測試,以提供重大變更的早期偵測。
- 執行程式代碼分析,以確保程式碼標準、質量和設定。
- 執行合規性和安全性檢查,以確保軟體沒有已知的弱點。
- 執行驗收或功能測試,以確保軟體如預期般運作。
- 針對偵測到的問題提供快速意見反應。
- 如果適用,請產生包含已更新程式代碼的可部署資產或套件。
自動化與管線的持續整合
若要實現持續整合,請使用軟體解決方案來管理、整合及自動化程式。 常見的做法是使用持續整合管線。
持續整合管線牽涉到一段軟體(通常裝載於雲端),可提供:
- 執行自動化測試的平臺。
- 合規性掃描。
- 報告。
- 構成持續整合程式的其他所有元件。
在大部分情況下,管線軟體會附加至原始檔控制,如此一來,當建立提取要求或軟體合併至特定分支時,就會執行持續整合管線。 原始檔控制整合也提供直接在提取要求上提供 CI 意見反應的機會。
許多解決方案,例如 Azure Pipelines 或 GitHub Actions,都提供持續整合管線的功能。
整合管線與原始檔控制
持續整合管線與原始檔控制系統整合是啟用快速自助程式代碼貢獻的關鍵。
CI 管線會在新建立的提取要求上執行。 管線包含所有測試、安全性評定和其他檢查。 CI 測試結果會直接出現在提取要求中,以允許對質量進行近乎實時的意見反應。
另一個熱門做法是建置可在原始檔控制中顯示的小型報表或徽章,讓目前的組建狀態可見。
下圖顯示 GitHub 與 Azure DevOps 管線之間的整合。 在此範例中,建立提取要求會觸發 Azure DevOps 管線。 管線狀態會出現在提取要求中。
納入自動化測試
持續整合的關鍵元素是持續建置和測試程式代碼,因為開發人員會參與程序代碼。 建立提取要求時,測試提取要求可提供快速的意見反應,指出認可尚未引入重大變更。 優點是,持續整合管線中的測試可以是在測試驅動開發期間執行的相同測試。
下列代碼段顯示來自 Azure DevOps 管線的測試步驟。 此步驟有兩個工作:
- 第一個工作會使用熱門的 Python 測試架構來執行 CI 測試。 這些測試會與 Python 程式代碼並存於原始檔控制中。 測試結果會移至名為 test-results.xml 的檔案。
- 第二項工作會取用測試結果,並將其發佈至 Azure DevOps 管線作為整合報表。
- script: |
pip3 install pytest
pytest azure-vote/azure-vote/tests/ --junitxml=junit/test-results.xml
continueOnError: true
- task: PublishTestResults@2
displayName: 'Publish Test Results'
inputs:
testResultsFormat: 'JUnit'
testResultsFiles: '**/test-results.xml'
failTaskOnFailedTests: true
testRunTitle: 'Python $(python.version)'
下圖顯示出現在 Azure DevOps 入口網站中的測試結果。
失敗的測試
失敗的測試應該暫時封鎖部署,並導致對所發生狀況進行更深入的分析。 失敗的測試也應該導致測試的精簡,或導致測試失敗的變更改善。
發佈組建狀態
許多開發人員透過在其存放庫中顯示狀態徽章來顯示其程式代碼品質很高。 下圖顯示 GitHub 中開放原始碼專案的自述文件上顯示的 Azure Pipelines 徽章。
Azure 便利化
Azure DevOps 是一系列服務,可協助您建置共同作業、有效率且一致的開發實務。
Azure Pipelines 提供組建和發行服務,以支援應用程式的持續整合和持續傳遞(CI/CD)。
適用於 Azure 的 GitHub for Actions 可讓您自動化 CI/CD 程式。 其會直接與 Azure 整合,以簡化部署。 您可以建立工作流程,以建置和測試存放庫中的每個提取要求,或將合併的提取要求部署至生產環境。
相關連結
瞭解如何使用 GitHub 或 Azure DevOps 建立持續整合管線:
瞭解如何在存放庫中顯示徽章: