建立Jenkins项目

1. “新增作业”->填写作业名称->选择“建置 Maven 2 或 3 專案”->OK。新增成功后会进入“組態設定”,暂时先保留默认值,稍后再进行设定。

2. 按一下“马上建置”,会显示“已排入建置”,然后在“建置歷程”会见到#1的链接,点入该链接并选择“終端機輸出”,这时会见到一个失败的构建记录。当然会失败,因为我们还未为项目加入代码和pom.xml,之所以要进行一次构建,是让系统为我们生成项目目录,目录路径是<Jenkins_dir>/workspace/<project_name> 。

3.  上传项目依赖的包,执行以下命令

mvn install:install-file -Dfile=file.jar -DgroupId=group.id -DartifactId=artifact-id -Dversion=1.0.0 -Dpackaging=jar

DgroupId和DartifactId构成了该jar包在pom.xml的坐标,项目就是依靠这两个属性定位。可以自己起名,如果用自己起的名字,在pom.xml的依赖中就要用自己所以的名字。 Dfile表示需要上传的jar包的绝对路径,文件会上传到Maven的默认仓库位置。要留意Jenkins调用的默认仓库路径和上传的默认仓库路径是否一致,windows环境下的仓库路径一般是 C:\Documents and Settings\<user>\.m2 或 C:\.m2,linux则是 <Jenkins_dir>/.m2 或 ~/.m2。

4. 将android 项目代码和pom.xml加入到项目目录里,然后在按一下“马上建置”,如果代码和pom.xml都正确的话,项目应该会构建成功。

5. 现在再回到“組態設定”界面进行设定

因为之前安装了Git Plugin,所以“原始碼管理”中多了一项Git,填入正确的Repository URL,Credentials 加入用户名和密码。新增Additional Behaviours,加入check out to specific local branch。

“建置觸發程序”可以选择“定期建置”或“輪詢 SCM”,“定期建置”是按规定的时间间隔进行构建,“輪詢 SCM”是按规定的时间间隔轮询Git进行构建。

“新增建置前步骤”可以在建置前执行一些命令。

“Root POM”指定pom.xml的位置,“Goal 及選項”填写构建时mvn 命令和参数,例如mvn clean package -P dev surefire-report:report,surefire-report:report 可以生成surefire report,但此report的html没有css,比较难看。可以先运行一次mvn site生成maven surefire report的html和css,然后保存下来,以后每次构建完成后再执行命令复制到report中。

“新增建置后步骤”可以在建置后执行一些命令。

6. “新增建置后动作”可以在建置后执行一些操作,如果安装了Email Extension Plugin的话,可以在构建完成后发出通知邮件。

“新增建置后动作”->“可编式电子邮件通知”->advanced setting->“add trigger”可以增加触发邮件的条件,通知邮件内容中可以使用Content Token。

通知邮件例子:

本郵件由程序自動發送,請勿直接回覆,謝謝<br/><hr/>

構建編號:$BUILD_NUMBER<br/><hr/>

觸發原因:${CAUSE}<br/><hr/>

單元測試報告:${PROJECT_URL}ws/target/site/surefire-report.html<br/><hr/>

${JELLY_SCRIPT,template="html"}<br/><hr/>
${FILE, path="./file.txt"}

更多可用token

${BUILD_LOG, maxLinesescapeHtml} -显示最终构建日志。

  • maxLines – 显示该日志最多显示的行数,默认250行。
  • escapeHtml -如果为true,格式化HTML。默认false。

${BUILD_LOG_REGEX, regexlinesBeforelinesAftermaxMatches,showTruncatedLinessubstTextescapeHtmlmatchedLineHtmlStyle} -按正则表达式匹配显示构建日志的行数。

  • 匹配符合该正则表达式的行数。参阅java.util.regex.Pattern,默认“(?i)\b(error|exception|fatal|fail(ed|ure)|un(defined|resolved))\b”。
  • linesBefore -包含在匹配行之前的行编号。行数会与当前的另一个行匹配或者linesAfter重叠,默认0
  • linesAfter -包含在匹配行之后的行编号。行数会与当前的另一个行匹配或者linesBefore重叠,默认0
  • maxMatches -匹配的最大数量,如果为0,则包含所有匹配。默认为0。
  • showTruncatedLines -如果为true,包含[...truncated ### lines...]行。默认为true。
  • substText -如果非空,把这部分文字插入该邮件,而不是整行。默认为空。
  • escapeHtml -如果为true,格式化HTML。默认false。
  • matchedLineHtmlStyle -如果非空,输出HTML。匹配的行数将变为<b style=”your-style-value”> html escaped matched line </b>格式。默认为空。

${BUILD_NUMBER} -显示当前构建的编号。

${BUILD_STATUS} -显示当前构建的状态(失败、成功等等)

${BUILD_URL} -显示当前构建的URL地址。

${CHANGES, showPathsformatpathFormat} -显示上一次构建之后的变化。

  • showPaths – 如果为 true,显示提交修改后的地址。默认false。
  • format – 遍历提交信息,一个包含%X的字符串,其中%a表示作者,%d表示日期,%m表示消息,%p表示路径,%r表示版本。注意,并不是所有的版本系统都支持%d和%r。如果指定showPaths将被忽略。默认“[%a] %m\n”。
  • pathFormat -一个包含“%p”的字符串,用来标示怎么打印字符串。

${CHANGES_SINCE_LAST_SUCCESS, reverseformatshowPaths,changesFormatpathFormat} -显示上一次成功构建之后的变化。

  • reverse -在顶部标示新近的构建。默认false。
  • format -遍历构建信息,一个包含%X的字符串,其中%c为所有的改变,%n为构建编号。默认”Changes for Build #%n\n%c\n”。
  • showPathschangesFormatpathFormat – 分别定义如${CHANGES}的showPathsformatpathFormat参数。

${CHANGES_SINCE_LAST_UNSTABLE, reverseformatshowPaths,changesFormatpathFormat} -显示显示上一次不稳固或者成功的构建之后的变化。

  • reverse -在顶部标示新近的构建。默认false。
  • format -遍历构建信息,一个包含%X的字符串,其中%c为所有的改变,%n为构建编号。默认”Changes for Build #%n\n%c\n”。
  • showPathschangesFormatpathFormat -分别定义如${CHANGES}的showPathsformatpathFormat参数。

${ENV, var} – 显示一个环境变量。

  • var – 显示该环境变量的名称。如果为空,显示所有,默认为空。

${FAILED_TESTS} -如果有失败的测试,显示这些失败的单元测试信息。

${JENKINS_URL} -显示Jenkins服务器的地址。(你能在“系统配置”页改变它)。

${HUDSON_URL} -不推荐,请使用$JENKINS_URL

${PROJECT_NAME} -显示项目的名称。

${PROJECT_URL} -显示项目的URL。

${SVN_REVISION} -显示SVN的版本号。

${CAUSE} -显示谁、通过什么渠道触发这次构建。

${JELLY_SCRIPT, template} -从一个Jelly脚本模板中自定义消息内容。有两种模板可供配置:HTML和TEXT。你可以在$JENKINS_HOME/email-templates下自定义替换它。当使用自动义模板时,”template”参数的名称不包含“.jelly”。

  • template -模板名称,默认”html”。

${FILE, path} -包含一个指定文件的内容

  • path -文件路径,注意,是工作区目录的相对路径。

${TEST_COUNTS, var} -显示测试的数量。

  • var – 默认“total”。

    • total -所有测试的数量。
    • fail -失败测试的数量。
    • skip -跳过测试的数量。

参考资料:

【1】 http://www.juvenxu.com/2011/05/18/hudson-email-ext/

使用Jenkins进行android项目的自动构建(3)的更多相关文章

  1. 使用Jenkins进行android项目的自动构建(5)

    之前在项目中引入的单元测试使用的是JUnit,可以在构建前进行测试,这里在介绍一下使用Instrumentation 进行单元测试.使用Instrumentation进行测试,比之前多一些步骤,需要把 ...

  2. 使用Jenkins进行android项目的自动构建(4)

    加入单元测试 android单元测试很多都是使用Instrumentation进行的,这里讲的是试用JUnit,为什么用JUnit呢?因为使用Instrumentation需要打包apk安装,然后再进 ...

  3. 使用Jenkins进行android项目的自动构建(2)

    Maven and POM 1. 什么是Maven? 官方的解释是: http://maven.apache.org/guides/getting-started/index.html#What_is ...

  4. 使用Jenkins进行android项目的自动构建(6)

    之前已经介绍过使用Maven做构建,在来介绍一下Gralde的自动化构建. 什么是Gralde?官方的解释是 Gradle is an open source build automation sys ...

  5. 使用Jenkins进行android项目的自动构建(1)

    环境搭建 1. 下载JDK,安装,并将JDK的安装目录加入到环境变量JAVA_HOME,将JDK的bin目录加入到环境变量PATH. 2. 下载Android SDK,解压,并将SDK的安装目录加入到 ...

  6. 用Ant实现Java项目的自动构建和部署

    原文地址:http://tech.it168.com/j/2007-11-09/200711091344781.shtml         本文请勿转载! Ant是一个Apache基金会下的跨平台的构 ...

  7. 用Ant实现Java项目的自动构建和部署(转)

    Ant是一个Apache基金会下的跨平台的构件工具,它可以实现项目的自动构建和部署等功能.在本文中,主要让读者熟悉怎样将Ant应用到Java项目中,让它简化构建和部署操作. 一.            ...

  8. 用Ant实现Java项目的自动构建和部署(转)

    Ant是一个Apache基金会下的跨平台的构件工具,它可以实现项目的自动构建和部署等功能.在本文中,主要让读者熟悉怎样将Ant应用到Java项目中,让它简化构建和部署操作. 一.            ...

  9. 使用Bitbucket Pipeline进行.Net Core项目的自动构建、测试和部署

    1. 引言 首先,Bitbucket提供支持Mercurial和Git版本控制系统的网络托管服务.简单来说,它类似于GitHub,不同之处在于它支持个人免费创建私有项目仓库.除此之外,Bitbucke ...

随机推荐

  1. Educational Codeforces Round 18 C. Divide by Three DP

    C. Divide by Three   A positive integer number n is written on a blackboard. It consists of not more ...

  2. linux路由表解析

    1 格式 Destination 这个和Genmask一起构成目标网络.路由是路由到目标网络,知道目标网络就可以到达目标路由器,然后在该网络中找到目标机器. Gateway 网关,数据包的下一跳.比如 ...

  3. Ural2004: Scientists from Spilkovo(德布鲁因序列&思维)

    Misha and Dima are promising young scientists. They make incredible discoveries every day together w ...

  4. Ural2102:Michael and Cryptography(数论&素数)

    The hacker Michael develops breakthrough password manager, which is called KEK (Keeper of Encrypted ...

  5. pssh 批量管理执行

    pssh 是一个python写的批量执行工具,非常适合30台服务器以内的一些重复性的操作 安装很简单,只要python版本2.4 以上的都行 用这个工作最好把机器做做好ssh信任关系,不然很麻烦 每次 ...

  6. Sencha Cmd使用

    通过Sencha Cmd辅助开发基于ExtJS4 MVC的项目 http://www.ineeke.com/archives/1465/ ExtJS4.2:Sencha Cmd 介绍:http://w ...

  7. P4148 简单题(KDTree)

    传送门 KDTree 修改权值当做插入节点,不平衡就暴力重构,询问的时候判断当前节点代表的矩形是否在询问的矩形的,是的话返回答案,相离返回0,否则的话判断当前点是否在矩形内,然后继续递归下去 //mi ...

  8. JDBC中的DriverManager.getConnection(url)中的参数url

    1.Oracle8/8i/9i数据库(thin模式) Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); ...

  9. windows 下使用命令行操作ftp

    open 192.168.10.6     (连接到FTP主机) User allan\ftp            (用户连接验证,注意这里的用户用到的是FTP服务器端创建的用户名) 123     ...

  10. 题解报告:hdu 2087 剪花布条(KMP入门)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2087 Problem Description 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面 ...