一、安装Jenkins

(1)下载并安装配置Java Development Kit 8

[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)运行Jenkins

下载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后才能继续配置

点击Continue

(4)安装插件(安装默认插件)



(5)配置管理员账户

(6)准备就绪



二、配置Jenkins

(1)配置JDK

点击系统管理—>全局工具管理

如果有多个应用程序,需要不同的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的JEE Web应用程序

创建一个基于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包,然后在代理服务器上执行上面的命令



确保执行所需的工具在主节点上已经配置,主节点可以使用这些安装组件执行作业

在项目配置中选择如下选项



在从节点配置中选择并添加以下内容

六、集成Jenkins和SonarQube

系统管理—>管理插件—>可选插件—>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持续集成及代码分析已经部署完成。

补充:代码分析最后报错,有待解决

DevOps实践之持续集成Jenkins(最新版本测试)的更多相关文章

  1. 这些年我们一起搞过的持续集成~Jenkins+Perl and Shell script

    这些年我们一起搞过的持续集成~Jenkins+Perl and Shell script ##转载注明出处:http://www.cnblogs.com/wade-xu/p/4378224.html ...

  2. 自动化持续集成Jenkins

    自动化持续集成Jenkins 使用Jenkins配置自动化构建http://blog.csdn.net/littlechang/article/details/8642149 Jenkins入门总结h ...

  3. 持续集成~Jenkins构建GitHub项目的实现

    有了前两讲的基础,这回我们就可以把github上的项目做到CI(jenkins)里了,让它自动去集成部署,持续集成~Jenkins里的NuGet和MSBuild插件,持续集成~Jenkins里的pow ...

  4. DevOps之持续集成Jenkins+Gitlab

    一.什么是DevOps DevOps(英文Development(开发)和Operations(技术运营)的组合)是一组过程.方法与系统的统称,DevOps是一组最佳实践强调(开发.运维.测试)在应用 ...

  5. [dotnet core]落地微服务特色的DevOps管道,持续集成/部署到kubernetes。

    目录 前言 目标 工具 - 最小的学习成本 方案 - 愿景 1. 持续集成 - CI 2. 持续部署 - CD 部署环境 1. 部署gitlab-runner 2. 注册gitlab-runner 搭 ...

  6. 微服务下的持续集成-Jenkins自动化部署GitHub项目

    @ 目录 一.前言 二.DevOps概念 三.为什么要做持续集成 四.常见云服务 五.手动部署Jenkins 5.1 准备工作 5.2 下载 5.3 启动 5.4 配置 5.5 Jenkins 首页 ...

  7. 一步一步构建iOS持续集成:Jenkins+GitLab+蒲公英+FTP

    什么是持续集成 持续集成是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成.每次集成都通过自动化的构建(包括编译,发布,自动化测试)来 ...

  8. 持续集成-jenkins介绍与环境搭建

    什么是持续集成? 转自:https://blog.csdn.net/tanshizhen119/article/details/80328523 持续集成,俗称CI, 大师Martin Fowler对 ...

  9. 敏捷持续集成(Jenkins)

    在前面已经完成git和gitlab的相关操作 1.持续集成的概念: 1. 什么是持续集成: 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可 ...

随机推荐

  1. 160608、mysql距离函数st_distance

    随着近几年各类移动终端的迅速普及,在手机移动定位app中,附近的人,附近的地点功能十分常见,基于地理位置的服务(LBS)和相关应用也越来越多,而支撑这些应用的最基础技术之一,就是基于地理位置信息的处理 ...

  2. KVM虚拟机添加硬盘

    1,创建硬盘 qemu-img create -f raw /opt/GlusterFS1_data.img 30G 硬盘名称为GlusterFS1_data.img 大小为30G 2,编辑虚拟机配置 ...

  3. 用于把List<Object>转换成Map<String,Object>形式

    /** * 用于把List<Object>转换成Map<String,Object>形式,便于存入缓存 * @author zhang_bo * @param keyName ...

  4. zipline自制data bundles

    Databundle zipline 缺省提供了一些行情的data bundle , 可以通过 zipline bundles 查看 其中 quandl 数据源是从 https://www.quand ...

  5. SqlServer SqlBulkCopy批量插入 -- 多张表同时插入(事务)

    这段时间在解决一个多个表需要同时插入大量数据的问题,于是在网上找了下,查到说用SqlBulkCopy效率很高,实验后确实很快,10万条数据只要4秒钟,用ef要用40秒.但是我的还需两张表同时插入,且需 ...

  6. openresty跑定时任务配置、ngx.timer.every接口使用

    openresty的定时任务是要跟worker绑定的.如果不绑定特定的worker,那么所有启动的woker都会去执行定时任务. 一般情况下默认绑定worker_id=0的,这样在nginx整个进程里 ...

  7. Redis应用案例,查找某个值的范围(转)

    原文:https://groups.google.com/forum/#!topic/redis-db/lrYbkbxfQiQ 本文来自Redis在Google Group上的一个问题,有一位同学发贴 ...

  8. linux下安装mysql(mariadb)

    yum安装软件(官网很慢) yum install mariadb 发现版本如下,版本特别低,且安装包特别小, mariadb x86_64 :-.el7_5 base 8.9 M .我们可以配置ma ...

  9. mytest3.py-api接入平台获取数据

    mytest3.py-api接入平台获取数据 import base64 import datetime import hashlib import urllib import urllib.pars ...

  10. (2.5)Mysql之SQL基础——数据类型

    (2.5)Mysql之SQL基础——数据类型 关键词:mysql数据类型 目录: 一.整数型 二.小数型(以下均不能使用无符号) 三.日期时间型 四.字符串型 一.整数型 额外参数示例: int [( ...