Jenkins自动化部署项目
Jenkins提供了数百个插件来支持构建、部署和自动化任何项目,该项目致力于为最终用户和开发人员提供世界级的平台体验。这种体验的核心是,它是一种形式的跨平台运行时。
1.简介:
Jenkins 提供了数百个插件来支持构建、部署和自动化任何项目, 该项目致力于为最终用户和开
发人员提供世界级的平台体验。这种体验的核心是Java,它是一种面向对象的编程语言,具有
Java 虚拟机 (JVM)形式的跨平台运行时。
2.官网:
官网连接:Jenkins
3.安装:
Linux虚拟机上使用Docker安装Jenkins
(1)搜索Jenkins镜像命令:docker search jenkins
(2)拉取Jenkins镜像命令:docker pull jenkins/jenkins
(3)查看Jenkins镜像命令:docker images
(4)创建Jenkins目录命令:mkdir -p /data/jenkins_home/
(5)授权Jenkins目录命令:chmod 777 /data/jenkins_home/
(6)启动Jenkins容器命令:
docker run -d -p 8090:8080 -p 50000:50000 -v /data/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime -v /usr/local/apache-maven-3.6.3:/usr/local/apache-maven-3.6.3 -v /usr/local/java/jdk1.8.0_331:/usr/local/java/jdk1.8.0_331 --restart always --name jenkins jenkins/jenkins:latest
(7)Jenkins界面初始化:
(7.1)初始界面:
如图:Linux上输入命令vim /data/jenkins_home/secrets/initialAdminPassword,复制
密码

(7.2)插件安装:
如图: 

(7.3)账号设置:
如图: 
(7.4)实例配置:
如图:

4.使用:
前提准备:Linux虚拟机配置JDK、Maven环境
profile文件配置:所在目录/etc
#JDK环境配置 export JAVA_HOME=/usr/local/java/jdk1.8.0_331 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar #Maven环境配置 export MAVEN_HOME=/usr/local/apache-maven-3.6.3 export PATH=$MAVEN_HOME/bin:$PATH
如图:测试Linux虚拟机上的JDK、Maven环境


(1)Jenkins基础配置:
(1.1)Maven-settings设置:
如图:此路径为容器启动时已进行映射的路径

(1.2)JDK设置:
如图:此路径为容器启动时已进行映射的路径

(1.3)Maven设置:
如图:此路径为容器启动时已进行映射的路径

(1.4)SSH Server设置:
如图:Name为服务名(任意),Hostname为服务器ip,
Username为服务器登录名,Passphrase为服务器登录密码,
点击Test Configuration测试连接


(1.5)Jenkins安全设置:
如图: 
(2)Jenkins插件配置:
如图:安装必要插件SSH、Container,Subversion(非必要),安装完重启一下Jenkins


(3)Jenkins项目配置:
(3.1)创建项目:
如图:可根据自己需求去选择项创建 
(3.2)项目描述:
如图:

(3.3)源码管理:
如图:Repository URL:项目在SVN位置地址,Credentials:SVN账号设置
Local module directory:存放项目本地目录, 图中'.'会在Jenkins
的映射/data/jenkins_home根目录中创建workspace目录来存放项目


(3.4)构建触发器:
如图:身份验证令牌内容任意填 
(3.5)BuildSteps:
如图:执行Maven命令clean install(-X:可用于追踪问题),进行清除、打包)

(3.6)SSH服务器配置:
如图:点击高级勾选Verbos(控制台中的详细输出,帮助追踪问题)
Transfer Set Source files(转移集源文件):任意填,
Remove prefix(删除前缀):任意填(均由脚本处理jar包位置)
Exec command(执行命令):启动项目服务的配置


start.sh启动脚本参考内容如下:
echo 'jdk所在目录'
export JAVA_HOME=/usr/local/java/jdk1.8.0_331
echo ${JAVA_HOME}
echo '根据jar包名查询对应的pid'
pid_server_1=`ps -ef |grep java|grep server_1.jar|awk '{print $2}'`
pid_server_2=`ps -ef |grep java|grep server_2.jar|awk '{print $2}'`
pid_server_n=`ps -ef |grep java|grep server_n.jar|awk '{print $2}'`
echo '杀掉对应的进程,如果pid不存在,则不执行'
if [ -n "$pid_server_1" ]; then
kill -9 $pid_server_1;
fi
if [ -n "$pid_server_2" ]; then
kill -9 $pid_server_2;
fi
if [ -n "$pid_server_n" ]; then
kill -9 $pid_server_n;
fi
echo '删除原来的jar包'
rm -rf /home/project/test/server_1.jar
rm -rf /home/project/test/server_2.jar
rm -rf /home/project/test/server_n.jar
echo '将构建的jar包复制到指定目录下'
cd /data/jenkins_home/workspace/test/server_1/target
cp server_1.jar /home/project/test
cd /data/jenkins_home/workspace/test/server_2/target
cp server_2.jar /home/project/test
cd /data/jenkins_home/workspace/test/server_n/target
cp server_n.jar /home/project/test
echo '运行构建的jar包'
BUILD_ID=DONTKILLME
cd /home/project/test
nohup ${JAVA_HOME}/bin/java -jar server_gateway.jar
>>/home/project/test/nohup_1.out &
sleep 1
nohup ${JAVA_HOME}/bin/java -jar service_user.jar
>>/home/project/test/nohup_2.out &
sleep 1
nohup ${JAVA_HOME}/bin/java -jar service_task.jar
>>/home/project/test/nohup_n.out &
sleep 1
stop.sh停止脚本参考内容如下:
echo '根据jar包名查询对应的pid'
pid_server_1=`ps -ef |grep java|grep server_1.jar|awk '{print $2}'`
pid_server_2=`ps -ef |grep java|grep server_2.jar|awk '{print $2}'`
pid_server_n=`ps -ef |grep java|grep server_n.jar|awk '{print $2}'`
echo '杀掉对应的进程,如果pid不存在,则不执行'
if [ -n "$pid_server_1" ]; then
kill -9 $pid_server_1;
fi
if [ -n "$pid_server_2" ]; then
kill -9 $pid_server_2;
fi
if [ -n "$pid_server_n" ]; then
kill -9 $pid_server_n;
fi
(4)Jenkins项目部署:
(4.1)部署问题:
(4.1.1)无法创建Maven本地库:
如图:

解决办法:将Maven中settings的localRepository标签本地Maven仓库地址内
容改Jenkins容器内部地址为/var/jenkins_home/.m2
(4.1.2)拉取项目失败:
如图:是由于Linux虚拟机防火墙是关闭的,导致无法拉取SVN仓库的项目

解决办法:开启Linux虚拟机防火墙(命令:systemctl start firewalld),
即可正常拉取SVN仓库的项目
(4.1.3)文件无权限:
如图:

解决办法:chmod 777 文件名
(4.1.4)坏的解释器:
如图:

或

或

解决办法:sed 's/\r//' -i 文件名
(4.2)部署成功:
如图:



Linux上输入命令:ps -ef | grep java(查看对应服务是否启动)
(4.3)访问项目:项目部署成功,但无法访问项目
解决办法:在Liunx虚拟机上添加一下部署项目的端口到防火墙中
(4.3.1)查看某端口是否开启:firewall-cmd --query-port=端口/tcp
如图:

(4.3.1)添加某端口到防火墙:
firewall-cmd --zone=public --add-port=端口/tcp --permanent
注:--zone为作用域,--add-port为添加端口(格式:端口/通信协议)
--permanent为永久生效
如图:添加完端口,需重启一下Linux虚拟机


更多推荐




所有评论(0)