Android开发开发技巧Android打包

Android Git 项目 Jenkins 持续集成 Grad

2017-06-03  本文已影响130人  石先

对于程序员来说,遇到项目需要频繁地集成各成员的工作是相当头痛的。因为每次集成都需要进行一系列的质量把控(编译,打包,测试等),以保证各环节尽可能地少出错误。如此反复不仅消耗大量的时间和精力,也消磨着自己的耐心。那么,如何做到持续集成,把一些繁琐且无意义的工作交付给电脑自动完成,这是一个相当有必要去考虑的事情。比较,能提升幸福感的事情,何乐而不为呢。

不重复造轮子

充分借助已有资源,考虑自身实际场景,简单而有效的解决问题才是目标。很多人都推荐使用 Jenkins 来搭建持续化集成平台,这是一个行之有效的解决方案,下面就来看看如何减少集成问题并且快速实现。

一个理念:能让电脑帮忙自动搞定的东西就尽量不要折腾自己

准备工作

本篇文章主要介绍 Android 项目的持续化集成平台基于 Jenkins 的实现,关于 iOS 的持续集成,推荐同事之前写的一篇一步一步构建iOS持续集成:Jenkins+GitLab+蒲公英+FTP这篇文章,内容非常详细。

主要介绍一下搭建Android平台环境时渠道的各种坑

image.png image.png image.png image.png

Gradle Path: /Users/baishixian/.gradle/wrapper/dists/gradle-4.0-milestone-1-all/2rnr7rhi2zsmkxo9re7615fy6/gradle-4.0-milestone-1

image.png image.png image.png image.png image.png
使用git作为源码仓库这里有坑,使用https的方式行不通,必须用ssh的方式才行,不然一直pull代码到本地不成功。
Jenkins SSH connection to a Git server is not working using username/password image.png image.png image.png

创建ssh 非对称加密 key,我这用的是阿里云code,参考https://code.aliyun.com/help/ssh/README

image.png image.png

然后在Jenkins中配置ssh的私钥

image.png image.png image.png image.png image.png

对于 Jenkins giving The SDK Directory doesn't exist 或者Jenkins build failed due to missing android SDK的问题,在编译时会造成如下问题:

image.png

需要配置ANDROID_HOME

image.png image.png image.png

代码仓库配置好了,意味着Jenkins具有了访问GitHub代码仓库的权限,可以成功地拉取代码。
那Jenkins什么时候执行构建呢?
这就需要配置构建触发策略,即构建触发器,配置项位于【Build Triggers】栏目。
触发器支持多种类型,常用的有:

关于定时器(Schedule)的格式,简述如下:

通常情况下需要指定多个值,这时可以采用如下operator(优先级从上到下):
** 适配所有有效的值,若不指定某一项,则以占位;*
** M-N适配值域范围,例如7-9代表7/8/9均满足;**
** M-N/X或/X:以X作为间隔;*
A,B,C:枚举多个值。
另外,为了避免多个任务在同一时刻同时触发构建,在指定时间段时可以配合使用H字符。添加H字符后,Jenkins会在指定时间段内随机选择一个时间点作为起始时刻,然后加上设定的时间间隔,计算得到后续的时间点。直到下一个周期时,Jenkins又会重新随机选择一个时间点作为起始时刻,依次类推。
为了便于理解,列举几个示例:
H/15 * * * *:代表每隔15分钟,并且开始时间不确定,这个小时可能是:07,:22,:37,:52,下一个小时就可能是:03,:18,:33,:48;
H(0-29)/10 * * * *:代表前半小时内每隔10分钟,并且开始时间不确定,这个小时可能是:04,:14,:24,下一个小时就可能是:09,:19,:29;
H 23 * * 1-5:工作日每晚23:00至23:59之间的某一时刻;

上一篇下一篇

猜你喜欢

热点阅读