建立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. ExtJs中多个form情况下指定某个form使能

    采用extjs的时候,如果一个页面存在多个,那么提交之时,究竟是哪个form使能,就要指明.我今天就遇到了这种情况:明明页面已经有提交,为啥没有提交到内容?一查才知道,我的页面是有2个form,我本意 ...

  2. MUI日期选择控件

    MUI的Demo里面有例子,实际做的时候发现日期老是乱码,调了半天,最后发现引用的CSS错误,例子中引用的是 <link href="Css/mui.picker.min.css&qu ...

  3. mysql--DML--视图,索引,事务,字符集,函数

    Mysql中,表/列可以改名,database不能改名. phpMyAdmin似乎有这功能? 他是建新库,把所有表复制到新库,再删旧库完成的. 删除一个数据库: drop database 数据库名; ...

  4. UESTC149 解救小Q

    小Q被邪恶的大魔王困在了迷宫里,love8909决定去解救她.迷宫里面有一些陷阱,一旦走到陷阱里,就会被困身亡:(,迷宫里还有一些古老的传送阵,一旦走到传送阵上,会强制被传送到传送阵的另一头.现在请你 ...

  5. HDU1054 Strategic Game —— 最小点覆盖 or 树形DP

    题目链接:https://vjudge.net/problem/HDU-1054 Strategic Game Time Limit: 20000/10000 MS (Java/Others)     ...

  6. Linux系统下安装和使用rz、sz命令

    1.软件安装 1)编译安装 root 账号登陆后,依次执行以下命令: cd /tmp wget http://www.ohse.de/uwe/releases/lrzsz-0.12.20.tar.gz ...

  7. iOS7 push/pop转场动画

    前言 iOS 7之后,苹果提供了自定义转场动画的API,我们可以自己去定义任意动画效果.本篇为笔者学习push.pop自定义转场效果的笔记,如何有任何不正确或者有指导意见的,请在评论中留下您的宝贵意见 ...

  8. Ural2040:Palindromes and Super Abilities(离线&manecher算法)

    Dima adds letters s1, …, sn one by one to the end of a word. After each letter, he asks Misha to tel ...

  9. 深入分析glibc内存释放时的死锁bug

    通常我们认为一旦内存写溢出,程序就很容易崩溃.所以服务器上通常会对一些重要进程做脚本保护,一旦崩溃立即重新拉起. 最近发现我们一个公共服务内存写溢出时程序没有崩溃,而是卡死了. 为了深入分析原因,我们 ...

  10. IDE工具的[多行光标编辑模式]

    Sublime Text3:Ctrl+Alt+上下键 Eclipse:Shift+Alt+A,进入退出多光标模式 IDEA:Shift + ctrl + alt + 鼠标左键 收集链接 IDEA:ht ...