使用jenkins配置git+maven的自动化构建


使用 Jenkins 配置 Git+Maven 的自动化构建 文/邴越 http://www.cnblogs.com/binyue/ Jenkins 是一个开源的持续集成工具,应用 Jenkins 搭建持续集成环境, 可以进行自动构建、自动编译和部署,非常方便。 在服务器比较少的情况下,Jenkins 的优势并不明显,但是随着项目发展, 服务器数量的增加,Jenkins 的优势就会凸显出来,可以很好的提高效率,减少 很多人工操作。 现在很多公司的 Java 项目开发都是使用 Git 或者 SVN 管理代码,Maven 管理多模块和项目依赖, 所以今天尝试学习如何使用 Jenkins 搭建 Github 与 Maven 下的自动构建 和部署。 1.部署 Jenkins 官网下载 http://jenkins-ci.org/。目前的最新版本是 1.629。 Jenkins 的安装十分简单,下载后就是一个 jenkins.war 的 war 包,可以直接部 署在 Tomcat 或者其他容器中。 如果不能部署,可以检查 Tomcat 的配置文件,可以查看 server.xml 里 unpackWARs 和 autoDeploy 是否设置为 True。 另外官网还有相关的.deb 等的安装,比较繁琐,具体哪种方式部署可以自己选择。 2.安装相关插件 把 war 文件拷贝到 Tomcat 的 webapps 目录, 启动后进入 http://SERVER_PATH:8080/jenkins/,可以看到 Jenkins 已经在 运行: 配置 Git 仓库需要用到 Git 插件,Jenkins 默认没有 Git 插件,需要手动安装。 点击 Manage Jenkins,进入 Manage Plugins, 在可用(Avaliable)插件列表下找到 Source Code Management 一栏, 选择 GIT plugin 插件,安装之后重启。 其他的插件如 Maven 等,Jenkins 默认安装,不需要手动下载。 3.配置 Maven 和 JDK 路径等 选择 Configure System,可以配置 Maven 安装路径等。 如果没有 Maven 和 Git 环境,需要另外设置。 记得配置 JDK 路径,第一次我就忘记配置,结果构建时系统自动安装 Jdk,特别 慢。 下面是 Jenkins Location 选项,jenkins 默认会存放在用户主目录下的.jenkins 文件夹中,如果需要变动可以在这里更改。 后面的 shell 中也会用到 Jenkins Location,默认的访问路径: http://SERVER_PATH:8080/jenkins/job/ 4.创建任务,配置项目信息 为了更好的学习 Jenkins,我新建了一个非常简单的 Spring MVC 项目,这个项 目使用 Maven 管理,提交到了 github 上,地址: https://github.com/bingyue/easy-springmvc-maven pom.xml 的部分内容: 1 2 3 4 5 6 7 8 9 10 ... springmvc-maven easy-springmvc-maven 0.0.1-SNAPSHOT war ... easy-springmvc-maven 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 maven-compiler-plugin 3.1 1.6 1.6 maven-war-plugin 3.0 ... 首先按照提示创建一个任务,选择 Maven Project。 进入 Config 页面,点击 Source Code Management 的 git 选项, 填入上面的 git 地址,配置用户名密码等参数。 下面的 Build Triggers 是一个持续集成的触发器插件, 可以根据已经完成构建的结果,触发新 Job 或者传递参数。 默认的选项是 Build whenever a SNAPSHOT dependency is built, 意思是依赖于快照的构建意思是依赖于快照的构建,当代码有更新时就构建项目。 下面的 Build periodically 和 Poll SCM 可以设置定时自动构建,这里我暂时 不设置。 Pre Steps 选项用来配置构建前的工作,这里不作更改。 因为是 Maven 项目,Build 选项有 Root POM 和 Goals and options 的设置, 使用默认的打包应该就可以。 5.配置构建成功后的动作,添加 shell Post Steps 选项设置构建完成后的动作, 这里我设置为将 war 包拷贝到 Tomcat 目录,删除项目原来的内容文件夹,并重启 Tomcat。 选择 Run only if build succeeds or is unstable ,点击添加 Execute Shell: 1 2 3 4 5 6 7 8 9 10 #!/bin/bash #copy file and restart tomcat tomcat_path=/usr/local/tomcat2 project=easy-springmvc-maven war_name=easy-springmvc-maven.war war_path=http://192.168.106.128:8080/jenkins/job/jeekins-test/ws/target server_port=8082 file_path=/home/bingyue/.jenkins/jobs/jeekins-test/workspace/target 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 now=$(date +"%Y%m%d%H%M%S") echo "the shell execute time is ${now}" echo `lsof -n -P-t -i :${server_port}` tomcat_pid=`lsof -n -P-t -i :${server_port}` echo "the tomcat_pid is ${tomcat_pid}" if ["${tomcat_pid}" != ""]; then kill -9 $tomcat_pid echo "kill the server" fi echo "rm ${tomcat_path}/webapps/${war_name}" rm ${tomcat_path}/webapps/${war_name} echo "rm -rf ${tomcat_path}/webapps/${project}" rm -rf ${tomcat_path}/webapps/${project} cd $file_path if [-f ${war_name} ]; then cp ${war_name} ${tomcat_path}/webapps else echo "${war_name} unexists" fi export JAVA_HOME=/data/jdk7 export CATALINA_HOME2=/usr/local/apache-tomcat-2 export CATALINA_BASE2=/usr/local/apache-tomcat-2 $tomcat_path/bin/startup.sh echo "server restarted" 说明几点: 这次学习是使用了单台虚拟机里的两个 Tomcat,所以端口号有改变, 我为了方便测试,直接访问了 Jenkins 的隐藏目录/.jenkins/文件夹, 实际应用中,Jenkins 通常都是应用在分布式系统,同时部署多台服务器,一般 都是访问 Jenkins 所在的机器上下载 war 包来部署, 我们测试的时候也可以直接修改 Jenkins 主目录。 最下面的 BuildSetting 可以设置邮件收件人列表等,在每次构建结束后可以将 相关信息发送到邮箱。 6.构建项目 完成相应的设置后,就可以进行项目的构建。 在任务列表页点击 Play 的按钮,或者进入任务然后选择 Build Now。 首页左下角的栏目显示正在构建的项目状态: 点击可以查看控制台输出和日志: 构建成功,项目状态为蓝色,失败是红色。 打包成功后,可以进入 workspace 查看文件: http://SERVER_PATH:8080/jenkins/job/jeekins-test/ws/target/easy-sprin gmvc-maven.war 现在打开刚才的 Tomcat 路径,如果控制台没有错误输出,构建的项目应该可以正 常访问: 构建成功! 7.遇到的问题  部署到 Tomcat 时 Jenkins 启动报错,war 包无法解压: Invalid or unreadable WAR file : error in opening zip file 检查发现是文件下载不完全,重新下载上传后解决。jenkins.war 文件有 60 多 MB,使用 前记得检查文件完整性。  首次进入提示 Your container doesn’t use UTF-8 to decode URLs. If you use non-ASCII characters as a job name etc, this will cause problems. 点击 Jenkins 提示已经给出了解决方案: Some versions of Tomcat (such as 5.0.28) uses iso-8859-1 to decode URLs, which is in a clear violation of the relevant RFCs. To fix this problem, add the following URIEncoding attribute to the connector definition in $TOMCAT_HOME/conf/server.xml.  Sending e-mails to: name@gmail.com ERROR: Could not connect to SMTP host: localhost, port: 25 javax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 25; 本地的 SMTP25 端口没有打开。
还剩7页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

zhikai

贡献于2017-02-20

下载需要 10 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf