
Jenkins是一個獨立的開源軟件項目,是基于Java開發的一款CI(持續集成)&CD(持續交付)工具,用于監控持續重復的工作,旨在提供一個開放易用的軟件平臺。可用于各類自動化任務,比如構建、測試和部署軟件。 Jenkins只是一個調度平臺,其自身并不能完成項目的構建部署,需要借助各類插件實現各類構建部署。 Jenkins的特點如下:
開源免費跨平臺,支持所有平臺Master/slave支持分布式構建可視化管理頁面支持多種插件Jenkins基于Java實現,需要安裝Java環境。命令如下:
apt-get -y install openjdk-11-jdk
wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/debian-stable/jenkins_2.361.4_all.deb???dpkg -i jenkins_2.361.4_all.deb
? 訪問??http://xxx.xxx.xxx.xxx:8080??
【資料圖】
初次登錄的密碼可以查看/var/lib/jenkins/secrets/initialAdminPassword文件?。
由于默認安裝插件需要連接國外的網站,故建議選擇插件安裝,先不安裝任何插件,后續做優化配置再去安裝就會快很多。而選擇安裝推薦的插件會安裝很慢,可以選擇不安裝。?
這里使用admin賬戶即可
點擊Admin下面的configure,修改密碼
Jenkins默認使用Jenkins用戶啟動,會導致權限受限,需要修改為root啟動。 打開/lib/systemd/system/jenkins.service,做如下配置:
User=rootGroup=root
之后重啟Jenkins
插件安裝目錄位于/var/lib/jenkins/plugins目錄下
sed -i "s#updates.jenkins.io/download#mirror.tuna.tsinghua.edu.cn/jenkins#g" /var/lib/jenkins/updates/default.jsonsed -i "s#www.google.com#www.baidu.com#g" /var/lib/jenkins/updates/default.json
? 再將升級站點url替換成下面國內鏡像地址???https://mirror.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json??
之后等安裝成功后重啟Jenkins即可
點擊系統管理->系統配置,系統管理員郵件地址和SMTP中寫的用戶必須相同
?
測試發送郵件效果如下:
流程如下:
其中Jenkins需要做的就是從GitLab上拉取代碼,再將代碼傳到測試服務器。當然,實際工作中還要等測試通過了最終把代碼放到生產服務器。
先在Jenkins服務器用ssh-keygen生成密鑰對,之后在GitLab中的具有項目訪問權限的賬號導入Jenkins服務器的公鑰
雖然Jenkins將root用戶的公鑰傳到GitLab服務器基于ssh key拉取代碼,但是Jenkins不能自動獲取root用戶的私鑰,從而無法直接在Jenkins中的項目直接連接GitLab倉庫。還需要將Jenkins服務器的root用戶的私鑰創建為Jenkins的憑據,便于后續連接GitLab。 Jenkins所支持的憑證類型如下:
用戶名和密碼(Username with password) SSH用戶名和私鑰(SSH Username with private key) Github App Secret file: 需要保密的文本文件,保存有Token等信息 Secret text:Token,串需要保密的文本,例如Github的API Token等 Certificate其它憑證類型還有二進制數據,或者更復雜形式的項目,例如OAuth憑證等憑證的作用域決定了它可用的目標范圍
系統:作用于Jenkins系統自身,僅可用于系統和后臺任務,且一般用于連接到agent節點之上 全局:作用于Jenkins上的所有任務,以確保任務的正常執行 用戶:作用于用戶級別,僅生效于Jenkins中的線程代表該用戶進行身份驗證之時;注意:在Jenkins內部,憑證被存放在JENKINS_ HOME目錄下的secrets目錄中,請務必確保該目錄的訪問 權限進行了正確的設置
添加憑據的過程如下:
使用基于key的憑據操作如下(注意代碼分支要指定正確):
點擊立即構建,查看構建結果
后端服務器需要先安裝nginx。部署過程用腳本實現。腳本內容如下:
#!/bin/bashHOST_LIST="192.168.1.105192.168.1.106"APP_PATH=/var/www/htmldeploy () { for i in ${HOST_LIST};do scp -r * $i:${APP_PATH}/ done}deploy
啟動nginx后訪問后端頁面也正常
?
在之前執行git clone的主機上執行如下操作,更新代碼
cd /root/wheel_of_fortunevim index.htmlgit add .git commit -m "2nd"git push -u origin main
之后在Jenkins再次構建,訪問后端頁面發現已經修改(至2nd版本)
# git revert 撤銷某次操作,此次操作之前和之后的commit和history都會保留,并且把這次撤銷,作為一次最新的提交git revert HEADgit add. ;git commit -m "2nd-rollback";git push origin main
之后在Jenkins再次構建,查看后端頁面,已經修改為1st(2nd版本撤銷)的那一次