前面了解了 Jenkins 上各種任務的差別後,我們就來實踐應用下,先建立一個【檔案夾】類型的任務,将我們目前的一些基礎的示範任務【移動】到檔案夾裡面去,這樣可以先做個簡單的分類。
建立一個【檔案夾】類型的任務,名稱為
Jenkins-Basic
:
可以看到【檔案夾】類型的任務可配置的内容很少,不做特殊設定,預設即可:
然後我們将前面的示範項目移動到這個檔案夾下面:
接下來我們将做個實戰任務,示範任務的建構、打包、上傳、部署等操作,以及詳細解析任務的各個配置階段。
建立一個【建構一個***風格的軟體項目】類型的任務,名稱為
demo-todo-list
:
配置如下:
我建構了多次才成功,主要是下載下傳建構工具 Gradle 逾時,在第九次建構後才成功,建構後看看日志如下:
我們現在調整下配置,在【建構後操作】下面添加一項【Send build artifacts over SSH】,這樣做的目的是将我們建構出來的可執行 jar 包發送到我們的伺服器,然後在用指令行啟動我們的 Spring boot 應用:
簡單說下這裡的配置:在 SSH Server Name 這裡展開選擇我們之前配置好的一台伺服器;Source files 定位到我們 jar 包的位置;Remove prefix 和 Remote directory 是可選的,我這裡為了目錄簡潔,在 Remove prefix 這裡填入 build/libs/,這表示會将 Source files 中 build/libs/demo-todo-list*.jar 的前面 build/libs/ 移除掉;Remote directory 我這裡填入的是 service-deploy,這表示将檔案發送到遠端伺服器使用者目錄下的 service-deploy 檔案夾下面,需要注意的是要確定目錄 service-deploy 存在。然後在 Exec command 處填入下面的指令:
# 進入到指定的目錄
cd service-deploy
# 檢查服務是否在運作,如果在運作就将其停掉
ps -ef | grep demo-todo-list | grep -v grep | awk '{print $2}' | xargs kill -15 | echo "todo list 服務不存在"
# 将舊的 jar 删除
rm -rf demo-todo-list.jar
# 将新的 jar 重命名下
mv demo-todo-list*.jar demo-todo-list.jar
# 啟動我們的服務
nohup java -jar demo-todo-list.jar > /dev/null 2>nohup.log &
然後去到我們的伺服器上看看相關情況,看看目錄結構以及服務的啟動日志:
到這裡,一個實戰的 Jenkins 任務就完成了。接下來就詳細說說任務配置中的各個設定項的意義。
在 Jenkins 任務的配置裡面主要分如下幾個大類可以設定:【General】、【源碼管理】、【建構觸發器】、【建構環境】、【建構】以及【建構後操作】。
【General】主要是對任務進行一些前期的設定,裡面一個重要的設定是【參數化建構過程】,例如我們可以通過參數來控制要建構哪一個分支,或者建構時會用到的參數也是通過這裡配置,參數配置可以支援多種類型的參數,常見的有字元參數、密碼參數、布爾參數、選項參數、憑據參數和檔案參數等。【源碼管理】很容易了解,我們的項目代碼都會通過代碼倉庫進行管理,目前 Jenkins 支援 Git、Mercurial 和 Subversion 等主流的源碼管理平台。【建構觸發器】可以設定為定時建構、輪詢 SCM(定時檢查源碼倉庫有新的代碼才建構)、觸發遠端建構(例如通過URL請求觸發)、其他工程建構後觸發等。【建構環境】主要是對建構進行一些環境準備,例如有時候建構項目時需要確定沒有其他無關檔案的影響,就可以設定建構前删除工作空間,如果需要證書密碼檔案,可以配置添加需要的檔案。【建構】就是真正的項目打包操作的,一般來講主要是将項目建構打包成 jar 包、war 包、可執行檔案、安裝包、或者壓縮檔案,舉個例子如果是 Maven 項目就執行 maven 的打包指令,Gradle 項目就執行 gradle 的打包指令。【建構後操作】主要是将打包出來的檔案發送到某個地方以及一些通知相關的操作,例如我們打包的 Java 項目最終要部署到某台伺服器,就通過 SSH 傳送檔案完成,也可以将建構出來的檔案進行存檔,還可以将檔案上傳到OSS 等雲服務對象存儲裡面。如果是建構失敗了我們需要立即知道,還可以配置郵件或者釘釘來立即通知我們。