注:默認(rèn)前提是你已經(jīng)在服務(wù)器上用docker裝好了jenkins容器并啟動踩衩。
#1.安裝插件(系統(tǒng)設(shè)置-插件管理-可選插件)
-
Build Timestamp Plugin
(構(gòu)建時間戳) -
Publish Over SSH
(ssh服務(wù)嚼鹉,把構(gòu)建好的文件ssh到相應(yīng)服務(wù)器) -
GitHub plugin
(有可能默認(rèn)已經(jīng)安裝了怠益,負(fù)責(zé)觸發(fā)hook) -
GitHub API plugin
(有可能默認(rèn)已經(jīng)安裝了挣饥,負(fù)責(zé)觸發(fā)hook) -
nodejs plugin
(nodejs服務(wù))
!!全部裝完建議重啟jenkins服務(wù),我的重啟后變成中文版的了- -, 在服務(wù)器上docker restart jenkins
;
#2.配置相應(yīng)的插件(系統(tǒng)管理-系統(tǒng)設(shè)置)
- 找到
Build Timestamp
(上面的插件提供的)排宰,進(jìn)行如下設(shè)置:
1.png - 找到
Publish over SSH
萌朱,設(shè)置:
2.png
那些都不需要設(shè)置宴树,直接用我們的容器的私鑰就好了,如何獲取私鑰:
(1)docker exec -it jenkins sh
進(jìn)入容器
(2)ssh-keygen -m PEM -t rsa -b 4096
生成ssh私鑰及公鑰(默認(rèn)在 ~/.ssh 即 /root/.ssh 目錄中)晶疼,可以一路回車寒匙,若設(shè)密碼的話,需在“Passphrase”中填寫
(3)cat ~/.ssh/id_rsa
查看私鑰,把私鑰copy到上圖的“key”設(shè)置中
(4)cat ~/.ssh/id_rsa.pub
查看公鑰,把公鑰copy到宿主機(jī)服務(wù)器的~/.ssh/authorized_keys
中, 這樣服務(wù)器就能接受jenkins容器的ssh推送了。
然后繼續(xù)配置SSH Servers
字段:
4.png
(1) name
: ssh節(jié)點名稱削咆,建議協(xié)商服務(wù)器的概要挺尿,不要設(shè)置成你項目的名字窄俏,因為jenkins不可能只服務(wù)你一個項目仰坦,肯定有很多項目
(2) hostname
: 遠(yuǎn)程服務(wù)器IP
(3) username
登錄服務(wù)器時使用的用戶名
(4) remote directory
推送到遠(yuǎn)程服務(wù)器的目錄妈橄,建議根目錄溪椎,在job任務(wù)里在仔細(xì)的填寫ssh的具體目錄
#3.配置安裝nodejs
環(huán)境(系統(tǒng)管理-全局工具配置-nodejs)
- 勾選自動安裝
- 選擇一個node版本即可
#4.github
授權(quán)
- 打開你的
github
服務(wù)器地址蛾洛,(setting
-Developer settings
-Personal access tokens
-Generate new token
), 勾選repo
admin:repo_hook
兩項生成token
并且復(fù)制備用 - 打開
jenkins
(系統(tǒng)管理-系統(tǒng)設(shè)置-github
), 添加github
服務(wù)器,名稱隨便填,URL默認(rèn)。
6.png
這里要注意憑據(jù)的添加兵迅,點擊添加:
7.png
類型選擇secret text
,secret
字段填剛才github
那里生成的token, 點添加(如果這里添加了但是并沒有在剛才憑據(jù)的下拉里看到的話候学,也就是沒添加成功掰茶,原因我不清楚盐碱,可以在jenkins
根目錄菜單選擇憑據(jù)然后在右側(cè)按照上面的方法添加如果還不行就直接使用ip地址加端口訪問jenkins
來添加這個憑據(jù)這個東西。) -
選擇剛才添加的憑據(jù),點連接測試是否成功:
8.png - 設(shè)置
github
的Hook
地址,點擊下面的高級怕轿,會出現(xiàn)地址并復(fù)制:
9.png - 去
github
上找到你的項目進(jìn)入詳情(setting
-webhooks
-add webhooks
)
10.png
在Payload URL
填寫剛剛jenkins
生成的hook
地址即可为居。
#5. 新建一個jenkins
任務(wù)job進(jìn)行部署配置
-
新建任務(wù)
11.png -
配置該Job任務(wù)
(1)general
: 填寫下圖幾項董朝,項目URL
就是你要構(gòu)建的那個項目的github url
地址;
12.png
(2)源碼管理:
- 選擇
git
- 填入項目地址
-
Credentials
這里的憑據(jù)還是跟剛才那樣添加凫佛,如果不起效果那么選擇username with password
類型添加削罩,就是你github
的賬號和密碼 -
Branch specifier
選擇你想要構(gòu)建的分支盗蟆,因為一個項目有很多分支徙硅,比如dev
,test
,prd
等,直接寫*/你項目分支名
13.png
(3) 構(gòu)建觸發(fā)器: 選擇GitHub hook trigger for GITScm polling
即可
(4) 構(gòu)建環(huán)境: 選擇 Provide Node & npm bin/ folder to PATH
, 在選一個你安裝好的Nodejs
(前提你在之前通過jenkins
全局設(shè)置安裝好了node)
(5) 構(gòu)建: 選擇添加構(gòu)建步驟
陨享,執(zhí)行 shell
#!/bin/bash
echo '開始項目構(gòu)建命令'
echo $PATH
node -v
npm -v
echo '當(dāng)前分支'
git branch
echo '拉代碼'
git pull origin spa
echo '裝node_modules'
npm install
echo '打包'
npm run build
echo '壓縮/dist'
tar -cvf dist.tar ./dist
(6) 構(gòu)建后操作:選擇 增加構(gòu)建后操作
, send build artifacts over ssh
來把我們構(gòu)建好的代碼包推送到遠(yuǎn)程服務(wù)器上并解壓
-
name
填你想要填的 -
source files
想要操作的文件 這里的dist.tar
就是上面構(gòu)建后打包的壓縮文件 -
Remote directory
推送到遠(yuǎn)程目錄蔬啡,因為我們在全局的jenkins
配置上已經(jīng)配置過ssh server
的基礎(chǔ)目錄是/
目錄了,所以在這就填寫具體的你想要放置的目錄(建議這個目錄是nginx
綁定的主頁目錄,這樣一推送nginx
就會自動映射了) -
Exec command
推送完畢后你想要執(zhí)行的命令
#6. 本地代碼推送部署
- 本地相應(yīng)分支代碼推送到
github
入客,應(yīng)該就會部署構(gòu)建了膀钠,可以查看控制臺輸出
日志 - 我遇到了
env: ‘node’: No such file or directory
問題誉结,是因為jenkins
容器并沒有成功安裝node
或環(huán)境變量沒有node
,無果google
:
(1)docker exec -it jenkins sh
進(jìn)入容器
(2)apk add --no-cache nodejs
手動安裝node
后成功
18.png