流水線 自動化部署jenkins maven 之github
本文的開頭先說一下環境的準備:
運行環境:Centos 7
maven 安裝 http://maven.apache.org/
java jdk 安裝 推薦使用open jdk http://openjdk.java.net/
以上的安裝和運行開發 需要有開發經驗的老同志 可以無阻力的玩,如果是新手,我建議先吧上邊搞通 后 在往下來
我們 打開 jenkins 官網 https://www.jenkins.io/ 如果所在地區無法打開 請自行解決,懂得都懂。
如果上述 因為網絡問題無法安裝,則可以通過懂得都懂的方式自行解決
systemctl start jenkins 啟動
臨時關閉防火墻 systemctl stop firewalld.service(生產環境不建議使用)
上述安裝完成后 默認的web服務端口為 8080端口
192.168.0.100:8080
vi /var/jenkins_home/secrets/initialAdminPassword 查看訪問密碼
可以創建一個管理員用戶 也可以繼續使用 admin賬戶 我這里為了驗證流通性 所以直接使用默認的賬戶了
登錄之后
把需要的github maven 插件都給裝上,這里 如果是新手 建議把所有插件都裝上,防止后續配置過程中 出現功能缺少的問題。
找到全局憑據 添加憑據
我這里使用的github 所以需要你所在的github倉庫來一個 sshkey 來支持
ssh-keygen -t rsa -C "your_email@example.com“ 三次回車鍵 會顯示文件所在的路徑
id和描述 隨便填寫 這里為了區分
username 你的 github 郵箱
輸入 私鑰
Passphrase 當前登錄用戶的密碼 這里用來確認的 還有就是 保存好 你生成的sshkey 公鑰和私鑰
記得在你的 github 里也設置下 github端 公鑰 本地私鑰 具體github公鑰添加方式 我這里就不多說了 自行 google 解決哈。
Manage jenkins >Global Tool Configuration
里邊有 mvn 和 jdk 的目錄配置 如果加到過環境變量可以執行的可以忽略
盡情的來吐槽吧 寶貝們
上圖的步驟 非常重要 后續我們會用到這個憑據的。
接下來 我們開啟 建立模式
dashboard 新建item
構建一個maven版本項目 點擊 確認
打開編輯頁面
描述信息 相當于備注 自行填寫
圖中的 gitee鏈接 如果沒有 可以忽略
源碼管理:
Repository URL:github ssh git 鏈接
Credentials:選擇憑據 我們在開始的時候 添加的全局憑據 記得在 github遠程倉庫里也設置好哦。
Branches to build: 構建分支 可選擇的有 master develop main 現在 github的 主倉庫為main 所以 我這里設置的是 */main
上圖為構建觸發器:
GitHub hook trigger for GITScm polling 觸發 git scm
Poll SCM: H/2 * * * *(每兩分鐘 輪詢一次 具體語法可以通過其他途徑獲知)
上述的兩個選項 最終的運行是 定時去輪詢 查看 當前 本地的代碼 scm和 遠程指定分支的scm一致不一致 如果一直 則不構建 繼續下一下執行 以此類推。
構建環境
構建前 刪除工作目錄 這里可以不用勾選 我是為了看文件變動才選擇的。
Pre Steps 此處忽略
上圖為 構建 文件和參數 跳過 test
這里先 點擊保存 構建一下 看看情況。
先說一下 各種錯誤的情況吧
拉取 失敗 檢查 git遠程倉庫和 本地的配置 還有 憑據 建議使用 suername sshkey private
另外一種錯誤是權限問題 給 文件夾加權限
還有一種問題是 mvn配置有問題 記得好好檢查一下。還有 構建參數,建議在開發時的電腦上先跑一邊 確保clean install package 等命令執行后都沒有問題
切記 mvn springboot 項目 記得設置好包下的啟動類 不然會提示 沒有主體清單 導致跑不起來,很多問題再dev沒問題,生產環境 error 警告一大堆.
http://192.168.0.14:8080/job/demomvn/11/console
demomvn 創建的項目名稱 11 為構建的次數 cosnole 控制臺輸出,無論是你的構建成功 還是構建失敗 console這里的輸出會有很詳細的錯誤信息的,多看多搜索 可以解決的,我這里折騰了 將近 20小時搞定了。構建次數50-60次 。
不要以為到這就結束了啊 還沒有呢。
我以為構建成功就ok 了 可惜不是 構架成功 得讓項目跑起來呀,是不是。
下面 我們設置 構建成功后 執行的腳本
post steps
Run only if build succeeds 構建成功后 執行
一定要按照上述格式填寫腳本 不然你可能會遇到 構建無法結束 mvn jar 包 無法后臺運行等問題
#!/bin/bash
/opt/web/demo/demomvnscript/stop.sh
/opt/web/demo/demomvnscript/replace.sh
echo "Execute shell Finish"
BUILD_ID=dontKillMe nohup /opt/web/demo/demomvnscript/startup.sh &
stop.sh 這里是 結束 進程的
#!/bin/bash
echo "Stop Procedure : demomvn.jar"
pid=$(ps -ef | grep java | grep demomvn.jar | awk '{print $2}')
echo 'old Procedure pid:'$pid
if [ -n "$pid" ]; then
kill $pid
fi
結束demomvn.jar 這個進程
replace.sh 記得給目標文件夾權限 chmod 777 R dir
#!/bin/bash
cp /var/lib/jenkins/workspace/hub/target/demomvn.jar /opt/web/demo/api
復制到 執行目錄
replace.sh
java -jar /opt/web/demo/api/demomvn.jar
運行 jar包。
到這里 我們的 構建成功后的腳本就成功了。
結合構建 可以再 構建成功后 自動運行項目
再 github 里 修改 刪除 增加 等操作 輪詢到代碼有變動時 會自動拉取下來
按照前邊 的 構建文件和參數 構建可 執行的 jar 文件
在構建完成后 執行我們編寫好的腳本。
就這樣子,自動化部署就完成了 我這里時因為 沒有 服務器 所以 在 虛擬機里玩的
輪詢 發現代碼有變動 構建
也可以 使用 鉤子函數 一旦有有變動 立馬 觸發 拉取代碼 構建 然后 執行。
綜合上述我們發現。只要部署好,后面的工作就好多了。擺脫了傳統的 復制替換文件 手動 開啟停止服務等操作。
到這里 就告一段落了,如有錯誤之處 希望在評論區里指出。
可以私信我 csdn 或者 博客園 或者 郵箱 xiaohe@chnhonker.com(不處理垃圾郵件)






















浙公網安備 33010602011771號