Jenkins+SVN+Maven+Shell
实现项目一键发布
一、前言
众所周知,Jenkins默认情况下可以实现项目更新(通过SVN),和项目发布,通过(MAVEN插件),但是这种情况下发布到一些容器底下(如Tomcat)时,经过多次发布后JVM会报OutOfMemoryError PermGen space,这个原因是由于这些容器在覆盖老项目后并不会释放老项目内存永久区的资源,久而久之,导致系统永久区内存溢出。为解决这个问题,我们只有通过发布后重新启动容器才能解决该问题。那有什么办法可以使容器在发布新项目后自动重启呢?重启过程中,我们希望容器正在处理的作业安全完成后(如quartz作业执行完后),容器再重启,如何做到?本文要与大家分享的便是其中一种便利安全的方法。
二、 Jenkins安装与配置
Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使持续集成变成可能。
安装:
选择一个操作系统版本的安装,我这边选择的是 Red Hat/Fedora/CentOS版
安装及启动过程:
rpm -ivh jenkins-1.590-1.1.noarch.rpm service jenkins start
访问:
http://<ip>:8080/
三、 Publish Over SSH插件安装
依次单击“Jenkins->系统管理->管理插件”菜单
在可选插件选项卡中找到勾选Publish Over SSH插件,点击界面下方的直接安装按钮。等待jenkins安装完毕即可。
四、 Publish Over SSH插件配置
全局配置:
依次点开“Jenkins->系统管理->系统设置”菜单
找到Publish over SSH配置项,配置如下配置
底下还有个Test Configuration按钮,点击,如出现Success则表示配置成功。
最后点击页底的保存按钮,完成配置。
五、 创建Jenkins Item
直接点击Jenkins首页的新建按钮,创建一个Maven项目,配置根据大家需要,实际配置,本文仅列出作者的配置,供参考:
其中Exec command的脚本是一个shell文件,放置在远程发布机上后,可执行参数有三个,分别如下,第一个参数必填,后面两个选填,默认值是8080和/save/apache-tomcat-7.0.56,大家可以在第六节的SHELL脚本中改成大家项目中自己的默认参数。
./publish.sh <项目WEB显示名称> [TOMCAT端口] [tomcat安装主目录]
六、 编写Shell脚本
需要在你发布的目标机器上编写该脚本,你也可以在开发环境编好后,放到目标机器上,以下给出我的脚本:
#!/bin/bash #defined TOMCAT_HOME="/save/apache-tomcat-7.0.56" TOMCAT_PORT=8080 PROJECT="$1" #param validate if [ $# -lt 1 ]; then echo "you must use like this : ./publish.sh <projectname> [tomcat port] [tomcat home dir]" exit fi if [ "$2" != "" ]; then TOMCAT_PORT=$2 fi if [ "$3" != "" ]; then TOMCAT_HOME="$3" fi #shutdown tomcat "$TOMCAT_HOME"/bin/shutdown.sh echo "tomcat shutdown" #check tomcat process tomcat_pid=`/usr/sbin/lsof -n -P -t -i :$TOMCAT_PORT` echo "current :" $tomcat_pid while [ -n "$tomcat_pid" ] do sleep 5 tomcat_pid=`/usr/sbin/lsof -n -P -t -i :$TOMCAT_PORT` echo "scan tomcat pid :" $tomcat_pid done #publish project echo "scan no tomcat pid,$PROJECT publishing" rm -rf "$TOMCAT_HOME"/webapps/$PROJECT* cp /save/$PROJECT*.war "$TOMCAT_HOME"/webapps/$PROJECT.war #bak project BAK_DIR=/save/bak/$PROJECT/`date +%Y%m%d` mkdir -p "$BAK_DIR" cp "$TOMCAT_HOME"/webapps/$PROJECT.war "$BAK_DIR"/"$PROJECT"_`date +%H%M%S`.war #remove tmp rm -rf /save/$PROJECT*.war #start tomcat "$TOMCAT_HOME"/bin/startup.sh echo "tomcat is starting,please try to access $PROJECT conslone url"
该脚本具有自动安全停Tomcat,自动发布项目,自动备份已发布项目版本的功能。
需要注意的是你连上来的admin用户需要具有执行该文件的权限,如果没有可以
chmod 600(或755) publish.sh
具体权限给多少,根据你们的需要,决定权在你们手上。
如果shell执行出现如下错误,则可能是你在etc/profile中设置了JAVA_HOME,同时您还需要在/etc/bashrc也设置JAVA_HOME。
原因:远程机器的java_home在配置在/etc/profile中的,这个只给shell用户使用的;
但对于ssh 这种非login shell(non-login shell)用户,需要配置在/etc/bashrc中。
参考配置:
export JAVA_HOME=/usr/java/jdk1.6.0_45 export JAVA_BIN=/usr/java/jdk1.6.0_45/bin export PATH=$PATH:$JAVA_HOME/bin
如果以上配置还不能解决你的问题,尝试下去的做法:
---------------------------------------------修改.bash_profile文件开始----------------------------------
修改.bash_profile文件方式是用户级的,对当前用户可用,其它用户无法使用。这种方式一般用于生产。.bash_profile文件在用户的根目录,比如说www用户的根目录是/home/www。
具体配置如下:
cd /home/www/ vim .bash_profile
插入下面3行配置后保存退出:
export JAVA_HOME=/usr/java/jdk1.6.0_45/ export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
---------------------------------------------修改.bash_profile文件结束----------------------------------
相关推荐
Jenkins+SVN+MAVEN+SHELL实现项目一键发布,非常好的学习资料
持续集成环境maven+nexus+jenkins+svn搭建
自己总结的windows版本的jenkins+svn+maven自动部署,其中配合了少量文字和一些截图,希望对大家有所帮助。
jenkins+maven+svn+tomcat 持续集成环境快捷部署,实现自动编译打包部署
jenkins + svn+maven持续集成
jenkins+svn一键发布war包,简单、高效、便捷。操作简单。
Docker+Jenkins+GitLab+Maven+SpringBoot&SpringCloud;自动化构建
总结了我花了一周配置好jenkins的一些坑 这些东西都是自己话时间弄的 网上搜不到答案哟 随便一个坑都能卡几天~~如果有疑问可以留言看到就回
1. Docker+Jenkins+GitLab+Maven+Harbor+SpringBoot自动化构建+Jenkins自动化部署配置 2.无须运维部署 ,而是相关的开发人员,测试人员登录jenkins传入需要部署的tag即可,整个部署过程无须运维参与,解放运维劳动力
jenkins管理svn项目,后面随便写写吧
Jenkins+Git+Maven+Shell+Tomcat持续集成环境 Jenkins+Git+Maven+Shell+Tomcat持续集成环境
Jenkins+Maven+Windows+svn+sonarqube持续集成平台搭建图文指南
文档为本人学习时总结整理,主要部分为jenkins的配置。由于环境不同,在实施时可能会遇到各种不同的报错,但大体思路就是这样的。
Jenkins+Svn+Maven培训,Jenkins如何从SVN上加载一个Maven项目,并实现持续集成
帮助测试人员搭建jenkins+testng+reportng+maven+java环境
两种部署jenkins的方法,通过jenkins+ssh+shell实现代码发布及回滚,也可通过svn回滚
持续集成,代码审查配置
Jenkins+Maven+SVN+Tomcat持续集成实战v2.pdf Jenkins+Maven安装、部署、使用
目录 1、传统网站部署流程 2、主流网站部署流程及方法 3、Jenkins持续平台安装 4、Jenkins持续集成MAVEN讲解 5、Jenkins持续集成JOB工程设置 6、Jenkins持续集成网站构建实战...Jenkins+Maven+SVN+Tomcat持续集成实v1战
Jmeter+Jenkins+maven接口自动化集成,超详细,环境大家围观