# 使用Jenkins實現自動化部署
## Jenkins的安裝及配置
~~~shell
JDK1.8
maven3.8.6
NodeJS v16.15.0 +
~~~
### Docker環境下的安裝
##### 下載Jenkins的Docker鏡像:
~~~shell
docker pull jenkins/jenkins:lts
~~~
##### 在Docker容器中運行Jenkins:
~~~shell
docker run -p 8080:8080 -p 50000:5000 --name jenkins \
-u root \
-v /data/jenkins_home:/var/jenkins_home \
--restart=always \
-d jenkins/jenkins:lts
~~~
### Jenkins的配置
運行成功后訪問該地址登錄Jenkins,第一次登錄需要輸入管理員密碼:[http://192.168.0.132:8080/](http://192.168.0.132:8080/)

使用管理員密碼進行登錄,可以使用以下命令從容器啟動日志中獲取管理密碼:
~~~shell
docker logs jenkins
~~~
從日志中獲取管理員密碼:

選擇安裝插件方式,這里我們直接安裝推薦的插件:

進入插件安裝界面,聯網等待插件安裝:

安裝完成后,創建管理員賬號:

進行實例配置,配置Jenkins的URL:

點擊系統管理->插件管理,進行一些自定義的插件安裝:

確保以下插件被正確安裝:
* 根據角色管理權限的插件:Role-based Authorization Strategy
* 遠程使用ssh的插件:SSH plugin
通過系統管理->全局工具配置來進行全局工具的配置,比如maven的配置:

新增maven的安裝配置:

在系統管理->系統配置中添加全局ssh的配置,這樣Jenkins使用ssh就可以執行遠程的linux腳本了:

## 打包部署SpringBoot應用
#### 將代碼上傳到Git倉庫
有一點需要注意,要將pom.xml中的dockerHost地址改成你自己的Docker鏡像倉庫地址:

#### 執行腳本準備
將\\document\\sh\\下的腳本文件上傳到服務器/data/sh目錄下。
給.sh腳本添加可執行權限:
~~~shell
cd /data/sh
chmod +x ./*.sh
~~~
windows下的.sh腳本上傳到linux上使用,需要修改文件格式,否則會因為有特殊格式存在而無法執行:
~~~shell
#使用vim編輯器來修改
vi *.sh
# 查看文件格式,windows上傳上來的默認為dos
:set ff
#修改文件格式為unix
:set ff=unix
#保存并退出
:wq
~~~
執行.sh腳本,測試使用,可以不執行:
~~~shell
./mall-account.sh
~~~
## 在Jenkins中創建執行任務
#### 首先我們需要新建一個任務:
添加代碼管理倉庫:

添加自動打包:
~~~shell
clean
package -P prod
~~~

打包之后執行歸檔文件,放到同一個文件夾下方便下載。

#### 單個服務打包:
唯一不同的地方,先下載依賴:注意看截圖。
~~~shell
clean install -pl mall-common -am
clean
package -P prod
~~~

執行自動打包:Build Now

打包完成到工作空間–targetAll中下載打包完成的jar包。
## 打包web前端
Vue前端應用的打包需要依賴NodeJS插件,所以我們先安裝并配置該插件,然后創建任務來打包部署。
### 安裝NodeJS插件
在系統設置->插件管理中選擇安裝插件;
搜索NodeJS插件并進行安裝;

### 配置NodeJS插件
在系統設置->全局工具配置中進行插件配置;
選擇新增NodeJS,配置好版本號以后,點擊保存即可完成設置;

### 打包admin前端代碼
任務執行流程如下:

#### 首先我們需要新建一個任務:

添加代碼管理倉庫:

在構建環境中把我們的node環境添加進去:

添加一個執行shell的構建,用于將我們的前端代碼進行編譯打包:

構建腳本如下:
~~~shell
# 解決存放在Github上的sass無法下載的問題
SASS_BINARY_SITE=https://npm.taobao.org/mirrors/node-sass/ npm install node-sass
# 將鏡像源替換為國內的加速訪問
npm config set registry https://mirrors.tencent.com/npm/
# 安裝項目依賴
cnpm install
# 項目打包
cnpm run build
~~~
點擊保存后,直接在任務列表中點擊運行即可完成自動化打包。
打包成功之后可以在工作空間下載打包好的代碼:工作空間–》admin


### 打包PC前端代碼
同打包admin前端代碼一樣的步驟,只需要更換代碼庫即可。