项目配置
首先下载Jenkins war包,
在这里
然后放在tomcat webapps中即可访问。
jenkins 通过war 包在tomcat 中运行。最终生成的有关build 的数据都在以下路径
cd /root/.jenkins/
遇到的问题
org.gradle.launcher.daemon.client.DaemonDisappearedException: Gradle build daemon disappeared unexpectedly (it may have been killed or may have crashed)
在linux 直接gradle编译没有出现问题,但是在jenkins 出现了。很疑惑好在在starckoverflow 上面又同样的问题并有详细的描述,不得不说,除了问题一定要养成一个惯性,第一在stackoverflow里面找。
解决方法禁用deamon gradle properites
org.gradle.daemon=false
step 'Invoke Gradle script' changed build result to FAILUREBuild step 'Invoke Gradle script' marked build as failure
这一个问题也是很坑得,一直以为是jenkins配置问题,最终发现这只是异常的结果,问题出现在抛出异常的任务,所以这个任务是啥呢?
:app:lintVitalReleaseBuild
既然找到了问题所在,那就解决它吧,一番搜索发现果然有人遇到过这个问题,解决如下:
在对应的app 的build.gradle android{}中添加代码
//添加如下配置就ok了
lintOptions {
checkReleaseBuilds false
abortOnError false
}
一个一个的问题真是让人深受打。。在windows 上分分钟完事儿。因为是用的github 上的项目,本来以为直接在服务器上更改build.gradle 其实是没用的,因为jenkins build的时候回从github拉取最新,所以是更改回被覆盖。所以修改直接修改仓库并且push到github,或者直接github修改
又来一问题 如下
app:transformClassesWithDexBuilderForReleaseBuild
damen 相关错误,目前不确定了
之前TinderSipe 一直卡在这里,但是再参考资源里面 配置tasks 配置gradlew 命令。一直没有配置--no-daemon 命令。也很正常如果启动daemon报错那么不使用就是了,一下完整命令
--no-daemon clean test assembleRelease --stacktrace --info
appt2 相关
java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2InternalException: AAPT2 aapt2-3.2.1-4818971-linux Daemon #0: Daemon startup failed
This should not happen under normal circumstances, please file an issue if it does.
当看到上面错误,一直以为是appt2导致,或者 daemon导致。没想到通过添加--stacktrace才发现是 TinderSwipe项目的random.png 错误,可能是格式导致的,可能不是Png.这里其实还有问题,因为再linux直接编译是成功的,这也让我解决问题走向了错误的方向。然后试了纯净的HaloImageProgressView.才build 成功,所以发现aapt2相关,找res 错误,最重要的还是--stacktrace查找错误原因
Failed to read PNG signature: file does not start with PNG signature
图片导致aapt2 报错
windows jenkins 配置
相对Linxu wndiows 相对简单,需要注意的一点是,在开了tomcat之后如果没有设置本地ANDROID_HOME 环境变量。会提示找不到sdk,再设置之后还需要重启tomcat。否则不会生效
脚本化配置
二维码配置
上传到fir
邮件通知
具体步骤截图
jenkins 邮件发送
参考资料
Android Jenkins+Git+Gradle持续集成-实在太详细