天天看點

容器化部署Jenkins實戰

#############################################

安裝docker====https://www.cnblogs.com/poloyy/p/13921450.html

如果你還想從頭學起 Docker,可以看看這個系列的文章哦!

https://www.cnblogs.com/poloyy/category/1870863.html

前言

虛拟機安裝 centos 7.x 教程:https://www.cnblogs.com/poloyy/p/13921798.html

OS 安裝環境要求

  • 要安裝 Docker Engine,需要 CentOS 7 的維護版本,不支援或未測試存檔版本(一句話:需要正常疊代版本的 Centos 7 系統,其他系統都不行)
  • 必須啟用 centos-extras 存儲庫,該存儲庫預設情況下處于啟用狀态,但是如果已禁用它,則需要重新啟用它
  • 建議使用 overlay2 存儲驅動程式

重點記下大佬說的話

  • CentOS 6 因核心太舊,即使支援安裝 docker,但會有各種問題,不建議安裝
  • CentOS 7 的 extras 源雖然可以安裝 docker,但包比較舊,建議從官方源或鏡像源站點下載下傳安裝 docker
  • CentOS 8 有新技術 podman 代替 docker
  • 是以建議在 CentOS 7 上安裝 docker

解除安裝舊版本 Docker

sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine

如果出現下圖就可以了

容器化部署Jenkins實戰

注意

  •  /var/lib/docker/ 下的内容(包括 images,containers,volumes,networks)被保留
  • Docker Engine 軟體包現在稱為 docker-ce 

安裝 Docker

有兩種方式,可供選擇

  • 從 Docker 的 repositories 安裝,即 yum 的方式(推薦)
  • 手動下載下傳并安裝 rpm 軟體包,需要完全手動管理更新版本

通過 yum 的方式安裝

配置 Docker Repository

在主機上首次安裝 Docker Engine之前,需要設定 Docker Repository,之後可以從 Repository 安裝和更新 Docker

# step 1: 安裝必要的一些系統工具 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 # Step 2: 添加軟體源資訊,國内 Repository 更加穩定 sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # Step 3: 更新 sudo yum makecache fast

安裝最新版本的 Docker Engine 和 Container

sudo yum install docker-ce docker-ce-cli containerd.io

注意

  • 如果提示接受GPG密鑰,請驗證指紋是否與 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35 比對,如果是,可接受
  • 安裝成功後不代表 Docker 已成功,且 Docker 組雖已建立,但沒有使用者添加到該組

安裝指定版本的 Docker Engine

查找 docker-ce 的版本清單

sudo yum list docker-ce --showduplicates | sort -r

容器化部署Jenkins實戰

安裝指定版本的文法格式

sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

來個栗子

sudo yum install docker-ce-19.03.13-3.el7 docker-ce-cli-19.03.13-3.el7 containerd.io

注意: 3:  是不用加的哈

啟動 Docker

sudo systemctl start docker

驗證 Docker Engine 是否已正确安裝

通過運作 hello-world 映像來驗證

sudo docker run hello-world

容器化部署Jenkins實戰

注意

建議使用 sudo 運作上面的指令,以便非特權使用者運作 Docker 指令以及其他可選配置 步驟

yum 的安裝方式二

可能官網的yum源太慢,下面使用阿裡雲的Yum源進行安裝

rm -rf /etc/yum.repos.d/* wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum clean all sudo yum install docker-ce docker-ce-cli containerd.io systemctl enable --now docker

更新 Docker Engine

直接指定最新版本的方式去安裝即可

下載下傳 rpm 包的安裝方式

下載下傳位址

  • 官方rpm包下載下傳位址:https://download.docker.com/linux/centos/7/x86_64/stable/Packages/
  • 阿裡鏡像下載下傳位址:https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/

安裝 rpm 包

将 下好的 rpm 包放到 Linux 任意目錄下

sudo yum install /root/package.rpm

容器化部署Jenkins實戰

啟動 Docker

sudo systemctl start docker

更新 Docker Engine

  1. 下載下傳對應的 rpm 包
  2. 通過 yum -y upgrade package.rpm 去更新

配置 Docker 鏡像加速

直接看下一篇文章:https://www.cnblogs.com/poloyy/p/13922074.html

解除安裝 Docker Engine

sudo yum remove docker-ce docker-ce-cli containerd.io

備注:主機上的 Images、containers、volumes、自定義配置檔案不會被删除

若要删除執行下面指令

sudo rm -rf /var/lib/docker

__EOF__

##############################################

部署Jenkins====https://www.jb51.net/article/192077.htm

使用碼雲搭建Git代碼存儲倉庫

https://gitee.com/login

  • 使用碼雲建立私有私有git倉庫
  • 将本地springboot項目上傳到git倉庫中

基于Docker安裝Jenkins環境

1.使用docker 安裝jenkins

1

docker run -p 8080:8080 -p 50000:50000 -

v

jenkins_data:

/var/jenkins_home

jenkinsci

/blueocean

2.通路jenkins位址 8080

容器化部署Jenkins實戰

注意:第一次啟動的時候正在加載jenkins大概會等待3-10分鐘。

3.解鎖jenkins

容器化部署Jenkins實戰
容器化部署Jenkins實戰

1

2

3

docker

exec

-it 7f485bd95c3b

/bin/bash

進入jenkins容器

cat

/var/jenkins_home/secrets/initialAdminPassword

容器化部署Jenkins實戰

大概需要等待3-10分鐘

建立新的使用者

容器化部署Jenkins實戰
容器化部署Jenkins實戰

Jenkins全局工具配置

進入到jenkins容器中 echo $JAVA_HOME 擷取java環境安裝位址

JDK環境安裝

容器化部署Jenkins實戰

Maven環境安裝

容器化部署Jenkins實戰

安裝Jenkins對應Maven插件

找到 “系統管理“ - “安裝插件” ,點選 “可選插件”,找到如下maven插件的版本

插件名稱 Maven Integration

容器化部署Jenkins實戰
容器化部署Jenkins實戰

Jenkins實作Springboot項目自動部署建立一個釋出任務

容器化部署Jenkins實戰

配置任務git賬号密碼

容器化部署Jenkins實戰

3.項目打包

容器化部署Jenkins實戰
1

clean

install

點選立即建構

容器化部署Jenkins實戰

第一次建構可能耗時比較長,因為需要下載下傳一些相關依賴jar包

Jenkins啟動成功之後執行shll腳本

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

#!/bin/bash

#服務名稱

SERVER_NAME=springboot

# 源jar路徑,mvn打包完成之後,target目錄下的jar包名稱,也可選擇成為war包,war包可移動到Tomcat的webapps目錄下運作,這裡使用jar包,用java -jar 指令執行

JAR_NAME=springboot-0.0.1-SNAPSHOT

# 源jar路徑

#/usr/local/jenkins_home/workspace--->jenkins 工作目錄

#demo 項目目錄

#target 打包生成jar包的目錄

JAR_PATH=

/var/jenkins_home/workspace/springboot/target

# 打包完成之後,把jar包移動到運作jar包的目錄--->work_daemon,work_daemon這個目錄需要自己提前建立

JAR_WORK_PATH=

/var/jenkins_home/workspace/springboot/target

echo

"查詢程序id-->$SERVER_NAME"

PID=`

ps

-ef |

grep

"$SERVER_NAME"

|

awk

'{print $2}'

`

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

Nohub java -jar $JAR_NAME.jar

加nohub 指的是背景運作,或者使用nohub &

容器映射8081端口

1. 重新開機容器

1

systemctl restart docker

2. 清空未運作的容器

1

docker

rm

$(

sudo

docker

ps

-a -q)

1

docker run -p 8080:8080  -p 8081:8081  -p 50000:50000 -

v

jenkins_data:

/var/jenkins_home

jenkinsci

/blueocean

到此這篇關于基于Docker+Jenkins實作自動化部署的文章就介紹到這了,更多相關Docker+Jenkins實作自動化部署内容請搜尋腳本之家以前的文章或繼續浏覽下面的相關文章希望大家以後多多支援腳本之家!

#############################################

配置Jenkins====https://www.cnblogs.com/poloyy/p/13955641.html

如果你還想從頭學起 Docker,可以看看這個系列的文章哦!

https://www.cnblogs.com/poloyy/category/1870863.html

搭建 Jenkins 容器

就是實戰第一篇文章:https://www.cnblogs.com/poloyy/p/13954637.html

Jenkins 初始化流程

通路 Jenkins

檢視本機 IP

ifconfig

檢視容器運作端口

docker ps

容器化部署Jenkins實戰

我的是用主機 80 端口映射到容器的 8080 端口

浏覽器通路 Jenkins

http://ip:80

檢視管理者密碼

進入到頁面

容器化部署Jenkins實戰

檢視密碼有兩種方式

第一種:檢視容器日志

docker logs jenkins1

容器化部署Jenkins實戰

打碼那一行就是密碼哦

第二種: 去檔案夾檢視

cat /var/jenkins_node/secrets/initialAdminPassword

容器化部署Jenkins實戰
  • 因為我建立 Jenkins 容器時,将主機的 /var/jenkins_node 目錄映射了容器的 /var/jenkins_home 目錄
  • 是以可以直接在主機查到管理者密碼,而無需進入容器再檢視

初始化流程

容器化部署Jenkins實戰

建立管理者使用者

自己配啥記住就行了,沒啥特别要求

容器化部署Jenkins實戰

執行個體配置

預設會給一個位址的,不改也可以

容器化部署Jenkins實戰

配置完成

容器化部署Jenkins實戰

進入主界面

容器化部署Jenkins實戰

下載下傳插件

需要的插件 gitlab、gitlab hook、allure

容器化部署Jenkins實戰
容器化部署Jenkins實戰
容器化部署Jenkins實戰
容器化部署Jenkins實戰
容器化部署Jenkins實戰

在它安裝完後,自己重新開機 Jenkins 容器

docker restart jenkins1

将插件源切換國内源

直接看這個教程:https://www.cnblogs.com/poloyy/p/12785401.html

Jenkins 漢化

直接看這個教程:https://www.cnblogs.com/poloyy/p/13955209.html

Jenkins 全局工具設定

容器化部署Jenkins實戰

配置 JDK

容器化部署Jenkins實戰

配置 Git

容器化部署Jenkins實戰

配置 allure

容器化部署Jenkins實戰

應用儲存!即可!

Jenkins 郵件功能測試

容器化部署Jenkins實戰

配置 Extended E-mail Notification

容器化部署Jenkins實戰

自定義電子郵=件通知的預設收件人清單

容器化部署Jenkins實戰
  • 可以在項目中使用 $DEFAULT_RECIPIENTS ,來包含此預設收件人清單(下面建立項目時講到這個變量)
  • 若要向某人抄送或密件抄送,不是将其放在“收件人”清單中,請在電子郵件位址之前添加 cc: 或密件抄送 bcc: (例如:cc:[email protected],bcc:[email protected])

配置郵箱通知

容器化部署Jenkins實戰

使用 Jenkins 實作自動化測試

将項目放到主機映射到容器的目錄下

通過  xftp 将項目上傳到主機

容器化部署Jenkins實戰

這是我自己的一個 pytest 項目

驗證項目能正常跑

進入容器内,在項目檔案夾愛内執行 pytest 指令

容器化部署Jenkins實戰
容器化部署Jenkins實戰

 有 28 個測試用例都跑通了哦

Jenkins 建立任務工程

建立任務

容器化部署Jenkins實戰
容器化部署Jenkins實戰

Jenkins 任務配置建構後操作

在完成系統設定後,還需要給需要建構的項目進行郵件配置

容器化部署Jenkins實戰
容器化部署Jenkins實戰
容器化部署Jenkins實戰

重點:這裡就有 $DEFAULT_RECIPIENTS ,上面也有講到這個環境變量,預設收件人清單,如果需要添加新的收件郵件,需要用 , 隔開

容器化部署Jenkins實戰

郵件模闆

直接複制粘貼到内容框就行

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次建構日志</title> </head> <body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4" offset="0"> <table width="95%" cellpadding="0" cellspacing="0" style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif"> <tr> 本郵件由系統自動發出,無需回複!<br/> 各位同僚,大家好,以下為${PROJECT_NAME }項目建構資訊</br> <td><font color="#CC0000">建構結果 - ${BUILD_STATUS}</font></td> </tr> <tr> <td><br /> <b><font color="#0B610B">建構資訊</font></b> <hr size="2" width="100%" align="center" /></td> </tr> <tr> <td> <ul> <li>項目名稱 : ${PROJECT_NAME}</li> <li>建構編号 : 第${BUILD_NUMBER}次建構</li> <li>觸發原因: ${CAUSE}</li> <li>建構狀态: ${BUILD_STATUS}</li> <li>建構日志: <a href="${BUILD_URL}console" target="_blank" rel="external nofollow" >${BUILD_URL}console</a></li> <li>建構 Url : <a href="${BUILD_URL}" target="_blank" rel="external nofollow" >${BUILD_URL}</a></li> <li>工作目錄 : <a href="${PROJECT_URL}ws" target="_blank" rel="external nofollow" >${PROJECT_URL}ws</a></li> <li>項目 Url : <a href="${PROJECT_URL}" target="_blank" rel="external nofollow" >${PROJECT_URL}</a></li> <li>測試報告: <a href="${PROJECT_URL}allure" target="_blank" rel="external nofollow" >${PROJECT_URL}allure</a></li> </ul> <h4><font color="#0B610B">失敗用例</font></h4> <hr size="2" width="100%" /> $FAILED_TESTS<br/> <h4><font color="#0B610B">最近送出(#$SVN_REVISION)</font></h4> <hr size="2" width="100%" /> <ul> ${CHANGES_SINCE_LAST_SUCCESS, reverse=true, format="%c", changesFormat="<li>%d [%a] %m</li>"} </ul> 詳細送出: <a href="${PROJECT_URL}changes" target="_blank" rel="external nofollow" >${PROJECT_URL}changes</a><br/> </td> </tr> </table> </body>

容器化部署Jenkins實戰
容器化部署Jenkins實戰
容器化部署Jenkins實戰
容器化部署Jenkins實戰
容器化部署Jenkins實戰

最後儲存

進行第一次建構

容器化部署Jenkins實戰

檢視控制台輸出

容器化部署Jenkins實戰
容器化部署Jenkins實戰

郵件發送成功!!

Jenkins 任務配置建構操作

主要兩個任務

  1. 配置 pytest 指令
  2. 生成 allure 報告

配置 pytest 指令

容器化部署Jenkins實戰
容器化部署Jenkins實戰

#!/bin/bash cd /var/jenkins_home/waimai pytest -s -q --alluredir=${WORKSPACE}/allure-reports --clean-alluredir exit 0

生成 allure 報告

容器化部署Jenkins實戰
容器化部署Jenkins實戰

這張圖是重點哦

儲存!!就成功了!

進行第二次建構

容器化部署Jenkins實戰

檢視 allure 報告

容器化部署Jenkins實戰

################################################

CICD等Jenkins實戰

https://blog.csdn.net/wzh1070/article/details/80853277

https://blog.51cto.com/lizhenliang/2159817

https://blog.csdn.net/jackyzhousales/article/details/81713004

https://www.cnblogs.com/xyou/p/10674774.html

容器化部署Jenkins

安裝docker====https://www.cnblogs.com/poloyy/p/13921450.html

部署Jenkins====https://www.jb51.net/article/192077.htm

*************************************************************

*************************************************************

*************************************************************

Jenkins initial setup is required. An admin user has been created and a password generated.

Please use the following password to proceed to installation:

7ce7f30f2eac4e1b82fc49b15da09298

This may also be found at: /var/jenkins_home/secrets/initialAdminPassword

*************************************************************

*************************************************************

*************************************************************

docker exec -it 1e293dd77dde /bin/bash

問題:

jenkins配置https://www.cnblogs.com/poloyy/p/13955641.html

qq郵箱密碼 iuyhzsdxeeeijhfd

解決郵件發送錯誤:503 Error: need EHLO and AUTH first

https://blog.csdn.net/lingfeian/article/details/96731620

501 mail from address must be same as authorization user

https://blog.csdn.net/qq_33801641/article/details/107195879