文档章节

maven集成docker和sonar

HeartArea
 HeartArea
发布于 2016/07/15 13:36
字数 1521
阅读 78
收藏 2
点赞 1
评论 0

#利用maven与bamboo实现应用实时构建和代码检查

背景介绍:

    虽然近年来云计算的火热发展给DevOps带来了一段小高潮,然而这并不是适合所有的应用场景。在实际的项目开发过程中,可能因为组织结构不同、团队文化差异、资源配置不足等因素导致每个团队面临的问题都不尽相同。我们团队目前都是小team集中式开发,并行密集、开发周期短、迭代速度快,开发、测试乃至客户演示更加频繁,那么我们就是要以解决问题为根本出发点,提升团队工作效率,减少人工参与次数,降低出错的可能性,实现开发和测试之间平滑过度,使程序随时可变随时可见。 ## 思路简介:     本文基于东网云平台内部自建的Bamboo自动化构建平台完成各项任务的编辑、调度和执行;利用maven来作为项目管理工具,集成tomcat、sonar和docker插件等完成具体任务。 ## 正文:

Bamboo的简介和使用说明(熟练工请略过)

  • Bamboo简介

    Bamboo是Atlassian公司一款持续集成构建服务器软件。 Bamboo用户界面简单,容易安装;自动检测本机环境变量设置;能够监测构建日志。

  • Bamboo使用示例(发布到tomcat)


  1. 创建一个任务

  2. 填写项目信息

  3. 关联代码源

  4. 添加构建任务

  5. 部署到Tomcat

  6. 重启Tomcat

    一个小例子就介绍到这里,其实bamboo功能还是很强大的,提供很多任务类型,我刚刚演示的maven只是其中一种。大家有兴趣的可以自己在使用的过程慢慢深入了解。

利用maven-docker构建最新的应用环境

阅读这一节假设您已经对docker有一定了解和实践,本节只介绍如何通过maven-docker插件实现镜像生成、上传和应用。maven-docker插件的原理实际上利用项目中pom.xml文件中的xml配置生成dockefile文件,然后在项目构建的过程中基于本地或者远端docker服务生成docker镜像,并推送到pom.xml中事先指定好的镜像仓库服务器上。这样一来只要代码仓库有变化,Bamboo就会执行事先定义好的构建任务生成最新的镜像并推送到云端,这样就随时可以通过一个docker命令启动一个完整的服务,用以内部测试、演示,甚至试用。

各服务之间的结构如下:

  • 安装、启动docker服务并开启远程访问

快速安装,借个道。

curl -sSL https://get.daocloud.io/docker | sh

开启远程服务

1.编辑/lib/systemd/system/docker.service修改DOCKER_OPTS 2.绑定host、指定私有registry(可选)、指定mtu

ExecStart=/usr/bin/docker daemon -H unix:///var/run/docker.sock -H 0.0.0.0:4243 --insecure-registry=10.20.0.215  --mtu 1400

3.重启docker服务

```
service  docker restart
```
  • docker配置本地maven-docker参数

1.将docker服务注入到构建服务器

```
export DOCKER_HOST=tcp://A:4243
```

2.配置私有镜像仓库B的授权信息

在maven的本地配置文件settings.xml中根节点下增加如下配置: 这个文件一般会放在~/.m2或者$MAVEN_HOME/conf目录下。

<servers>
  <server>
    <id>docker-hub</id>
    <username>heartarea</username>
    <password>xxxxxxx</password>
    <configuration>
      <email>ding_cuiping@163.com</email>
    </configuration>
  </server>
</servers>
  • 在pom.xml中增加docker-plugin
<plugin>
	<groupId>com.spotify</groupId>
	<artifactId>docker-maven-plugin</artifactId>
	<version>0.4.3</version> 
	<configuration>
		<baseImage>java</baseImage>
	  	<baseImage>tomcat</baseImage>
     	<maintainer>Frank Ting</maintainer>
 		<imageName>heartarea/ruma:latest</imageName>
     	<exposes>
  	       <expose>8080</expose>      
  		</exposes>
     	<serverId>docker-hub</serverId>
		<registryUrl>http://B:5000/v1/</registryUrl>
	   <resources>
	       <resource>
	       	<targetPath>/var/lib/tomcat7/webapps</targetPath>
           <directory>target</directory>
           <include>demo-web.war</include>
	       </resource>
	   </resources>
	</configuration>
</plugin>
  • 构建命令如下
mvn clean package docker:build -DpushImage

该命令会生成项目最新镜像并切推送到指定的私有仓库中,如果有需要只需将镜像down到本地启动即可。 至此docker-maven插件配置和使用就完成了。 


利用maven-sonar执行代码检查计划

阅读本节假设您已经搭建好了sonar,如果是第一次接触sonar请移步sonar教程

  • sonar简介 Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量 通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十几种编程语言的代码质量管理与检测。 SonarQube服务架构
  • maven-sonar配置 指定分析结果存储数据库的连接信息
<?xml version="1.0" encoding="UTF-8"?>
<settings>
    <pluginGroups>
        <pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
    </pluginGroups>
    <profiles>
        <profile>
            <id>sonar</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <sonar.jdbc.url>jdbc:postgresql://x.x.x.x:5432/sonar</sonar.jdbc.url>  
                <sonar.jdbc.driver>org.postgresql.Driver</sonar.jdbc.driver>  
                <sonar.jdbc.username>postgres</sonar.jdbc.username>  
                <sonar.jdbc.password></sonar.jdbc.password>  
                <sonar.host.url>http://10.20.0.171:9000</sonar.host.url>  
            </properties>
        </profile>
     </profiles>
</settings>

在此提醒一点,maven-sonar-plugin的会将分析完结果插入sonar指定的数据库中,所以在此需要保证数据库可以外网访问。postgresql为例:

a.更改postgressql.conf

listen_addresses = '*' 

b.更改 pg_hba.conf 

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
host    all             all             0.0.0.0/0               trust
  • 执行代码分析
mvn clean verify sonar:sonar

以上命令如果出现如下错误:

Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.0.1:sonar

那么需要指定sonar-maven的包名和版本号,如下:

mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.0.1:sonar

重要提示: 如果执行服务器时间和本地不一致同样会报错,很奇葩的。如果没有问题上面那个命令将会执行很长时间,足够上个厕所喝杯☕️了。

  • 结果查看 看起来很多问题,慢慢分析吧。

总结

这篇文章是根据实际工作总结出来的入门教程类文章,所以在框架选型上更多地选择现有的环境。可能很多读者会觉的有更优秀的方案,比如构建引擎Bamboo完全可以用开源的Jenkins来替代;另外sonar怎么分析,如何帮助程序员提高代码质量,我们涉及的还很浅。因自身功力有限,文章不免有偏颇之处,请大家多提点。

© 著作权归作者所有

共有 人打赏支持
HeartArea
粉丝 26
博文 7
码字总数 3006
作品 0
丰台
程序员
七年的资深架构师告诉你成为架构师的知识体系

架构师是一个充满挑战的职业,知识面的宽窄往往决定着一个架构师的架构能力 知识面的宽广对于一名出色的架构师来说是必不可少的技能,也许很多人对架构的理解还停留在设计模式,重构,SOA等等...

禁区铁铍人
2017/12/17
0
0
gitlab+jenkins+maven+docker持续集成(十一)——sonarqube及sonarscanner代码审查

Sonar是一个用于代码质量管理的开源平台,用于管理Java源代码的质 量。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具,比如pmd-cpd、checkstyle、 findbugs...

jackjiaxiong
2017/09/25
0
0
使用Docker构建Sonar代码质量管理平台

Sonar是什么 Sonar是一个用于代码质量管理的开源平台,用于管理Java源代码的质量。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具,比如pmd-cpd、checkstyle、...

12叔
2016/07/25
962
1
Sonar Maven/IDEA集成

前言:在上一篇(SonarQube安装步骤)的基础上,我们来集成maven/IDEA 1.首先是集成maven(maven的安装配置就不多说了) 找到maven安装目录下-conf文件夹-setting.xml文件 然后添加以下配置信...

张艺兴女朋友
07/16
0
0
Sonar Maven/IDEA集成

前言:在上一篇(SonarQube安装步骤)的基础上,我们来集成maven/IDEA 1.首先是集成maven(maven的安装配置就不多说了) 找到maven安装目录下-conf文件夹-setting.xml文件 然后添加以下配置信...

张艺兴gf
07/17
0
0
代码质量管理的开源平台Sonar QQ群522720170

点击链接加入QQ群 522720170(免费公开课、视频应有尽有):https://jq.qq.com/?wv=1027&k=5C08ATe 介绍 Sonar是一个用于代码质量管理的开源平台,用于管理Java源代码的质量。通过插件机制,...

小强测试帮
05/09
0
0
代码质量管理的开源平台Sonar

点击链接加入QQ群 522720170(免费公开课、视频应有尽有):https://jq.qq.com/?wv=1027&k=5C08ATe 介绍 Sonar是一个用于代码质量管理的开源平台,用于管理Java源代码的质量。通过插件机制,...

小强测试帮
05/17
0
0
Jenkins与Sonar4.1集成问题解决

最近做Jenkins与Sonar的集成,因为不想在Maven中增加配置,所以直接使用Sonar Runner进行代码分析,但是在完成集成配置后,在Jenkins中做构建的时候最后在提交Sonar分析的位置报错,异常如下...

一堆BUG
2014/02/10
0
0
测试框架:使用SONAR分析代码质量

介绍 Sonar是一个用于代码质量管理的开源平台,用于管理Java源代码的质量。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具,比如pmd-cpd、checkstyle、findb...

开源中国成都区源花
06/13
0
0
Dockerizing Jenkins 2, Part 1: Declarative Build Pipeline With SonarQube Analysis

In this article, I am going to demonstrate: Running Jenkins on Docker. Automation of Jenkins plugin installation on Docker. Configuring Java and Maven tools on Jenkins, first ma......

Kayan Azimov
2017/12/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

SpringBoot | 第十章:Swagger2的集成和使用

前言 前一章节介绍了mybatisPlus的集成和简单使用,本章节开始接着上一章节的用户表,进行Swagger2的集成。现在都奉行前后端分离开发和微服务大行其道,分微服务及前后端分离后,前后端开发的...

oKong
今天
5
0
Python 最小二乘法 拟合 二次曲线

Python 二次拟合 随机生成数据,并且加上噪声干扰 构造需要拟合的函数形式,使用最小二乘法进行拟合 输出拟合后的参数 将拟合后的函数与原始数据绘图后进行对比 import numpy as npimport...

阿豪boy
今天
1
0
云拿 无人便利店

附近(上海市-航南路)开了家无人便利店.特意进去体验了一下.下面把自己看到的跟大家分享下. 经得现场工作人员同意后拍了几张照片.从外面看是这样.店门口的指导里强调:不要一次扫码多个人进入....

周翔
昨天
1
0
Java设计模式学习之工厂模式

在Java(或者叫做面向对象语言)的世界中,工厂模式被广泛应用于项目中,也许你并没有听说过,不过也许你已经在使用了。 简单来说,工厂模式的出现源于增加程序序的可扩展性,降低耦合度。之...

路小磊
昨天
165
1
npm profile 新功能介绍

转载地址 npm profile 新功能介绍 npm新版本新推来一个功能,npm profile,这个可以更改自己简介信息的命令,以后可以不用去登录网站来修改自己的简介了 具体的这个功能的支持大概是在6这个版...

durban
昨天
1
0
Serial2Ethernet Bi-redirection

Serial Tool Serial Tool is a utility for developing serial communications, custom protocols or device testing. You can set up bytes to send accordingly to your protocol and save......

zungyiu
昨天
1
0
python里求解物理学上的双弹簧质能系统

物理的模型如下: 在这个系统里有两个物体,它们的质量分别是m1和m2,被两个弹簧连接在一起,伸缩系统为k1和k2,左端固定。假定没有外力时,两个弹簧的长度为L1和L2。 由于两物体有重力,那么...

wangxuwei
昨天
0
0
apolloxlua 介绍

##项目介绍 apolloxlua 目前支持javascript到lua的翻译。可以在openresty和luajit里使用。这个工具分为两种模式, 一种是web模式,可以通过网页使用。另外一种是tool模式, 通常作为大规模翻...

钟元OSS
昨天
2
0
Mybatis入门

简介: 定义:Mybatis是一个支持普通SQL查询、存储过程和高级映射的持久层框架。 途径:MyBatis通过XML文件或者注解的形式配置映射,实现数据库查询。 特性:动态SQL语句。 文件结构:Mybat...

霍淇滨
昨天
2
0
开发技术瓶颈期,如何突破

前言 读书、学习的那些事情,以前我也陆续叨叨了不少,但总觉得 “学习方法” 就是一个永远在路上的话题。个人的能力、经验积累与习惯方法不尽相同,而且一篇文章甚至一本书都很难将学习方法...

_小迷糊
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部