持續部署是軟體開發中的一種特殊方法,用於快速、安全、高效地實現軟體中的各種功能。
主要想法是創建一個可靠的自動化流程,使開發人員能夠快速將成品交付給使用者。 同時,生產也不斷改變──這就是所謂的持續交付管道(CD Pipeline)。
技能箱推薦: 實踐課程
“移動開發者專業版” .提醒: 對於“Habr”的所有讀者 - 使用“Habr”促銷代碼註冊任何 Skillbox 課程可享受 10 盧布的折扣。
為了控制流量,您可以使用多種工具,包括付費工具和完全免費的工具。 本文介紹了開發人員中最受歡迎的三種解決方案,對每個程式設計師都有用。
詹金斯
完全獨立的開源自動化伺服器。 它值得用來自動化與建置、測試、運輸或部署軟體相關的各種任務。
最低PC要求:
- 256 MB RAM,1 GB 檔案空間。
最佳的:
- 1 GB 內存,50 GB 硬碟。
要工作,您還需要其他軟體 - Java 執行環境 (JRE) 版本 8。
架構(分散式運算)如下圖所示:
Jenkins Server 是一個負責 GUI 託管以及組織和執行整個建置的安裝。
Jenkins 節點/從屬/建置伺服器 - 可以設定為代表主節點(主節點)執行建置工作的裝置。
Linux 安裝
首先需要將 Jenkins 儲存庫新增至系統:
cd /tmp && wget -q -O —
更新包存儲庫:
sudo apt update
安裝詹金斯:
sudo apt安裝詹金斯
此後,Jenkins 將透過預設連接埠 8080 在系統中可用。
要檢查功能,您需要在瀏覽器中開啟該位址
現在一切準備就緒,您可以開始建立 CI/CD 流程。 工作台的圖形介面如下所示:
詹金斯的優勢:
- 主/從架構提供的可擴展性;
- REST XML/JSON API 的可用性;
- 透過插件能夠連接大量擴充功能;
- 活躍且不斷發展的社區。
缺點:
- 沒有分析塊;
- 使用者介面不是很友善。
團隊城市
JetBrains 的商業開發。 這台伺服器很好,設定簡單,介面出色。 預設配置具有大量功能,並且可用插件的數量不斷增加。
需要 Java 執行時期環境 (JRE) 版本 8。
伺服器硬體需求並不重要:
- 記憶體 - 3,2 GB;
- 處理器 - 雙核心,3,2 GHz;
- 容量為 1 Gb/s 的通訊頻道。
伺服器可以讓您實現高效能:
- 60 個項目,300 種建置配置;
- 2 MB 分配給建置日誌;
- 50 個建置代理程式;
- 能夠在 Web 版本中與 50 個使用者一起工作,在 IDE 中與 30 個使用者一起工作;
- 100 個外部 VCS 連接,通常是 Perforce 和 Subversion。 平均變化時間為120秒;
- 每天超過150次修改;
- 在一台伺服器上使用資料庫;
- JVM伺服器進程設定:-Xmx1100m -XX:MaxPermSize=120m。
代理要求基於正在運行的程序集。 伺服器的主要任務是監視所有連接的代理,並根據相容性要求將排隊的程序集分發給這些代理,並報告結果。 代理程式有多種平台和作業系統,以及預先配置的環境。
有關建構結果的所有資訊都儲存在資料庫中。 主要是歷史記錄和其他類似資料、VCS 變更、代理程式、建置佇列、使用者帳戶和權限。 該資料庫不僅僅包括建置日誌和工件。
Linux 安裝
若要使用 Tomcat servlet 容器手動安裝 TeamCity,您應該使用 TeamCity 檔案:TeamCity .tar.gz。 下載
tar -xfz TeamCity.tar.gz
/bin/runAll。 sh [開始|停止]
首次啟動時,您需要選擇儲存組裝資料的資料庫類型。
預設配置運行於
TeamCity 的優勢:
- 設置簡單;
- 用戶友好的界面;
- 大量內建功能;
- 支援服務;
- 有一個 RESTful API;
- 良好的文件;
- 安全性好。
缺點:
- 有限的整合;
- 這是一個付費工具;
- 一個小社區(但是,它正在成長)。
光碟
一個開源項目,需要 Java 運行時環境 (JRE) 版本 8 才能安裝和運行。
系統要求:
- RAM - 最低 1 GB,越大越好;
- 處理器-雙核心,核心頻率2GHz;
- 硬碟 - 至少 1 GB 可用空間。
代理人:
- RAM - 至少 128 MB,越大越好;
- 處理器 - 至少 2 GHz。
伺服器保證代理的運行,並提供使用者方便的介面:
階段/工作/任務:
Linux 安裝
迴聲“ deb
捲曲
新增 apt-儲存庫 ppa:openjdk-r/ppa
APT-get的更新
apt-get install -y openjdk-8-jre
apt-get 安裝 go-server
apt-get 安裝 go-agent
/etc/init.d/go-server [啟動|停止|狀態|重新啟動]
/etc/init.d/go-agent [啟動|停止|狀態|重新啟動]
預設情況下,GoCd 運行於
GoCd的優勢:
- 開源;
- 易於安裝和配置;
- 良好的文件;
- 出色的使用者介面:
- 能夠在一個檢視中顯示逐步的 GoCD 部署路徑:
- 優秀的管道結構展示:
- GoCD 優化了最受歡迎的雲端環境(包括 Docker、AWS)中的 CD 工作流程;
- 該工具可以糾正管道中的問題,即時追蹤從提交到部署的每個變更。
缺點:
- 至少需要一名代理人;
- 沒有控制台顯示所有已完成的任務;
- 執行每條命令,需要為管道配置建立一個任務;
- 要安裝插件,您需要將 .jar 檔案移到/plugins/external 並重新啟動伺服器;
- 相對較小的社區。
作為結論
這只是三個工具,實際上還有更多。 選擇起來很困難,因此您肯定需要注意其他方面。
該工具的開源程式碼使人們可以了解它是什麼,並且可以更快地添加新功能。 但如果有些事情不起作用,那麼你就只能依靠自己和社群的幫助。 付費工具提供的支援有時可能是至關重要的。
如果安全性是您的首要任務,那麼值得使用本地工具。 如果沒有,那麼選擇 SaaS 解決方案是一個不錯的選擇。
最後,為了確保真正有效的持續部署流程,您需要建立標準,其具體細節將允許您縮小可用工具的範圍。
技能箱推薦:
- 兩年實踐課程
“我是一名專業網絡開發人員” .- 在線課程
《C# 開發人員》 .- 實踐年課程
《PHP 開發者從 0 到 PRO》 .
來源: www.habr.com