基於Jenkins+Docker實現自動化部署(一)

2020-08-08 18:44:00

前言

傳統部署方式:開發完成——>專案打包——>上傳伺服器——>啓動專案——>存取頁面
目標部署方式:開發完成——>提交程式碼——>存取頁面
無疑傳統部署方式過程複雜,中間容易出錯。我們的目標是採用Jenkins實現自動部署,我們開發完成之後,只需要提交程式碼到程式碼庫,Jenkins就可以自動幫我們自動完成部署,省時省力!(偷懶的好藉口)

環境

  1. Linux伺服器
  2. Docker
  3. Github

安裝jenkins

這裏我採用docker來安裝jenkins

docker run -d --name some-jenkins -p 8090:8080 -v /root/jenkins_home:/var/jenkins_home -u 0 jenkins/jenkins:lts

在这里插入图片描述

檢視正在執行的容器

docker ps

在这里插入图片描述
存取jenkins:ip:埠(注意開放埠)
在这里插入图片描述

看到一絲絲曙光了,勝利就在不遠處,加油→_→
提示密碼在「/var/jenkins_home/secrets/initialAdminPassword」中,注意是jenkins容器中
接下來我們可以進入到容器

docker exec -it 723c85fab35b(容器id) /bin/bash

檢視密碼

cat /var/jenkins_home/secrets/initialAdminPassword

在这里插入图片描述
複製密碼到頁面中就可以進入jenkins了
在这里插入图片描述
這裏我們就選擇「安裝推薦的外掛」了,待會再安裝必需的外掛。
接下來將是一個漫長的過程,可以出去耍一圈再回來┗( ▔, ▔ )┛
在这里插入图片描述
等了半天,卻等來這麼多紅叉,沒辦法,重試吧!
在这里插入图片描述
成功安裝之後,就到了建立管理員用戶介面
建立使用者,登錄之後,就可以進入主介面了!不容易啊!!!
在这里插入图片描述

安裝外掛

接下來我們要安裝maven外掛
依次點選系統管理→外掛管理→可選外掛
在这里插入图片描述
在这里插入图片描述

手動構建

我們先進行手動構建專案,沒問題之後再設定自動構建
回到Jenkins首頁點選」新建任務「,新建一個maven專案
在这里插入图片描述
只有安裝了maven外掛之後,纔會有」構建一個maven專案「選項
點選」確定「進行專案設定介面
設定GIT
在github建立一個專案
在这里插入图片描述
出現上面這種問題是因爲沒有github沒有設定容器祕鑰(別人都不知道你的身份,怎麼會讓你拿東西 ≡[。。]≡)
所以我們要到容器中生成SSH祕鑰

docker exec -it 容器id/bin/bash
ssh-keygen -t rsa -C 郵箱
cat id_rsa.pub

在这里插入图片描述
接下來我們把公鑰新增到github中
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
現在就可以了
設定構建後續步驟
執行shell指令碼

#!/bin/bash
#服務名稱
SERVER_NAME=websocket
# 源jar路徑,mvn打包完成之後,target目錄下的jar包名稱,也可以選擇成爲war包,war包可移動的tocmat的webapps目錄下執行,這裏使用jar包,用java-jar命令執行
JAR_NAME=web-socket-0.0.1-SNAPSHOT
# 源jar路徑
#/usr/local/jenkins_home/workspace--->jenkins 工作目錄
#demo 專案目錄
#target 打包生成jar目錄
JAR_PATH=/var/jenkins_home/workspace/jenkins測試/target
# 打包完成之後,把jar包移動到執行jar包的目錄--->work_daemon,work_daemon這個目錄需要自己提前建立
JAR_WORK_PATH=/var/jenkins_home/workspace/jenkins測試/target

echo "查詢進程id-->$SERVER_NAME"
PID=`ps x | grep "$SERVER_NAME" | awk '{print $1}'`
echo "得到進程ID:$PID"
echo "結束進程"
for id in $PID
do
	kill -9 $id
	echo "killed $id"
done
echo "結束進程完成"	

#複製jar包到執行目錄
echo "複製jar包到執行目錄:cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH"
cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH
echo "複製jar包完成"
cd $JAR_WORK_PATH
#修改檔案許可權
chmod 755 $JAR_NAME.jar

BUILD_ID=dontKillMe nohup java -jar $JAR_NAME.jar --server.port=8081 &

在这里插入图片描述
全域性工具設定
在这里插入图片描述
在这里插入图片描述
輸入「echo $JAVA_HOME」可檢視jdk安裝位置

maven選擇「自動安裝」就行了
構建
點選左邊選單欄中的「立即構建」,就會開始構建專案了。
第一次構建時間相對長一點,耐心等待一下~ ~ ~
在这里插入图片描述
埠對映
現在有一個問題了,由於我們建立jenkins容器的時候只對映了8080埠,現在專案的8081埠也要對映出去。此時我們有兩種辦法:

  1. 將原來的容器提交成映象,然後利用新的建立的映象重新建立一個帶有埠對映的容器
  2. 改容器組態檔。組態檔在 /var/lib/docker/containers/[hash_of_the_container]/hostconfig.json 還有 config.v2.json 這倆檔案(hash_of_the_container 可以通過 docker inspect 容器名字 來檢視)
    在这里插入图片描述
    從這裏我們也可以看到只對映了8080埠
    由於文章篇幅有點長,繼續瀏覽請點選