Jenkins 持續(xù)集成
另一篇文章介紹了 如何使用 Jenkins 部署 SpringBoot Jar
https://github.com/luokaiii/luokaiii.jenkins
一、下載并啟動Jenkins
從 Jenkins 官網(wǎng)下載所需的版本刹悴,這里使用 Docker 容器部署 Jenkins war(你也可以直接使用 java -jar jenkins.war -httpPort=8080
來啟動行楞,這樣的話直接進(jìn)入 [填寫密碼(錨點)](#1. 填寫密碼) 即可。)土匀。
注意:我們并沒有使用 hub.docker.com 中提供的 jenkins/jenkins 這個鏡像子房。因為我試了一下沒裝成功,哈哈就轧。
在 war 包的同級目錄下证杭,編寫 Dockerfile,如下:
FROM openjdk:8
VOLUME /tmp
COPY jenkins.war app.war
ENTRYPOINT ["java","-jar","app.war","--httpPort=8080"]
構(gòu)建 jenkins 鏡像
#使用Dockerfile構(gòu)建jenkins鏡像
docker build -t luokaiii.jenkins .
編寫 jenkins 啟動腳本妒御, start.sh:
docker run \
--name luokaiii.jenkins \
-p 8080:8080 \
-p 50000:50000 \
-v jenkins_home:/var/jenkins_home \
-d luokaiii.jenkins
注意:1. 需要給 start.sh 文件授權(quán)解愤,否則無法執(zhí)行;2. 通過 -v 命令將jenkins文件掛載到本地乎莉;
二送讲、環(huán)境初始化
1. 填寫密碼
運行上面寫的 start.sh 啟動腳本,并打開 localhost:8080梦鉴,稍等片刻就會提示我們輸入初始密碼李茫。
進(jìn)入 jenkins 容器,docker exec -it luokaiii.jenkins bash
(如果提示有誤肥橙,則可以使用 container 的 id 來進(jìn)入)魄宏,找到位于 /root/.jenkins/secrets/initialAdminPassword
的密碼并填寫進(jìn)入。
2. 安裝插件
密碼輸入成功后存筏,會提示我們選擇需要安裝的插件宠互,這里我選擇的是社區(qū)推薦插件味榛。對于新入門的用戶來說,推薦的往往夠用了予跌。
[站外圖片上傳中...(image-c1bb9c-1564998203331)]
在插件安裝完成之后搏色,我們需要加入以下額外的插件:
- Publish Over SSH // 向服務(wù)器發(fā)送文件
- SSH // 需要 SSH 來連接服務(wù)器
- Config File Provider
- NodeJS // 因為我們的測試項目是使用 react 寫的一個模擬項目,因此需要NodeJS 與 npm 進(jìn)行編譯
添加插件的目錄為:Manage Jenkins > Manage Plugins > 可選插件
3. 新建一個管理員賬戶
ok券册,安裝成功频轿,進(jìn)入我們的正題。
三烁焙、使用 SSH 登錄服務(wù)器
配置 SSH Key 有兩種方式航邢,一種是在本地生成,然后將公鑰發(fā)送至服務(wù)器骄蝇;另一種是在服務(wù)器生成膳殷,將私鑰拷貝至本地。(好像沒啥區(qū)別啊)
1. 在本地電腦生成 SSH
- 打開命令行九火,生成ssh-key:
ssh-keygen -t rsa
- 將ssh-key 發(fā)送至服務(wù)器:
ssh-copy-id -i ~/.ssh/id_rsa.pub root@xxx.xxx.xxx.xxx
- 輸入服務(wù)器密碼赚窃,即可上傳成功
- 驗證登錄:
ssh root@xxx.xxx.xxx.xxx -i id_rsa
- 輸入私鑰的 password 即可
2. 服務(wù)器端生成 SSH
- 使用密碼登錄遠(yuǎn)程服務(wù)器
- 執(zhí)行命令 ssh-keygen ,輸入文件地址岔激、密碼等信息勒极,如名為 ssh_rsa
- 將 生成的私鑰拷貝出來,放到需要連接的電腦上(可以新建文件鹦倚,把 ssh_rsa 的內(nèi)容拷貝進(jìn)去)
- 重設(shè)本地文件的權(quán)限 chmod 0600 ssh_rsa
- 開啟 SSH Key 登錄
- 在遠(yuǎn)程服務(wù)器中找到 /etc/ssh/sshd_config
- 將以下兩個參數(shù)設(shè)置為 on(默認(rèn)為on)
- RSAAuthentication on
- PubkeyAuthentication on
- 關(guān)閉 密碼 登錄(可選河质,前提是你要確保之前的私鑰備份好了冀惭,不然可就無法登陸了)
- 將 PasswordAuthentication 改為 no
- 測試使用 SSH Key 登錄服務(wù)器
- ssh root@xxx.xxx.xxx.xxx -p port -i ~/.ssh/id_rsa
- xxx.xxx.xxx.xxx 為服務(wù)器 ip 地址
- port 為服務(wù)器登錄端口
- ~/.ssh/id_rsa 為本地私鑰地址
四震叙、配置SSH
進(jìn)入 Manage Jenkins > Configure System,并作出以下兩個修改:
1. SSH remote hosts
配置遠(yuǎn)程服務(wù)器
[站外圖片上傳中...(image-97835c-1564998203331)]
2.Publish over SSH
配置推送文件時的服務(wù)器配置散休,使用 ssh key
[圖片上傳失敗...(image-f6b23c-1564998203331)]
五媒楼、配置完整的任務(wù)
新建一個 Freestyle project
設(shè)置源碼倉庫地址,并添加用戶名密碼戚丸、或 SSHKey 的憑證
[圖片上傳失敗...(image-1bb05d-1564998203331)]
構(gòu)建前的環(huán)境配置划址,指定服務(wù)器地址、#NodeJS版本
執(zhí)行構(gòu)建限府,并打印 Node 與 NPM 的版本夺颤,來確定是否安裝成功;指定 npm 倉庫為taobao鏡像胁勺,并進(jìn)行編譯(react 編譯后的文件放在 /build 下世澜,其他語言參照各自特性而定)
構(gòu)建完成后,就是把生成的 build 目錄發(fā)送至服務(wù)器指定目錄了署穗。如果您使用了 nginx 作了靜態(tài)代理寥裂,則只需將 build 后的文件發(fā)送至該目錄即可嵌洼。
[圖片上傳失敗...(image-147d76-1564998203331)]
六、測試是否正確安裝及配置
1. 隨便修改點文件封恰,提交至github上
2. 點擊立即構(gòu)建
3. 打開控制臺輸出麻养,查看日志
不出意外的話,控制臺中會依次打印出一下日志(日志太長诺舔,這里就不貼了鳖昌,仔細(xì)看一下應(yīng)該都很好理解,也不是什么比較難的單詞)
- git fetch --tags .... // 從遠(yuǎn)程拉取代碼
- node -v 低飒; npm -v // 打印的node版本
- npm install --registry... // 修改npm 鏡像源
- npm run build // 開始構(gòu)建
- [SSH] executing post build script // 連接并上傳build目錄