簡介:Jenkins 由於其開源特性以及豐富插件能力,長久以來都是中小企業搭建 CICD 流程的首選。不過 Jenkins 存在維護成本高、配置復雜等缺點,雲效 Flow 較好地解決了這些問題。 本文從一個 Java 應用部署到雲服務器(ECS)的場景切入,對比使用阿里雲雲效流水線 Flow 和 Jenkins 兩種構建部署方式,供大家選型參考。
隨着計算機技術和業務不斷發展,企業軟件規模越來越龐大,交付越來越復雜。持續交付 DevOps 解決方案逐漸深入人心,成為企業開發者研發模式首選。
市面上存在多種多樣的 CICD 工具,不同的工具有不同特點。從開源的本地工具 Jenkins、TeamCity,到雲端免費工具 Travis CI、Github Action,到如今雲原生時代專注於 Kubernetes 的 ArgoCD、Tekton Pipeline。
Jenkins 由於其開源特性以及豐富插件能力,長久以來都是中小企業搭建 CICD 流程的首選。不過 Jenkins 存在維護成本高、配置復雜等缺點,雲效 Flow 較好地解決了這些問題。
本文從一個 Java 應用部署到雲服務器(ECS)的場景切入,對比使用阿里雲雲效流水線 Flow 和 Jenkins 兩種構建部署方式,供大家選型參考。
需求分析
當前我們有一個存放 Java 代碼的倉庫,需要對源代碼進行構建,獲得構建產物並將構建產物部署到雲服務器(ECS)組。該過程簡單抽象如下:
流程拆分
環境准備
Flow
Flow 作為一個 SaaS 服務,開箱即用。用戶只需要一個阿里雲賬號即可開啟持續交付之旅。
Jenkins
Jenkins 是一個開源的 CI 工具,用戶需要提供機器資源來部署 Jenkins Master 節點。如果需要在公網環境下訪問Jenkins頁面,通過公網IP或彈性IP等暴露訪問地址。以一台阿里雲 ECS(Centos 8)為例,安裝Jenkins的過程包括:
# 安裝 git、java 基礎工具 yum install git java # 修改 Jenkins 配置,如監聽端口等 vim /etc/sysconfig/jenkins JENKINS_PORT="8081" # 安裝 Jenkins sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key sudo dnf install jenkins sudo systemctl start jenkins sudo systemctl enable jenkins systemctl status jenkins
當Jenkins進程啟動后,可以通過機器ip+端口的方式訪問,登錄到Jenkins頁面。
主機組配置
我們將最終 java 應用運行的服務器叫為主機組的概念,它可以包括 n>=1 台服務器。
Flow
Flow 主機組支持兩種類型,包括阿里雲ECS和能訪問公網的阿里雲主機。以登錄阿里雲賬號下ECS為例:
a. 訪問主機組管理頁
b. 點擊創建按鈕,選擇阿里雲ECS
Jenkins
以通過 ssh private key 訪問服務器為例,首先我們需要在機器上生成一對 rsa 密鑰,執行一下命令一路回車
ssh-keygen -t rsa -m PEM
在 ~/.ssh 目錄下可以看到生成的密鑰文件,復制id_rsa私鑰的內容
[root@iZbp1614mku6kuzmrnyi6uZ .ssh]# ls -al 總用量 16 drwx------ 2 root root 80 5月 30 14:26 . dr-xr-x---. 7 root root 233 5月 30 14:43 .. -rw------- 1 root root 1574 5月 30 14:26 authorized_keys -rw------- 1 root root 2455 5月 30 14:26 id_rsa -rw-r--r-- 1 root root 582 5月 30 14:26 id_rsa.pub -rw-r--r-- 1 root root 173 5月 30 13:55 known_hosts
訪問Jenkins 添加 Credentials 配置頁,如http://xxxx:8081/credentials/store/system/domain/_/newCredentials
構建、部署配置
Flow
a. 選擇 Java · 構建、部署到阿里雲ECS/自有主機 模板
Jenkins
a. 訪問 http://xxxx:8081/newJob 開始新建任務
小結
此時我們在 Jenkins 走通了 Clone git repo -> Mvn Build -> Deploy To ECS的流程。
Flow | Jenkins | |
環境准備 |
|
|
主機組配置 |
|
|
構建配置 |
|
|
部署配置 |
|
|
可以看到 Flow 在軟件持續交付的場景下做了非常多好用的功能,使用戶可以將精力收斂於業務邏輯本身。
原文鏈接
本文為阿里雲原創內容,未經允許不得轉載。