官术网_书友最值得收藏!

  • 軟件交付通識
  • 董越
  • 1178字
  • 2022-05-06 13:18:22

6.2 源代碼及其構建

下面介紹要考查哪些具體活動。這些活動有很多類型,如果直接列舉出來,可能有疏漏,也不好記。我們對這些活動大概做一個分類。

先不考慮測試相關活動。假設開發人員寫出了完美的源代碼,無須測試,那么從寫出源代碼到發布上線要經過哪些活動呢?

源代碼經過構建,形成了制品,然后把制品部署到生產環境中運行起來。這么看來,這是兩步轉換的過程。第一步,源代碼經過構建,轉換成了制品,比如容器鏡像。第二步,制品經過部署,轉換成了運行中的程序,比如運行中的容器。本節介紹為了完成第一步轉換,需要考查哪些細分領域。

第一,源代碼版本控制。盡管在軟件交付過程中有大量的內容都應當被納入版本控制中,但源代碼無疑是最重要的,也是最需要作為整體管理的。比如將某個微服務的所有源代碼放入一個代碼庫中,作為整體打上版本標簽,作為整體拉出分支,作為整體檢出(Checkout)到一個本地目錄中,等等。對源代碼被納入版本控制中的考查,實質上就是在考查版本控制工具和服務的能力與使用方式——盡管版本控制工具和服務中可能不只存放了源代碼。

除了源代碼,還有不少類型的內容也應該被納入版本控制中,但它們未必都被放入代碼庫。我們將在對應的活動中分別考查它們,比如在部署這個細分領域中考查部署腳本和/或部署過程的配置被納入版本控制中的情況。

第二,構建。構建是指把源代碼等原材料打包為安裝包、容器鏡像等制品,以供部署使用或進一步構建使用。這里所說的構建只是編譯、鏈接、打包、生成容器鏡像等轉換活動,不包括單元測試等測試活動。對于測試活動,我們另行考查。

第三,構建環境管理。構建需要在一定的環境中進行。我們常說的環境是指軟件部署運行所需要的運行環境,比如測試環境、生產環境。而這里所說的環境,是指構建所需要的環境。事實上,這個環境通常不僅用于構建,也用于代碼靜態掃描、單元測試等。我們把這個環境稱為構建環境。在流水線上,在構建環境中進行構建、代碼靜態掃描、單元測試。開發人員的本地個人開發環境也是構建環境,盡管它不僅僅是構建環境。構建環境涉及如何創建環境并保證環境的標準化,如何保證隨時都可以分配到合適的環境,等等。

第四,制品管理。構建所產生的安裝包、容器鏡像等制品需要妥善存放。這里我們關注的重點是供部署或進一步構建使用的制品,這類制品通常被存入制品庫進行管理。對這類制品的管理也作為單獨的一個細分領域來考查。這實質上也就考查了制品管理工具和服務的能力與使用方式——盡管制品管理工具和服務中可能不只存放了安裝包及容器鏡像。

此外,各種日志、報告等,比如構建日志、自動化測試報告等,雖然嚴格來說也是制品,但它們不一定要被放入制品庫中,可能會由產生它們的工具或服務本身來管理。比如由構建服務來管理構建日志,由自動化測試服務來管理自動化測試報告。所以在構建、自動化測試等活動中會對這些內容分別進行考查,而不是在這里集中考查。

主站蜘蛛池模板: 乐昌市| 伊宁市| 临朐县| 喀喇沁旗| 筠连县| 汉川市| 阿克苏市| 江孜县| 营山县| 门头沟区| 拜城县| 明水县| 临沭县| 盖州市| 泾源县| 吴堡县| 平武县| 阿克苏市| 河曲县| 潼南县| 崇文区| 喜德县| 类乌齐县| 六安市| 广宁县| 桓台县| 炉霍县| 横山县| 宁陵县| 晋宁县| 闸北区| 吉木萨尔县| 田东县| 太谷县| 邹平县| 宣汉县| 芜湖市| 乌鲁木齐县| 临沭县| 稷山县| 滨州市|