打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Jenkins安装及部署脚本配置教程
环境版本:
jenkins:jenkins-2.60.3-1.1.noarch
JDK:jdk1.7
maven:3.3.9
什么是jenkins:
解决开发中的人为编译操作会影响项目个模块。
安装JDK、Maven、Tomcat环境:
参考链接:https://blog.csdn.net/qq_28666081/article/details/81629764
安装jenkins:
下载jenkins:
$ sudo wget http://pkg.jenkins-ci.org/redhat/jenkins-2.60-1.1.noarch.rpm
如果当前部署用户报 xxxis not in the sudoers file.  This incident will be reported.添加方法如下:
$ su -  //切换到超级用户
$ vim /etc/sudoers
在 "root ALL=(ALL) ALL"在起下面添加"xxx ALL=(ALL) ALL"(这里的xxx是你的用户名)
rpm安装jenkins:
$ sudo rpm -ihjenkins-2.60-1.1.noarch.rpm
安装完后会出现以下四种目录:
war包
配置文件
JENKINS_HOME目录
jenkins日志文件
/usr/lib/jenkins/jenkins.war
/etc/sysconfig/jenkins
/var/lib/jenkins
/var/log/jenkins/jenkins.log
启动jenkins:
$ sudo service jenkins start
启动成功后,打开网页,输入localhost:8080  后按着步骤安装即可安装成功。
安装jenkins插件:
经过上面步骤我们部署成功了,接下来打开localhost:8080,然后安装如下插件:
1 安装maven插件:
在插件管理->可选安装  中选择Maven Integration 并安装
2 安装Console Coulumn Plugin插件
在插件管理->可选安装  中选择 并安装Console Coulumn Plugin,安装完后会出现如下按钮:
3 ssh远程执行shell脚本插件:
系统管理 -> 管理插件 -> 可用插件,搜索:SSH Plugin,然后安装
项目创建配置讲解:
1 前提说明:
下面凡是以下格式:
xxxx - xxx
表示项目配置的对应选项,如果填勾选/取消勾选 代表的是这个配置项是否勾选,其他内容知识表示这个输入框就填写这样的的内容,如:
Goals and options - -Dmaven.test.skip=true clean deploy
真实的形式为:
2 简单的把项目分为common、facade、service、timer、trigger、web,其中common、facade作为依赖可用maven直接添加到其他项目中,比如在pom.xml中添加如下:
<dependency>
<groupId>com.gw.facade</groupId>
<artifactId>gw-facade-xxx</artifactId>
<version>${gw-facade-xxx.version}</version>
</dependency>
首先新建一个项目,选择建构一个Maven项目:
进入选择配置如下:
General:
丢弃旧的构建 - 勾选
保持构建的最大个数 - 3
源码管理:
Subversion - 勾选        ---其配置如下:
如果Credentials为空,需先点击Add添加一个如下(这里的username、password就对应你的svn张账号密码):
Quiet check-out - 取消勾选     //这个取消勾选的作用是为了svn代码改变的地方在Console Coulumn Plugin插件能显示出来
Build:
Root POM - pom.xml
Goals and options - -Dmaven.test.skip=true clean deploy
3 service、timer、web则作为项目启动,其中service、timer以jar形式打包,取一个service作为例子讲解:
service的构建与facade基本一致,区别有以下几点:
Build:
Goals and options - -Dmaven.test.skip=true -Dlog4j.leve=INFO clean package
Post Steps(本地和远程指令执行的地方):
点击 Add post-build step按钮,然后按顺序创建Execute shell、Execute shell script onremote host using ssh(执行顺序跟创建顺序有关,所以必须按顺序)如下:
然后往这两个填充内容如下:
注:Execute  shell是服务器执行本地脚本,第二个是ssh执行远程服务器脚本。
第一个脚本在本地(即jenkins服务器,假设是192.168.0.100)内容如下:
#!/bin/bash
export BUILD_ID=$JOB_NAME
/home/normal/scripts/service.sh $JOB_NAME $JENKINS_HOME
其中在192.168.0.100对应存在一个/home/normal/scripts/service.sh 脚本内容如下:
if [ $# -eq 2 ]; then
# 项目名称
project_name=$1
# 工作目录
jenkins_home=$2
# 提示信息
echo '[INFO] ------------------------------------------------------------------------'
echo '[INFO] 正在部署应用,请稍后 . . .'
echo '[INFO] ------------------------------------------------------------------------'
# 拷贝文件到应用服务器的目录
scp $jenkins_home/workspace/$project_name/target/${project_name}.jar normal@10.10.10.129:/home/normal/services/${project_name}/source
else
echo '[ERROR] ------------------------------------------------------------------------'
echo '[ERROR] 参数不正确!语法:service.sh arg1(注:项目名称) arg2(注:工作目录)'
echo '[ERROR] ------------------------------------------------------------------------'
fi
第二个脚本是ssh连接远程服务器,首先到Credentials –> global –> Add Credentials去添加一个全局凭证,参考链接为:https://fanlychie.github.io/post/jenkins-remote-ssh.html
因为192.168.0.100需要拷贝文件到192.168.0.101上,所以需要设置免密登陆如下:
1. 192.168.0.100中停掉jenkins:service jenkins stop
2. 192.168.0.100中: vim /etc/sysconfig/jenkins    //修改JENKINS_USER="jenkins" 为 JENKINS_USER="root"
3. 192.168.0.100中:su normal && cd  //切换回部署用户账号,并cd回用户目录
4. 192.168.0.100中:ssh-keygen -t rsa   //一直回车,生成的密钥会存在当前用户目录 .ssh中
5. 192.168.0.100中:cd .sssh
6. 192.168.0.100中:scp id_rsa.pub normal@192.168.0.101:/home/fanlychie/.ssh/authorized_keys
以上免密登录就设置成功了。
然后在192.168.0.101中编写startup.sh(这个文件是将编译好的service发布到远程服务器,并且运行起来--所以对应远程服务器也需要java环境配置),如下:
$ vim /home/normal/scripts/services/startup.sh  //内容如下:
if [ $# -eq 1 ]; then
# 项目名称
project_name=$1
# 环境变量
JAVA_HOME=/usr/java/jdk1.7.0
CLASSPATH=.:$JAVA_HOME/lib
PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME CLASSPATH PATH
# 应用路径
application_path=/home/normal/services/${project_name}
# 应用的进程ID
application_pid=`ps -ef | grep java | grep ${project_name} | grep -v grep | awk '{print $2}'`
# 如果应用的进程存在, 杀死该进程
if [ -n "$application_pid" ]; then
kill -9 $application_pid
fi
# 替换为最新的应用包
mv -f ${application_path}/source/${project_name}.jar ${application_path}
# 启动应用服务
nohup java -jar -Xms256m -Xmx512m -XX:PermSize=32m -XX:MaxPermSize=128m -Ddubbo.shutdown.hook=true -Ddubbo.registry.file=${application_path}/dubbo.registry.properties ${application_path}/${project_name}.jar >/dev/null 2>&1 &
else
echo '[ERROR] ------------------------------------------------------------------------'
echo '[ERROR] 参数不正确!语法:startup.sh arg1(注:项目名称)'
echo '[ERROR] ------------------------------------------------------------------------'
fi
总结:
其他的timer和web也是差不多,都是先在jenkins的服务器对其编译打包好,再执行本地脚本scp远程拷贝到部署服务器,然后通过ssh远程执行部署服务器的脚本来跑程序。当然timer比较特殊,只需执行本地编译打包,并远程拷贝到部署服务器,如何运行是通过Trigger来定时跑timer这个定时任务的,大致的trigger例子配置如下:
注:每天凌晨12点10分运行该配置的项目一次
然后再Build中添加如下就会每天定时执行这个脚本,然后这个脚本就回去跑,对应的脚本如下:
if [ $# -eq 2 ]; then
# 项目名称
project_name=$1
# 工作目录
jenkins_home=$2
# 提示信息
echo '[INFO] ------------------------------------------------------------------------'
echo '[INFO] 正在部署应用,请稍后 . . .'
echo '[INFO] ------------------------------------------------------------------------'
# 拷贝文件到应用服务器的目录
scp $jenkins_home/workspace/$project_name/target/${project_name}.jar normal@10.10.10.129:/home/normal/timers/${project_name}
#scp -r $jenkins_home/workspace/$project_name/target/lib normal@10.10.10.129:/home/normal/timers/${project_name}
else
echo '[ERROR] ------------------------------------------------------------------------'
echo '[ERROR] 参数不正确!语法:timer.sh arg1(注:项目名称) arg2(注:工作目录)'
echo '[ERROR] ------------------------------------------------------------------------'
fi
参考资料:
jenkins安装源:https://pkg.jenkins.io/redhat/
jenkins安装方法:https://www.cnblogs.com/qixing/p/5896512.html
jdk安装(默认选择方法三,并且jdk版本要求1.7):https://blog.csdn.net/qq_32786873/article/details/78749384
maven环境变量:https://www.cnblogs.com/debiao/p/6230053.html
安装maven(教程:https://www.cnblogs.com/bincoding/p/6156236.html)
配置MAVEN_HOME(教程:https://www.cnblogs.com/ycyzharry/p/6653905.html)
找不到jdk安装目录解决;https://blog.csdn.net/hooloo/article/details/55667666
jenkins卸载教程:https://blog.csdn.net/chunlongyuan/article/details/79243143
jenkins创建用户及设置:https://blog.csdn.net/liyasong666888/article/details/50353812
maven 40x错误解决:http://www.cnblogs.com/fengpingfan/p/5197608.html
javac全局配置:https://blog.csdn.net/ningxiaopeng08/article/details/52251352
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
我的jenkins自动部署方案演进史
Jenkins+SVN+Maven+Shell 实现项目一键发布
替换XP默认的Shell:Explorer.exe, 发现启动变的比较慢
编程语言php 计算脚本执行时间
『高级篇』docker之gitlab和jenkins(43)
Linux下的Jenkins+Tomcat+Maven+Git+Shell环境的搭建使用(jenkins自动化部署)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服