搭建Gitlab+Maven+Jenkins持续集成环境

本文详细介绍如何在CentOS 7.5环境下,通过Jenkins、GitLab和Maven搭建自动化CI/CD流水线,包括各组件的安装配置过程,以及如何实现从代码提交到应用部署的自动化流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境:

Jenkins服务器:192.168.6.148                        需要安装git,maven,jdk,nginx,需要tomcat容器运行jenkins,

Gitlab服务器:192.168.6.149                           搭建gitlab环境

Tomcat服务器:192.168.6.150                         安装tomcat跑java程序

服务器版本: centos7.5                                    Git版本: 2.12.0

Maven版本:  3.5.4                                           JDK版本: 1.8.0_181

Tomcat版本:  8.5.33                                        Jenkins版本: 2.121.1

 

安装Gitlab服务器

此处可查看另一片gitlab安装方法文章:https://mp.youkuaiyun.com/postedit/82776803

 

Git源码安装

下载源码包 可选择指定版本

地址:https://www.kernel.org/pub/software/scm/git/

 

安装依赖包

[root@localhost ~]# yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker openssh-clients

 

解压tar包并进入

[root@localhost ~]# tar -xf git-2.12.0.tar.gz
[root@localhost ~]# cd git-2.12.0/

 

编译安装

[root@localhost git-2.12.0]# ./configure --prefix=/usr/local/git
[root@localhost git-2.12.0]# make
[root@localhost git-2.12.0]# make install

 

配置环境变量在末行添加

[root@localhost ~]# vim  /etc/profile
export PATH=/usr/local/git/bin:$PATH

 

刷新环境变量

[root@localhost ~]# source /etc/profile

 

查看git路径

[root@localhost ~]# which git
/usr/local/git/bin/git

 

 

Maven源码安装

下载源码包 可选择指定版本

地址:https://mirrors.cnnic.cn/apache/maven/

 

解压tar包并指定解压到/usr/local/目录下

[root@localhost ~]# tar -xf apache-maven-3.5.4-bin.tar.gz -C /usr/local/

 

配置环境变量在末行添加

[root@localhost ~]# vim  /etc/profile
export MVN_HOME=/usr/local/apache-maven-3.5.4/
export MVN=$MVN_HOME/bin
export PATH=$MVN:$PATH

 

刷新环境变量

[root@localhost ~]# source /etc/profile

 

查看Maven版本

[root@localhost ~]# mvn -v
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T02:33:14+08:00)
Maven home: /usr/local/apache-maven-3.5.4
Java version: 1.8.0_181, vendor: Oracle Corporation, runtime: /usr/local/jdk1.8.0_181/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-862.el7.x86_64", arch: "amd64", family: "unix")

 

查看MVN_HOME位置

[root@localhost ~]# echo $MVN_HOME
/usr/local/apache-maven-3.5.4/

 

查看mvn路径

[root@localhost ~]# which mvn
/usr/local/apache-maven-3.5.4/bin/mvn

 

 

JDK源码安装

下载源码包

地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

 

解压tar包并指定解压到/usr/local/目录下

[root@localhost ~]# tar -xf jdk-8u181-linux-x64.tar.gz -C /usr/local/

 

配置环境变量在末行添加

[root@localhost ~]# vim  /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_181
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin

 

刷新环境变量

[root@localhost ~]# source /etc/profile

 

查看java版本

[root@localhost ~]# java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

 

查看JAVA—_HOME位置

[root@localhost ~]# echo $JAVA_HOME

/usr/local/jdk1.8.0_181

 

查看java位置

[root@localhost ~]# which java
/usr/local/jdk1.8.0_181/bin/java

 

 

Tomcat源码安装

下载源码包 可选择指定版本

地址:https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/

 

解压tar包并指定解压到/usr/local/目录下

[root@localhost ~]# tar -xf apache-tomcat-8.5.33.tar.gz -C /usr/local/

 

进入tomcat容器目录

[root@localhost ~]# cd  /usr/local/apache-tomcat-8.5.33/webapps/



[root@localhost webapps]# ls

docs  examples  host-manager  manager  ROOT

 

删除默认程序

[root@localhost webapps]# rm -rf  *

 

 

下载jenkins war包  可选择指定版本

地址:http://ftp.yz.yamagata-u.ac.jp/pub/misc/jenkins/war-stable/

 

下载jenkins 指定版本war包到tomcat工作目录

[root@localhost webapps]# wget  http://ftp.yz.yamagata-u.ac.jp/pub/misc/jenkins/war-stable/2.121.1/jenkins.war

 

启动tomcat服务

[root@localhost ~]# /usr/local/apache-tomcat-8.5.33/bin/startup.sh
Using CATALINA_BASE:   /usr/local/apache-tomcat-8.5.33
Using CATALINA_HOME:   /usr/local/apache-tomcat-8.5.33
Using CATALINA_TMPDIR: /usr/local/apache-tomcat-8.5.33/temp
Using JRE_HOME:        /usr/local/jdk1.8.0_181
Using CLASSPATH:       /usr/local/apache-tomcat-8.5.33/bin/bootstrap.jar:/usr/local/apache-tomcat-8.5.33/bin/tomcat-juli.jar
Tomcat started.

 

查看tomcat默认端口8005,8009,8080有没有开启

[root@localhost ~]# netstat -tupln |grep java
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      29250/java         
tcp6       0      0 :::8009                 :::*                    LISTEN      29250/java         
tcp6       0      0 :::8080                 :::*                    LISTEN      29250/java

 

端口正常,证明服务启动正常,接下来可在浏览器访问本机ip:8080/jenkins地址

http://localhost:8080/jenkins

 

 

查看密码并将指定文件内的密码填入

[root@localhost ~]# cat /root/.jenkins/secrets/initialAdminPassword

376e69f0005b46aea5cd8fa9f456e3f3

 

接下来咱们选择安装推荐的插件,也可以选择指定插件进行安装

 

接下来只需等待安装完成

等待安装完成进行账号相关信息配置后进入jenkins首页

 

接下来进行设置,首先设置git,jdk,maven执行位置

 

 

 

 

 

填写JAVA_HOME,git执行位置,MAVEN_HOME,取消自动安装,然后点击Save保存,因为我们在jenkins服务器都已安装。

 

在管理插件里面的可选插件选择安装Maven Integration插件使jenkins支持maven项目,新建任务构建新的项目,选择maven项目,名称自定义

 

配置构建项目,填写git的RUL地址,前提是先把jenkins服务器的公钥传到gitlab项目中,保证jenkins有权限拉去gitlab上的项目,注:第一次从gitlab拉取项目会需要输入yes,可先手动拉取一次,否则jenkins项目一直报错拉取不成功

pom.xml文件要指定对,我这边的pom.xml是放到gitlab项目根目录,所以直接填写的文件名。最后点击保存,至此简单的jenkins+gitlab+maven环境就搭建完成了。

点击项目,查看控制台输出。可以查看构建是否成功,构建后的war包存放位置。

 

脚本自动部署

需要执行的shell命令

使用nginx作为发布站点

yes | cp /root/.jenkins/workspace/maven/target/test.war /usr/share/nginx/html/download/
chown nginx.nginx /usr/share/nginx/html/download/*
ssh root@192.168.6.150 "/usr/bin/bash /root/auto.sh"

使用scp直接传送方式

sudo scp -r -P 8800 /var/lib/jenkins/workspace/domain-system/maintenance-system/src/main/webapp/* jon@192.168.6.15:./public
sudo scp  -P 8800  /var/lib/jenkins/workspace/domain-system/maintenance-system/target/maintenance-system-0.0.1-SNAPSHOT-exec.jar  jon@103.193.175.143:.
sudo ssh  jon@192.168.6.15  -p 8800 "sudo /usr/bin/bash  /home/website/jenkins.sh"

cat  /root/auto.sh

#!/bin/bash
#Auto deploy Tomcat for jenkins perf
#by author wugk 2018-10-30
export JAVA_HOME=
TOMCAT_PID=`ps aux | grep tomcat | grep -v grep |awk '{print $2}'`
TOMCAT_DIR="/usr/local/tomcat"
FILES="test.war"
DES_DIR="/usr/local/tomcat/webapps"
DES_URL="http://192.168.6.148/download/"
BAK_DIR="/export/backup/`date +%Y%m%d-%H%M`"
[ -n "$TOMCAT_PID" ] && kill -9 $TOMCAT_PID
cd $DES_DIR
rm -rf $FILES
mkdir -p $BAK_DIR;\cp -a $DES_DIR/* $BAK_DIR/
rm -rf $DES_DIR/*
wget -c $DES_URL/$FILES
$JAVA_HOME/bin/jar  -xvf  $FILES
####################
cd $TOMCAT_DIR;rm -rf work
/bin/sh $TOMCAT_DIR/bin/startup.sh
sleep 20
tail -n 100 $TOMCAT_DIR/logs/catalina.out

 

jenkins插件下载位置:http://mirror.xmission.com/jenkins/plugins/ 

下载指定插件的hpi文件后从jenkins页面的插件管理,高级界面,找到上传插件,点击选择文件,然后找到已下载的hpi文件

jenkins配置邮件通知

先下载以下插件

email-ext.hpi     email-ext-recipients-column.hpi    emailext-template.hpi

点击系统设置 全局设置填写发件账号信息以及收件账号,以及邮件内容

 

构建通知:$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS

<hr/>
<h3>(本邮件是程序自动下发的,请勿回复!)</h3><hr/>

项目名称:$PROJECT_NAME<br/><hr/>

构建编号:$BUILD_NUMBER<br/><hr/>

构建状态:$BUILD_STATUS<br/><hr/>

触发原因:${CAUSE}<br/><hr/>

构建日志地址:<a href="${BUILD_URL}console">${BUILD_URL}console</a><br/><hr/>

构建地址:<a href="$BUILD_URL">$BUILD_URL</a><br/><hr/>

变更集:${JELLY_SCRIPT,template="html"}<br/>
<hr/>

 

配置构建项目,增加构建后操作步骤

重新构建,查看控制台输出,确认邮件已发出。

 

nginx反向代理配置

server {
  listen 80;
  server_name localhost;
  location / {
    proxy_pass http://localhost:8080;
    proxy_read_timeout  90;
    proxy_set_header X-Forwarded-Host $host:$server_port;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
  }
}

tomcat server.xml配置

 

    <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        <Context path="" docBase="jenkins" reloadable="true"/>

 

jenkins-jar自动脚本

#!/bin/bash 
#jdk环境变量
export JAVA_HOME=/usr/local/jdk1.8.0_181
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin
JAR_NAME="maintenance-system-0.0.1-SNAPSHOT-exec.jar"
HTML="public"
DES_DIR="/home/website"
SOURCE_DIR="/root"
BAK_DIR="/export/backup/`date +%Y%m%d-%H%M`"
#检查程序是否在运行
is_exist(){
pid=`ps aux|grep $JAR_NAME|grep -v grep|awk '{print $2}' `
#如果不存在返回1,存在返回0 
if [ -z "${pid}" ]; then
return 1
else
return 0
fi
}
is_exist
if [ $? -eq "0" ]; then
kill -9 $pid
else
echo "${JAR_NAME} is not running" 
fi
cd $DES_DIR
mkdir -p $BAK_DIR;\mv  $JAR_NAME $HTML $BAK_DIR/
echo "备份成功"
cp $SOURCE_DIR/$JAR_NAME .
cp -r $SOURCE_DIR/$HTML .
is_exist
if [ $? -eq "0" ]; then
echo "${JAR_NAME} is already running. pid=${pid} ." 
else
nohup java -jar /home/website/$JAR_NAME --logging.config=./logback.xml  > $DES_DIR/logs/1.log 2>&1 &
echo "程序已启动..."
fi
is_exist
if [ $? -eq "0" ]; then
echo "${JAR_NAME} is running. pid is ${pid} "
else
echo "${JAR_NAME} is not running."
fi
exit


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值