目標:
提示:jenkins與gitlab協作可實作持續部署、持續集成、持續交付,
搭建jenkins與gitlab服務上期教程有講解,不再贅述,在上期基礎上,做案例,
| 服務 | IP地址 |
|---|---|
| gitlab | 192.168.2.136 |
| jenkins | 192.168.2.137 |
| nginx | 192.168.2.135 |
案例:
步驟:
1.在gitee碼云上下載專案代碼(gitlab服務器)
cd /root
例如:
git clone https://gitee.com/kangjie1209/monitor.git
2.gitlab服務器創建本地代碼庫
mkdir /web
cd /web
將下載的代碼拷貝過來,注意權限,
cp -rp /root/monitor/* /web
3.登錄gitlab,創建新的web專案
admin area – new project – 選擇dev組,專案名:web1 – create
4.在gitlab本地服務器上傳代碼到gitlab
mkdir /web11
cd /web11
git init
建立遠程連接
git remote add origin git@192.168.2.136:web1/we1.git
下載最新到當前目錄

注意:提示資訊,錯誤:未跟蹤的作業樹檔案“README.md”將被合并覆寫,不是報錯,忽略,
將所有檔案寫入暫存區(記憶體)
git add .
將暫存區內容添加到本地倉庫中(硬碟)

上傳遠程代碼并合并

5.登錄jenkins,新建自由專案web
先重繪,可以看到剛才上傳的代碼

new item – create – freestyle
– configure – 源代碼庫 – git – gitlab路徑及私鑰認證 – save
build now:手動同步測驗


6.jenjins實作腳本上傳網站代碼
(1)開啟一臺虛擬機,安裝nginx
yum -y install epel-release
yum -y install nginx
systemctl start nginx
systemctl stop firewalld
setenforce 0
(2)在jenkins上撰寫上傳nginx的腳本
注意:CODE_DIR這個路徑根據gitlab創建專案的名字而定,比如web,是專案名稱
WEB_DIR是Nginx服務器的Nginx安裝路徑,原始碼安裝的路徑是
mkdir /scripts
vim /scripts/web.sh
添加:
#!/bin/sh
CODE_DIR=/var/lib/jenkins/workspace/web/
WEB_DIR=/usr/share/nginx
IP=192.168.2.135
TIME=`date +%F-%H-%M-%S`
cd $CODE_DIR && tar zcf /tmp/web-${TIME}.tar.gz ./*
scp /tmp/web-${TIME}.tar.gz $IP:$WEB_DIR
ssh root@$IP "cd $WEB_DIR && mkdir web-$TIME"
ssh root@$IP "cd $WEB_DIR && tar xf web-${TIME}.tar.gz -C web-$TIME && rm -rf web-${TIME}.tar.gz"
ssh root@$IP "cd $WEB_DIR && rm -rf html && ln -s web-$TIME html"
保存退出
報錯:在Jenkins服務器手動執行腳本

解決:/usr/share/nginx是WEB_DIR的路徑,沒有這個目錄,原始碼安裝我的路徑是/usr/local/nginx,更改即可成功
(3)jenkins傳輸公鑰到nginx,執行腳本,測驗查看nginx網站
分析:Jenkins要自動上傳代碼到Nginx服務器,必須要先實作能登錄到Nginx服務器,而且不需要輸入密碼,通過ssh實作,
ssh-copy-id root@192.168.2.135
sh /scripts/web.sh
在Nginx服務器,訪問網頁(本來是默認的首頁,現在變成上傳的代碼,構建的精美網頁,成功)

(4)在Jenkins網頁登錄界面,關聯腳本,自動上傳
專案web – configure – build – Execute shell – sh /scripts/web.sh



注意:如果安裝jenkins后沒有修改配置為root,腳本執行如果有權限問題,解決方法
(1)修改jenkins登錄shell為修改jenkins登錄shell為/bin/bash
vim /etc/passwd
修改:
jenkins?990:985:Jenkins Automation Server:/var/lib/jenkins:/bin/bash
保存退出
(2)修改jenkins服務器的本地profile
vim /root/.bash_profile
添加:
export PS1=’[\u@\h \W]$’
保存退出
source /root/.bash_profile
(3)賦予jenkins用戶sudo權限
isudo
添加:
jenkins ALL=(ALL) NOPASSWD: ALL
保存退出
8.jenkins關聯gitlab,實作自動構建上傳代碼
(1)jenkins:
web專案-- configure – build triggers – 勾選最長選項 – 點擊高級advanced

– 選擇Filter branches by name --在include填寫master – 點擊generate生成令牌 – 復制令牌和觸發器頂部url路徑
– save保存

(2)gitlab網頁登錄界面:
web專案 – settings – integrations – 把復制的令牌和url粘貼過來 – add webhook

下方,Add webhook

(3)在gitlab服務器更新push代碼,測驗自動構建上傳,

報錯:提示只讀權限,不能修改,

解決:查看權限

給檔案的目錄設定wx權限,再打開檔案修改保存
在gitlab上,修改代碼或添加新的檔案,依次執行:git add ; git commit ; git push
上傳到暫存區
git add .
提交暫存區到本地倉庫
git commit -m “modify index.html”

上傳遠程代碼并合并
git push -u origin master

(4)登錄nginx網站,查看更新內容,(需要多等一會)
網頁登錄Jenkins能看到自動上傳

上傳完畢,查看Nginx網頁(有剛才的修改后內容)

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/302754.html
標籤:其他
