spring cloud微服务实践之每日构建

1、前言

Jenkins是一款基于java开发的持续集成工具,结合相关的工具可以运行相关的代码检测工具。在我们的实现项目中,我们使用的spring boot+spring cloud构建的项目,项目中为了规范代码的质量,我们引入了pmd、findbugs、checkstyle这3个静态代码检查工具。

2、安装Jenkins

Jenkins是使用java开发的,需要java运行环境才可以运行。Jenkins的提供了多种安装方式,包括了linux安装包、tomcat方式以及jar包运行的方式。个人较为习惯直接使用tomcat进行安装的方式,此外,如果有较多的项目需要进行构建,Jenkins还支持多节点的方式。由于项目组中的项目编译时间都比较短,因此没有部署集群的方式。对于软件的版本,并没有太多的要求,可以直接使用最新的版本即可。
为了规范,我们将所有的软件都安装在/data/program目录下。我们的服务器为centos7.4

2.1、安装java

安装java环境,具体的步骤如下

sudo tar vzxf jdk1.8.0_131.tar.gz -C /data/program/
sudo ln -s /data/program/jdk1.8.0_131 /data/program/jdk

配置环境参数,修改/etc/profile,在文件末尾添加如下的内容

export JAVA_HOME=/data/program/jdk
export PATH=$PATH:$JAVA_HOME/bin

修改之后重新登录或重新加载这个文件即可生效。

2.2、安装tomcat

由于使用的是tomcat的方式,而且在服务器端只有这个单独的服务,直接将下载的war包解压到tomcat的ROOT目录下。具体操作如下:

sudo su
tar vzxf apache-tomcat-8.5.31.tar.gz -C /data/program/
ln -s /data/program/apache-tomcat-8.5.31/ /data/program/tomcat
useradd -d /data/home/www -s /sbin/nologin www
rm -rf /data/program/apache-tomcat-8.5.31/webapps/* 
mkdir -m 750 /data/program/apache-tomcat-8.5.31/webapps/ROOT
unzip jenkins.war -d /data/program/apache-tomcat-8.5.31/webapps/ROOT/
chown -R www.www /data/program/apache-tomcat-8.5.31/

执行如下命令之后,可以配置相关的配置参数信息,指定jenkins的工作目录,修改/data/program/apache-tomcat-8.5.31/bin/catalina.sh文件,在最开始的地方加入如下的配置。

JAVA_HOME=/data/program/jdk
JAVA_OPTS="-server -Djava.security.egd=file:/dev/./urandom -Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF-8"
#jenkins的工作目录
export JENKINS_HOME="/data/program/tomcat/webapps/ROOT/data"

2.3、安装maven

我们的项目都是使用maven进行构建的,下载之后配置如下。需要注意目录的权限,否则下载jar时会因为权限问题导致构建失败

sudo tar vzxf apache-maven-3.5.3-bin.tar.gz -C /data/program/
sudo mkdir /data/program/apache-maven-3.5.3/package
chown -R www.www /data/program/apache-maven-3.5.3/

修改/data/program/apache-maven-3.5.3/conf/settings.xml文件,变更下载的jar存放路径,在根结点下增加如下结点

<localRepository>/data/program/apache-maven-3.5.3/package</localRepository>

在<mirrors>结点下新增如下的镜像结点

<mirror>
    <id>alimaven</id>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>
</mirror>
<mirror>
    <id>repo2</id>
    <mirrorOf>central</mirrorOf>
    <name>Human Readable Name for this Mirror.</name>
    <url>http://repo2.maven.org/maven2/</url>
</mirror>
<mirror>
    <id>central</id>
    <name>Maven Repository Switchboard</name>
    <url>http://repo1.maven.org/maven2/</url>
    <mirrorOf>central</mirrorOf>
</mirror>

<mirror>
    <id>jboss-public-repository-group</id>
    <mirrorOf>central</mirrorOf>
    <name>JBoss Public Repository Group</name>
    <url>http://repository.jboss.org/nexus/content/groups/public</url>
</mirror>

其他相关配置可以查看网上的教程。配置之后,新增相关的环境参数,修改/etc/profile文件,增加如下配置,配置之后如下

JAVA_HOME=/data/program/jdk
MAVEN_HOME=/data/program/apache-maven-3.5.3
PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
export JAVA_HOME JRE_HOME PATH MAVEN_HOME

2.4、其他

由于我们使用git管理项目,还需要在系统中按照git软件,命令如下:

sudo yum install -y git

有可能需要关闭防火墙,或者开启防火墙规则

systemctl stop firewalld
systemctl disable firewalld

3、配置jenkins

启动jenkins之后,为了便于使用,需要再安装一些插件。

3.1、启动jenkins

通过上述的前提操作,可以直接启动jenkins所在的tomcat,启动程序

sudo -u www /data/program/apache-tomcat-8.5.31/bin/startup.sh

tomcat启动之后,通过http://ip:8080可以访问到jenkins。

初始登录文件

按要求输入密码之后,因为无法直接更新插件信息,直接关闭安装插件的窗口,后续进行手动安装。初始界面如下
登录主页

3.2、安装插件

进入“系统管理-管理插件-可选插件”,点击底部的“立即获取”按钮,更新列表,安装如下的插件

  • Git : This plugin integrates Git with Jenkins. ## 版本管理git插件
  • Maven Integration : This plug-in provides, for better and for worse, a deep integration of Jenkins and Maven: Automatic triggers between projects depending on SNAPSHOTs, automated configuration of various Jenkins publishers (Junit, ...).## 项目构建 Maven 的插件
  • FindBugs : This plug-in generates the trend report for FindBugs, an open source program which uses static analysis to look for bugs in Java code. ## 静态代码检查工具FindBugs插件
  • PMD : This plug-in generates the trend report for PMD, an open source static code analysis program. ## 静态代码检查工具PMD插件
  • Checkstyle : This plug-in generates the trend report for Checkstyle, an open source static code analysis program. ## 静态代码检查工具checkstyle插件
  • Static Analysis Collector : This plug-in is an add-on for the plug-ins Checkstyle, Dry, FindBugs, PMD, Tasks, and Warnings: the plug-in collects the different analysis results and shows the results in a combined trend graph. Additionally, the plug-in provides health reporting and build stability based on these combined results. ## 静态代码检测结果汇集工具
  • Role-based Authorization Strategy : 用户权限管理插件
  • Email Extension : This plugin is a replacement for Jenkins's email publisher. It allows to configure every aspect of email notifications: when an email is sent, who should receive it and what the email says ## 邮件扩展插件
  • Email Extension Template :This plugin allows administrators to create global templates for the Extended Email Publisher

插件安装成功界面如下

插件安装成功

插件安装成功之后,进入 系统管理-全局工具配置 。在该页面配置相关的环境信息,包括Maven Configuration、JDK、Maven这些配置参数信息。
插件安装过程中,如果网络较慢,可以进入“系统管理-插件管理-高级”页面的升级站点修改URL信息。例如将原配置信息修改为:http://mirror.esuni.jp/jenkins/updates/update-center.json
也可以自行上镜像地址查询:
http://mirrors.jenkins-ci.org/status.html

3.3、创建新任务

进入 主页-新建任务 页面,填写任务名创建一个maven项目。使用我在github上面的一个单元测试的样例代码。
创建新任务

为了防止占用过多的空间,保存最近5次构建数据,并填写项目的简单描述。
任务通用信息

填写一个源码信息,并增加git的项目帐号信息以及分支信息。由于github上面的项目拉取时不需要账号信息,因此没有进行没有。对于需要账号信息才能进行源码拉取的,需要点击Credentials处的Add-jenkins按钮,并填写密码信息,填写完毕之后,在下拉框中进行选择。
源码管理

增加构建触发器,目前我们主要使用的是定时构建,具体的规则可以查看提示的定义。较为常用的是定时构建以及轮询SCM。
构建触发

由于项目中包含多个工程,本次的配置主要还是为了编译其中的一个子项目,因此需要指定具体的pom文件的存放路径,默认是在根目录下。配置编译参数,具体的如下图,maven的编译参数如下clean package findbugs:findbugs checkstyle:checkstyle pmd:pmd。
构建参数配置

此外,在构建设置中要开启findbugs、checkstyle以及pmd。
构建设置

为了配合findbugs、checkstyle以及pmd,需要配合项目的pom.xml文件进行配置,增加如下的配置

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <version>3.0.0</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-pmd-plugin</artifactId>
                <version>3.7</version>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>findbugs-maven-plugin</artifactId>
                <version>3.0.4</version>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
    <reporting>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jxr-plugin</artifactId>
                <version>2.5</version>
            </plugin>
        </plugins>
    </reporting>

创建成功之后点击立即创建,即可立刻编译项目。

为了后续便于结果信息的汇总,我们安装了Static Analysis Collector插件,因此,配置构建后操作项中,我们增加了该动作,具体如下图
构建后操作

建议在使用的过程中自定义checkstyle文件,否则有一些不合理的代码校验。手动进行构建,成功之后的截图如下
构建结果

至此,简单的构建环境已经搭建完毕,对于后续的其他功能,例如结果发送和权限控制,再进行后续补充

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,907评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,987评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,298评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,586评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,633评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,488评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,275评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,176评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,619评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,819评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,932评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,655评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,265评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,871评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,994评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,095评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,884评论 2 354

推荐阅读更多精彩内容