jenkins+gitlab构建安卓自动编译环境

因工作关系接触到接触到安卓自动编译环境,网上的资料都推荐了jenkins,因为第一次接触安卓和jenkins,踩了不少的坑,有总结才有进步。

gitlab环境之前已经安装完成可用,具体步骤另外详解吧。本例目标是在gitlab可用前提下,通过jenkins将git仓库的代码自行编译打包,生成可用的apk安装文件。

一、相关环境

1 Linux Centos6.3 2.6.32-279.el6.x86_64

各相关软件版本

哈哈哈,这里有一个坑,被我踩了,后面再详细说。

SDK更新,切换到android目录,执行tools/android update sdk –no-ui

两个小时左右,确保磁盘有足够空间,总大小6G左右

***因为源码语言指定用 sdk build-tools 22.0.1打包,所以需要另外装 build-tools的版本,方法如下

1、使用android list sdk –all 查看所有可用的更新包,找到 build-tools22.0.1编码为8

2、使用android update sdk –no-ui –all –filter 8安装build包

Note: android list target 查看本地已经安装的SDK

二、安装jenkins

三、jenkins的启动和初始化配置

使用 http://localhostip:8080即可以访问jenkins页面,如果不能访问,请检查iptables,本例中将iptables关闭,iptables相关知识请自行脑补

首次登录,出现的第一个页面是这样子的,要通过主机上一个文件来解锁,这个设计很奇妙

第二个页面为选择安装插件,因后面还有插件需要安装,这里选默认就好了,等待默认的插件安装完成。

完成后的主界面是这样子的

1、jenkins插件安装

2、初始化设置

系统管理 –>全局化设置里增加以下键值

系统设置Global Tool Configuration

设置jdk、git 和gradle 安装路径(此处有坑)

四、新建构建任务

1、选择构建自由风格的软件项目

2、源码管理,选git,若没有出现 git选项,请回头重新安装Git plugin插件,填写gitlab仓库地址,增加gitlab仓库验证方式,gitlab仓库验证有点波折,多尝试就好

3、构建触发器

jenkins其实可以和 gitlab 的 hooks结合起来用,有推送就触发,懒得去研究了,

直接用了SCM排程5分钟检查一下,有新更新就打包,也挺好

第一个参数代表的是分钟 minute,取值 0~59;

第二个参数代表的是小时 hour,取值 0~23;

第三个参数代表的是天 day,取值 1~31;

第四个参数代表的是月 month,取值 1~12;

最后一个参数代表的是星期 week,取值 0~7,0 和 7 都是表示星期天。

如H/5 * * * * 表示的就是每5分钟检查一次源码变化。

4、构建

增加Invoke Gradle script,gradle版本选我们自己增那个,不要用默认

5、构建后

(待研究)

这样子就可以开始构建了,点击立即构建,构建完成时显示蓝色就是构建成功,红色就是构建失败了

构建完成后的apk文件通常放在仓库目录的build/outputs目录下,其实可以用命令在构建完成后拷出去,这个自行脑补吧

五、jenkins加SDK的各种坑

1、构建时提示

Cannot run program "gradle" (in directory "/var/lib/jenkins/jobs/*****/workspace"): error=2, 没有那个文件或目录

网上关于没有文件和目录的问题,有各种说法,试了最后都没有解问题,其实是因为gradle的问题,记得我们第一步在系统设置里面指定了gradle的安装目录么,在新建构建任务的时候,在构建那一步,gradle 版本后面的下拉框要选,指定的版本,不能用默认,请往上翻,注意我画了三个箭头的那张图。

2、另外一个坑,提示无访问权限

我把gradle解压到了/root目录下面,jenkins运行时,会使用jenkins的身份运行gradle,就会出现权限不足,无法访问的情况。

3、Could not init /tmp/hudson1687987969108344361tmp

未安装 git,或在系统设置里未指定git安装路径

4、出现无法连接http 错误

请检查git版本,删除centos自带的 git,编译安装2.7以上版本

5、提示java内存溢出

1 java.lang.OutOfMemoryError: Java heap space

更改java的内存栈大小:set JAVA_OPTS= -Xms1024m -Xmx1024m

六、所需要依赖到的库

libstdc++-4.4.7-17.el6.i686

zlib-1.2.3-29.el6.i686

zlib-deve

马哥教育历经近10年发展,已成为面向企业级资深运维工程师、架构师的专业集训营式高端就业Linux培训学院。凭借多年良好口碑,其已经成为业内知名互联网公司重要人才战略合作伙伴,获得了百度、腾讯、阿里、大众点评、51CTO、唯品会、京东、中移动、新浪、红帽等互联网巨头的合作支持。毕业学员平均薪资达10K以上,累计受益人员达百万+。

原文发布于微信公众号 - 马哥Linux运维(magedu-Linux)

原文发表时间:2016-07-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏BeJavaGod

什么是分布式系统中的幂等性

最近很多人都在谈论幂等性,好吧,这回我也来聊聊这个话题,光看着俩字,一开始的确有点一头雾水,语文不好嘛,词太专业嘛,对吧 现如今我们的系统大多拆分为分布式SOA...

37430
来自专栏杨建荣的学习笔记

一个拷贝操作导致的潜在监听类问题(r9笔记第70天)

最近为了统计一些服务器的监听使用情况,于是写了一个简单的脚本,在中控中执行,脚本逻辑很简单,也没有什么亮点。 脚本内容如下: #check $1 is IP b...

32170
来自专栏Youngxj

html5 clear源码分享

34730
来自专栏安恒信息

Hacking Team 病毒测试环境分析

0x00 前言 安恒研究团队在Hacking Team泄露的文件中除了发现大量的后门、木马等攻击的源码,还发现了两个用于病毒安全性测试的源代码,分别是test...

39850
来自专栏北京马哥教育

linux系统被入侵后处理实战

作者 李振良 | 来源 51cto 糖豆贴心提醒,本文阅读时间8分钟,文末有秘密! ? 事件背景 操作系统:Ubuntu12.04_x64 运行业务:公司...

52850
来自专栏FreeBuf

全能无线渗透测试工具,一个LAZY就搞定了

近来一直在研究无线安全方面的东西,特别是在无线渗透测试这块,每次渗透测试时总要来回不停的切换操作和挑选利器,很是麻烦。就想看看是否可以有一款功能全面的集合型工具...

32950
来自专栏后端技术探索

大众点评新开源项目-Camel(干货)

Camel 是大众点评开发的软负载一体解决方案,承担了F5四层硬负载后的软负载工作。Camel已成为大众点评网络流量中必不可缺的一层。

20830
来自专栏kevin-blog

ubuntu实现定时弹窗

最近在头条上看到,长期久坐8小时以上会影响生育能力,突然有点慌,作为一个IT工作者,8小时....然后我这人没有喝水的习惯,经常专注电脑,就想着,有没有什么办法...

16310
来自专栏信安之路

线下赛ASP靶机漏洞利用分析

继上次发表 记一次线下赛靶机攻击过程 后,看到反响不错,特此再写一篇,关于一台 ASP 靶机漏洞利用过程。

50900
来自专栏FreeBuf

没有外部工具,如何快速发现Windows中毒了

从事应急响应工作几年之后,我认为总结一份快速确定计算机是否被感染木马和病毒的“方法论”是十分有用的。这显然不是那么简单的,可我却发现感染几乎存在于所有不复杂的攻...

22150

扫码关注云+社区

领取腾讯云代金券