1、 自动化构建布署安装手册07月目录1. 编写目标42. 版本要求43. 准备工作44. 安装布署44.1. 安装JDK44.1.1. 版本说明44.1.2. 安装步骤44.1.3. 环境配置54.1.4. 测试JDK54.2. 安装maven54.3. 安装tomcat64.3.1. 版本说明64.3.2. 安装步骤64.3.3. 测试tomcat64.3.4. 开启和停止74.3.5. 环境配置74.3.6. 设置随机开启84.4. 安装jenkens94.4.1. 版本说明94.4.2. 下载安装包并布署94.4.3. 配置jenkins环境变量94.4.4. 获取管理员密码104.4.5
2、. 配置管理员信息124.4.6. 安装插件124.4.7. 全局设置134.4.8. 系统设置144.4.9. 邮箱通知配置154.4.10. 用户权限配置244.5. 安装sonarQube254.5.1. 版本说明254.5.2. 下载安装包254.5.3. 安装汉字包264.5.4. 创建数据库264.5.5. 修改配置文件264.5.6. 服务开启停止264.5.7. 测试274.6. 安装SonarQube Scanner274.6.1. 版本说明274.6.2. 下载安装包274.6.3. 配置scanner274.6.4. Jenkins配置Scanner274.6.5. 安装
3、sonarQube插件285. 创建项目305.1. 项目基础情况305.2. 源码管理305.3. 构建触发器315.4. 构建环境配置325.5. 配置sonarQube335.6. 编译环境配置355.7. 指定打包类型355.8. 容器远程布署365.9. SSH远程布署371. 编写目标 实现项目代码自动化构建、打包、公布、测试、布署。2. 版本要求 软件版本说明jenkins2.62.6以上版本必需jdk1.8及以上jdk1.8tomcat8.0maven3.3.9sonarQube6.4SonarQube Scanner3.0.3centos7.23. 准备工作 服务器硬件要求:
4、 cpu 4关键,内存16g,硬盘40g,centos74. 安装布署4.1. 安装JDK4.1.1. 版本说明jjdk-7u80-linux-x64.tar.gz。4.1.2. 安装步骤 1、登录服务器。 2、新建/usr/java文件夹,将jdk-8u112-linux-x64.tar.gz上传放到该文件夹中,并将工作目录切换到/usr/java目录下。 #cd /usr #mkdir java 3、解压JDK,在/usr/java多了一个jdk1.8.0_112文件夹。 #tar -zxvfjdk-8u112-linux-x64.tar.gz4.1.3. 环境配置 #vi /etc/pr
5、ofile 在profile底部添加以下内容#jdk环境变量配置export JAVA_HOME=/usr/java/jdk1.8.0_112export PATH=$JAVA_HOME/bin:$PATHexport CLASSPATH=. 实施以下命令使环境变量配置生效。 #source /etc/profile4.1.4. 测试JDK 1、使用javac和java命令,不会出现command not found错误。 2、使用java -version,出现版本为java version 1.8.0_112。 3、echo $JAVA_HOME, echo $CLASSPATH, ech
6、o $PATH,看看自己配置是否全部正确。 至此jdk安装配置已经完成。4.2. 安装maven 1、下载maven布署包 将maven上传到/opt下并解压 2、配置环境变量 #vi /etc/profile 添加以下 exportMAVEN_HOME=/opt/maven3.5 exportPATH=$MAVEN_HOME/bin:$PATH 保留后,实施 #source /etc/profile 3、测试是否成功 mvn -v 或echo $MAVEN_HOME 4、配置当地仓库 修改conf下面settting.xml文件 4.3. 安装tomcat4.3.1. 版本说明apache-
7、tomcat-8.5.9.tar.gz4.3.2. 安装步骤 1、登录服务器。 2、将apache-tomcat-8.5.9.tar.gz上传放到/usr/local目录下。 3、解压tomcat。 #tar -zxvfapache-tomcat-8.5.9.tar.gz修改文件夹名称为tomcat。 #mvapache-tomcat-8.5.9 tomcat84.3.3. 测试tomcat1、开启服务 #/usr/local/tomcat8/bin/startup.sh2、 浏览器访问:8080/,如::8080/ 注意:假如访问不成功可能是预防墙没相关闭。 查看防火墙状态 #firewal
8、l-cmd -state 关闭防火墙 #systemctl stop firewalld 严禁开机开启 #systemctl disablefirewalld 3、查看tomcat进程 #ps -ef |grep java #ps -ef |grep tomcat4.3.4. 开启和停止1、开启服务 #/usr/local/tomcat8/bin/startup.sh2、停止服务 #/usr/local/tomcat8/bin/shutdown.sh4.3.5. 环境配置1、配置JVM 修改tomcat下bin目录下catalina.bat文件 1、linux配置,第二行添加。注意:具体参数依
9、据环境配置,示例内存8g。JAVA_OPTS=-server -Xms4096m -Xmx4096m -XX:PermSize=128M -XX:MaxPermSize=256m 2、windows配置,第一行添加set JAVA_OPTS=-server -Xms4096m -Xmx4096m -XX:PermSize=128M -XX:MaxPermSize=256m4.3.6. 设置随机开启1、创建开启用户 #useradd tomcat2、添加开启脚本 #vi /etc/rc.d/init.d/tomcat 添加以下内容并保留,设置开启权限为tomcat。#!/bin/bash# st
10、arguo liny tomcat开启脚本# /etc/rc.d/init.d/tomcat8# init script for tomcat precesses# processname: tomcat# description: tomcat is a j2se server# chkconfig: 2345 86 16# description: Start up the Tomcat servlet engine.if -f /etc/init.d/functions ; then . /etc/init.d/functionselif -f /etc/rc.d/init.d/func
11、tions ; then . /etc/rc.d/init.d/functionselse echo -e atomcat: unable to locate functions lib. Cannot continue. exit -1fiRETVAL=$?CATALINA_HOME=/usr/local/tomcat8case $1 instart) if -f $CATALINA_HOME/bin/startup.sh ; then echo $Starting Tomcat su -c $CATALINA_HOME/bin/startup.sh tomcat fi ;stop) if
12、-f $CATALINA_HOME/bin/shutdown.sh ; then echo $Stopping Tomcat su -c $CATALINA_HOME/bin/shutdown.sh tomcat fi ;*) echo $Usage: $0 start|stop exit 1 ;esacexit $RETVAL 注意:只需要修改CATALINA_HOME=/usr/local/tomcat8,指tomcat安装路径。 2、添加权限 #chmod755/etc/rc.d/init.d/tomcat #chkconfig -add tomcat #chkconfig-level2
13、345tomcaton3、重启电脑测试是否生效 浏览器访问:8080/,如::8080/4.4. 安装jenkens 4.4.1. 版本说明 Jenkins 2.64.4.2. 下载安装包并布署 #cd /usr/local/tomcat8/webapps #wget 4.4.3. 配置jenkins环境变量 设置jenkins数据(下载代码、插件等)保留路径 #cd /opt #mkdir jenkins #vi /etc/profile 添加以下内容 JENKINS_HOME=/opt/jenkins #source /etc/profile 验证是否配置环境变量成功 #echo $JEN
14、KINS_HOME4.4.4. 获取管理员密码 开启tomcat后,访问http:/IP:8080/jenkins 按提醒/jenkins/secrets/initialAdminPassword获取管理员密码 #cat /jenkins/secrets/initialAdminPassword 复制密码到提醒框点击 默认安装插件 选择第一个安装,耐心等候。 4.4.5. 配置管理员信息 设置管理员账号密码等信息,点击 点击能够进入jenkins进行配置。4.4.6. 安装插件 1、Maven插件Maven Integration plugin 2、公布插件Deploy to containe
15、r Plugin 支持将代码布署到tomcat容器 3、git插件Git plugin 4、svn插件Subversion Plug-in和SVN Publisher plugin 5、发送邮件插件 Email Extension Plugin4.4.7. 全局设置系统管理-Global Tool Configuration -配置JDK、Maven、git1、 配置maven 2、 配置jdk 配置项目编译时需要jdk版本。 注意:现在我们项目全部jdk1.7编译,所以需要在系统安装一个jdk1.7,官网下载一个tar包解压即可,不用配置环境变量。 3、 配置maven 4.4.8. 系统设
16、置 -Xms256m -Xmx512m -Dfile.encoding=UTF-8(注意:具体参数依据环境配置) 4.4.9. 邮箱通知配置jenkins 内置邮件功效使用email-ext插件扩展邮件功效1、系统管理系统设置,先设置发件人邮件 在JenkinsLocation设置系统管理员地址(必需设置)2、系统管理系统设置,再设置全局设置: 在邮件通知部分配置发送邮件用户名、密码(注意这里密码使用是163邮箱设置用户端授权码,不是登陆密码,提议不用QQ邮箱,会轻易造成发送失败) 3、勾选经过发送测试邮件测试配置,填入测试收件人,点击TestConfiguration4、 到qq邮箱里che
17、ck新邮件5、 email-ext插件配置 Jenkins默认提供了一个邮件通知,能在构建失败、构建不稳定等状态后发送邮件。不过它本身有很多不足,比如它邮件通知无法提供具体邮件内容、无法定义发送邮件格式、无法定义灵活邮件接收配置等等。在这么情况下,我们找到了JenkinsEmailExtensionPlugin。该插件能许可你自定义邮件通知方方面面,比如在发送邮件时你能够自定义发送给谁,发送具体什么内容等等。email-ext插件可依据构建结果,发送构建汇报,给目前committer (用git做代码管理) 1) 该插件支持jenkins 1.5以上版本,插件安装此处略 ,若您可选插件页卡列表
18、是空,先去高级页面检验更新下。 2)插件用于job配置页面,添加构建后步骤“Editable Email Notification”1、系统管理系统设置,先设置全局:具体参数说明以下:1. Override Global Settings:假如不选,该插件将使用默认E-mail Notification通知选项。反之,您能够经过指定不一样于( 默认选项)设置来进行覆盖。2. Default Content Type:指定构建后发送邮件内容类型,有Text和HTML两种.3. Use List-ID Email Header:为全部邮件设置一个List-ID邮件信头,这么你就能够在邮件用户端使用
19、过滤。它也能阻止邮件发件人大部分自动回复(诸如离创办公室、休假等等)。你能够使用你习惯任何名称或ID号,不过她们必需符合以下其中一个格式(真实ID必需要包含在标识里):Build Notifications “Build Notifications” 4. Add Precedence: bulk Email Header:设置优先级,5. Default Recipients:自定义默认电子邮件收件人列表。假如没有被项目配置覆盖,该插件会使用这个列表。您能够在项目配置使用$ DEFAULT_RECIPIENTS参数包含此默认列表,和添加新地址在项目等级。添加抄送:cc:电子邮件地址比如,CC
20、:6. Reply To List:回复列表, A comma separated list of e-mail addresses to use in the Reply-To header of the email. This value will be available as $DEFAULT_REPLYTO in the project configuration.7. Emergency reroute:假如这个字段不为空,全部电子邮件将被单独发送到该地址(或地址列表)。8. Excluded Committers:预防邮件被邮件系统认为是垃圾邮件,邮件列表应该没有扩展账户名(如:
21、),而且使用逗号分隔9. Default Subject:自定义邮件通知默认专题名称。该选项能在邮件专题字段中替换部分参数,这么你就能够在构建中包含指定输出信息。10. Maximum Attachment Size:邮件最大附件大小。11. Default Content:自定义邮件通知默认内容主体。该选项能在邮件内容中替换部分参数,这么你就能够在构建中包含指定输出信息。12. Default Pre-send Script:默认发送前实施脚本(注:grooy脚本,这是我在某篇文章上看到,不一定正确)。13. Enable Debug Mode:启用插件调试模式。这将增加额外日志输出,构建日
22、志和Jenkins日志。在调试时是有用,但不能用于生产。14. Enable Security:启用时,会禁用发送脚本能力,直接进入Jenkins实例。假如用户试图访问Jenkins管理对象实例,将抛出一个安全异常。15. Content Token Reference:邮件中能够使用变量,全部变量全部是可选。2、项目配置1)要想在一个项目中使用email-ext插件,你首先必需在项目配置页激活它。在构建后操作”AddPost-buildActions”选项中勾选”EditableEmailNotification”标签。以下图:项目基础配置参数说明:当插件激活后你就能编辑以下字段(只列出常见
23、字段): Project Recipient List:这是一个以逗号(或空格)分隔收件人邮件邮箱地址列表。许可您为每封邮件指定单独列表。Ps:假如你想在默认收件人基础上添加收件人:$DEFAULT_RECIPIENTS, Default Subject:许可你配置此项目邮件专题。 Default Content:跟Default Subject作用一样,不过是替换邮件内容。 Attach Build Log:附件构建日志。 Compress Build Log before sending:发送前压缩生成日志(zip格式)。2)点击高级,设置触发器:(注意:全部触发器全部只能配置一次)触发器
24、参数说明:Failure:即时发送构建失败邮件。假如”Still Failing”触发器已配置,而上一次构建状态是”Failure”,那么”Still Failing”触发器将发送一封邮件来替换(它)。Unstable:即时发送构建不稳固邮件。假如”Still Unstable”触发器已配置,而上一次构建状态是”Unstable”,那么”Still Unstable”触发器将发送一封邮件来替换(它)。Still Failing:假如两次或两次以上连续构建状态为”Failure”,发送该邮件。Success:假如构建状态为”Successful”发送邮件。假如”Fixed”已配置,而上次构建状态
25、为“Failure”或“Unstable”,那么”Fixed”触发器将发送一封邮件来替换(它)。Fixed:当构建状态从“Failure”或“Unstable”变为”Successful”时发送邮件。Still Unstable:假如两次或两次以上连续构建状态为” Unstable “,发送该邮件。Before Build:当构建开始时发送邮件。对于内容,你可能注意到了 这里调用了个 html.jelly 模板,这是插件内置,直接用即可。当然也能够自己写 jelly文件, 确保放置 jenkins/home/email-template下 以供jenkins调用。 $ENV, var=JOB_
26、NAME-第$BUILD_NUMBER次构建日志 (本邮件是程序自动下发,请勿回复!) 构建结果 - $BUILD_STATUS 构建信息 项目名称 : $PROJECT_NAME 构建编号 : 第$BUILD_NUMBER次构建 SVN 版本: $SVN_REVISION 触发原因: $CAUSE 构建日志: $BUILD_URLconsole 构建 Url : $BUILD_URL 工作目录 : $PROJECT_URLws 项目 &nbs
27、p;Url : $PROJECT_URL Changes Since Last Successful Build: 历史变更统计 : $PROJECT_URLchanges $CHANGES_SINCE_LAST_SUCCESS,reverse=true, format=Changes for Build #%n:%c,showPaths=true,changesFormat=%a%m,pathFormat= %p Failed Test Results $FAILED_TESTS 构建日志 (最终 100行): !- Test
28、 Logs (if test has ran): $PROJECT_URL/ws/TestResult/archive_logs/Log-Build-$BUILD_NUMBER.zip - $BUILD_LOG, maxLines=100 4.4.10. 用户权限配置1、安装用户管理插件Role-based Authorization Strategy2、配置用户登录才能够操作 系统管理-Configure Global Security 2、项目矩阵授权策略 4.5. 安装sonarQube4.5.1. 版本说明 目前最新版本6.44.5.2. 下载安装包 ,目前版本是6.4。解压后上传到服
29、务器对应位置,如:/opt/目录下4.5.3. 安装汉字包 下载对应版本汉字包, 本例子使用sonar-l10n-zh-plugin-1.16版本,将语言包放在/extensions/plugins/下,重启即可。4.5.4. 创建数据库create database sonar character set utf8 collate utf8_general_ci;create user sonar identified by sonar;grantallonsonar .*tosonar ;flushprivileges;4.5.5. 修改配置文件修改config下sonar.conf文件,
30、数据库连接信息、https设置等1、数据库连接mysqlsonar.jdbc.username=sonarsonar.jdbc.password=sonarsonar.jdbc.url=jdbc:mysql:/localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false 2、端口sonar.web.port=9000 3、设置登录账号密码sonar.web.port=9000 4、配置环境变量 #vi
31、 /etc/profile 添加 export SONAR_HOME=/opt/sonarqube-6.4 #source /etc/profile4.5.6. 服务开启停止1、进入sonar bin目录如bin/linux-x86-64,运行以下命令: ./sonar.sh restart 重启服务2、其它常见命令以下: ./sonar.sh stop停止服务 ./sonar.sh start开启服务 3、设置随机开启。 4.5.7. 测试第一次开启会比较慢,需要初始化数据库数据http:/IP:9000 admin/admin4.6. 安装SonarQube Scanner4.6.1. 版
32、本说明sonar-scanner-cli-3.0.3.778-linux.zip4.6.2. 下载安装包解压后上传到/opt目录下。4.6.3. 配置scanner见conf目录下sonar-scanner.properties文件。默认是连接当地sonar服务。4.6.4. Jenkins配置Scanner1)系统管理-Global Tool Configuration-SonarQube Scanner4.6.5. 安装sonarQube插件1、 在Jenkins插件管理中添加SonarQube Scanner for Jenkins,点击安装即可。2、 配置sonarQube 1)系统管
33、理-系统设置 分别输入sonarQube名称、服务器URL、服务器认证令牌(见下面生成令牌方法)。 获取令牌方法登录sonarQube,菜单配置权限用户TOKENSGenerate 生成token,将 生成token添加到此处,完成添加 5. 创建项目5.1. 项目基础情况5.2. 源码管理 在Credentials点击Add,创建SVN连接账号 5.3. 构建触发器触发器说明备注构建一个SNAPSHOT依靠关系构建当job依靠快照版本被build时,实施本job触发远程结构Build after other projects are built当本job依靠job被build时,实施本job
34、Build periodically隔一段时间build一次,不管版本库代码是否发生改变,通常不会采取此种方法。比如:示例:H 8 * * 1-5星期一到星期五8点定时实施构建。第一个参数代表是分钟 minute,取值 059;第二个参数代表是小时 hour,取值 023;第三个参数代表是天 day,取值 131;第四个参数代表是月 month,取值 112;最终一个参数代表是星期 week,取值 07,0 和 7 全部是表示星期天。所以 0 * * * * 表示就是每个小时第 0 分钟实施一次构建。Poll SCM依据SCM软件版本号,定时检验源码变更。假如有更新,则checkout最新co
35、de,然后实施构建动作。不然,不进行build,通常采取这种方法示例:H/5 * * * *每五分钟去检验一下远程仓库,看代码是否发生改变。5.4. 构建环境配置5.5. 配置sonarQube 1、构建环境配置 2、配置sonar Analysis properties # Root project information#每一个项目key必需不相同sonar.projectKey=console#显示在sonar上名字sonar.projectName=console#项目标版本sonar.projectVersion=1.0sonar.sourceEncoding=UTF-8sonar.language=java# Some properties that will be inherited by the modules#sonar.sources=srcsonar.sources=.#- Default directory layoutsonar.java.source=1.8sonar.java.target=1.