幫你快速上手Jenkins并實(shí)現(xiàn)自動化部署
一、下載與安裝
Jenkins的下載可以直接在官網(wǎng)下載,方式還是比較簡單的,官網(wǎng)提供了具體的下載和安裝的步驟。
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key # 安裝 yum install jenkins -y # 啟動 systemctl daemon-reoload systemctl start jenkins # 查看狀態(tài),如果沒有問題的話,狀態(tài)應(yīng)該是running systemctl status jenkins
這里注意,如果是沒有安裝java環(huán)境的,可以按照官網(wǎng)指示的https://www.jenkins.io/doc/book/installing/linux/ 一起把jdk給裝一下。
問題點(diǎn)
啟動的時候可能會報(bào)錯,這個錯誤會來自于java的環(huán)境配置的不是很正確
解決辦法:
# 修改jenkins的配置文件中的java的路徑 vim /etc/init.d/jenkins
二、Jenkins的使用
之后可以按照文檔,直接訪問ip:8080
可以看到具體的jenkins的頁面,會要求輸入密碼操作,這個密碼給出了具體的路徑,所以不需要擔(dān)心,直接cat
路徑即可獲取密碼操作。進(jìn)入到安裝插件的頁面,直接點(diǎn)擊推薦的安裝插件即可進(jìn)入到插件。
新建item,配置item,配置與github之間的聯(lián)系(這里主要是公鑰和私鑰配置),解決為什么連接不上github,遇到clone
失敗的話,是因?yàn)楸镜剡€沒有將git遠(yuǎn)程添加為可信任的用戶,所以需要自己手動的執(zhí)行git clone
然后添加信任憑證即可。
2.1 配置流程
需要配置具體的地址,這個地址必須是網(wǎng)上github可以訪問到的地址,github無法訪問虛擬機(jī)的地址,除非是利用阿里云或者騰訊云服務(wù)器。我是用的騰訊云服務(wù)器,此時需要設(shè)置github上的webhook的網(wǎng)址,主要的目的是倉庫一旦被push
此時jenkins就會重新構(gòu)建整個服務(wù)器。
2.1.1 如何讓jenkins與github通信
這個問題是必須要考慮的,因?yàn)樽詣訕?gòu)建整個的過程需要本地的代碼與github庫構(gòu)建起來,然后jenkins通過webhook的方式接收到github那邊的push信號,然后從github中拉取代碼進(jìn)行本地的一個構(gòu)建任務(wù)。
對于本地的代碼與github之間的通信我們需要生成公鑰和私鑰然后配置好即可,對于jenkins來說也是一樣,要想從github拉代碼就需要建立公鑰和私鑰的方式來建立通信。
第一步我們需要生成公鑰和私鑰:
ssh-keygen -t rsa -C "xxx@xxx.com" 生成公鑰和私鑰 cat ~/.ssh/id_rsa.pub # 寫入到github的settings => SSH and GPG keys cat ~/.ssh/id_rsa # 寫入到j(luò)enkins的配置中
2.1.2 配置Jenkins
注意在配置之前你需要先新建你任務(wù),可以任意選擇自由風(fēng)格的,名字的話隨你安排
先對General部分進(jìn)行配置,即我們的github項(xiàng)目的URL,這個就把自己想要自動構(gòu)建的項(xiàng)目房子放在這里就好了。
點(diǎn)擊對上面紅色字體部分的添加
此時可以看到。
構(gòu)建觸發(fā)器
上面的添加框中的內(nèi)容
Secret Token生成
構(gòu)建
這個是代碼拉過來之后的行為了,就是你需要自己寫腳本把自己的項(xiàng)目運(yùn)行起來。
2.1.3 一段Django啟動的腳本
#!/bin/bash VENV_DIR=/usr/local/src/jenkins JENKINS_PROJECT_DIR=/var/lib/jenkins/workspace/jenkinsdemo # 構(gòu)建環(huán)境中的腳本命令 echo "Congratulations! Build Success!" # 先判斷一下進(jìn)程是否在,在的話就不用管了,不在的話需要執(zhí)行激活操作 PROCESS_EXIST=`netstat -anp | grep 8899 | grep -v "grep" | awk '{print $7///}'` # 如果長度為0的話此時需要激活環(huán)境,否則直接跳過 if [ -z $PROCESS_EXIST ] then # 進(jìn)入到venv環(huán)境中需要激活環(huán)境 source $VENV_DIR/bin/activate # 進(jìn)入到具體的代碼的workspace空間中 cd $JENKINS_PROJECT_DIR # 啟動當(dāng)前項(xiàng)目 python manage.py runserver 0.0.0.0:8899 & echo -ne "\n" sleep 3 # 將環(huán)境注銷 # deactivate # 提示啟動成功 echo "the project run success" fi echo "The project reload success"
2.1.4 webhook的配置
如果沒有配置webhook,jenkins是不能夠?qū)崿F(xiàn)自動構(gòu)建的,那就需要自己手動點(diǎn)擊構(gòu)建了,就沒有啥意思了。所以在這里我們還需要配置一個webhook。
2.1.5 jenkins添加webhook
點(diǎn)擊高級之后,會出現(xiàn)如下界面
設(shè)置具體的hook地址
github配置webhook
三、運(yùn)行
運(yùn)行的話,本地修改代碼,此時你會發(fā)現(xiàn)Jenkins實(shí)現(xiàn)了自動構(gòu)建,如果你寫了腳本,你會發(fā)現(xiàn)你的程序也已經(jīng)運(yùn)行了起來,此時你只需要對你的代碼進(jìn)行小幅度的改動,將代碼推送到github上去,此時就可以通過jenkins自動部署,將改動的代碼更新到你的代碼庫實(shí)現(xiàn)自動構(gòu)建部署,然后重新請求就會發(fā)現(xiàn)內(nèi)容已經(jīng)更新了。
四、小結(jié)
你所以為的不會再見到的東西,通常都會在未來某個時間節(jié)點(diǎn)再遇見,并且你不得不解決它。 ----- 我 & Jenkins
Jenkins之前也有接觸過,第一次實(shí)習(xí)的時候,同事們就是用的Jenkins來實(shí)現(xiàn)代碼的發(fā)版,但是那個時候還是2019年的事情了,自己因?yàn)闆]有機(jī)會參加真實(shí)的線上發(fā)布,就用不上,雖然有想過去學(xué)習(xí)這個,但是一直都擱置了。后面到了第二次實(shí)習(xí),在滴滴的時候,滴滴那邊基礎(chǔ)架構(gòu)把它包了一層,當(dāng)時都沒意識到是Jenkins,哈哈,雖然自己也用了很多次,但是包的還是不錯的,用起來很舒服。后面到了騰訊實(shí)習(xí)的話,就沒參加過正式的發(fā)版,所以就沒接觸(內(nèi)部應(yīng)該也做了包裝)。
現(xiàn)在工作了發(fā)現(xiàn)自己也需要去使用Jenkins了,逃不過的話就學(xué)會使用了!花了半天時間熟悉了一下,用了一個簡單的例子跑了一下,實(shí)現(xiàn)了具體的操作,代碼的話還是非常簡單的,就是一個小的Django程序,跳轉(zhuǎn)一個HTML頁面。
總體來說,Jenkins還是很強(qiáng)大的,感覺需要好好學(xué)學(xué)shell腳本,這個還是有很大作用,項(xiàng)目中很多的腳本,但是自己好多都看不懂,菜的流眼淚。
繼續(xù)加油吧!
到此這篇關(guān)于幫你快速上手Jenkins并實(shí)現(xiàn)自動化部署的文章就介紹到這了,更多相關(guān)Jenkins自動化部署內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 新手必看docker安裝jenkins詳細(xì)教程
- python使用jenkins發(fā)送企業(yè)微信通知的實(shí)現(xiàn)
- Jenkins+Docker持續(xù)集成的實(shí)現(xiàn)
- jenkins+gitlab+nginx部署前端應(yīng)用實(shí)現(xiàn)
- 關(guān)于Jenkins + Docker + ASP.NET Core自動化部署的問題(避免踩坑)
- 基于Docker+K8S+GitLab/SVN+Jenkins+Harbor搭建持續(xù)集成交付環(huán)境的詳細(xì)教程
- 使用jenkins一鍵打包發(fā)布vue項(xiàng)目的實(shí)現(xiàn)
- 使用Jenkins Dashboard插件可視化部署的方法
- 使用jenkins部署springboot項(xiàng)目的方法步驟
- 關(guān)于jenkins插件下載失敗的解決方法
- Windows環(huán)境下實(shí)現(xiàn)Jenkins部署的教程詳解
- Jenkins系統(tǒng)如何進(jìn)行數(shù)據(jù)備份
相關(guān)文章
keras 使用Lambda 快速新建層 添加多個參數(shù)操作
這篇文章主要介紹了keras 使用Lambda 快速新建層 添加多個參數(shù)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06完美解決keras 讀取多個hdf5文件進(jìn)行訓(xùn)練的問題
這篇文章主要介紹了完美解決keras 讀取多個hdf5文件進(jìn)行訓(xùn)練的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07python?request要求接口參數(shù)必須是json數(shù)據(jù)的處理方式
這篇文章主要介紹了python?request要求接口參數(shù)必須是json數(shù)據(jù)的處理方式,Reqeusts支持以form表單形式發(fā)送post請求,只需要將請求的參數(shù)構(gòu)造成一個字典,然后傳給requests.post()的data參數(shù)即可,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2022-08-08python獲取點(diǎn)擊的坐標(biāo)畫圖形的方法
今天小編就為大家分享一篇python獲取點(diǎn)擊的坐標(biāo)畫圖形的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07使用matplotlib的pyplot模塊繪圖的實(shí)現(xiàn)示例
這篇文章主要介紹了使用matplotlib的pyplot模塊繪圖的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07