在CentOS7上搭建Jenkins+Maven+Git持續整合環境的方法

神馬小窩發表於2019-01-14

  文章主要介紹了在CentOS7上搭建Jenkins+Maven+Git持續整合環境的方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

  本文以部署 Spring boot + Maven 專案為例,使用碼雲作為程式碼託管倉庫,在 CentOS 7 上搭建 Jenkins 持續整合環境。

1. 準備工作

1.1 安裝 Java 環境

  Jenkins 是基於 Java 開發的持續整合工具,需要在 Java 環境下執行。用下面命令檢視系統是否已安裝 Java:yum list installed | grep jdk

  如果沒有,使用 yum search 命令查詢 openjdk 版本,選擇合適的 jdk 進行安裝:yum search openjdk

  yum -y install java-1.8.0-openjdk-devel

  驗證 Java 是否安裝成功:java -version

1.2 安裝 Maven

  依次執行以下兩條命令:wget http://repos.fedorapeople.org... -O /etc/yum.repos.d/epel-apache-maven.repo

  yum -y install apache-maven

  驗證 Maven 是否安裝成功:mvn -v

1.3 安裝 Git

  直接透過 yum 安裝,安裝完成後檢視版本驗證是否安裝成功:yum -y install git

  git --version

2. 安裝和配置 Jenkins:

2.1 安裝 Jenkins

  依次執行以下三條命令:sudo wget https://pkg.jenkins.io/redhat... -O /etc/yum.repos.d/jenkins.repo

  sudo rpm --import https://pkg.jenkins.io/redhat...

  yum -y install jenkins

  如果之前從 Jenkins 匯入過 key,那麼 rpm --import 將失敗,因為已經有一個 key 了。忽略它,繼續執行 install 即可。

2.2 啟動 Jenkins

  啟動 Jenkins,並且設定開機自啟動:systemctl start jenkins.service

  chkconfig jenkins on

  Jenkins 預設使用8080埠,訪問以下連結即可看到 Jenkins 的 Web 介面:http://<伺服器地址>:8080

  如果無法訪問,檢查一下防護牆,是否有開放埠,或使用命令 netstat -ntulp 檢視埠是否被佔用。

2.3 進入 Jenkins

  首次進入 Jenkins 需要輸入管理員密碼,使用以下命令檢視初始密碼:cat /var/lib/jenkins/secrets/initialAdminPassword

  選擇預設的install suggested plugins安裝外掛,等待安裝完成後依照步驟建立使用者,建立完成後即可登入。

2.4 配置 Jenkins

  進入Manage Jenkins->Global Tool Configuration,依次配置 JDK、Git 和 Maven 路徑。

2.4.1 檢視 JDK 路徑

  使用 yum 安裝的軟體不會幫我們配置環境變數,直接使用命令echo $JAVA_HOME 是看不到路徑的。

  先用以下命令檢視路徑:which java

  看到的結果是 /usr/bin/java ,但實際上這只是個軟連線,並不是 JDK 真正的所在目錄。

  繼續使用以下命令檢視:ls -l /usr/bin/java

  看到 /usr/bin/java 指向了 /etc/alternatives/java,很遺憾,還不是我們要找的真正路徑。

  繼續追蹤:ls -l /etc/alternatives/java

  結果指向了/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/bin/java,不同版本的 JDK 目錄名可能有些不同,這就是 JDK 真正所在的地方。

在CentOS7上搭建Jenkins+Maven+Git持續整合環境的方法

  同理可獲得 Maven 的所在路徑。

在CentOS7上搭建Jenkins+Maven+Git持續整合環境的方法

在CentOS7上搭建Jenkins+Maven+Git持續整合環境的方法

在CentOS7上搭建Jenkins+Maven+Git持續整合環境的方法

2.4.2 安裝和配置外掛

  進入Manage Jenkins->Manage Plugins,搜尋並安裝Publish Over SSH和Maven Integration兩個外掛,Git Plugins外掛已經預設安裝上了,我們無需再安裝。

配置 SSH 免密碼登入

  在配置外掛之前,我們先在 Jenkins 伺服器上生成金鑰對。執行以下命令切換到 jenkins 使用者:sudo su jenkins

  如果無法切換,則開啟 /etc/passwd 檔案,找到 jenkins 那一行,將 /bin/fasle 改成 /bin/bash。

  切換成功後,命令提示符的使用者名稱可能是 bash-4.2$,想要正常顯示使用者名稱的話,先切換回 root 使用者,執行以下操作:

  編輯檔案 vi ~/.bash_profile

  加入語句 export PS1='[u@h W]$'

  立即生效 source ~/.bash_profile

  再切換到 jenkins 使用者,就顯示正常了。接下來執行以下命令生成金鑰對:ssh-keygen -t rsa

  一路按回車完成,會在 /var/lib/jenkins/.ssh/ 目錄下生成 id_rsa 和 id_rsa.pub兩個檔案。

  將 id_rsa.pub 檔案裡的內容追加到應用伺服器上的 /root/.ssh/authorized_keys 檔案末尾,每行一個 key,注意是應用伺服器。重啟應用伺服器上的 ssh 服務:systemctl restart sshd.service

  現在 Jenkins 可以免密碼登入應用伺服器了,以 jenkins 使用者身份執行命令來測試一下:ssh root@<應用伺服器地址>

  首次連線會有確認提示,輸入 yes 即可。這步很重要,如果第一次沒有手動連線確認,Jenkins 會連不上。

配置 Public over SSH 外掛

  進入Manage Jenkins->Configure System,填寫Publish over SSH設定。

在CentOS7上搭建Jenkins+Maven+Git持續整合環境的方法

  Path to key:填寫剛剛生成的 id_rsa 金鑰檔案的路徑。

  Name:服務名,隨意填寫。

  HostName:應用伺服器的 IP 地址或域名。

  Username:登入應用伺服器的使用者身份。

  Remote Directory:遠端目錄, 應用伺服器上存放應用的目錄,Jenkins 會把應用複製至此目錄下。請確保此目錄存在。

  save~

3. 部署 Maven 專案

  點選 New Item 新建任務,隨意輸入任務名,選擇 Maven project, ok。

  在General,勾選 Discard old builds,可以設定最多保留構建檔案多少天,和最多保留多少個構建檔案,不然每次構建生成的檔案都會保留,佔用磁碟空間。

在CentOS7上搭建Jenkins+Maven+Git持續整合環境的方法

  配置遠端程式碼倉庫地址,Jenkins 會從該地址拉取程式碼。注意此處如果提示無法讀取倉庫,有可能是:

  公鑰沒有新增到遠端程式碼伺服器的 authorized_keys 檔案裡,上面配置 SSH 免登入是 Jenkins 訪問應用伺服器的,Jenkins 訪問程式碼伺服器也同樣需要配置,除非應用伺服器和程式碼伺服器是同一臺機器。如果使用碼雲或 GitHub 等程式碼託管平臺,會有相應的 SSH key 設定頁。

  公鑰已新增到相應檔案裡,但沒有手動連線第一次。解決方法很簡單,以 jenkins 使用者身份手動 clone 一次倉庫,確認 yes 即可。

在CentOS7上搭建Jenkins+Maven+Git持續整合環境的方法

  勾選Add timestamps to the Console Output,在控制檯輸出構建過程。

在CentOS7上搭建Jenkins+Maven+Git持續整合環境的方法

  填寫 Maven 打包指令,-DMaven.test.skip=true 表示跳過測試。

在CentOS7上搭建Jenkins+Maven+Git持續整合環境的方法

  勾選Run only if build succeeds,選擇Send files or execute commands over SSH。

在CentOS7上搭建Jenkins+Maven+Git持續整合環境的方法

  接下來就是設定 build 完之後,把 jar 包從 Jenkins 伺服器複製到應用伺服器上,並執行。

在CentOS7上搭建Jenkins+Maven+Git持續整合環境的方法

  Name:選擇之前建立的服務。

  Source files:maven 打包後生成的 jar 包,即要複製到應用伺服器執行的程式,可填多個,英文逗號分隔。

  Remove prefix:忽略字首,我們只需要複製 target 下的 jar 包,不需要在應用伺服器上生成 target 目錄。

  Remote directory:目標資料夾,會繼承全域性設定,例如此處會把 jar 包複製到 /usr/local/app/demo 目錄下。

  Exec command:複製完成後,在應用伺服器上執行的命令或指令碼。

  save->build now,構建成功後,開啟瀏覽器訪問你的站點吧~

4. 總結

  其實整個流程不是很複雜,Jenkins 從遠端程式碼庫拉取程式碼 -> 呼叫 maven 指令將專案打包 -> Jenkins 將打包好的檔案複製到遠端應用伺服器 -> 在遠端應用伺服器上執行 shell 指令,啟動程式。其中 Jenkins 兩次遠端操作都是透過 SSH 完成的。

  透過 yum 安裝 Jenkins 和 Java 比較方便,但是在配置的時候相對麻煩,安裝路徑要自己找,配置 SSH 的時候也是要用 jenkins 使用者身份,而不是 root,如果採用解壓縮包的方式就比較自由一些。

  以上就是本文的全部內容,希望對大家的學習有所幫助,

相關文章