Android实现jenkins集成打包

一 环境配置
1 首先去jenkins官网里去下载相应系统版本的软件包,这里我下载的是jenkins.war包。下载完成后,将其放在你的任意自定义目录,比如我的,就放在D:\jekins里面,而后打开命令行,进入到war包相应的目录,输入Java -jar jenkins.war这时候jenkins的服务就会启动了,其启动的部分截图如下:

QQ截图20180514114926.png

2 打开浏览器,输入http://localhost:8080/,你将会看到如下界面 , 代表 Jenkins 已经部署完成了,下一步安装 Jenkins.
QQ截图20180514120034.png

3 输入密码,密码路径在本地安装jenkins的目录下,
4 然后就会跳转到如下图所示的界面
qqq.png

我去,不对啊,网上都是安装插件的截图啊,怎么就这样了,一直提示离线,该怎么解决,后来通过查询资料,解决方案如下
然后修改.jenkins/hudson.model.UpdateCenter.xml,打开该文件,其内容如下:

<?xml version='1.0' encoding='UTF-8'?>
<sites>
  <site>
    <id>default</id>
    <url>https://updates.jenkins.io/update-center.json</url>
  </site>
</sites>

将里面的https更改为http,然后重启jenkins即可,如下图:

<?xml version='1.0' encoding='UTF-8'?>
<sites>
  <site>
    <id>default</id>
    <url>http://updates.jenkins.io/update-center.json</url>
  </site>
</sites>

重启jenkins之后,再次访问,跳过之前的步骤,这时候就到了目标界面,如下图所示:


QQ截图20180514195809.png

我们选择第一项,安装默认Jenkins插件。安装插件过程如下图所示:


QQ截图20180514195915.png

等所有的插件都安装完成,我们将会看到用户名设置界面。
QQ截图20180514200126.png

这个界面你有两个选择可以操作,
选择一:直接点击 Continue as Admin 安装,默认此时的超级管理员为 admin .
选择二:输入用户名,密码,确认密码,全名,电子邮件地址。然后点击 Save and Finish . 注意你输入的用户名就是 Jenkins 的超级管理员。需要注意的是,上面的每一项都需要填写,否则点击 Save and Finish 按钮没有效果。
等上面的步骤都操作完毕,你将会看到如下界面,代表 Jenkins 的插件安装和超级管理员已经配置好了。


QQ截图20180514200252.png

二 新建一个任务
QQ截图20180514201633.png

而后在进行其他环境变量的设置
1 系统管理---->系统设置(全局设置&路径)---->全局属性,如下图所示:
QQ截图20180514202035.png

2 系统管理---->全局工具配置,如下图所示:
QQ截图20180514202953.png
QQ截图20180514202303.png
QQ截图20180514203048.png

3 管理插件处安装所需要的插件,比如 build-name-setter,它的作用实际上是Jenkins默认不支持BuildName设置,但可通过安装build-name-setter插件进行实现。安装build-name-setter插件后,在配置页面的Build Environment栏目下会出现Set Build Name配置项,然后在Build Name中就可以通过环境变量参数来设置build名称。如下图所示:


111111111111.png

此处只以找一个插件为例,用户可以再实际的配置中,搜索并安装。
三 任务的部分配置
由于新创建后的任务截图如下:


QQ截图20180514203225.png

点击右边你创建的任务,进入到相应的配置界面,如下:
QQ截图20180514203424.png

进行相应的参数配置,如下图


QQ截图20180514203612.png

QQ截图20180514203733.png

QQ截图20180514203832.png

QQ截图20180514204026.png

QQ截图20180514204116.png

其中最后一项需要做特别说明,笔者在这里被坑了好久,总结的问题及解决办法如下:
jenkins打包不能够脱离项目,因为他最终是配置在服务器上的,否则如果指定本地的输出路径的话,那么打包完成后jenkins界面没有相应的的apk包,况且jenkins打包还需要做存档保存,因为一般情况jenkins界面生成相应的包都是引用的存档文件的apk包,还有上传到第三方平台的如蒲公英等,最终用到的都是项目里面的apk包,笔者在这里犯了一个错误,还是和AndroidStudio本地打包一样,配置
输出路径到D盘或者其他的盘,当值存档文件的路径archive the artifacts总是报错,如我当时在gradle.properties配置了本地输出路径:
# 打包的输出路径
appReleaseDir=D:/gradle/outputs/release
然后在build中配置引用的输出路径,保证输出到如上所示的相应的文件夹中
//只对Release包起作用,如果不是Release包则不变更输出路径,否则可能导致AS无法自动安装debug包。
if (buildType == "release") {
  it.getPackageApplication().outputDirectory = new File(project.property('appReleaseDir') + "/apks")
  println "realease 路径:-----------------${it.getPackageApplication().outputDirectory}"
}

这时候就会在相应appReleaseDir笔者的目录下生成所需要的release包,debug包我们一般不会特别声明指定的路径,因为可能导致AS无法自动安装debug包,所以最终的解决办法,我修改了jenkins的输出路径:

it.getPackageApplication().outputDirectory = new File("${buildDir}"+"/outputs/apk")

最终生成的apk路径,只保留在项目的build目录下的/outputs/apk里面,英文${buildDir}实际上就是相当于项目的build目录
注:1 AndroidStudio指定输出apk的路径一般只是适用于本地apk打包release包的情况
2 如何在build.gradle中引用gradle.properties中的变量,以appReleaseDir为例,可以通过如下两种方式:

① it.getPackageApplication().outputDirectory = new File("${appReleaseDir}"+"/outputs/apk/${createTime}")
② it.getPackageApplication().outputDirectory = new File(project.property('appReleaseDir') + "/apks")

所有的配置完成后,回到项目页,点击Build with Parameters进行项目打包,选择相应的环境和渠道,点击构建既可以打包,如下截图:

QQ截图20180514204902.png

至此Jenkins自动化打包完成,不过后续也可以配置钉钉机器人、上传蒲公英等,在此就不一一做介绍了。
相关解决问题的链接及参考文章如下:
https://www.cnblogs.com/wujuan321/p/7551232.html
https://www.cnblogs.com/amberly/p/6288773.html
https://blog.csdn.net/hwhua1986/article/details/48155163
https://blog.csdn.net/zhaoyanjun6/article/details/77102359

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

推荐阅读更多精彩内容