Jenkins的启动方法有两种:

第一种是使用tomcat直接打开,就是把jenkins.war放入tomcat下的  webapps目录下,当启动jenkins时,就会自动在webapps下建立jenkins目录。然后再浏览器的地址栏输入http://localhost:8080/jenkins
另一种方法要确保系统中安装了jdk,并且配置了环境变量,检测方法就是在命令行输入java回车后有多行的命令符提示。直接在命令行输入java -jar jenkins.war即可启动jenkins,默认会运行在8080端口,切换到浏览器的地址栏输入http;//localhots:8080,localhost可以改成ip地址。
需要注意的是:1.Job名称千万不要用中文名称2.创建Job名称时最好有个规划,因为我们最后会通过正则匹配自动将Job归类,例如, “项目前缀_一些说明-Job类型”这种方式。
分级符号概述了一个Job新近一次构建会产生的四种可能的状态: Successful:完成构建,且被认为是稳定的。Unstable:完成构建,但被认为不稳定。Failed:构建失败。Disabled:构建已禁用。注释 : jenkins启动方式:
首先,进入 .jenkins 目录(比如/home/jenkins/.jenkins)。先备份 config.xml 为 config.xml.bak,而后打开 config.xml 配置文件,修改“<useSecurity>true</useSecurity>”为“<useSecurity>false</useSecurity>”;同时把“<authorizationStrategy ...>...</authorizationStrategy>”配置删除。重启之后我们会发现 Jenkins 已经无需登录了。然后,直接找到“系统管理”的“管理用户”菜单,把管理员的密码改回来!然后,用之前备份的 config.xml.bak 文件覆盖 config.xml 配置文件。再次重启 Jenkins,终于发现管理员又可以正常登录了。
方法一  
java -jar /app/jenkins/jenkins.war --daemon --httpPort=7000 --logfile=/app/jenkins/jenkins.log
关闭CTRL +C
方法二: linux定时任务启动后,关闭定时任务
方法三: 启动和关闭均 写成脚本
方法四:放入tomcat服务器中运行Jenkins

高级使用

  • Jenkis增加参数构建
http://www.2cto.com/os/201502/377054.html
http://www.cnblogs.com/meitian/p/5492457.html
  • 获取Jenkins project build结果
应用场景: 集中管理多个 Jenkins job的执行结果啊
获取最近一次结果: curl http://your_jenkins/job/your_job/lastBuild/api/xml --user your_user_name:your_pwd  
例如:http://localhost/jenkins/job/<jobName>/lastBuild/api/xml
______________________________________________________________________________________

1. Jenkins不同job之间依赖关系的两种配置方式

参考:http://blog.csdn.net/itfootball/article/details/45060007
执行job A后, 执行JOB B
方法一: job B中配置(下游配置)
方法二: job A中配置(上游配置)

2. Jenkins不同job之间传递参数

需要插件:Parameterized Trigger Plugin插件
上游job A配置:
下游 JOB B:

3. Job中如何传递自定义变量

http://www.cnblogs.com/junneyang/p/5239480.html

4. 多个job之间的串并联

http://www.cnblogs.com/luodengxiong/p/5535218.html

5. shell脚本实现部署

自己写Shell脚本来停止容器、更新Web应用、然后再启动容器,其实,如果你懂点Shell,这种方法非常简单,而且这种方法非常稳定,因为每次直接杀JVM进程,直接避免了内存溢出的问题
http://blog.csdn.net/neutrojan/article/details/41854883

6. testng接入jenkins自动运行

http://blog.sina.com.cn/s/blog_68f262210102vx8o.html

7. 根据git仓库的变化来构建编译部署代码(配置触发器)

注意:

验证jenkins如何自动构建:

修改下本地git仓库的代码,commit 并push 到远程仓库, 等2分钟的样子,jenkins便会自动构建

在构建触发器下,设置构建频率和构建时间。
    Build periodically:周期进行项目构建(它不care源码是否发生变化),例如H 9-16/2 * * 1-5(周一到周五每两个小时构建一次)
  Poll SCM:定时检查源码变更(根据SCM软件的版本号),如果有更新就checkout最新code下来,然后执行构建动作。例如H/15 * * * * (每15分钟检查一次源码变化)您可以指定一个定时作业表达式来定义Jenkins每隔多久检查一下您源代码仓库的变化。如果发现变化,就执行一次构建。例如,表达式中填写0,15,30,45 * * * *将使Jenkins每隔15分钟就检查一次您源码仓库的变化。
在"构建触发器"中选择"Build when a change is pushed to GitHub "和"Poll SCM ",这两项的作用分别是当GitHub有版本库更新时触发Jenkins进行构建和定期检查版本库是否有更新,如果有更新则触发Jenkins进行构建。这里要注意Schedule语法,例如"*/2 * * * *"表示每隔2分钟检查一次。
注释:
jenkins定时任务参考:
H 3 * *  1-5(每周一到周五,3点钟)
H/15 * * * * (每15分钟)
H/3 * * * 1-5(每周一到周五,每3分钟执行执行一次)
20 3 * * *(每天早晨三点二十分执行)
10,40 * * * *(每小时的10分,40分执行)
00 15 * * 1,3,5(每周一,三,五的下午3:00)
5,15,25,35,45,55 16,17,18 * * *(每天的下午4点、5点、6点的5 min、15 min、25 min、35 min、45 min、55 min时执行)
H */2 * * *(每两个小时)
0 7-23/2,8 * * *(晚上11点到早上8点之间每两个小时和早上八点 )
0 11 4 * 1-3(每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点)
0 4 1 1 *(1月1日早上4点)
H *  *  */2  *(没两周执行)

linux定时任务参考:
http://www.net130.com/CMS/Pub/special/special_IT_operation/2013_04_28_12184.htm
http://blog.csdn.net/hi_kevin/article/details/8983746
8. 构建与部署配置
构建工具 使用 备注
ant Invoke Ant,Ant Version选择你Ant配置的那个名字,
注意不要选择default,那个选择了没有用。

Ps:如果你的构建脚本build.xml不在workspace根目录、或者说你的构建脚本不叫build.xml。那么需要在高级里设置Build File选项的路径,指明你的脚本。注意:是相对路径

例如
maven

新建一个Maven工程后,需要设置以下条目:

  1. 设置svn代码的下载路径
  2. 设置自动构造的日期
  3. 设置pom文件的路径
  4. 设置mvn命令的参数
  5. 设置post-build的动作

具体:

http://www.uml.org.cn/jchgj/201510221.asp

 
部署war包到tomcat 1)Deploy to container Plugin”
2)

在tomcat的conf目录配置tomcat-users.xml文件,在<tomcat-users>节点里添加如下内容:

<role rolename="manager-gui"/>

<role rolename="manager-script"/>

<role rolename="manager-jmx"/>

<role rolename="manager-status"/>

<user username="username" password="password" roles="manager-gui,manager-script,manager-jmx,manager-status"/>

引号里的username和password可以随便替换,待会要用的。

3) 选择Add post-build action,然后选择Deploy war/ear to a container

WAR/EAR files:war文件的存放位置,如:target/test.war

注意:相对路径,target前是没有/的。

Context path:访问时需要输入的内容,如ofCard访问时如下:http://192.168.x.x:8080/ofCard/如果为空,默认是war包的名字。

Container:选择你的web容器,如tomca 6.x

Manager user name:填入tomcat-users.xml配置的username内容

Manager password:填入tomcat-users.xml配置的password内容

Tomcat URL:填入http://192.168.x.x:8080/

Deploy on failure:构建失败依然部署,一般不选择

注意:虽然这种部署方法可能会导致tomcat加载时出现卡死的现象。但是也是最简单的部署方式。如果卡死了重启下就好了,将tomcat的java内存参数调高可以解决这个问题。

 
节点配置 Jenkins有个很强大的功能:分布式构建(在Jenkins的配置中叫做节点),分布式构建能够让同一套代码在不同的环境(如:Windows和Linux系统)中编译、测试等。而且Jenkins构建的代码和产物最后自动拷贝到主节点。

建议:所有Unix或者Windows机器的环境路径统一(如:JDK、Ant、Maven)

进入节点配置界面:

系统管理→管理节点→新建节点(左上角)

具体:

http://blog.csdn.net/wangmuming/article/details/22925961
并发测试;
http://blog.csdn.net/Danny_Yao/article/details/45826005

 
jetty http://www.cnblogs.com/daoxingsi/p/5362971.html
http://blog.csdn.net/jeremy_yangt/article/details/47105539
http://my.oschina.net/ozy/blog/532745
 
jenkins磁盘管理插件disk-usage plugin http://blog.csdn.net/testdeveloper/article/details/51734860  
     

9. 插件

插件用途 配置

配置emalil

搜索email, 选择 Email Extension Plugin (或者Email Ext Recipients Column Plugin) 安装
1)插件支持jenkins 1.5以上的版本
2)具体配置
http://blog.csdn.net/jingjing029/article/details/50371104

cargo

cargo实现jenkins自动部署远程tomcat

代码质量

Checkstyle Plugin

Findbugs Plugin

PMD Plugin

Warnings Plugin

Sonar

Sonar是一个代码质量管理系统,它的帮助文档开篇明义,提出了代码质量的七宗罪,总结的比较到位,不妨一看:

1.        Bug和隐藏Bug(Bugs and Potential Bugs)

2.        违反编码规范(Coding Standards Breach)

3.        复制粘贴(Duplications)

4.        缺乏单元测试(Lack of Unit Tests)

5.        恶劣的复杂度分布(Bad Distribution of Complexity)

6.        意大利面式设计(Spaghetti Design)

7.        注释不足或过多(Not Enough or Too Many Comments)

   
   
   
   
   
   

10.代码覆盖率


代码覆盖率分析是 CPU,MEMORY 集中的处理 最好另建一个job

11.性能测试-jmeter

https://my.oschina.net/u/1377774/blog/168969
http://www.jdon.com/performance/automating-jmeter-tests-maven-jenkins.html

12.静态代码检查

插件

checkstyle:重复代码检查
PMD:pmd cpd”使用pmd的cpd功能检查重复代码.cpd是pmd的一个组件,用来检查重复代码
findbugs
jdepend
sonar


  • maven的checkstyle插件
原理:http://www.tuicool.com/articles/bUbYBr
<plugin>  <groupId>org.apache.maven.plugins</groupId>  <artifactId>maven-checkstyle-plugin</artifactId>  <version>2.9.1</version><configuration><configLocation>/Users/.jenkins/workspace/custom_checkstyle.xml</configLocation><encoding>UTF-8</encoding>  </configuration><executions><execution><id>checkstyle</id><phase>validate</phase><goals><goal>check</goal></goals><configuration><failOnViolation>true</failOnViolation></configuration></execution></executions>  </plugin>
mvncheckstyle:checkstyle

mvn  jxr:jxr(maven-jxr-plugin:在生成站点时配置该插件,会以Web页面的形式将Java源代码展现出来 )

checkstyle自定义的规则文件custom_checkstyle.xml(注意自定义文件格式必须正确)

参考:http://blog.csdn.net/sxdtzhaoxinguo/article/details/43449899

<span style="font-size: 16.4268px;"><strong><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.3//EN" "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
<!--   This configuration file was written by the eclipse-cs plugin configuration editor
-->
<!--    Checkstyle-Configuration: check    Description: none
-->
<module name="Checker">  <property name="severity" value="error"/>  <property name="charset" value="UTF-8"/>  <message key="general.exception" value="有一个异常 - {0}  "/>  <message key="general.fileNotFound" value="文件没找到!"/>  <!--章节3.1.1  -->  <!-- 检查每个java package中是否有java注释文件,默认是允许一个package-info.java,  也可以通过allowLegacy属性配置允许package.html。此规则必须在<TreeWalker>标签外 -->  <module name="JavadocPackage" />  <module name="TreeWalker">  <property name="severity" value="error"/>    <property name="tabWidth" value="4"/>    <message key="general.exception" value="有一个异常 - {0}"/>   <!--章节2.3  -->  <!-- 页宽-->  <!--
<module name="LineLength">    <property name="max" value="80"/>    <message key="maxLineLen" value="行字符数超过80个.违反编码规范2.3章节"/>    </module>   --><!--章节2.4 -->  <!--操作符换行策略检查-->  <!-- <module name="OperatorWrap">  <property name="severity" value="error"/>  <property name="option" value="nl"/>  <property name="tokens" value="ASSIGN,BAND,BOR,DIV,EQUAL,GE,GT,LAND,LE,LOR,LT,MINUS_ASSIGN,MOD,MOD_ASSIGN,NOT_EQUAL,PLUS,PLUS_ASSIGN,QUESTION,STAR,STAR_ASSIGN"/>  <message key="line.after" value="''{0}'没有放在新行之首,违反编码规范2.4章节"/>  </module>      --><!--章节2.6  -->  <!-- <module name="ParenPad">  <property name="severity" value="error"/>  <property name="tokens" value="LPAREN,RPAREN,CTOR_CALL,METHOD_CALL,SUPER_CTOR_CALL"/>  <message key="ws.followed" value="''{0}'' 后面有空格,违反编码规范2.6章节"/>  <message key="ws.preceded" value="''{0}''前面有空格,违反编码规范2.6章节"/>  </module>      --><!--
<module name="TypecastParenPad">  <property name="severity" value="error"/>  <property name="tokens" value="RPAREN,TYPECAST"/>  <message key="ws.followed" value="''{0}''后面多一个空格,违反编码规范2.6章节"/>  <message key="ws.preceded" value="''{0}''前面多一个空格,违反编码规范2.6章节"/>  </module>      --><!-- <module name="WhitespaceAfter">  <property name="severity" value="error"/>  <property name="tokens" value="COMMA,SEMI"/>  <message key="ws.notFollowed" value="''{0}''后面多一个空格,违反编码规范2.6章节"/>  </module>      <module name="WhitespaceAround">  <property name="severity" value="error"/>  <property name="tokens" value="RCURLY,LITERAL_ASSERT,LITERAL_ASSERT,LITERAL_CATCH,LITERAL_DO,LITERAL_ELSE,LITERAL_FINALLY,LITERAL_FOR,LITERAL_IF,LITERAL_RETURN,LITERAL_SYNCHRONIZED,LITERAL_TRY,LITERAL_WHILE"/>  <property name="allowEmptyConstructors" value="true"/>  <property name="allowEmptyMethods" value="true"/>  <message key="ws.notPreceded" value="''{0}'' 关键字前少一个空格,违反编码规范2.6章节"/>  <message key="ws.notFollowed" value="''{0}'' 关键字后少一个空格,违反编码规范2.6章节"/>  </module>  --><!--章节2.7 -->  <!-- 每行语句数量-->  <module name="OneStatementPerLine">  <!--模块的元数据类型设置,经过测试发现该标签没用-->  <metadata name="net.sf.eclipsecs.core.comment" value="Coding Problems-> Only one statement per line allowed" />  <message key="multiple.statements.line" value="禁止一行有多句代码,违反编码规范2.7章节" />  </module>  <!--章节2.8 -->  <!-- 每行变量声明数量-->  <!-- <module name="MultipleVariableDeclarations">    <property name="severity" value="error"/>    <message key="multiple.variable.declarations.comma" value="每一个变量的定义必须在它的声明处,且在同一行,违反编码规范2.8章节"/>    <message key="multiple.variable.declarations" value="每一行只能定义一个变量,违反编码规范2.8章节"/>    </module>       --><!--章节2.9.1  -->  <!-- Checks the placement of right curly braces ('}') for  else, try, and catch tokens. The policy to verify is specified using property  option.     option: 右大括号是否单独一行显示    tokens: 定义检查的类型  -->    <!-- <module name="RightCurly">      <property name="option" value="alone"/>   <property name="severity" value="error"/>                   </module>   --><!--章节2.9.1  -->    <!-- 检查左侧大括号 左侧大括号必须放在前一行代码的行尾 -->  <!--
<module name="LeftCurly">  <property name="severity" value="error"/>  <message key="line.previous" value="左侧大括号没有放在前一行代码的行尾,违反编码规范2.9.1章节"/>  </module>   --><!--章节2.9.2  -->  <!-- 检查代码块是否缺失大括号-->  <module name="NeedBraces">    <message key="needBraces" value="''{0}'' 结构没有用大括号 '''{}'''s,违反编码规范2.9.2章节"/>    </module>   <!-- 章节3.2 -->  <!-- 对文件头的注释进行检查 -->  <!--章节3.3  -->  <!--对类和接口的javadoc注释进行检查-->  <!-- <module name="JavadocType">  <property name="severity" value="error"/>  <message key="type.missingTag" value="Javadoc 类型的注释丢失 {0} 标签.违反编码规范3.3章节"/>  <message key="javadoc.missing" value="缺少 Javadoc 注释.违反编码规范3.3章节"/>  <message key="javadoc.unusedTagGeneral" value="未使用过的 Javadoc 标签.违反编码规范3.23章节"/>  <message key="javadoc.unusedTag" value="未使用过的 {0} 标签for ''{1}''.违反编码规范3.3章节"/>  <message key="type.tagFormat" value="Javadoc 类型标签 {0}必须匹配模式 ''{1}''.违反编码规范3.3章节"/>  </module>  --><!--章节3.4,3.7  -->      <!--public protect private变量的注释进行检查-->  <!-- <module name="JavadocVariable">  <property name="severity" value="error"/>  <property name="scope" value="public"/>  <message key="javadoc.missing" value="变量注释:缺少Javadoc注释,违反编码规范3.4章节"/>  </module>   <module name="JavadocVariable">  <property name="severity" value="error"/>  <property name="scope" value="protected"/>  <message key="javadoc.missing" value="变量注释:缺少Javadoc注释,违反编码规范3.4章节"/>  </module>   <module name="JavadocVariable">  <property name="severity" value="error"/>  <message key="javadoc.missing" value="变量注释:缺少Javadoc注释,违反编码规范3.4章节"/>  </module>       --><!--章节3.5  -->  <!-- 检查所有方法的javadoc,可以不声明RuntimeException -->  <!-- <module name="JavadocMethod">  <property name="allowUndeclaredRTE" value="true"/>  <!~~允许get set 方法没有注释~~>  <property name="allowMissingPropertyJavadoc" value="true"/>  <message key="javadoc.missing" value="方法注释:缺少Javadoc注释,违反编码规范3.5章节"/>  </module>       --><!-- 命名规范 -->  <!--章节4.2 -->  <!-- 包名命名规范 -->  <!-- <module name="PackageName">         <!~~ <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>  ~~>   <property name="format" value="^org\.neris\.[a-z]+(\.[a-z]+)+$"/>        <message key="name.invalidPattern" value="包名 ''{0}'' 不符合org.neris.项目名.模块名,违反编码规范4.2章节"/>    </module>   --><!--章节4.3,4.4  -->  <!-- 类的命名,匹配规则默认:(^[A-Z][a-zA-Z0-9]*$),必须以大写字母开始 -->  <module name="TypeName">    <property name="tokens" value="CLASS_DEF"/>  <message key="name.invalidPattern" value="类名 ''{0}''没有通过大驼峰命名法命名,具体名称应使用意义完整的英文描述,违反编码规范4.3章节"/>   </module>   <!-- 接口命名,匹配规则默认:(^[A-Z][a-zA-Z0-9]*$),必须以大写字母开始 -->  <module name="TypeName">    <property name="tokens" value="INTERFACE_DEF"/>  <message key="name.invalidPattern" value="接口名 ''{0}''没有通过大驼峰命名法命名,具体名称应使用意义完整的英文描述,违反编码规范4.3章节"/>   </module>  <!--章节4.6 -->  <!-- 方法名命名 -->      <module name="MethodName">    <property name="severity" value="error"/>    <property name="format" value="(^[a-z][a-zA-Z0-9]*$)"/>    <message key="name.invalidPattern" value="方法名 ''{0}''没有通过小驼峰命名法命名,具体名称应使用意义完整的英文描述.违反编码规范4.6章节"/>         </module>    <!--章节4.7 -->  <!-- 局部变量命名 -->  <module name="LocalVariableName">         <property name="format" value="(^[a-z][a-zA-Z0-9]*$)"/>    <message key="name.invalidPattern" value="变量名 ''{0}''没有通过小驼峰命名法命名,具体名称应使用意义完整的英文描述.违反编码规范4.7章节"/>        </module>   <!-- 局部的final变量,包括catch中的参数的检查 -->     <module name="LocalFinalVariableName" >    <property name="severity" value="error"/>  <message key="name.invalidPattern" value="变量名 ''{0}''没有通过小驼峰命名法命名,具体名称应使用意义完整的英文描述.违反编码规范4.7章节"/>  </module>  <!-- 变量命名 -->  <module name="MemberName">    <message key="name.invalidPattern" value="变量名 ''{0}''没有通过小驼峰命名法命名,具体名称应使用意义完整的英文描述.违反编码规范4.7章节"/>    </module>   <!-- 静态变量命名 -->  <module name="StaticVariableName">  <message key="name.invalidPattern" value="变量名 ''{0}''没有通过小驼峰命名法命名,具体名称应使用意义完整的英文描述.违反编码规范4.7章节"/>  </module>  <!-- 数组变量命名 -->  <module name="ArrayTypeStyle">  <property name="severity" value="error"/>  <message key="array.type.style" value="数组定义没有采取int[] index这种方式,违反编码规范4.7.2章节"/>  </module>   <!--章节4.8 -->  <!-- 常量命名-->  <module name="ConstantName">  <property name="severity" value="error"/>  <message key="name.invalidPattern" value="常量 ''{0}'' 常量名违反编码规范4.8章节."/>  </module>  <!--章节5.1 -->  <!-- import语句不使用通配符 -->  <module name="AvoidStarImport">  <property name="severity" value="error"/>  <message key="import.avoidStar" value="引用包时不能使用*号.违反编码规范5.1章节"/>  </module>        <!--章节5.2 -->  <!-- 魔法数检测-->  <module name="MagicNumber">    <property name="severity" value="error"/>    <message key="magic.number" value="''{0}'' 是一个魔法数(即常数).违反编码规范5.2章节"/>    </module>  <!--章节5.4 -->  <!-- 多余的关键字,包含不适用this作为关键字 -->   <!--章节5.5 -->  <!-- 重载父类方法 -->  <module name="MissingOverride">     <message key="annotation.missing.override" value="重载方法缺少@Override,违反编码规范5.5章节" />  <message key="tag.not.valid.on" value="注释-> Javadoc {0}标签在这个位置是无效的." />  </module>   <!--章节5.6 -->  <!--判断语句使用  -->  <module name="SimplifyBooleanExpression">  <property name="severity" value="error"/>  <message key="simplify.expression" value="存在布尔冗余,违法编码规范5.6章节."/>  </module>  <!--章节5.7 -->  <!-- 检查switch语句是否忘记了default标签 -->  <module name="MissingSwitchDefault" >  <property name="severity" value="error"/>  <message key="missing.switch.default" value="switch 语句后边没有 default 语句.违法编码规范5.7章节"/>  </module>  <!-- 检查switch语句中default标签的顺序 -->  <module name="DefaultComesLast">  <property name="severity" value="error"/>  <message key="default.comes.last" value="建议Default 放在 switch 语句的最后."/>  </module>   <!--章节5.9 -->  <!-- 禁止使用System.out.println -->  <module name="Regexp">  <property name="format" value="System\.out\.println"/>   <property name="message" value="不要使用 System.out 与 System.out 进行控制台打印,应该使用日志工具类(如:log4j)进行统一记录或者打印,违法编码规范5.9章节"/>    <property name="illegalPattern" value="true"/>  </module>  <!-- 禁止使用System.err.println -->  <module name="Regexp">  <property name="format" value="System\.err\.println"/>   <property name="message" value="不要使用 System.out 与 System.err 进行控制台打印,应该使用日志工具类(如:log4j)进行统一记录或者打印,违法编码规范5.9章节"/>    <property name="illegalPattern" value="true"/>  </module>   <!--章节5.10 -->  <!-- 不允许用main方法测试-->  <module name="UncommentedMain">  </module>  <!--章节5.11 -->  <!-- NeedBraces 检查是否应该使用括号的地方没有加括号    tokens: 定义检查的类型 -->    <module name="NeedBraces"/>    </module>    </strong></span><strong style="font-size: 16.4268px; font-family: Arial, Helvetica, sans-serif;"></module> </strong>


  • pmd
命令:

mvn pmd:pmd

 <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-pmd-plugin</artifactId>
<configuration><!-- <rulesets><ruleset>/rulesets/braces.xml</ruleset><ruleset>/rulesets/naming.xml</ruleset></rulesets> -->
</configuration>
</plugin>

13.jenkins 和sonar




安装说明
http://www.cnblogs.com/gao241/p/3190701.html
http://www.uml.org.cn/jchgj/201307251.asp
http://www.cnblogs.com/az19870227/archive/2013/04/03/2998351.html



  • Jenkins 执行失败自动重试
插件:Naginator Plugin
配置:http://www.cnblogs.com/honeybee/p/6343844.html
使用场景: 当一次执行失败或不稳定时,需要立即重试 来 确定 是否 真正有问题时
  • 定时配置
9点~23点,每20分钟执行一次: */20 09-23 * * *
每天7点执行: H 7 * * *





jenkins支持集成进阶相关推荐

  1. Docker+Jenkins持续集成环境(3)集成PMD、FindBugs、Checkstyle静态代码检查工具并邮件发送检查结果...

    为了规范代码,我们一般会集成静态代码检测工具,比如PMD.FindBugs.Checkstyle,那么Jenkins如何集成这些检查工具,并把检查结果放到构建邮件里呢? 今天做了调研和实现,过程如下 ...

  2. Jenkins持续集成学习-Windows环境进行.Net开发4

    目录 Jenkins持续集成学习-Windows环境进行.Net开发4 目录 前言 目标 Github持续集成 提交代码到Github 从Github更新代码 git上显示构建状态 自动触发构建 Gi ...

  3. maven 设置打包路径为模块_4、Jenkins持续集成之maven编译

    简介 Jenkins是一个开源的持续集成工具,应用Jenkins搭建持续集成环境,可以进行自动构建.自动编译和部署,非常方便.在服务器比较少的情况下,Jenkins的优势并不明显,但是随着项目发展,服 ...

  4. 一步步部署基于Windows系统的Jenkins持续集成环境

    如题:本文将介绍如何在Windows环境下运用Jenkins部署持续集成环境.之所以写本文,是因为在最近工作当中,学习使用Jenkins时,确实遇到了一些问题,而大多数教程文档都是基于Mac或是Lin ...

  5. 搭建GitLab+Jenkins持续集成环境图文教程

    GitLab是一个代码仓库,用来管理代码.Jenkins是一个自动化服务器,可以运行各种自动化构建.测试或部署任务.所以这两者结合起来,就可以实现开发者提交代码到GitLab,Jenkins以一定频率 ...

  6. Docker+Jenkins持续集成环境(2)使用docker+jenkins构建nodejs前端项目

    Docker+Jenkins持续集成环境(2)使用docker+jenkins构建nodejs前端项目 前文使用Docker搭建Jenkins+Docker持续集成环境我们已经搭建了基于docker+ ...

  7. Jenkins持续集成项目搭建与实践——基于Python Selenium自动化测试(自由风格)

    Jenkins简介 Jenkins是Java编写的非常流行的持续集成(CI)服务,起源于Hudson项目.所以Jenkins和Hudson功能相似. Jenkins支持各种版本的控制工具,如CVS.S ...

  8. 超详细的jenkins持续集成工作原理、功能、部署方式等介绍

    文章由LinuxBoy分享于2019-08-30 11:08:39 超详细的jenkins持续集成工作原理.功能.部署方式等介绍 1. 概念 jenkins是一个开源项目,提供了一种易于使用的持续集成 ...

  9. Jenkins 持续集成CICD

    Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建.测试和部署软件. Jenkins 支持各种运行方式,可通过系统包.Docker 或者通过一个独立的 Java 程序 J ...

最新文章

  1. 输入一个字符串,用子函数完成在字符串中找出ACSII码值最大的字符,将其放在第一个位置,并将该字符前的所有字符向后顺序移动
  2. 使用JDBC来实现一个简单的增删改查
  3. wordpress利用rsync同步备份
  4. 使用PADDING-TOP:(PERCENTAGE)实现响应式背景图片
  5. 基于体素的全局光照技术
  6. python — pip 下载速度慢解决方法(含Anaconda、spyder 下载包的方法)
  7. 电子书格式转换 azw3 to epub (软件calibre的简单使用)
  8. 微信翻译生日快乐的代码_微信表情翻译表白代码彩蛋大全 微信表情加符号翻译意思全解...
  9. ios真机调试出现“不受信任的开发者”解决方法
  10. 编写一个520表白网站并发布Web教程
  11. php获取百度搜索的关键词,【2020年】百度搜索词获取,获取百度搜索的关键词【真实有效】...
  12. access是用来干什么的_access是干什么用的
  13. vncviewer退出全屏
  14. C语言结构体中的冒号用法
  15. Java从零到企业级电商项目实战: linux环境配置
  16. OMAP3530-mini调试笔记(2)
  17. 【转】24个GE SFP/10 GE SFP+端口是什么意思
  18. PC网站微信扫码支付,Native支付,“当前商户号暂不支持关联该类型的appid“,“签名错误,请检查后再试““springBoot 微信支付“
  19. ORA-00933:SQL 命令未正确结束(1)
  20. Quartus ii 与 Verilog入门教程(1)——Verilog实现8位计数器

热门文章

  1. 黄金多头全面上攻 趁胜追击冲击千九关口
  2. 10000字详解,炫酷的3D特效Shader是如何炼成的
  3. python-爬虫-孙兴华
  4. 为何选择iText?java PDF开源库选择与iText发展历史
  5. MySQL数字的取整、四舍五入、保留n位小数
  6. 那些情况会出现上下文切换
  7. APKTool-apk反编译工具(绿色版)下载及使用说明
  8. 手机上line-height不起作用
  9. 利用语音Modem实现电话点播和留言功能
  10. Error 1267 Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT)