12.1 修改代碼
如我以上所述,現代開發就是對代碼做小改動。這樣做了幾十年的幾百萬程序員,所以這個流程已經在各種可能的方法中調整、標準化和規範化了。
首先,存儲代碼需要一個特殊的程序——Git。Git 是一個分散式版本控制系統,用於追蹤代碼變更和協調程序員在合作項目中的工作。
Git 允許開發者在項目中創建分支,同時保留完整的變更歷史記錄和回到文件任何狀態的可能性。這提供了有效的變更合併和衝突解決,使 Git 成為現代軟件開發中集體工作代碼的主要工具。
其次,代碼變更的過程也已標準化。通常為每一個新功能在 Git 中創建一個新分支,將對其的修改以提交系列的形式推送,然後發送 Pull Request 給你的 Team Lead 或團隊成員進行 Code Review 並確認你的更改。
如果一切順利,你的變更會合併到 dev 分支,啟動自動項目構建和測試。很多測試。
12.2 組建項目
在測試或上傳項目到伺服器之前,需要進行構建。
項目構建——是將項目的源代碼編譯成可執行程序或其他可運行格式的過程,通常包括測試和部署。這是軟件開發的關鍵方面,保證程序準備使用。
構建不是編譯,但編譯通常是構建過程的一部分。構建完成後,你往往會有數十甚至數百個文件需要上傳到不同的伺服器。
构建工具可以是低級的:
Maven 和 Gradle——廣泛用於 Java 項目中,管理依賴和項目構建。
Apache Ant——另一個 Java 項目的構建工具,在編寫構建腳本方面提供了更大的靈活性。
MSBuild——用於構建使用 Microsoft Visual Studio 創建的項目。
Make——經典的構建工具,使用 Makefile 定義構建規則,特別流行於 C 和 C++ 項目中。
Webpack——常用於構建 JavaScript 應用程序,管理依賴和模塊。
Gulp 和 Grunt——工具來幫助自動化在 Web 應用程序開發中經常執行的任務,如文件壓縮和將 SCSS 編譯成 CSS。
构建工具也可以是高級的。下面會講到。
12.3 CI/CD
CI/CD(Continuous Integration/Continuous Delivery)——方法論,意味著不斷將所有開發分支的變更合併到主分支並自動測試和部署這些變更。這可快速發現和修復錯誤,提高開發效率和速度。
一個最常見的 CI/CD 系統——Jenkins。如果你在小公司工作,使用它的可能性是 80%。
Jenkins——受歡迎的自動化系統,用於連續集成和交付(CI/CD)。Jenkins 允許自動化軟件開發的各個階段,包括構建、測試和部署,這提高了代碼質量並加快了開發過程。
如果你進入大公司,可能還有 5 個選擇:
TeamCity——JetBrains 的強大商業系統,提供與各種開發和測試環境的深度集成。
GitLab CI——GitLab 的內置部分,通過 YAML 文件配置提供連續集成和交付。
CircleCI——雲端 CI/CD 服務,支持多個項目的自動化測試和部署。
Travis CI——第一個雲端 CI 服務之一,廣泛用於開源項目,與 GitHub 集成良好。
Bamboo——Atlassian 的產品,與該公司其他工具如 Jira 和 Bitbucket 緊密集成。
了解其和掌握工作不需要:公司通常有 DevOps 專家負責設置所有這些構建過程。你只需要知道它們存在,並了解當談到 Jenkins、CI/CD 或 "continuous integration" 時是在說什麼。
12.4 把項目送到伺服器
光寫項目還不夠,它還應該出現在你的伺服器上。部署(deploy)項目到伺服器——是將 web 應用程序放置和激活在伺服器上的過程,以便用戶可以通過網絡訪問它。
這包括將項目文件轉移到伺服器上,設置伺服器環境、數據庫、依賴以及配置網絡設置和安全性。
你覺得你的代碼會怎麼到伺服器上?有人會上傳它?還是你會通過 SSH 連接到遠程伺服器,傳一些文件並自行設置?放輕鬆:現在不再這樣做了。現在有 Docker。
Docker——是一個使用容器化技術的平台,用於開發、交付和運行應用程序。Docker 簡化了應用程序的創建、部署和運行流程,允許使用容器將應用程序及其所有環境和依賴打包成一個緊湊對象,確保各開發、測試和生產階段環境的一致性。
Docker 允許將你的項目或項目打包進 Docker 容器。這有點像虛擬機器,但非常輕量化。
儘管在任何 Docker 論壇上,如果你稱其為虛擬機器,可能會遭遇批評,但如果你知道虛擬機器是什麼,可以將 Docker 容器視作虛擬機器。只是非常輕量化。
本質上,Docker 容器就是一個虛擬的「虛擬機器」。虛擬機器包含操作系統的完整拷貝、操作系統核心和虛擬硬體,而 Docker 容器共享主機的核心,可以更輕便、快速。
是的,使用 Docker 部署項目大大簡化了應用程序的部署過程,確保速度和可靠性。項目打包成 Docker 容器,可以在任何支持 Docker 的系統上輕易移動和運行。
這消除了與伺服器環境差異相關的問題,使應用程序易於擴展,按需求增加或刪除容器。大家都轉到 Docker 上了——這很方便,也很簡單。
GO TO FULL VERSION