0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于Jenkins+GitLab+Maven實(shí)現(xiàn)代碼自動(dòng)打包編譯發(fā)布

jf_TEuU2tls ? 來源:浩道Linux ? 2023-11-20 09:57 ? 次閱讀

Jenkins 可以通過本機(jī)系統(tǒng)包、Docker 安裝,甚至可以由任何安裝了 Java 運(yùn)行時(shí)環(huán)境 (JRE) 的機(jī)器獨(dú)立運(yùn)行。

(一)Jenkins功能

Jenkins是一個(gè)開源的持續(xù)集成工具,它可以在自動(dòng)化構(gòu)建,測(cè)試和部署軟件的過程中發(fā)揮重要的作用。Jenkins允許軟件開發(fā)人員自動(dòng)構(gòu)建,測(cè)試和發(fā)布他們的代碼,而無需進(jìn)行手動(dòng)的操作。主要功能包括:

1、持續(xù)集成:可以在代碼修改后自動(dòng)進(jìn)行構(gòu)建、測(cè)試和部署。

2、自動(dòng)化部署:可以將軟件部署到指定的服務(wù)器上。

3、測(cè)試報(bào)告:可以生成測(cè)試報(bào)告,并將測(cè)試結(jié)果自動(dòng)反饋給相關(guān)開發(fā)人員。

4、軟件包管理:可以管理版本控制系統(tǒng)和軟件包依賴性。

5、插件支持:可以通過插件擴(kuò)展Jenkins的功能。

(二)Jenkins官網(wǎng)地址

Jenkins官網(wǎng)地址如下:

https://www.jenkins.io/

進(jìn)入官網(wǎng)后,可以點(diǎn)擊https://www.jenkins.io/zh/doc/book/進(jìn)入中文用戶文檔頁面查看相關(guān)幫助信息。

(三)Jenkins安裝條件

Jenkins可以運(yùn)行在各種不同的操作系統(tǒng)上,包括Windows、Linux、MacOS等。只要環(huán)境配置正確,Jenkins就可以在各種操作系統(tǒng)上運(yùn)行。系統(tǒng)對(duì)軟件和硬件的要求并不高,具體要求如下:

系統(tǒng)要求(最低推薦配置): 256MB可用內(nèi)存/1GB可用磁盤空間(作為一個(gè)Docker容器運(yùn)行jenkins的話推薦10GB) 如果是小團(tuán)隊(duì)使用,則推薦的硬件配置:1GB+可用內(nèi)存/50GB+ 可用磁盤空間

軟件配置: 軟件方面需要Java運(yùn)行環(huán)境支持,Java運(yùn)行時(shí)環(huán)境(JRE)或Java開發(fā)工具包(JDK)都可以。

(四)Jenkins的發(fā)行版本

Jenkins項(xiàng)目產(chǎn)生兩個(gè)發(fā)行線, 長期支持版本 (LTS) 和每周更新版本。

穩(wěn)定版 (LTS) LTS (長期支持) 版本每12周從常規(guī)版本流中選擇,作為該時(shí)間段的穩(wěn)定版本。每隔 4 周,我們會(huì)發(fā)布穩(wěn)定版本,其中包括錯(cuò)誤和安全修復(fù)反向移植。

定期發(fā)布 (每周) 每周都會(huì)發(fā)布一個(gè)新版本,為用戶和插件開發(fā)人員提供錯(cuò)誤修復(fù)和功能。

(五)Jenkins演示項(xiàng)目部署環(huán)境拓?fù)?/strong>

本文所有演示環(huán)境基于Centos7.6系統(tǒng)部署,以下為拓?fù)浣Y(jié)構(gòu):

3705cb04-8745-11ee-939d-92fbcf53809c.png

本實(shí)驗(yàn)將針對(duì)如上拓?fù)?,進(jìn)行如下實(shí)驗(yàn),跑通Jenkins整個(gè)持續(xù)集成項(xiàng)目。

大概有如下步驟:

1、首先,開發(fā)人員角色進(jìn)行代碼提交,提交到Git遠(yuǎn)程倉庫。

2、然后,Jenkins作為持續(xù)集成工具,使用Git工具到Git倉庫拉取代碼到集成服務(wù)器,再配合JDK,Maven等軟件完成代碼編譯,打包等工作,在這個(gè)過程中每一步出錯(cuò),都重新再執(zhí)行一次整個(gè)流程。

3、最后,Jenkins把生成的jar或war包分發(fā)到測(cè)試服務(wù)器或者生產(chǎn)服務(wù)器,測(cè)試人員或用戶就可以訪問應(yīng)用。

二、GitLab安裝部署

以下操作在192.168.20.231服務(wù)器上完成。

(一)GitLab介紹

GitLab是一個(gè)開源的git倉庫管理軟件,并提供web界面,方便管理git倉庫。和github很相似,不過github暫時(shí)沒有開源版本,項(xiàng)目必須托管到github官方網(wǎng)站,不能本地部署。很多公司考慮到安全費(fèi)用等因素,搭建自己的gitlab服務(wù)器。

1、GitLab官方地址為

https://about.gitlab.com/
(二)GitLab安裝 1、安裝相關(guān)依賴軟件
yum install -y openssh-server openssh-clients postfix cronie policycoreutils-python

2、啟動(dòng)sshd服務(wù)并且設(shè)置為開機(jī)自啟動(dòng)

systemctl enable sshd && sudo systemctl start sshd
3、啟動(dòng)郵件服務(wù)并且設(shè)置為開機(jī)自啟動(dòng)
systemctl enable post?x && systemctl start post?x


4、做好相關(guān)服務(wù)的防火墻策略,我這里直接將防火墻關(guān)閉

?rewall-cmd --add-service=ssh --permanent
?rewall-cmd --add-service=http --permanent
?rewall-cmd --reload
5、下載gitlab的rpm包

1)可以從gtilab官方網(wǎng)站下載相應(yīng)gitlab版本的rpm包,地址如下
https://packages.gitlab.com/gitlab/gitlab-ce
2)也可以從國內(nèi)鏡像站下載相應(yīng)gitlab版本的rpm包,地址如下
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/

371915ce-8745-11ee-939d-92fbcf53809c.png

選擇對(duì)應(yīng)版本,復(fù)制下載鏈接即可

37209cfe-8745-11ee-939d-92fbcf53809c.png

復(fù)制15.11.13版本下載鏈接如下:

https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-15.11.13-ce.0.el7.x86_64.rpm

通過wget命令進(jìn)行下載

wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-15.11.13-ce.0.el7.x86_64.rpm --no-check-certificate

6、通過rpm命令進(jìn)行安裝即可

rpm -ivh gitlab-ce-15.11.13-ce.0.el7.x86_64.rpm

7、修改配置文件/etc/gitlab/gitlab.rb訪問地址及訪問端口,這里我改為85端口

external_url 'http://192.168.20.231:85'
nginx['listen_port'] = 85

8、重新加載配置文件

gitlab-ctl reconfigure

9、重啟GitLab服務(wù)

gitlab-ctl restart

10、登錄GitLab

通過瀏覽器訪問http://192.168.20.231:85 這里管理員用戶默認(rèn)為root,密碼可以在文件/etc/gitlab/initial_root_password中查看,如下:

[root@master ruanjianfile]# cat /etc/gitlab/initial_root_password
# WARNING: This value is valid only in the following conditions
#          1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time (usually, the first reconfigure run).
#          2. Password hasn't been changed manually, either via UI or via command line.
#
#          If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.


Password: vlrcciD02sCJheisy8cEZvoZ7CaehHIEfdUxzDEQRCM=


# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.

37395898-8745-11ee-939d-92fbcf53809c.png

11、在管理頁面修改默認(rèn)語言為簡體中文。

3745567a-8745-11ee-939d-92fbcf53809c.png

12、在管理頁面--用戶菜單,修改管理員root的密碼,我這里設(shè)置為haodao123

375e8398-8745-11ee-939d-92fbcf53809c.png

(三)GitLab添加組

使用管理員賬號(hào)root創(chuàng)建組,一個(gè)組里面可以有多個(gè)項(xiàng)目分支,可以將開發(fā)添加到組里面進(jìn)行權(quán)限設(shè)置,不同的組就是公司不同的開發(fā)項(xiàng)目或者服務(wù)模塊,不同的組添加不同的開發(fā)即可實(shí)現(xiàn)對(duì)開發(fā)權(quán)限的管理。

1、root賬號(hào)登錄進(jìn)入后臺(tái)

2、編寫組相關(guān)信息創(chuàng)建即可

3769ec2e-8745-11ee-939d-92fbcf53809c.png

3、選擇對(duì)應(yīng)組,創(chuàng)建項(xiàng)目,如下:

377db164-8745-11ee-939d-92fbcf53809c.png

(四)新建用戶

1、切換到管理菜單,選擇用戶選項(xiàng);

379b183a-8745-11ee-939d-92fbcf53809c.png

2、填寫用戶相關(guān)信息,創(chuàng)建即可。

37b2bc4c-8745-11ee-939d-92fbcf53809c.png

3、在新增用戶界面,選擇編輯,為新創(chuàng)建用戶添加密碼;

37cb8ce0-8745-11ee-939d-92fbcf53809c.png

我這里密碼是hh123456

(五)將新建用戶添加到組里

1、找到對(duì)應(yīng)組,成員信息

2、添加成員到組里

37e14cc4-8745-11ee-939d-92fbcf53809c.png

3、切換到huanghao賬號(hào)登錄,已經(jīng)可以看到huanghao這個(gè)賬號(hào)在組里面了

37f40e86-8745-11ee-939d-92fbcf53809c.png

(六)將源碼上傳到GitLab倉庫

IDEA中創(chuàng)建項(xiàng)目,大家可以先看后面章節(jié)再回過來操作。

1、IDEA編輯器中創(chuàng)建了一個(gè)簡單web項(xiàng)目

38004bce-8745-11ee-939d-92fbcf53809c.png

2、IDEA編輯器中找到VCS菜單,選擇如下子菜單

3818aeda-8745-11ee-939d-92fbcf53809c.png

3、選擇Git類型

3821b89a-8745-11ee-939d-92fbcf53809c.png

前提是本地安裝好Git環(huán)境

4、在對(duì)應(yīng)項(xiàng)目中右鍵,找到Git,點(diǎn)擊Add將代碼放到緩存中去

382fe4ce-8745-11ee-939d-92fbcf53809c.png

5、同上一步,在對(duì)應(yīng)項(xiàng)目中右鍵,找到Git,點(diǎn)擊Commit Directory將代碼提交本地倉庫;

383b0408-8745-11ee-939d-92fbcf53809c.png

384a1e7a-8745-11ee-939d-92fbcf53809c.png

6、同上一步,在對(duì)應(yīng)項(xiàng)目中右鍵,找到Git,點(diǎn)擊Manage Remotes管理添加遠(yuǎn)程倉庫;

385cd056-8745-11ee-939d-92fbcf53809c.png

3874bcca-8745-11ee-939d-92fbcf53809c.png

從gitlab組中對(duì)應(yīng)項(xiàng)目找到HTTP對(duì)應(yīng)地址,編輯添加如下所示:

387bbfac-8745-11ee-939d-92fbcf53809c.png

7、同上一步,在對(duì)應(yīng)項(xiàng)目中右鍵,找到Git,點(diǎn)擊Push

3887fb50-8745-11ee-939d-92fbcf53809c.png

389ae486-8745-11ee-939d-92fbcf53809c.png

8、此時(shí)push成功,gitlab項(xiàng)目中可以看到如下信息

38a6187e-8745-11ee-939d-92fbcf53809c.png

四、Git客戶端安裝

以下操作在192.168.20.232服務(wù)器上完成。 以下通過源碼方式進(jìn)行安裝,注意通過yum方式安裝默認(rèn)安裝的是低版本!

(一)卸載yum安裝的低版本git

1、查看git版本

git --version
2、卸載git
yum remove -y git
(二)源碼安裝git

1、安裝相關(guān)依賴軟件

yum -y install libcurl-devel expat-devel curl-devel  gettext-devel openssl-devel zlib-devel
2、安裝編譯工具
yum -y install  gcc perl-ExtUtils-MakeMaker
3、下載Git對(duì)應(yīng)版本源碼,網(wǎng)址如下:
https://mirrors.edge.kernel.org/pub/software/scm/git/
4、找到對(duì)應(yīng)版本下載鏈接,通過wget工具下載
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.39.3.tar.gz --no-check-certificate
5、對(duì)應(yīng)目錄下,解壓源碼包
tar -xzf git-2.39.3.tar.gz
6、準(zhǔn)備編譯安裝
cd git-2.39.3
make prefix=/usr/local/git all
make prefix=/usr/local/git install
7、添加git到環(huán)境變量,編輯/etc/profile文件,最后加入如下內(nèi)容;
export PATH=/usr/local/git/bin:$PATH
如下圖所示:

38bde210-8745-11ee-939d-92fbcf53809c.png

8、使環(huán)境變量生效

source /etc/profile

9、驗(yàn)證git安裝是否成功

[root@node1 ~]# git --version
git version 2.39.3
[root@node1 ~]# whereis git
git: /usr/bin/git /usr/local/git /usr/local/git/bin/git /usr/share/man/man1/git.1.gz

五、JDK安裝部署

本套實(shí)驗(yàn)中,總共有兩臺(tái)服務(wù)器需要安裝部署JDK環(huán)境,為了讓大家更好學(xué)習(xí)Linux環(huán)境下軟件安裝部署,我這里將給大家分別展示通過yum方式及官網(wǎng)下載二進(jìn)制包安裝的方式。其中跑Jenkins服務(wù)的那一臺(tái)服務(wù)器將通過yum方式安裝JDK11版本,跑tomcat的那一臺(tái)服務(wù)器將手動(dòng)安裝JDK8版本。

(一)yum方式安裝部署JDK11

以下操作在192.168.20.232服務(wù)器上執(zhí)行安裝部署命令。前提是大家配置好yum環(huán)境。

yum -y install java-11-openjdk*
安裝完畢執(zhí)行如下命令驗(yàn)證是否成功安裝配置好環(huán)境變量。
java -version
執(zhí)行上面命令后,看到如下信息,說明安裝JDK成功了。

38c8a0ec-8745-11ee-939d-92fbcf53809c.png

通過yum方式安裝好JDK11后默認(rèn)安裝目錄如下

/usr/lib/jvm
(二)JDK8安裝部署

當(dāng)然,大家如果嫌棄下載麻煩,也可以通過yum方式安裝即可,以下演示只是為讓大家掌握另外一種安裝方法。 以下操作在192.168.20.233服務(wù)器上進(jìn)行。

1、JDK安裝包獲取

(1)進(jìn)入甲骨文官網(wǎng)下載。
https://www.oracle.com/

38debc7e-8745-11ee-939d-92fbcf53809c.png

(2)下載自己需要安裝的JDK版本,如下圖所示:

38f601f4-8745-11ee-939d-92fbcf53809c.png

(3)找到JAVA 8對(duì)應(yīng)的Linux版本下載即可,如下圖所示:

390cd50a-8745-11ee-939d-92fbcf53809c.png

(4)點(diǎn)擊進(jìn)行下載,需要登錄甲骨文賬號(hào)下載,自己注冊(cè)一個(gè)登錄

2、下載好JDK安裝包后,上傳安裝服務(wù)器

我這里如下所示:

391c3d74-8745-11ee-939d-92fbcf53809c.png

3、我這里打算將JDK安裝在/usr/local目錄下,將JDK安裝包解壓縮到安裝目錄下即可,大家根據(jù)自己實(shí)際環(huán)境執(zhí)行解壓命令。

tar -xzvf /ruanjianfile/jdk-8u381-linux-x64.tar.gz -C /usr/local/
4、設(shè)置環(huán)境變量,通過修改/etc/profile文件進(jìn)行設(shè)置。
vi/etc/profile
通過編輯器打開編輯,文件最后加上如下內(nèi)容保存。
export JAVA_HOME=/usr/local/jdk1.8.0_381
export PATH=$PATH:$JAVA_HOME/bin
5、使環(huán)境變量生效,執(zhí)行以下命令:
source/etc/profile
6、驗(yàn)證JDK是否安裝成功。
java-version
執(zhí)行以上命令,出現(xiàn)如圖所示,說明JDK成功安裝。

392d80a2-8745-11ee-939d-92fbcf53809c.png

六、Jenkins安裝部署

以下操作在192.168.20.232服務(wù)器上完成。

(一)Jenkins下載

1、官方下載地址

http://jenkins-ci.org/ 
或 
https://mirrors.jenkins-ci.org/redhat/

2、清華官方鏡像站

https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/

3、我這里下載jenkins-2.414.1-1.1.noarch.rpm版本

高版本jenkins對(duì)JDK運(yùn)行環(huán)境有要求,所以我安裝了JDK11,JDK8好像出錯(cuò)。大家注意。

(二)Jenkins安裝部署

1、下載好后上傳192.168.20.232服務(wù)器目錄

[root@node1 ruanjianfile]# ll
總用量 254160
drwxr-xr-x.  3 root  root         26 2月  24 2022 boost
-rw-r--r--.  1 root  root  139273048 7月  31 11:02 jdk-8u381-linux-x64.tar.gz
-rw-r--r--.  1 root  root   90991760 7月  31 14:21 jenkins-2.414.1-1.1.noarch.rpm
-rw-r--r--.  1 root  root   10368103 7月  19 17:21 node_exporter-1.6.1.linux-amd64.tar.gz
drwxr-xr-x. 17 mysql mysql      4096 7月  27 16:44 Python-3.10.9
-rw-r--r--.  1 root  root   19612112 12月  7 2022 Python-3.10.9.tar.xz

2、執(zhí)行安裝命令

rpm -ivh jenkins-2.414.1-1.1.noarch.rpm

3、查看Jenkins的安裝信息

[root@node1 ruanjianfile]# rpm -ql jenkins
/etc/init.d/jenkins
/etc/logrotate.d/jenkins
/etc/sysconfig/jenkins
/usr/bin/jenkins
/usr/lib/systemd/system/jenkins.service
/usr/sbin/rcjenkins
/usr/share/java/jenkins.war
/usr/share/jenkins
/usr/share/jenkins/migrate
/var/cache/jenkins
/var/lib/jenkins
/var/log/jenkins
[root@node1 ruanjianfile]#
其中相關(guān)信息如下:
/etc/init.d/jenkins#啟動(dòng)服務(wù)
/etc/logrotate.d/jenkins#日志滾動(dòng)目錄
/etc/sysconfig/jenkins#配置文件
/usr/bin/jenkins#庫文件目錄
(三)修改Jenkins的配置文件

1、先備份原配置文件/etc/sysconfig/jenkins

2、修改配置文件,修改后內(nèi)容如下:

[root@node1 sysconfig]# cat /etc/sysconfig/jenkins
主要修改以下內(nèi)容:


JENKINS_HOME="/var/lib/jenkins"#jenkins工作目錄
#JENKINS_USER="jenkins"
JENKINS_USER="root"#jenkins的啟動(dòng)用戶
JENKINS_PORT="8080"#jenkins服務(wù)監(jiān)聽端口

(四)修改Jenkins的啟動(dòng)文件

1、先備份原啟動(dòng)文件/etc/init.d/jenkins

2、修改配置文件

找到candidates=,在第一行加入jdk的路徑,我這里通過yum安裝的JDK11路徑如下:

/usr/lib/jvm/java-11-openjdk-11.0.20.0.8-1.el7_9.x86_64

修改后內(nèi)容如下:

# see http://www.nabble.com/guinea-pigs-wanted-----Hudson-RPM-for-RedHat-Linux-td25673707.html
candidates="
/usr/lib/jvm/java-11-openjdk-11.0.20.0.8-1.el7_9.x86_64
/etc/alternatives/java
/usr/lib/jvm/java-1.8.0/bin/java
/usr/lib/jvm/jre-1.8.0/bin/java
/usr/lib/jvm/java-11.0/bin/java
/usr/lib/jvm/jre-11.0/bin/java
/usr/lib/jvm/java-11-openjdk-amd64
/usr/bin/java
"
(五)啟動(dòng)Jenkins服務(wù)

1、啟動(dòng)Jenkins服務(wù)并且加到開機(jī)啟動(dòng)項(xiàng)
systemctl daemon-reload
systemctl start jenkins
[root@node1 bin]# systemctl status jenkins.service
● jenkins.service - Jenkins Continuous Integration Server
   Loaded: loaded (/usr/lib/systemd/system/jenkins.service; disabled; vendor preset: disabled)
   Active: active (running) since 四 2023-09-14 1755 CST; 4min 9s ago
 Main PID: 10950 (java)
   CGroup: /system.slice/jenkins.service
           └─10950 /usr/bin/java -Djava.awt.headless=true -jar /usr/share/java/jenkins.war --webroot=%C/jenkins/war --httpPort=8080


9月 14 1730 node1 jenkins[10950]: c47f2adc1add403d86b1c6e0bbc4d9e2
9月 14 1730 node1 jenkins[10950]: This may also be found at: /var/lib/jenkins/secrets/initialAdminPassword
9月 14 1730 node1 jenkins[10950]: *************************************************************
9月 14 1730 node1 jenkins[10950]: *************************************************************
9月 14 1730 node1 jenkins[10950]: *************************************************************
9月 14 1755 node1 jenkins[10950]: 2023-09-14 0955.702+0000 [id=31]        INFO        jenkins.InitReactorRunner$1#onAttained: Completed initialization
9月 14 1755 node1 jenkins[10950]: 2023-09-14 0955.733+0000 [id=23]        INFO        hudson.lifecycle.Lifecycle#onReady: Jenkins is fully up and running
9月 14 1755 node1 systemd[1]: Started Jenkins Continuous Integration Server.
9月 14 1757 node1 jenkins[10950]: 2023-09-14 0957.039+0000 [id=51]        INFO        h.m.DownloadService$Downloadable#load: Obtained the updated data file for hudso...venInstaller
9月 14 1757 node1 jenkins[10950]: 2023-09-14 0957.041+0000 [id=51]        INFO        hudson.util.Retrier#start: Performed the action check updates server successful...e attempt #1
Hint: Some lines were ellipsized, use -l to show in full.
[root@node1 bin]#

如果出現(xiàn)啟動(dòng)失敗情況,檢查各個(gè)配置文件信息是否一致。

(六)Jenkins登錄配置

1、打開瀏覽器,輸入http://服務(wù)器IP:8080網(wǎng)址,如我自己的:

http://192.168.20.232:8080/

正??梢钥吹饺缦马撁妫?/p>

393b2f0e-8745-11ee-939d-92fbcf53809c.png

2、根據(jù)上一個(gè)步驟提示,查詢密碼,然后輸入,繼續(xù)

[root@node1 ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
1322f32fe3e646f1b0d058fa05372f43
[root@node1 ~]#

3、安裝推薦插件

39527830-8745-11ee-939d-92fbcf53809c.png

3967bd3a-8745-11ee-939d-92fbcf53809c.png

5、根據(jù)提示信息,創(chuàng)建管理員用戶:

39777248-8745-11ee-939d-92fbcf53809c.png

我自己配置: 輸入用戶:haodaolinux,密碼:haodao123,郵箱:haodao@163.com等信息。 點(diǎn)擊保存并完成。

6、實(shí)例配置

Jenkins URL 用于給各種Jenkins資源提供絕對(duì)路徑鏈接的根地址。這意味著對(duì)于很多Jenkins特色是需要正確設(shè)置的,例如:郵件通知、PR狀態(tài)更新以及提供給構(gòu)建步驟的 BUILD_URL環(huán)境變量。推薦的默認(rèn)值顯示在尚未保存,如果可能的話這是根據(jù)當(dāng)前請(qǐng)求生成的。最佳實(shí)踐是要設(shè)置這個(gè)值,用戶可能會(huì)需要用到。這將會(huì)避免在分享或者查看鏈接時(shí)的困惑。

398956d4-8745-11ee-939d-92fbcf53809c.png

點(diǎn)擊“保存并完成”

7、完成配置

399697d6-8745-11ee-939d-92fbcf53809c.png

8、至此, jenkins部署完成,點(diǎn)擊開始使用 jenkins,進(jìn)入主界面。

39a01fa4-8745-11ee-939d-92fbcf53809c.png

(七)更改Jenkins插件地址為國內(nèi)源地址

1、登錄Jenkins進(jìn)行配置

進(jìn)入 Manage Jenkins =>>>Plugin=>>>高級(jí), 最下面有 升級(jí)站點(diǎn),設(shè)置為如下國內(nèi)源地址:

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
http://mirror.xmission.com/jenkins/updates/update-center.json

39b0c5ac-8745-11ee-939d-92fbcf53809c.png

按如上替換配置后,點(diǎn)擊提交進(jìn)行修改。

2、修改Jenkins服務(wù)默認(rèn)配置信息

進(jìn)入 jenkins安裝目錄 下的/var/lib/jenkins/updates/default.json

將其中的updates.jenkins-ci.org/download替換為mirrors.tuna.tsinghua.edu.cn/jenkins

有些jenkins版本當(dāng)中,

是將updates.jenkins.io/download替換為mirrors.tuna.tsinghua.edu.cn/jenkins

然后,把www.google.com修改為www.baidu.com

我這個(gè)版本通過如下命令進(jìn)行替換:

sed -i 's/https://updates.jenkins.io/download/https://mirrors.tuna.tsinghua.edu.cn/jenkins/g' default.json 
sed -i 's/https://www.google.com/https://www.baidu.com/g' default.json
sed -i 's/http://updates.jenkins-ci.org/download/https://mirrors.tuna.tsinghua.edu.cn/jenkins/g' default.json && sed -i 's/http://www.google.com/https://www.baidu.com/g' default.json

3、完成以上步驟后,重啟Jenkins服務(wù),即可完成更新。

(八)卸載Jenkins操作

這里也附上Jenkins卸載相關(guān)操作,本實(shí)驗(yàn)我們無需操作!?。?/p>

# rpm卸載
rpm -e jenkins
# 檢查是否卸載成功
rpm -ql jenkins
# 徹底刪除殘留文件
find / -iname jenkins | xargs -n 1000 rm -rf

刪除殘留文件

rm -rf /etc/sysconfig/jenkins.rpmsave
rm -rf /var/cache/jenkins/
rm -rf /var/lib/jenkins/
rm -rf /var/log/jenkins
rm -rf /usr/lib/jenkins
七、Jenkins相關(guān)概念

想要學(xué)習(xí)Jenkins相關(guān)功能,必須先要了解其相關(guān)概念

(一)持續(xù)集成

持續(xù)集成(Continuous Integration):持續(xù)集成是一種軟件開發(fā)實(shí)踐,通過頻繁地將代碼集成到共享的代碼倉庫中,以及自動(dòng)化構(gòu)建和測(cè)試代碼,確保團(tuán)隊(duì)的代碼始終保持可靠和可部署。

(二)構(gòu)建

構(gòu)建(Build):構(gòu)建是指將源代碼轉(zhuǎn)化為可執(zhí)行的軟件或可部署的包的過程。Jenkins提供了構(gòu)建工具和插件,可以執(zhí)行各種構(gòu)建任務(wù),如編譯代碼、運(yùn)行測(cè)試、生成文檔等。

(三)任務(wù)

任務(wù)(Job):任務(wù)是Jenkins中的基本單元,用于定義和管理構(gòu)建過程。每個(gè)任務(wù)都有一組配置,包括源代碼的位置、構(gòu)建觸發(fā)器、構(gòu)建腳本等。

(四)觸發(fā)器

觸發(fā)器(Trigger):觸發(fā)器是用于觸發(fā)構(gòu)建過程的機(jī)制。Jenkins提供了多種觸發(fā)器,如定時(shí)觸發(fā)器(按照預(yù)定時(shí)間間隔觸發(fā)構(gòu)建)、代碼提交觸發(fā)器(當(dāng)代碼提交到版本控制系統(tǒng)時(shí)觸發(fā)構(gòu)建)等。 (五)插件

插件(Plugin):Jenkins的功能可以通過插件進(jìn)行擴(kuò)展。插件可以用于添加新的構(gòu)建工具、測(cè)試框架、通知方式等。Jenkins有大量的插件可供選擇,并且可以自定義開發(fā)插件以滿足特定需求。

(六)工作空間

workspace(工作空間):jenkins是通過文件形式來存儲(chǔ)和管理數(shù)據(jù)的。workspace即給jenkins指定一個(gè)專門的目錄用來存儲(chǔ)其所有的配置和數(shù)據(jù)。每個(gè)job的workspace當(dāng)中是用來存放本任務(wù)涉及到的數(shù)據(jù)和文件,以及任務(wù)執(zhí)行完成后生成的數(shù)據(jù)和文件。這就相當(dāng)于每一個(gè)job開辟了一個(gè)獨(dú)立的文件夾。

(七)流水線

流水線(Pipeline):流水線是Jenkins的核心概念之一,用于定義和管理整個(gè)軟件交付過程。流水線可以通過編寫腳本來描述構(gòu)建、測(cè)試和部署的各個(gè)階段,并且可以通過圖形化界面進(jìn)行可視化和管理。

(八)構(gòu)建代理

構(gòu)建代理(Build Agent):構(gòu)建代理是Jenkins用于執(zhí)行構(gòu)建任務(wù)的工作節(jié)點(diǎn)??梢栽诓煌牟僮飨到y(tǒng)、硬件環(huán)境上配置多個(gè)構(gòu)建代理,以提高構(gòu)建的并發(fā)性和性能。

(九)測(cè)試

測(cè)試(Testing):Jenkins提供了豐富的測(cè)試工具和插件,可以自動(dòng)運(yùn)行各種測(cè)試,如單元測(cè)試、集成測(cè)試、端到端測(cè)試等。測(cè)試結(jié)果可以通過Jenkins進(jìn)行報(bào)告和分析。

(十)部署

部署(Deployment):Jenkins可以與各種部署工具和云平臺(tái)集成,實(shí)現(xiàn)自動(dòng)化部署和發(fā)布軟件的能力。可以將構(gòu)建好的軟件包或容器映像部署到目標(biāo)環(huán)境中。

(十一)Jenkins用戶權(quán)限管理

利用Role-based Authorization Strategy 插件來管理Jenkins用戶權(quán)限。

1、安裝Role-based Authorization Strategy 插件

(1)開啟權(quán)限全局安全配置

39c90b44-8745-11ee-939d-92fbcf53809c.png

(2)授權(quán)策略改為Role-Based Strategy

39dad586-8745-11ee-939d-92fbcf53809c.png

2、創(chuàng)建角色

(1)在Manage Jenkins管理界面找到 Manage and Assign Roles

39f2f7ce-8745-11ee-939d-92fbcf53809c.png

(2)添加管理角色

Global roles:全局角色,主要用于配置用戶的功能權(quán)限;

Item roles:項(xiàng)目角色,主要管理項(xiàng)目的權(quán)限。 這里我添加如下4個(gè)角色:

3a04abd6-8745-11ee-939d-92fbcf53809c.png

Dev_Role和Test_Role:該角色為全局角色。這個(gè)角色需要綁定Overall下面的Read權(quán)限,是為了給所有用戶定最基本的Jenkins訪問權(quán)限。注意:如果不給后續(xù)用戶綁定這個(gè)角色,會(huì)報(bào)錯(cuò)誤:用戶名 is missing the Overall/Read permission Role1:該角色為項(xiàng)目角色。使用正則表達(dá)式綁定"python.*",意思是只能操作python開頭的項(xiàng)目。 Role2:該角色也為項(xiàng)目角色。綁定"linux.*",意思是只能操作linux開頭的項(xiàng)目。

3、新建用戶

(1)在Manage Jenkins管理界面找到Users

3a20f85e-8745-11ee-939d-92fbcf53809c.png

3a2f3f18-8745-11ee-939d-92fbcf53809c.png

3a433b12-8745-11ee-939d-92fbcf53809c.png

這里創(chuàng)建3個(gè)賬號(hào): huanghao hh123456 lipython hh123456 zhanglinux hh123456

(2)新建用戶綁定對(duì)應(yīng)角色

3a54a1f4-8745-11ee-939d-92fbcf53809c.png

4、創(chuàng)建測(cè)試項(xiàng)目

創(chuàng)建linux01和python01兩個(gè)項(xiàng)目;

通過登錄lipython賬號(hào),只能看到python01項(xiàng)目信息; 通過登錄zhanglinux,只能看到linux01項(xiàng)目信息;

3a5cd036-8745-11ee-939d-92fbcf53809c.png

3a70b966-8745-11ee-939d-92fbcf53809c.png

(十二)Jenkins憑證管理

憑證可以用來存儲(chǔ)需要密文保護(hù)的數(shù)據(jù)庫密碼、Gitlab密碼信息、Docker私有倉庫密碼等,以便Jenkins可以和這些第三方的應(yīng)用進(jìn)行交互。

1、安裝Credentials Binding插件

2、憑證類型(用戶密碼類型)

(1)創(chuàng)建憑證

3a89ab4c-8745-11ee-939d-92fbcf53809c.png

3a9628d6-8745-11ee-939d-92fbcf53809c.png

選擇"Username with password",輸入Gitlab的用戶名和密碼,點(diǎn)擊"Create"。

3aae2328-8745-11ee-939d-92fbcf53809c.png

(2)測(cè)試憑證是否生效

1)新建一個(gè)FreeStyle項(xiàng)目:新建Item->FreeStyle Project->確定

3ab8ecc2-8745-11ee-939d-92fbcf53809c.png

2)找到"源碼管理"->"Git",在Repository URL復(fù)制Gitlab中的項(xiàng)目URL

3ad1433a-8745-11ee-939d-92fbcf53809c.png

3ae7623c-8745-11ee-939d-92fbcf53809c.png

3)保存配置后,點(diǎn)擊構(gòu)建”Build Now“ 開始構(gòu)建項(xiàng)目

3afc9c60-8745-11ee-939d-92fbcf53809c.png

4)控制臺(tái)輸出可以看到構(gòu)建成功

3b0e135a-8745-11ee-939d-92fbcf53809c.png

5)查看/var/lib/jenkins/workspace/目錄,發(fā)現(xiàn)已經(jīng)從Gitlab成功拉取了代碼到Jenkins中。

3b20d940-8745-11ee-939d-92fbcf53809c.png

3、憑證類型(SSH秘鑰類型)

(1)創(chuàng)建憑證

1)SSH免密登錄拓?fù)淙缦滤荆?/p>

3b2bedd0-8745-11ee-939d-92fbcf53809c.png

2)Jenkins對(duì)應(yīng)服務(wù)器上登錄root,生成公鑰和私鑰

ssh-keygen -t rsa

執(zhí)行上述命令后,然后敲(四個(gè)回車),對(duì)應(yīng)/root/.ssh就會(huì)生成兩個(gè)文件id_rsa(私鑰)、id_rsa.pub(公鑰),如下圖所示:

3b40b65c-8745-11ee-939d-92fbcf53809c.png

其中

id_rsa:私鑰文件 id_rsa.pub:公鑰文件

3)將公鑰內(nèi)容復(fù)制到gitlab,以root賬戶登錄->點(diǎn)擊頭像->Edit profile->SSH Keys,如下圖所示:

3b4f2b10-8745-11ee-939d-92fbcf53809c.png

4)Jenkins中創(chuàng)建憑證,選擇SSH Username with private key

3b63b9ea-8745-11ee-939d-92fbcf53809c.png

3b79787a-8745-11ee-939d-92fbcf53809c.png

(2)測(cè)試憑證是否生效

1)新建"linux-web02"項(xiàng)目->源碼管理->Git,這次要使用Gitlab的SSH連接,并且選擇SSH憑證。

3b842b1c-8745-11ee-939d-92fbcf53809c.png

3b9bf788-8745-11ee-939d-92fbcf53809c.png

注意:如果出現(xiàn)類似stderr: No ECDSA host key is known for 192.168.20.231 and you have requested這樣的報(bào)錯(cuò)信息。 但是在jenkins服務(wù)器上手動(dòng)執(zhí)行拉取命令又可以正常的,可以根據(jù)以下排查解決。 手動(dòng)拉取測(cè)試正常,命令如下:

git clone git@192.168.20.231:haodaolinux_group/web_demo.git

針對(duì)以上報(bào)錯(cuò)解決方法:

這是因?yàn)閟sh連接陌生機(jī)器需要確認(rèn),將jenkins器上的known_hosts復(fù)制到運(yùn)行jenkins服務(wù)賬號(hào)的~/.ssh目錄下即可。

[root@node1 .ssh]# ps aux | grep jenkins
jenkins   6799  0.3 46.0 4376136 863264 ?      Ssl  10月07   8:32 /usr/bin/java -Djava.awt.headless=true -jar /usr/share/java/jenkins.war --webroot=%C/jenkins/war --httpPort=8080
root      8767  0.0  0.0 112824   988 pts/0    R+   08:58   0:00 grep --color=auto jenkins
[root@node1 .ssh]# cat /etc/passwd | grep jenkins
jenkins997:995:Jenkins Automation Server:/var/lib/jenkins:/bin/false

以上命令可以看到運(yùn)行jenkins服務(wù)的賬號(hào)為jenkins,其home為/var/lib/jenkins

即執(zhí)行以下命令復(fù)制相關(guān)文件

cp /root/.ssh/known_hosts /var/lib/jenkins/.ssh/
3)保存配置后,點(diǎn)擊構(gòu)建”Build Now“ 開始構(gòu)建項(xiàng)目

4)控制臺(tái)輸出可以看到構(gòu)建成功

3bb1ef70-8745-11ee-939d-92fbcf53809c.png

5)查看/var/lib/jenkins/workspace/目錄,發(fā)現(xiàn)已經(jīng)從Gitlab成功拉取了代碼到Jenkins中。

3bc9f23c-8745-11ee-939d-92fbcf53809c.png

八、Maven安裝部署 以下操作在192.168.20.232服務(wù)器上完成。

(一)maven簡介

maven最主要體現(xiàn)在兩個(gè)詞上:項(xiàng)目和管理。maven給我們整個(gè)開發(fā)團(tuán)隊(duì)找出了一種能夠更加科學(xué)的去管理我們項(xiàng)目的思想。maven通過使用配置文件的方式使得項(xiàng)目在管理和交接的過程中成本變得非常低。maven提出了一種叫做maven倉庫的概念,使得我們可以將第三方和我們需要引用的項(xiàng)目都放置在maven倉庫當(dāng)中。如果其他人或項(xiàng)目組也需要使用,就可以直接通過maven進(jìn)行配置就行。這樣就可以將人員成本、溝通成本等等都進(jìn)行降低。

如果還不理解,我們舉個(gè)通俗例子:假如我們現(xiàn)在想做一道菜:廣西扣肉。如果我們想要做這道菜,那么我們首先要先去菜市場(chǎng)買豬肉、芋頭、醬料等、......,而且在做的時(shí)候還要注意使用豬肉的用量等等。此時(shí)如果有一個(gè)超市,該超市有賣豬肉、芋頭、醬料等食材,這是不是就能很大的節(jié)省我們做扣肉和買材料的時(shí)間開銷。其實(shí)maven就是這個(gè)賣食材的超市,當(dāng)然賣的不是各種食材,而是一系列的jar包。這樣我們?cè)趯懘a的時(shí)候就不需要去其他網(wǎng)站上下載一大堆的jar包。

(二)Maven下載地址

1、官網(wǎng)下載地址

https://maven.apache.org/download.cgi
2、清華大學(xué)鏡像源地址
https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3

(三)Maven安裝

我這里下載安裝3.9.5版本,通過wget命令下載到本地。

wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.9.5/binaries/apache-maven-3.9.5-bin.tar.gz --no-check-certificate

1、創(chuàng)建安裝目錄

mkdir -p /opt/maven

2、將maven壓縮包解壓

tar -zxvf apache-maven-3.9.5-bin.tar.gz

3、將解壓后的相關(guān)maven文件移動(dòng)到/opt/maven目錄下

mv apache-maven-3.9.5/* /opt/maven/

4、配置環(huán)境變量,編輯/etc/profile文件,添加如下配置;

export MAVEN_HOME=/opt/maven
export PATH=$PATH:$MAVEN_HOME/bin

5、使配置文件生效

source /etc/profile

6、驗(yàn)證maven是否安裝成功,看到如下信息說明安裝成功;

[root@node1 ~]# mvn -v
Apache Maven 3.9.5 (57804ffe001d7215b5e7bcb531cf83df38f93546)
Maven home: /opt/maven
Java version: 1.8.0_381, vendor: Oracle Corporation, runtime: /usr/local/jdk1.8.0_381/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-957.el7.x86_64", arch: "amd64", family: "unix"
[root@node1 ~]#

(四)Jenkins中配置關(guān)聯(lián)JDK和Maven

1、打開Manage Jenkins---Tools,找到JDK,新增JDK。根據(jù)自己JDK實(shí)際環(huán)境配置添加即可,如下圖所示:

3bd7f512-8745-11ee-939d-92fbcf53809c.png

2、打開Manage Jenkins---Tools,找到Maven,新增Maven。根據(jù)自己Maven實(shí)際環(huán)境配置添加即可,如下圖所示:

3bed336e-8745-11ee-939d-92fbcf53809c.png

3、按照上述配置,應(yīng)用保存即可。

(五)添加Jenkins全局變量

1、打開Manage Jenkins---System Configuration,找到System,找到全局屬性,勾選Environment variables,點(diǎn)擊新增,添加JAVA_HOME、MAVEN_HOME、PATH+EXTRA三個(gè)全局變量,填寫相關(guān)鍵值,我添加如下所示:

3bf7838c-8745-11ee-939d-92fbcf53809c.png

(六)修改Maven的配置文件settings.xml

1、修改本地下載倉庫為/root/maven_repo,配置如下所示:

/root/maven_repo

2、注釋默認(rèn)的鏡像地址,添加阿里云鏡像地址,配置如下所示:


     alimaven
     aliyun maven
     http://maven.aliyun.com/nexus/content/groups/public/
     central

3、驗(yàn)證maven配置是否成功。

我這里新建一個(gè)web項(xiàng)目進(jìn)行測(cè)試。

(1)項(xiàng)目配置如下:

3c0bf704-8745-11ee-939d-92fbcf53809c.png

3c1d373a-8745-11ee-939d-92fbcf53809c.png

(2)再次構(gòu)建時(shí),可以成功打包成war包,控制臺(tái)輸出如下:

3c2fcddc-8745-11ee-939d-92fbcf53809c.png

注意事項(xiàng)1:有的構(gòu)建時(shí)會(huì)出錯(cuò),那得看輸出日志信息進(jìn)行排查,一般是IDEA建立WEB項(xiàng)目時(shí),pom.xml語法有錯(cuò)誤,我這里修改該文件主要是用于編譯成war包,大概如下,可以參考29-49行。



    4.0.0


    com.example
    test
    1.0-SNAPSHOT
    test


    
        UTF-8
        1.8
        1.8
        5.8.1
    


    


        
            org.junit.jupiter
            junit-jupiter-api
            ${junit.version}
            test
        
    


    
        


            
                org.apache.maven.plugins
                maven-war-plugin
                3.3.2
                
                    web/WEB-INF/web.xml
                
                
                    
                        package
                        
                        war
                        
                    
                
            
        
    
注意事項(xiàng)2:maven運(yùn)行JDK與Jenkins運(yùn)行的JDK環(huán)境版本保持一致。

maven中settings.xml配置文件針對(duì)JDK版本指定

九、Tomcat安裝部署

以下操作在192.168.20.233服務(wù)器上完成。

(一)Tomcat安裝

tomcat運(yùn)行需要JDK環(huán)境支持,所以以下步驟基于已經(jīng)安裝好JDK基礎(chǔ)上進(jìn)行。服務(wù)器相關(guān)防火墻已經(jīng)關(guān)閉。

1、tomcat下載

可以直接通過tomcat官方網(wǎng)站下載對(duì)應(yīng)版本地址,官方地址如下:

https://archive.apache.org

2、我這里下載的版本是apache-tomcat-9.0.58.tar.gz,可以通過以下鏈接進(jìn)行下載。

wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.58/bin/apache-tomcat-9.0.58.tar.gz

3、創(chuàng)建tomcat安裝目錄

mkdir /opt/tomcat

4、解壓源碼

tar -xzvf apache-tomcat-9.0.58.tar.gz

5、移動(dòng)解壓后相關(guān)文件到安裝目錄下

mv /ruanjianfile/apache-tomcat-9.0.58/* /opt/tomcat/

6、啟動(dòng)tomcat

/opt/tomcat/bin/startup.sh

7、通過瀏覽器訪問如下地址,可以正常打開如下界面,說明tomcat安裝成功。

http://192.168.20.233:8080/

3d8589c4-8745-11ee-939d-92fbcf53809c.png

8、配置tomcat用戶角色權(quán)限

因?yàn)镴enkins部署項(xiàng)目到Tomcat服務(wù)器,需要用到Tomcat的用戶,所以修改tomcat以下配置,添加用戶及權(quán)限。 編輯/opt/tomcat/conf/tomcat-users.xml文件,添加如下內(nèi)容:


    
    
    
    
     
    
     
    

用戶和密碼都是:tomcat

9、修改配置文件,讓tomcat用戶可以登錄到tomcat服務(wù)器。

配置文件路徑如下:

/opt/tomcat/webapps/manager/META-INF/context.xml
注釋如下內(nèi)容即可。
 

10、重啟tomcat服務(wù)

/opt/tomcat/bin/shutdown.sh
/opt/tomcat/bin/startup.sh

11、訪問以下地址進(jìn)行測(cè)試,針對(duì)上述的配置是否已經(jīng)生效。

http://192.168.20.233:8080/manager/html

提示需要登錄用戶名及密碼,填寫tomcat,tomcat

3d8a90ea-8745-11ee-939d-92fbcf53809c.png

打開到如下界面說明配置成功。

3d9e59cc-8745-11ee-939d-92fbcf53809c.png

十、IDEA中創(chuàng)建WEB項(xiàng)目

好多朋友不是做開發(fā)的,對(duì)IDEA使用比較陌生,在此也給大家演示如何在IDEA下創(chuàng)建WEB項(xiàng)目進(jìn)行后面的實(shí)驗(yàn)。這里主要是模擬開發(fā)角色進(jìn)行往下的實(shí)驗(yàn)??梢允悄愕奈锢碇鳈C(jī)上操作。

(一)IDEA安裝

大家可以自己網(wǎng)上找相關(guān)的安裝包進(jìn)行安裝即可。我以下基于IntelliJ IDEA 2021.3.2 (Ultimate Edition)進(jìn)行操作。

(二)IDEA中創(chuàng)建WEB項(xiàng)目

1、新建項(xiàng)目

(1)新建一個(gè)項(xiàng)目,如下圖所示:

3dae087c-8745-11ee-939d-92fbcf53809c.png

(2)點(diǎn)擊Next,如下圖所示:

3dc2d158-8745-11ee-939d-92fbcf53809c.png

(3)點(diǎn)擊Finish完成項(xiàng)目建立,如下所示:

3dd9c412-8745-11ee-939d-92fbcf53809c.png

2、配置項(xiàng)目的tomcat環(huán)境

(1)選擇file—>>project structure

3ded8d26-8745-11ee-939d-92fbcf53809c.png

(2)選中project ,配置jdk和編譯輸入目錄,如下圖所示:

3df8cd58-8745-11ee-939d-92fbcf53809c.png

(3)選中l(wèi)ibraries,配置依賴jar包,如下圖所示:

3e0f42a4-8745-11ee-939d-92fbcf53809c.png

選擇自己環(huán)境的tomcat安裝包目錄,如下:

3e243d6c-8745-11ee-939d-92fbcf53809c.png

3e37fbe0-8745-11ee-939d-92fbcf53809c.png

3e4bbbbc-8745-11ee-939d-92fbcf53809c.png

3e56d628-8745-11ee-939d-92fbcf53809c.png

(4)選中modules,配置工程架構(gòu),點(diǎn)擊 + —Web

3e6affa4-8745-11ee-939d-92fbcf53809c.png

3e7a7b50-8745-11ee-939d-92fbcf53809c.png

選中WEB,位于下方的Deployment Descriptors中,點(diǎn)擊“+”,選擇web工程中的web.xml文件。

3e8dd678-8745-11ee-939d-92fbcf53809c.png

3ea288ca-8745-11ee-939d-92fbcf53809c.png

下方的Web Resource Directories中,是配置資源文件的所在目錄的,點(diǎn)擊“鉛筆”,選擇到Web目錄。配置完成后點(diǎn)擊Apply

3eb10c2e-8745-11ee-939d-92fbcf53809c.png

(5)選中artifacts配置 點(diǎn)擊 + — Web Application:Exploded — From Modules

3ebbef68-8745-11ee-939d-92fbcf53809c.png

3ed4eec8-8745-11ee-939d-92fbcf53809c.png

此時(shí)建立了工程的部署WAR包

3ee445f8-8745-11ee-939d-92fbcf53809c.png

3、將工程部署在web容器中

(1)點(diǎn)擊Run — Edit Configurations菜單進(jìn)入配置頁面

3efea15a-8745-11ee-939d-92fbcf53809c.png

(2)點(diǎn)擊 + — Tomcat Server --> Local,進(jìn)入Tomcat配置頁面

3f1e3d8a-8745-11ee-939d-92fbcf53809c.png

(3)選中Deployment配置 點(diǎn)擊 + — Artifact,選擇前面配置好的WAR包

3f298bea-8745-11ee-939d-92fbcf53809c.png

(4)選中server配置 可配置tomcat容器的名稱,啟動(dòng)后打開的瀏覽器,tomcat的端口,修改代碼后是否熱部署,以及配置虛擬機(jī)的啟動(dòng)參數(shù)等等。

3f3bab5e-8745-11ee-939d-92fbcf53809c.png

到此,一個(gè)Web工程創(chuàng)建及配置已完成,可啟動(dòng)tomcat,啟動(dòng)工程環(huán)境。

4、項(xiàng)目測(cè)試

(1)選擇項(xiàng)目中web,右鍵新建jsp。

3f4bab6c-8745-11ee-939d-92fbcf53809c.png

3f57a372-8745-11ee-939d-92fbcf53809c.png

填寫名字后按下回車鍵即可。

index.jsp創(chuàng)建如下代碼,用于測(cè)試頁面展示:

<%--
  Created by IntelliJ IDEA.
  User: huanghao
  Date: 2023/10/11
  Time: 19:08
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

    
        浩道jenkins主題
    
    
    浩道的項(xiàng)目部署成功了!??!
    
(2)右鍵,選擇Run index.jsp

3f6117cc-8745-11ee-939d-92fbcf53809c.png

出現(xiàn)如下界面說明項(xiàng)目跑成功。

3f74e50e-8745-11ee-939d-92fbcf53809c.png

如果跑不成功,說明URL配置不對(duì),可以返回點(diǎn)擊Run — Edit Configurations菜單進(jìn)入配置頁面重新配置,如下所示即可:

3f80222a-8745-11ee-939d-92fbcf53809c.png

十一、Jenkins項(xiàng)目構(gòu)建

Jenkins中自動(dòng)構(gòu)建項(xiàng)目的類型有很多,常用的有以下三種: 自由風(fēng)格軟件項(xiàng)目(FreeStyle Project) Maven項(xiàng)目(Maven Project) 流水線項(xiàng)目(Pipeline Project) 每種類型的構(gòu)建其實(shí)都可以完成一樣的構(gòu)建過程與結(jié)果,只是在操作方式、靈活度等方面有所區(qū)別,在實(shí)際開發(fā)中可以根據(jù)自己的需求和習(xí)慣來選擇。

(一)Jenkins下構(gòu)建自由風(fēng)格軟件項(xiàng)目

以下演示的Jenkins構(gòu)建自由風(fēng)格軟件項(xiàng)目,實(shí)現(xiàn)項(xiàng)目代碼拉取,項(xiàng)目代碼編譯,項(xiàng)目打包,項(xiàng)目部署的集成化過程。

1、創(chuàng)建自由風(fēng)格軟件項(xiàng)目

3f918344-8745-11ee-939d-92fbcf53809c.png

2、針對(duì)新建項(xiàng)目,配置源碼管理,用于從gitlab倉庫中拉取項(xiàng)目源碼,我這里配置如下:

3fa8ff88-8745-11ee-939d-92fbcf53809c.png

3、添加構(gòu)建步驟,用于編譯打包

echo "開始編譯和打包。。。"
mvn clean packageecho 
"編譯和打包結(jié)束?。?!"

3fb961ac-8745-11ee-939d-92fbcf53809c.png

4、項(xiàng)目部署

這里主要是將編譯打包好的war包部署到遠(yuǎn)程服務(wù)器上的tomcat中,讓項(xiàng)目服務(wù)跑起來。

(1)安裝 Deploy to container插件 Jenkins提供Deploy to container插件,用于實(shí)現(xiàn)遠(yuǎn)程部署到Tomcat的功能。

(2)添加tomcat用戶憑證,用戶名及密碼都是tomcat

3fcf670e-8745-11ee-939d-92fbcf53809c.png

(3)添加項(xiàng)目構(gòu)建后操作內(nèi)容

3fdabb5e-8745-11ee-939d-92fbcf53809c.png

3fe5d0f2-8745-11ee-939d-92fbcf53809c.png

3ff3e304-8745-11ee-939d-92fbcf53809c.png

(4)開始構(gòu)建,通過控制臺(tái)輸出日志,已經(jīng)構(gòu)建,編譯打包,部署成功。

40007998-8745-11ee-939d-92fbcf53809c.png

打開部署后的tomcat,可以看到如下頁面,說明成功了!

4016bdb6-8745-11ee-939d-92fbcf53809c.png

(5)修改index.jsp代碼后,提交gitlab倉庫,再次構(gòu)建,打開tomcat,如下所示:

4027e668-8745-11ee-939d-92fbcf53809c.png

注意,項(xiàng)目中的pom.xml文件,我這里大概內(nèi)容如下:



    4.0.0


    com.example
    WebJenkinsDemo01
    1.0-SNAPSHOT
    WebJenkinsDemo01
    war


    
        UTF-8
        1.8
        1.8
        5.8.1
    


    


        
            org.junit.jupiter
            junit-jupiter-api
            ${junit.version}
            test
        
        
            org.junit.jupiter
            junit-jupiter-engine
            ${junit.version}
            test
        
    


    
        
            
                org.apache.maven.plugins
                maven-war-plugin
                3.3.2


                
                    webWEB-INFweb.xml
                    web
                


 
                            
                        
                    
                

(二)Jenkins構(gòu)建maven項(xiàng)目

構(gòu)建maven項(xiàng)目需要相關(guān)安裝插件。

1、安裝Maven Integration插件

2、創(chuàng)建Maven項(xiàng)目

4033087c-8745-11ee-939d-92fbcf53809c.png

3、配置項(xiàng)目

(1)配置拉取代碼

404a79e4-8745-11ee-939d-92fbcf53809c.png

(2)配置遠(yuǎn)程部署

40683506-8745-11ee-939d-92fbcf53809c.png

(3)配置構(gòu)建

40789176-8745-11ee-939d-92fbcf53809c.png

4、測(cè)試構(gòu)建項(xiàng)目

(1)可以看到控制臺(tái)日志輸出顯示成功。

408baca2-8745-11ee-939d-92fbcf53809c.png

(2)打開tomcat,可以看到是我自己部署的項(xiàng)目頁面;

40968f6e-8745-11ee-939d-92fbcf53809c.png

注意:這里可能會(huì)有不同版本jenkins,Maven等差異,需要的JDK環(huán)境不一樣導(dǎo)致構(gòu)建失敗,可以通過日志看出,一開始我用JDK8構(gòu)建失敗,改成JDK11后構(gòu)建成功?。?!

(三)Jenkins構(gòu)建Pipeline流水線項(xiàng)目

1、Pipeline介紹

Pipeline,簡單來說,就是一套運(yùn)行在 Jenkins 上的工作流框架,將原來獨(dú)立運(yùn)行于單個(gè)或者多個(gè)節(jié)點(diǎn)的任務(wù)連接起來,實(shí)現(xiàn)單個(gè)任務(wù)難以完成的復(fù)雜流程編排和可視化的工作。

2、Pipeline構(gòu)建項(xiàng)目好處

官方文檔是這樣列舉的: 代碼:Pipeline以代碼的形式實(shí)現(xiàn),通常被檢入源代碼控制,使團(tuán)隊(duì)能夠編輯,審查和迭代其傳送流程。 持久:無論是計(jì)劃內(nèi)的還是計(jì)劃外的服務(wù)器重啟,Pipeline都是可恢復(fù)的。 可停止:Pipeline可接收交互式輸入,以確定是否繼續(xù)執(zhí)行Pipeline。 多功能:Pipeline支持現(xiàn)實(shí)世界中復(fù)雜的持續(xù)交付要求。它支持fork/join、循環(huán)執(zhí)行,并行執(zhí)行任務(wù)的功能。 可擴(kuò)展:Pipeline插件支持其DSL的自定義擴(kuò)展 ,以及與其他插件集成的多個(gè)選項(xiàng)。

3、怎樣創(chuàng)建Pipeline項(xiàng)目

Pipeline 腳本是由 Groovy 語言實(shí)現(xiàn)的,但是我們沒必要單獨(dú)去學(xué)習(xí) Groovy; Pipeline 支持兩種語法:Declarative(聲明式)和 Scripted Pipeline(腳本式)語法; Pipeline 也有兩種創(chuàng)建方法:可以直接在 Jenkins 的 Web UI 界面中輸入腳本;也可以通過創(chuàng)建一個(gè) Jenkins?le 腳本文件放入項(xiàng)目源碼庫中(一般我們都推薦在 Jenkins 中直接從源代碼控制(SCM)中直接載入 Jenkins?le Pipeline 這種方法)。 需要安裝Pipeline插件;

4、Pipeline語法入門(聲明式)

(1)安裝pipeline插件

(2)創(chuàng)建Pipeline流水線項(xiàng)目

40a06a3e-8745-11ee-939d-92fbcf53809c.png

(3)找到---流水線---選擇Hello World模板

40b4883e-8745-11ee-939d-92fbcf53809c.png

選擇Hello World模板后,生成腳本內(nèi)容如下:

40c8e086-8745-11ee-939d-92fbcf53809c.png

stages:代表整個(gè)流水線的所有執(zhí)行階段。通常stages只有1個(gè),里面包含多個(gè)stage

stage:代表流水線中的某個(gè)階段,可能出現(xiàn)n個(gè)。一般分為拉取代碼,編譯構(gòu)建,部署等階段。

steps:代表一個(gè)階段內(nèi)需要執(zhí)行的邏輯。steps里面是shell腳本,git拉取代碼,ssh遠(yuǎn)程發(fā)布等任意內(nèi)容。

(4)如下我編寫一個(gè)簡單聲明式Pipeline:

pipeline {
    agent any


    stages {
        stage('項(xiàng)目代碼拉取') {
            steps {
                echo '項(xiàng)目代碼拉取中。。。'
            }
        }
        
        stage('項(xiàng)目代碼編譯構(gòu)建') {
            steps {
                echo '項(xiàng)目代碼編譯構(gòu)建中。。。'
            }
        }
        
        stage('項(xiàng)目代碼部署') {
            steps {
                echo '項(xiàng)目代碼部署中。。。'
            }
        }
    }
}

40db7502-8745-11ee-939d-92fbcf53809c.png

(5)應(yīng)用保存,點(diǎn)擊構(gòu)建項(xiàng)目,控制臺(tái)日志輸出可以看到構(gòu)建成功。

40eda6e6-8745-11ee-939d-92fbcf53809c.png

40f910d0-8745-11ee-939d-92fbcf53809c.png

5、Pipeline語法入門(腳本式)

(1)創(chuàng)建Pipeline流水式項(xiàng)目

4110c568-8745-11ee-939d-92fbcf53809c.png

(2)找到---流水線---選擇Scripted Pipeline模板

412a2936-8745-11ee-939d-92fbcf53809c.png

生成如下腳本信息

4144c5c0-8745-11ee-939d-92fbcf53809c.png

Node:節(jié)點(diǎn),一個(gè) Node 就是一個(gè) Jenkins 節(jié)點(diǎn),Master 或者 Agent,是執(zhí)行 Step 的具體運(yùn)行 環(huán)境,后續(xù)講到Jenkins的Master-Slave架構(gòu)的時(shí)候用到。

Stage:階段,一個(gè) Pipeline 可以劃分為若干個(gè) Stage,每個(gè) Stage 代表一組操作,比如:Build、Test、Deploy,Stage 是一個(gè)邏輯分組的概念。

Step:步驟,Step 是最基本的操作單元,可以是打印一句話,也可以是構(gòu)建一個(gè) Docker 鏡像, 由各類 Jenkins 插件提供,比如命令:sh ‘make’,就相當(dāng)于我們平時(shí) shell 終端中執(zhí)行 make 命令一樣。 如下編寫一個(gè)簡單的腳本式Pipeline:

node {
    def mvnHome
    stage('項(xiàng)目代碼拉取') {
        echo '項(xiàng)目代碼拉取中。。。'
    }
    stage('項(xiàng)目代碼編譯構(gòu)建') {
       
        echo '項(xiàng)目代碼編譯構(gòu)建中。。。'
    }
    stage('項(xiàng)目代碼部署') {
        echo '項(xiàng)目代碼部署中。。。'
    }
}

41587976-8745-11ee-939d-92fbcf53809c.png

(3)點(diǎn)擊應(yīng)用保存,構(gòu)建項(xiàng)目,可以看到構(gòu)建成功。

4165c220-8745-11ee-939d-92fbcf53809c.png

4177b49e-8745-11ee-939d-92fbcf53809c.png

6、Pipeline語法拉取代碼(聲明式)--腳本在UI中編輯

(1)構(gòu)建Pipeline流水線項(xiàng)目linux-web-pipeline03

41874116-8745-11ee-939d-92fbcf53809c.png

(2)找到---流水線---選擇Hello World模板,編輯腳本,這里主要編輯項(xiàng)目代碼拉取、編譯、構(gòu)建這三個(gè)步驟對(duì)應(yīng)操作代碼。通過下方的流水線語法自動(dòng)完成代碼構(gòu)建。

419ed1b4-8745-11ee-939d-92fbcf53809c.png

(3)生成代碼拉取腳本,找到代碼片段生成器,示例步驟中選擇checkout相關(guān)插件,填寫需要拉取的代碼Git倉庫地址,認(rèn)證信息,下方點(diǎn)擊生成流水線腳本即可生成相關(guān)代碼,復(fù)制到上述腳本中對(duì)應(yīng)拉取代碼步驟即可,如下圖所示:

41b007ea-8745-11ee-939d-92fbcf53809c.png

41ca869c-8745-11ee-939d-92fbcf53809c.png

(4)生成項(xiàng)目代碼編譯構(gòu)建腳本,找到代碼片段生成器,示例步驟中選擇sh:Shell Script相關(guān)插件,填寫需要執(zhí)行的shell命令腳本,下方點(diǎn)擊生成流水線腳本即可生成相關(guān)代碼,復(fù)制到上述腳本中對(duì)應(yīng)項(xiàng)目代碼編譯構(gòu)建步驟即可,如下圖所示:

41d54f28-8745-11ee-939d-92fbcf53809c.png

(5)生成項(xiàng)目代碼部署腳本,找到代碼片段生成器,示例步驟中選擇deployt相關(guān)插件,填寫tomcat容器相關(guān)信息,下方點(diǎn)擊生成流水線腳本即可生成相關(guān)代碼,復(fù)制到上述腳本中對(duì)應(yīng)項(xiàng)目代碼部署步驟即可,如下圖所示:

41f16794-8745-11ee-939d-92fbcf53809c.png

420980d6-8745-11ee-939d-92fbcf53809c.png

(6)生成對(duì)應(yīng)步驟腳本后,完整腳本如下:

pipeline {
    agent any


    stages {
        stage('項(xiàng)目代碼拉取') {
            steps {
                checkout scmGit(branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: 'b3751cd7-e1eb-46c1-8939-dffda217db4d', url: 'git@192.168.20.231:haodaolinux_group/haodao_web.git']])
            }
        }
        stage('項(xiàng)目代碼編譯構(gòu)建') {
            steps {
                sh 'mvn clean package'
            }
        }
        stage('項(xiàng)目代碼部署') {
            steps {
                deploy adapters: [tomcat9(credentialsId: '3b209a0d-bf85-4d53-8096-a5c926b09377', path: '', url: 'http://192.168.20.233:8080/')], contextPath: null, war: 'target/*.war'
            }
        }
    }
}

(7)點(diǎn)擊應(yīng)用保存配置,構(gòu)建,可以看到成功了

4232f16e-8745-11ee-939d-92fbcf53809c.png

424daf86-8745-11ee-939d-92fbcf53809c.png

7、Pipeline語法拉取代碼(聲明式)--腳本在java項(xiàng)目中

(1)IDEA中對(duì)應(yīng)項(xiàng)目根目錄創(chuàng)建HaodaoWebJenkinsFile文件,將UI中對(duì)應(yīng)聲明式腳本復(fù)制粘貼過來

pipeline {
    agent any


    stages {
        stage('項(xiàng)目代碼拉取') {
            steps {
                checkout scmGit(branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: 'b3751cd7-e1eb-46c1-8939-dffda217db4d', url: 'git@192.168.20.231:haodaolinux_group/haodao_web.git']])
            }
        }
        stage('項(xiàng)目代碼編譯構(gòu)建') {
            steps {
                sh 'mvn clean package'
            }
        }
        stage('項(xiàng)目代碼部署') {
            steps {
                deploy adapters: [tomcat9(credentialsId: '3b209a0d-bf85-4d53-8096-a5c926b09377', path: '', url: 'http://192.168.20.233:8080/')], contextPath: null, war: 'target/*.war'
            }
        }
    }
}

(2)創(chuàng)建Pipeline流水式項(xiàng)目,命名linux-web-pipeline04

(3)找到---流水線---選擇Pipeline script from SCM,編輯代碼遠(yuǎn)程倉庫URL,選擇腳本路徑,如下圖所示:

426ea146-8745-11ee-939d-92fbcf53809c.png

4286730c-8745-11ee-939d-92fbcf53809c.png

(4)點(diǎn)擊應(yīng)用保存配置,構(gòu)建,可以看到成功了。

十二、Jenkins構(gòu)建項(xiàng)目技巧

通過以上步驟,我們已經(jīng)可以針對(duì)Jenkins項(xiàng)目進(jìn)行整個(gè)構(gòu)建流程的跑通。但是我們可以繼續(xù)利用構(gòu)建項(xiàng)目的一些技巧,讓Jenkins構(gòu)建項(xiàng)目變得更加高效,如通過觸發(fā)器構(gòu)建項(xiàng)目。以下就針對(duì)這些構(gòu)建技巧一一展開。

(一)Jenkins常見觸發(fā)器

Jenkins內(nèi)置了4種構(gòu)建觸發(fā)器:

觸發(fā)遠(yuǎn)程構(gòu)建 其他工程構(gòu)建后觸發(fā)(Build after other projects are build) 定時(shí)構(gòu)建(Build periodically) 輪詢SCM(Poll SCM) 以下針對(duì)這4鐘構(gòu)建觸發(fā)器分別舉例實(shí)踐說明。

1、觸發(fā)遠(yuǎn)程構(gòu)建

(1)以下僅僅驗(yàn)證觸發(fā)器功能,可以在原有已經(jīng)創(chuàng)建項(xiàng)目的基礎(chǔ)是修改配置進(jìn)行測(cè)試;

(2)對(duì)項(xiàng)目進(jìn)行配置,找到“構(gòu)建觸發(fā)器”,選擇“觸發(fā)遠(yuǎn)程構(gòu)建”,添加“身份驗(yàn)證令牌”,描述下方有對(duì)應(yīng)的觸發(fā)器鏈接,用瀏覽器打開對(duì)應(yīng)格式的鏈接即可觸發(fā)遠(yuǎn)程構(gòu)建動(dòng)作,如下圖所示:

429d2624-8745-11ee-939d-92fbcf53809c.jpg

(3)應(yīng)用保存配置,現(xiàn)在該項(xiàng)目已經(jīng)有了一次構(gòu)建記錄,此時(shí)用瀏覽器打開如下鏈接,觸發(fā)遠(yuǎn)程構(gòu)建,看看會(huì)不會(huì)觸發(fā)項(xiàng)目進(jìn)行第二次構(gòu)建。

42a7f194-8745-11ee-939d-92fbcf53809c.png

 192.168.20.232:8080/job/linux-web-pipeline04/build?token=haodaolinux
(4)當(dāng)瀏覽器打開上述鏈接后,項(xiàng)目已經(jīng)觸發(fā)第二次構(gòu)建,即觸發(fā)遠(yuǎn)程構(gòu)建成功。

42baf6a4-8745-11ee-939d-92fbcf53809c.png

42c57912-8745-11ee-939d-92fbcf53809c.png

2、其它工程構(gòu)建后觸發(fā)

其它工程構(gòu)建后觸發(fā),就說明涉及到另外一個(gè)工程,這里創(chuàng)建一個(gè)用于觸發(fā)的工程,名稱為linux-web-job

(1)創(chuàng)建一個(gè)名稱為linux-web-job的自由風(fēng)格項(xiàng)目,對(duì)該項(xiàng)目進(jìn)行簡單配置即可,如執(zhí)行shell腳本操作,如下所示:

42d6648e-8745-11ee-939d-92fbcf53809c.png

(3)對(duì)需要觸發(fā)構(gòu)建的工程進(jìn)行配置,這里主要是配置構(gòu)建觸發(fā)器,找到“Build after other projects are built”,選擇對(duì)應(yīng)的觸發(fā)工程linux-web-job,如下圖所示:

42f30ba2-8745-11ee-939d-92fbcf53809c.png

(4)對(duì)linux-web-job工程進(jìn)行構(gòu)建,另外配置好的觸發(fā)工程也會(huì)進(jìn)行構(gòu)建成功,如下所示:

430f1fea-8745-11ee-939d-92fbcf53809c.png

4322691a-8745-11ee-939d-92fbcf53809c.png

3、定時(shí)構(gòu)建觸發(fā)

定時(shí)構(gòu)建,見名知意,就是通過設(shè)定觸發(fā)時(shí)間,讓工程自動(dòng)構(gòu)建,這里的定時(shí)機(jī)制跟Linux系統(tǒng)下的定時(shí)任務(wù)語法差不多。通過5個(gè)*空格開,從左往右表示分,時(shí),日,月,周,5個(gè)時(shí)間段。(1)以下通過實(shí)例簡單講解這些時(shí)間段表示方法。

1)每10分鐘構(gòu)建一次:H代表形參 H/10 * * * * ,這樣09:00,09:10,09:20,...,按10分鐘間隔有規(guī)律的構(gòu)建;

2)每2個(gè)小時(shí)構(gòu)建一次: H H/2 * * *

3)每天的9點(diǎn),11點(diǎn),20點(diǎn),一天構(gòu)建3次,(多個(gè)時(shí)間點(diǎn)中間用逗號(hào)隔開):0 9,11,20 * * *

4)每天中午12點(diǎn)定時(shí)構(gòu)建一次: H 12 * * *

5)每天下午20點(diǎn)定時(shí)構(gòu)建一次: H 20 * * *

6)在每個(gè)小時(shí)的前半個(gè)小時(shí)內(nèi)的每10分鐘構(gòu)建一次: H(0-29)/10 * * * *

7)每兩小時(shí)一次,每個(gè)工作日上午9點(diǎn)到下午5點(diǎn)(也許是上午10:36,下午12:36,下午2:36,下午4:36)構(gòu)建一次: H H(9-16)/2 * * 1-5

(2)以下對(duì)原來項(xiàng)目修改配置,讓項(xiàng)目每隔2分鐘構(gòu)建一次,如下圖所示:

43298ef2-8745-11ee-939d-92fbcf53809c.png

(3)查看執(zhí)行效果

433c5a50-8745-11ee-939d-92fbcf53809c.png

4、輪詢SCM觸發(fā)

輪詢SCM,是指Jenkins定時(shí)掃描本地代碼倉庫的代碼是否有變更,如果代碼有變更就觸發(fā)項(xiàng)目構(gòu)建。

但是這種方式有個(gè)弊端,那就是這個(gè)構(gòu)建觸發(fā)器,Jenkins會(huì)定時(shí)掃描本地整個(gè)項(xiàng)目的代碼,增大了系統(tǒng)的開銷,實(shí)際項(xiàng)目中是不建議使用的。 以下也針對(duì)這種觸發(fā)方式做一個(gè)配置實(shí)驗(yàn)。 輪詢SCM觸發(fā)原理示意圖如下:

435177e6-8745-11ee-939d-92fbcf53809c.png

(1)針對(duì)已有項(xiàng)目做輪詢SCM觸發(fā)配置。如下所示:

43606ca6-8745-11ee-939d-92fbcf53809c.png

以上配置表示每分鐘去輪詢代碼是否有變更。

(2)修改代碼,提交遠(yuǎn)程倉庫;

(3)待代碼提交倉庫后一會(huì),項(xiàng)目會(huì)觸發(fā)構(gòu)建,并且成功。

43799b7c-8745-11ee-939d-92fbcf53809c.png

438ec2d6-8745-11ee-939d-92fbcf53809c.png

5、Webhook自動(dòng)觸發(fā)

Webhook自動(dòng)觸發(fā)構(gòu)建就是針對(duì)輪詢SCM觸發(fā)中存在性能不佳而改進(jìn)的一種優(yōu)化方案。該方案就是利用Gitlab的webhook實(shí)現(xiàn)代碼push到倉庫,立即觸發(fā)項(xiàng)目自動(dòng)構(gòu)建。

Webhook自動(dòng)觸發(fā)原理示意圖如下:

439a2dba-8745-11ee-939d-92fbcf53809c.png

(1)Jenkins中安裝Generic Webhook Trigger和GitLab兩個(gè)插件。

(2)Jenkins中針對(duì)已有項(xiàng)目做Webhook觸發(fā)配置。如下所示:

43a97a72-8745-11ee-939d-92fbcf53809c.png

等會(huì)需要把生成的webhook URL:http://192.168.20.232:8080/project/linux-web-pipeline04配置到Gitlab中。

(3)Gitlab配置webhook相關(guān)參數(shù)

1)啟用webhook功能 root賬戶登錄到Gitlab后臺(tái),點(diǎn)擊Admin Area -> Settings -> Network

43c12866-8745-11ee-939d-92fbcf53809c.png

43e0f84e-8745-11ee-939d-92fbcf53809c.png

43fea66e-8745-11ee-939d-92fbcf53809c.png

2)在對(duì)應(yīng)項(xiàng)目添加webhook 點(diǎn)擊對(duì)應(yīng)項(xiàng)目->Settings->Webhooks

44030f10-8745-11ee-939d-92fbcf53809c.png

441b703c-8745-11ee-939d-92fbcf53809c.png

(4)Jenkins中配置相關(guān)系統(tǒng)參數(shù),Manage Jenkins->Con?gure System->System,修改配置如下:

4439562e-8745-11ee-939d-92fbcf53809c.png

(5)修改代碼,提交遠(yuǎn)程倉庫;

(6)待代碼提交倉庫后一會(huì),項(xiàng)目會(huì)觸發(fā)構(gòu)建,并且成功。

444e8940-8745-11ee-939d-92fbcf53809c.png

十三、總結(jié)

到此,實(shí)驗(yàn)已經(jīng)結(jié)合環(huán)境跑通整個(gè)自動(dòng)化持續(xù)集成流程了。但是Jenkins本身功能眾多,就不一一舉例演示給大家了,諸如后續(xù)的一些功能,如配置郵箱服務(wù)器發(fā)送構(gòu)建結(jié)果、結(jié)合SonarQube進(jìn)行代碼審查,以及基于Docker、K8S環(huán)境跑Jenkins持續(xù)集成,大家可以自行去研究,大體配置流程都差不多。








審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2971

    瀏覽量

    104846
  • jenkins
    +關(guān)注

    關(guān)注

    0

    文章

    31

    瀏覽量

    5156

原文標(biāo)題:Centos7下搭建Jenkins+GitLab+Maven 實(shí)現(xiàn)代碼自動(dòng)打包編譯發(fā)布

文章出處:【微信號(hào):浩道linux,微信公眾號(hào):浩道linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Maven 配置指南

    ) !important]復(fù)制代碼注意:這里必須的絕對(duì)地址。配置代理代理配置可以指定在settings文件配置并行工件解析默認(rèn),Maven 2.1.0+將下載5個(gè)工件(從不同的組)馬上。為了改變線程池,啟動(dòng)Maven
    發(fā)表于 08-28 15:08

    基于服務(wù)器安裝node環(huán)境的步驟

    jenkins+gitlab+vue進(jìn)行自動(dòng)化構(gòu)建部署項(xiàng)目打包
    發(fā)表于 05-22 11:06

    基于Linux的Maven自動(dòng)打包發(fā)布項(xiàng)目

    參數(shù)分別為: svn的路徑,打包的名稱,打包的方式j(luò)ar或者war,服務(wù)器地址,服務(wù)器的路徑,以空格分隔。
    發(fā)表于 07-08 06:38

    ansible playbook+jenkins如何實(shí)現(xiàn)自動(dòng)新增域名

    ansible-playbook+jenkins實(shí)現(xiàn)自動(dòng)新增域名
    發(fā)表于 06-03 11:58

    實(shí)現(xiàn)代碼自動(dòng)生成的步驟

    重復(fù)性的勞動(dòng),為什么不交給工具來做呢,這就產(chǎn)生了使用代碼生成代碼的想法。本文提到的實(shí)現(xiàn)文本內(nèi)容批量替換是實(shí)現(xiàn)代碼自動(dòng)生成的一個(gè)步驟,
    發(fā)表于 08-17 09:14

    Jenkins遠(yuǎn)程部署Linux服務(wù)器的過程

    Jenkins的遠(yuǎn)程部署Linux服務(wù)器以及應(yīng)用?! ?zhí)行過程如下:  Jenkins拉取代碼  本地構(gòu)建打包  連接遠(yuǎn)程服務(wù)器  上傳打包
    發(fā)表于 11-18 18:12

    jenkins自動(dòng)化部署

    本文詳細(xì)介紹Jenkins的簡單使用—jenkins自動(dòng)化部署。
    的頭像 發(fā)表于 02-06 11:27 ?4700次閱讀
    <b class='flag-5'>jenkins</b><b class='flag-5'>自動(dòng)</b>化部署

    jenkins持續(xù)集成原理

    本文詳細(xì)介紹了jenkins持續(xù)集成原理。持續(xù)集成就是為解決程序代碼提交質(zhì)量低,提交內(nèi)容導(dǎo)致原有系統(tǒng)的bug,按時(shí)或按需自動(dòng)編譯版本,自動(dòng)進(jìn)
    的頭像 發(fā)表于 02-06 11:43 ?4102次閱讀

    ?詳解gitlab+jenkins如何打造ceph的rpm自動(dòng)編譯

    持續(xù)集成就像是"套馬“,玩不好可是要栽跟頭的,老司機(jī)手把手教你gitlab+jenkins打造ceph的rpm包自動(dòng)編譯環(huán)境。
    的頭像 發(fā)表于 04-24 11:06 ?3995次閱讀
    ?詳解<b class='flag-5'>gitlab+jenkins</b>如何打造ceph的rpm<b class='flag-5'>自動(dòng)</b><b class='flag-5'>編譯</b>

    Jenkins+Docker一鍵自動(dòng)化部署SpringBoot最簡流程

    簡述實(shí)現(xiàn)步驟:在docker安裝jenkins,配置jenkins基本信息,利用Dockerfile和shell腳本實(shí)現(xiàn)項(xiàng)目自動(dòng)拉取
    的頭像 發(fā)表于 11-23 10:16 ?1394次閱讀

    Jenkins+Docker一鍵自動(dòng)化部署SpringBoot應(yīng)用最精簡流程

    簡述實(shí)現(xiàn)步驟:在docker安裝jenkins,配置jenkins基本信息,利用Dockerfile和shell腳本實(shí)現(xiàn)項(xiàng)目自動(dòng)拉取
    的頭像 發(fā)表于 11-06 16:27 ?2340次閱讀
    <b class='flag-5'>Jenkins</b>+Docker一鍵<b class='flag-5'>自動(dòng)</b>化部署SpringBoot應(yīng)用最精簡流程

    idea中maven無法解析插件是怎么回事

    起著非常重要的作用。插件是一組功能強(qiáng)大的代碼庫,用于執(zhí)行特定的構(gòu)建任務(wù)。Maven插件提供了許多可以用于編譯、打包、測(cè)試、部署等各種任務(wù)的目標(biāo)。這樣,開發(fā)人員就不需要手動(dòng)處理這些任務(wù),
    的頭像 發(fā)表于 12-06 14:18 ?6132次閱讀

    使用Nexus在本地搭建npm、yum和maven私有倉庫

    使用Nexus在本地搭建npm、yum和maven私有倉庫 為保證在無互聯(lián)網(wǎng)的情況下,可正常搭建、構(gòu)建項(xiàng)目,并自動(dòng)化部署項(xiàng)目,本系統(tǒng)采用Nexus+Jenkins+Maven+Gitlab開源組件
    的頭像 發(fā)表于 08-21 14:46 ?345次閱讀
    使用Nexus在本地搭建npm、yum和<b class='flag-5'>maven</b>私有倉庫

    Jenkins 與 SonarQube 集成部署,自動(dòng)代碼質(zhì)量監(jiān)控

    前言 強(qiáng)化代碼質(zhì)量,加速軟件交付!Jenkins 攜手 SonarQube,與華為云 Flexus X 云服務(wù)器強(qiáng)強(qiáng)聯(lián)合,打造自動(dòng)代碼質(zhì)量監(jiān)控新生態(tài)。Flexus X 以其靈活的算力
    的頭像 發(fā)表于 01-07 17:24 ?90次閱讀
    <b class='flag-5'>Jenkins</b> 與 SonarQube 集成部署,<b class='flag-5'>自動(dòng)</b>化<b class='flag-5'>代碼</b>質(zhì)量監(jiān)控

    基于 Docker 與 Jenkins 實(shí)現(xiàn)自動(dòng)化部署

    前言 重塑自動(dòng)化部署新高度,Docker 攜手 Jenkins,在華為云 Flexus X 云服務(wù)器的加持下,引領(lǐng)持續(xù)集成與部署的新紀(jì)元。Flexus X 以其卓越的性能、靈活的資源配置和高效的成本
    的頭像 發(fā)表于 01-07 17:25 ?90次閱讀
    基于 Docker 與 <b class='flag-5'>Jenkins</b> <b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>自動(dòng)</b>化部署