參考龍恩:Jenkins 實(shí)現(xiàn)前端自動(dòng)打包,自動(dòng)部署代碼及郵件提醒功能
準(zhǔn)備JAVA環(huán)境
1、下載jdk。
鏈接:https://pan.baidu.com/s/1R9RZ3hGqGT2_p9IlnNUxyQ
提取碼:dcrs
--來自百度網(wǎng)盤超級會(huì)員V5的分享
2、配置環(huán)境變量。
雙擊安裝
在相應(yīng)安裝目錄下,找到其bin目錄,將該目錄配置到系統(tǒng)環(huán)境變量。
Jenkins下載安裝
1、下載
jenkins下載地址
2、安裝
雙擊安裝,下一步下一步即可。
報(bào)錯(cuò):
報(bào)錯(cuò)原因:需要配置用戶組與權(quán)限。
解決辦法:
官網(wǎng)請參考:https://www.jenkins.io/doc/book/installing/windows/#invalid-service-logon-credentials
我的解決辦法:
安裝要在域用戶帳戶下運(yùn)行的服務(wù)時(shí),該帳戶必須有權(quán)登錄為服務(wù).此登錄權(quán)限嚴(yán)格適用于本地計(jì)算機(jī),并且必須在本地安全策略中授予. 執(zhí)行以下操作,以編輯要定義"作為服務(wù)登錄"權(quán)限的計(jì)算機(jī)的本地安全策略:
- 使用管理特權(quán)登錄到計(jì)算機(jī).
- 打開"管理工具",然后打開"本地安全策略"
- 展開"本地政策",然后點(diǎn)擊"用戶權(quán)限分配"
- 在右窗格中,右鍵單擊"作為服務(wù)登錄",然后選擇屬性.
- 單擊"添加用戶或組..."按鈕以添加新用戶.
-
在"選擇用戶或組"對話框中,點(diǎn)擊“高級”--“立即查找”,在搜索結(jié)果中選擇您想要輸入的用戶,然后單擊"確定“
image.png -
在"作為服務(wù)登錄"屬性中單擊"確定"以保存更改.
image.png
成功:
注意:
jenkins和jdk版本有一定對應(yīng)關(guān)系,我的是jenkins2.303 jdk11
windows10家庭版沒有用戶組與權(quán)限配置,需要添加,添加步驟如下:
- 新建txt內(nèi)容如下:
@echo off
pushd "%~dp0"
dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >List.txt
dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientTools-Package~3*.mum >>List.txt
for /f %%i in ('findstr /i . List.txt 2^>nul') do dism /online /norestart /add-package:"C:\Windows\servicing\Packages\%%i"
pause
- 保存為.bat文件
-
以管理員運(yùn)行即可添加用戶組與權(quán)限:
image.png
應(yīng)用初始化
1、使用初始密碼登錄
Jenkins安裝后自動(dòng)打開http://localhost:8080/,需要密碼登錄,初始密碼在用戶目錄的對應(yīng)文件中:
C:\Users\gwq\AppData\Local\Jenkins.jenkins\secrets\initialAdminPassword
2、安裝默認(rèn)插件
點(diǎn)擊安裝推薦的插件即可
3、創(chuàng)建第一個(gè)管理員用戶
安裝完成后,我們需要 創(chuàng)建第一個(gè)管理員用戶。
Jenkins實(shí)現(xiàn)自動(dòng)化部署
1、獲取訪問github的token值
如果要實(shí)現(xiàn)自動(dòng)構(gòu)建的話,Jenkins需要獲得遠(yuǎn)程代碼倉庫Github的讀取權(quán)。
點(diǎn)擊右上角的 Github --> setting --> Developer settting --> Personal access tokens -> 點(diǎn)擊Generate new token 填寫如下所示的內(nèi)容:
創(chuàng)建成功后,會(huì)生成一個(gè)token的值如下:
2、實(shí)現(xiàn)內(nèi)網(wǎng)穿透
Ngrok的用途是:將內(nèi)網(wǎng)的IP映射成對外可訪問的域名。
(1)官網(wǎng)注冊為會(huì)員
(2)Ngrok教程
(3)啟動(dòng)客戶端
./sunny.exe clientid xxxxxx
3、 Github webhooks設(shè)置
進(jìn)入Github上指定的項(xiàng)目 --> setting -> WebHooks --> add webhook, 如下圖所示:
完成后,點(diǎn)擊下面 add webhooks 按鈕,即可創(chuàng)建完成,如下圖所示:
4、安裝Github Plugin
點(diǎn)擊 Manage Jenkins -> Manage Plugins -> 可選插件, 如下圖所示:
插件安裝
點(diǎn)擊下面的 "直接安裝" 按鈕, Jenkins會(huì)自動(dòng)幫我們解決插件的依賴。如下圖所示:
jenkins插件安裝
如果打開Manage Jenkins提示反向代理設(shè)置有誤,如下圖:
則打開系統(tǒng)設(shè)置界面,將1與2處url填寫一致即可,如下:
5、配置Github Plugin
Manage Jenkins -> Configure System -> Github -> 點(diǎn)擊添加Github服務(wù)器, 如下圖所示:
如上,我們之前已經(jīng)生成了token之后。在如上配置中,我們頁面中的類型選擇 Secret text,在Secret中黏貼Github生成的Token,id和描述可以隨便寫,或不填。
最后點(diǎn)擊添加按鈕后,會(huì)回到主頁面,在憑據(jù)中選擇我們剛才創(chuàng)建的憑據(jù),然后我們點(diǎn)擊 "鏈接測試"。如果沒有成功的話,則需要返回重新操作以上步驟,如下所示,我們只要點(diǎn)擊保存完成配置即可,如下圖所示:
注意,token添加成功后,前面下拉列表要選擇對應(yīng)的id:
token ID
6、 Jenkins中創(chuàng)建任務(wù)
因此準(zhǔn)備工作已經(jīng)完成了,我們輸入任務(wù)名稱后,選擇第一項(xiàng)后,點(diǎn)擊底部的確定按鈕,就可以進(jìn)入下一步的頁面了,如下圖所示:
如上選擇Github,填寫項(xiàng)目的URL,該地址是我們Github上的主頁地址,不是github倉庫地址。
源碼管理
打開剛剛我們創(chuàng)建的任務(wù),切換到 "源碼管理" tab項(xiàng),然后在左側(cè)選擇 Git,然后我們把我們的github項(xiàng)目中的倉庫地址,添加配置登錄名和密碼(點(diǎn)擊添加會(huì)彈出一個(gè)框,我們默認(rèn)操作就行),及分支。如下圖所示:
構(gòu)建觸發(fā)器
構(gòu)建環(huán)境
其他暫時(shí)不用配置。配置完成后,我們再回到列表頁面,看到基本的效果如下圖所示,現(xiàn)在我們在本地項(xiàng)目代碼再push一下,看是否發(fā)生了變化。
如上我們可以看到,我們每次代碼push的時(shí)候,Jenkins會(huì)自動(dòng)幫我們構(gòu)建一次,但是它有幾秒鐘的延遲,如果我們立即push完成后,刷新頁面后,并沒有立即看到構(gòu)建完成,而要過幾秒鐘再看下就可以了。
我們也可以看看控制臺(tái)輸出的信息也可以看得到如下信息,代表構(gòu)建了。如下:
但上圖顯然是構(gòu)建失敗了,因?yàn)樵陧?xiàng)目配置中源碼管理這一欄,git倉庫的master分支在jenkins里叫做main
如上只是簡單使用我們的github中的push命令后,在Jenkins中構(gòu)建一下我們的代碼,但是我們都明白我們希望的是,我們的push命令后,在Jenkins上會(huì)幫我們自動(dòng)打包,比如像webpack中一樣,調(diào)用npm run build 這樣的命令后,打包到dist文件夾內(nèi),然后把dist文件夾內(nèi)的所有代碼放到ftp服務(wù)器下,因此我們想使用jenkins是否也能實(shí)現(xiàn)這樣的呢?
實(shí)現(xiàn)自動(dòng)化構(gòu)建
如上git push 觸發(fā)鉤子后,jenkins就可以開始工作了,我們之前使用webpack打包的,我們現(xiàn)在放到Jenkins來做這件事。
在我們的package.json 文件中有如下二個(gè)命令:
"scripts": {
"dev": "webpack-dev-server --progress --colors --devtool cheap-module-eval-source-map --hot --inline",
"build": "webpack --progress --colors --devtool cheap-module-source-map"
},
為了能在Jenkins能自動(dòng)打包構(gòu)建,首先我們需要安裝依賴包,使用命令:npm install,最后使用npm run build 構(gòu)建文件。因此會(huì)使用到如下兩個(gè)命令:
npm install
npm run build
我們想要在jenkins里面執(zhí)行npm命令的話,首先我們需要在jenkins里面配置node環(huán)境,我們可以通過配置環(huán)境變量的方式引入node,也可以通過安裝插件的方式來引入的,我們這邊使用插件的方式吧,安裝一下 nvm wrapper 這個(gè)插件。
(1)在Jenkins中安裝NodeJS Plugin
在插件管理界面搜索NodeJS,找到后,安裝,重啟,如下所示:
(2)全局配置中安裝NodeJS
Manage Jenkins -> Global Tool Configuration -> NodeJs(點(diǎn)擊新增NodeJS按鈕) 如下圖所示:
點(diǎn)擊保存按鈕即可。
(3) 在構(gòu)建環(huán)境配置下安裝nodejs
構(gòu)建環(huán)境勾選 Provide Node & npm bin/folder to PATH,如下圖所示:
每次build,都會(huì)首先執(zhí)行環(huán)境構(gòu)建,如果環(huán)境沒有錯(cuò)誤后,才會(huì)開始真正的實(shí)現(xiàn)構(gòu)建過程。
(4) 構(gòu)建
我們現(xiàn)在可以把我們的打包命令放到構(gòu)建中了,在構(gòu)建過程中會(huì)執(zhí)行該命令進(jìn)行打包。如下命令:
npm config set registry http://registry.npm.taobao.org/ && npm install && rm -rf dist && npm run build
如下所示:
然后我們就可以點(diǎn)擊保存按鈕了。
此時(shí)我在本地項(xiàng)目中改下代碼,然后使用git push代碼上去的時(shí)候,就可以測試下,在push的過程中,再看看Jenkins中如下所示:
然后點(diǎn)擊下面正在的的構(gòu)建,控制臺(tái)輸出選項(xiàng),如下圖所示: