环境:
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