Jenkins安装与项目部署发布说明2015/08/13update2017/09026本篇的系统环境为Linux1.软件准备本文中连接linux服务器的工具为SecureCRT。(其它工具类似)准备好以下文件:jdk-7u79-linux-x64.tar.gzapache-maven-3.3.3-bin.tar.gzjenkins-1.623-1.1.noarch.rpm使用root用户登录linux,切换到usr目录(也可以自定义目录),将准备好的文件上传到服务器上。(本文件之后的内容中,如无特殊说明,都是在root用户下执行操作。)命令如下:cd/usr切换到usr目录rz(上传的路径为执行该命令时所在的目录)ll查看文件2.JDK、MAVEN安装与环境变量配置解压maven和jdk到usr目录下,然后打开etc目录下profile文件,配置环境变量。命令如下:tarapache-maven-3.3.3-bin.tar.gztarjdk-7u79-linux-x64.tar.gzvi/etc/profile按’i’键进行编辑,在文件结尾处添加以下文字JAVA_HOME=/usr/java/jdk1.7.0_79CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/tools.jarM2_HOME=/usr/apache-maven-3.3.3PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/binexportJAVA_HOMECLASSPATHM2_HOMEPATH推出编辑:wq保存退出source/etc/profile(使环境变量生效)然后,输入java–version和mvn–v测试配置是否有效3.Jenkins安装与配置3.1.安装执行命令安装:rpm-ivh/usr/jenkins-1.623-1.1.noarch.rpm安装成功后,Jenkins的默认端口号是8080,AJP端口是8009,与tomcat的相同。我们可以进入Jenkins的配置文件修改端口号:vi/etc/sysconfig/Jenkins找到JENKINS_PORT=8080和JENKINS_AJP_PORT=8009进行修改。然后就尝试启动Jenkins服务:servicejenkinsstart如果提示:StartingJenkins[确定]这表示启动成功,可以通过进行访问了。如果提示:StartingJenkinsbash:/usr/bin/java:没有那个文件或目录[确定]或者StartingJenkinsJenkinsrequiresJava7orlater,butyouarerunning1.6.0_35-b35from/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.35.x86_64/jrejava.lang.UnsupportedClassVersionError:50.0atMain.main(Main.java:90)[确定]表示Jenkins找不到可执行的java环境,需要再次进入到配置文件中,找到JENKINS_JAVA_CMD配置项,把java路径配置进去,此处为JENKINS_JAVA_CMD=”/usr/java/jdk1.7.0_79/bin/java”,注意bin目录后要加’/java’。保存文件退出,重新启动服务,可以成功启动。通过进行访问。3.2.配置通过浏览器访问Jenkins页面,点击[系统管理-系统设置],打开系统设置界面。点击主目录的高级按钮,可以自定义Jenkins从svn下载源码的位置,构建项目的位置向下滚动页面,找到jdk,点击新增jdk按钮,不勾选自动安装,手动填写JAVA_HOME(系统中的JAVA_HOME)。找到maven,点击新增maven按钮,不勾选自动安装,手动填写MAVEN_HOME。找到邮件通知,点击高级按钮,勾选使用smtp认证,填写用户名密码。设置好后,可以勾选通过发送测试邮件测试配置,查看配置是否正确。其他选项使用默认配置,不要更改。最后点击保存按钮。4.创建Jenkins用户4.1.创建用户useraddjenkins如果不手动创建,在安装Jenkins时,默认会自动创建该用户,那么久可能遇到下面这个问题。如果Jenkins所在服务器与web服务器不是同一台,那么在构建部署项目时,需要编写项目部署命令(如拷贝项目、停用服务、启用服务等),通过ssh执行。此时Jenkins会默认以jenkins这个用户登录web服务器进行命令操作。所以我们需要切换到jenkins这个用户,配置用户免密码登录,如果是自动创建的用户,则可能会切换不了,因此需要手动创建该用户。4.2.配置免密码登录web服务器。切换用户:su-jenkins执行如下命令,生成本机的公钥和私钥文件,这过程中会有提示选择,全部回车默认就可以了:ssh-keygen-trsa命令执行后,目录~/.ssh(当前用户目录下)下会出现两个文件:id_rsa和id_rsa.pub。其中,id_rsa.pub为公钥文件。将该文件的内容追加到web服务器上~/.ssh目录下的authorized_keys文件中。首先将该文件拷贝到web服务器上:scp~/.ssh/id_rsa.pubroot@192.168.3.185:/tmp/id_rsa_Jenkins.pub用root用户登录web服务器,切换到~/.ssh目录下,将id_rsa_HOSTA.pub的内容追加到authorized_keys文件中:cat/tmp/id_rsa_Jenkins.pub~/.ssh/authorized_keyschmod600authorized_keys4.3.设置Jenkins服务器中jenkins用户下的maven切换到Jenkins用户文件目录下,su-jenkins查看是否有.m2文件夹,如果没有,创建该文件夹,并创建settings.xml文件,修改其中的配置(也可以从其他地方复制过来):cd~ll-amkdir.m2touchsettings.xml(创建文件)cp/usr/settings.xml/home/jenkins/.m2(从其他地方复制)settings.xml5.配置项目自动部署5.1.执行上一章节中【配置免密码登录web服务器】。5.2.新建点击新建按钮,填写item名称,选择构建一个maven项目点击OK5.3.源码管理选择Subversion,填写项目的svn路径第一次录入svn地址时,会出现该错误,点击’entercredential’,填写svn的用户名密码就可以了。5.4.构建触发器表达式是5位,分别表示分(0-59)、时(0-23)、天(1-31)、月(1-2)、星期(0-7,0和7都表示周日)。基本上与cron表达式一致。特别的H/n,表示每多长时间。5.5.PreSteps执行步骤无特殊需求,则不需要填写。5.6.Build(部分配置项是jenkins2.0以后的)填写maven命令如果需要特殊配置,例如指定自定义的maven的settings.xml地址等,则点击高级选项5.7.PostSteps执行步骤这一步是自动部署的重点,在这里增加Executeshell(Windows就是batchcommand)。选择’Runonlyifbuildsucceeds’,填写执行的命令。tomcathome=/u01/tomcat/apache-tomcat-7.0.69_SOPip=192.168.3.74sshroot@$ipcd$tomcathomesshroot@$iprm-rf/webapps/sop*scp${WORKSPACE}/target/sop.warroot@$ip:$tomcathome/webapps/sleep10sshroot@$ipmv$tomcathome/webapps/sop/WEB-INF/classes/config.properties.test$tomcathome/webapps/sop/WEB-INF/classes/config.propertiessshroot@$ip$tomcathome/bin/shutdown.shsshroot@$ip$tomcathome/bin/startup.sh5.8.构建设置默认是构建失败通知勾线邮件通知,填写接收邮件即可。5.9.构建后操作(部分配置项是jenkins2.0以后的)如果项目构建并自动部署成功后,想要邮件通知测试人员,那么需要在这里配置。点击最下边的advancedsettings点击Triggers,选择success,然后在配置如下5.10.保存。6.常见问题及注意事项1.执行远程命令时,报错Hostkeyverificationfailed.(Linux下)这说明jenkins服务器无法免密码登录web服务器执行命令。需要按照那一章节,再重新执行一下。2.通过远程命令启动tomcat,报错:NeithertheJAVA_HOMEnortheJRE_HOMEenvironmentvariableisdefined原因:因为启动tomcat会调用tomcat安装文件中的startup.sh,而它调用了catalina.sh则调用了setclasspath.sh。因此需要在setclasspath.sh的开头手动声明环境变量。(windows相同)解决方案:用vim打开tomcat的bin目录下的setclasspath.sh,添加JAVA_HOME和JRE_HOME两个环境变量(下图红色方框内),两个环境变量路径为您安装的javaJDK的路径。windows下将export改为set即可。保存退出3.通过Jenkins自动打包项目,需要项目的pom中build节点的配置要符合标准,否则可能出现配置文件无法发布的问题。4.自动部署项目时,需要执行tomcat的startup.sh命令,除此之外可以将tomcat注册为服务,下面是将tomcat7注册为服务,在/etc/init.d路径下创建tomcat7文件,文件名称就是服务名称:#tomcat路径CATALINA_HOME=/usr/tomcat7/tomcat7JAVA_HOME=/usr/java/jdk1.7.0_79TOMCAT_START=$CATALINA_HOME/bin/startup.shTOMCAT_STOP=$CATALINA_HOME/bin/shutdown.sh#sourcefunctionlibrary../etc/rc.d/init.d/functions#checkthatnetworkingisup.[${NETWORKING}=no]&&exit0#checkfortomcatscriptif[!-f$CATALINA_HOME/bin/catalina.sh];thenechoTomcatnotvalilable...exitfistart(){echo-nStartingTomcat:daemon$TOMCAT_STARTechotouch/var/lock/subsys/tomcat}stop(){psax--width=1000|grep[o]rg.apache.catalina.startup.Bootstrapstart|awk'{printf$1}'\|wc|awk'{print$2}'/tmp/tomcat_process_count.txtreadline/tmp/tomcat_process_count.txtif[$line-gt0];thenecho-ntomcat(pidpsax--width=1000|greporg.apache.catalina.startup.Bootstrapstart