(1)下载并安装配置Java Development Kit 8java
[root@localhost ~]# rpm -ivh jdk-8u161-linux-x64.rpm Preparing... ########################################### [100%] 1:jdk1.8 ########################################### [100%] Unpacking JAR files... tools.jar... plugin.jar... javaws.jar... deploy.jar... rt.jar... jsse.jar... charsets.jar... localedata.jar... [root@localhost ~]# vim /etc/profile 在最后添加如下信息 export JAVA_HOME=/usr/java/jdk1.8.0_161 export PATH=$PATH:$JAVA_HOME/bin [root@localhost ~]# . /etc/profile [root@localhost ~]# java -version java version "1.8.0_161" Java(TM) SE Runtime Environment (build 1.8.0_161-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)
(2)运行Jenkinsmysql
下载jenkins.war [root@localhost ~]# java -jar jenkins.war Running from: /root/jenkins.war webroot: $user.home/.jenkins Feb 28, 2018 4:07:11 PM Main deleteWinstoneTempContents WARNING: Failed to delete the temporary Winstone file /tmp/winstone/jenkins.war Feb 28, 2018 4:07:12 PM org.eclipse.jetty.util.log.Log initialized INFO: Logging initialized @586ms to org.eclipse.jetty.util.log.JavaUtilLog Feb 28, 2018 4:07:12 PM winstone.Logger logInternal INFO: Beginning extraction from war file ...... ...... ...... Jenkins initial setup is required. An admin user has been created and a password generated. Please use the following password to proceed to installation: 86edba508edf4d04859113d89a763f47 This may also be found at: /root/.jenkins/secrets/initialAdminPassword ************************************************************* ************************************************************* ************************************************************* Feb 28, 2018 4:07:45 PM hudson.model.UpdateSite updateData INFO: Obtained the latest update center data file for UpdateSource default Feb 28, 2018 4:07:47 PM hudson.model.DownloadService$Downloadable load INFO: Obtained the updated data file for hudson.tasks.Maven.MavenInstaller Feb 28, 2018 4:07:57 PM hudson.model.UpdateSite updateData INFO: Obtained the latest update center data file for UpdateSource default Feb 28, 2018 4:07:57 PM hudson.WebAppMain$3 run INFO: Jenkins is fully up and running Feb 28, 2018 4:08:01 PM hudson.model.DownloadService$Downloadable load INFO: Obtained the updated data file for hudson.tools.JDKInstaller Feb 28, 2018 4:08:01 PM hudson.model.AsyncPeriodicWork$1 run INFO: Finished Download metadata. 41,401 ms
(3)解锁Jenkins
用上面的那行密码解锁Jenkins后才能继续配置
linux
点击Continueweb
(4)安装插件(安装默认插件)
sql
(5)配置管理员帐户
数据库
(6)准备就绪
apache
(1)配置JDK
点击系统管理—>全局工具管理
vim
若是有多个应用程序,须要不一样的JDK版本,能够在这里添加多个JDK浏览器
(2)配置Maven
http://mirrors.hust.edu.cn/apache/maven/maven-3/3.5.2/binaries/安全
[root@localhost ~]# tar -zxvf apache-maven-3.5.2-bin.tar.gz [root@localhost ~]# mv apache-maven-3.5.2 /usr/local/maven3 设置环境变量,在/etc/profile中添加 export MAVEN_HOME=/usr/local/maven3 export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin [root@localhost ~]# source /etc/profile [root@localhost ~]# mvn -v Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T15:58:13+08:00) Maven home: /usr/local/maven3 Java version: 1.8.0_161, vendor: Oracle Corporation Java home: /usr/java/jdk1.8.0_161/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "2.6.32-573.el6.x86_64", arch: "amd64", family: "unix"
建立一个基于Maven的Jenkins构建做业,执行pom.xml文件进行编译、单元测试并建立一个包文件。
安装Maven项目插件:Maven Integration plugin
在Jenkins仪表盘单击开始新任务,选择Maven项目,点击“肯定”
package目标将编译源代码,执行单元测试用例,并在Java上下文建立一个包或war文件。
单击Apply和Save
点击当即构建
等待Maven的package目标在Jenkins中执行,将编译全部资源文件,执行用Junit编写的单元测试用例,并建立一个须要在Tomcat或JBoss上部署的WAR文件。
若是构建成功,咱们的目标就实现了,这就是持续集成。
报错处理:
解决:
查看pom.xml的配置路径是否有误,尽可能写绝对路径/root/.jenkins/workspace/PetClinic/pom.xml
要检查单元测试的执行状况,在项目仪表盘上点击Test Result(确保构建时是成功的)
场景:
一个Jenkins服务器做为主节点,另外一个Jenkins服务器(包含一些特定工具)做为代理,主节点能够访问在其余服务器上的可用资源,执行特定操做。
配置步骤以下:
系统管理—>管理节点
新建节点
这里须要注意的事,从节点中默认没有Launch agent via Java Web Start选项
解决:
系统管理—>全局安全配置—>"TCP port for JNLP agents"配置为随机—>Agent protocols
填写相关信息
先在上面的页面上下载agent.jar包,而后在代理服务器上执行上面的命令
确保执行所需的工具在主节点上已经配置,主节点能够使用这些安装组件执行做业
在项目配置中选择以下选项
在从节点配置中选择并添加如下内容
系统管理—>管理插件—>可选插件—>SonarQube插件
系统管理—>系统设置—>Add SonarQube
安装SonarQube [root@localhost ~]# mv sonarqube-7.0 /usr/local/sonarqube7 [root@localhost ~]# vim /etc/profile [root@localhost ~]# source /etc/profile 建立数据库 CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci; CREATE USER 'sonar' IDENTIFIED BY 'MY@)!*sql2018'; GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'MY@)!*sql2018'; GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'MY@)!*sql2018'; FLUSH PRIVILEGES; 修改配置文件 [root@localhost conf]# vim sonar.properties sonar.jdbc.username=sonar sonar.jdbc.password=MY@)!*sql2018 sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false sonar.web.host=0.0.0.0 sonar.web.context= sonar.web.port=8010 新版本加入了elasticsearch,须要普通用户运行,不然报错 [root@localhost logs]# groupadd elsearch [root@localhost logs]# useradd elsearch -g elsearch -p elasticsearch [root@localhost logs]# chown -R elsearch /usr/local/sonarqube7 [root@localhost logs]# chgrp -R elsearch /usr/local/sonarqube7 [root@localhost logs]# chown -R elsearch /usr/java/jdk1.8.0_161 [root@localhost logs]# chgrp -R elsearch /usr/java/jdk1.8.0_161 以新用户启动服务 [elsearch@localhost logs]$ /usr/local/sonarqube7/bin/linux-x86-64/sonar.sh start Starting SonarQube... Started SonarQube. 启动成功后在浏览器地址栏输入http://192.168.1.68:8010便可访问snoarQube. 缺省用户名和密码是 admin/admin
在SonarQube上获得身份验证令牌
系统管理—>全局工具配置—>配置SonarQube Scanner自动安装
安装Quality gate插件,经过配置该插件,能够在SonarQube分析失败时放弃Jenkins构建做业。
新建一个新的自由式做业PetClinic-Code并配置SonarQube
[root@localhost PetClinic]# ls /root/.jenkins/workspace/PetClinic/sonar-project.properties # Required metadata sonar.projectKey=java-sonar-runner-simple sonar.projectName=Simple Java project analyzed with the SonarQube Runner sonar.projectVersion=1.0 # Comma-separated paths to directories with sources (required) sonar.sources=src # Language sonar.language=java # Encoding of the source files sonar.sourceEncoding=UTF-8
点击当即构建,在SonarQube服务器仪表盘上查看代码分析。
这就是在Jenkins中集成SonarQube的方法。
系统管理—>系统设置
至此,Jenkins持续集成及代码分析已经部署完成。
补充:代码分析最后报错,有待解决