设为首页 收藏本站
查看: 1573|回复: 0

[经验分享] jenkins+gitlab构建安卓自动编译环境

[复制链接]

尚未签到

发表于 2018-9-4 08:42:44 | 显示全部楼层 |阅读模式
  因工作关系接触到接触到安卓自动编译环境,网上的资料都推荐了jenkins,因为第一次接触安卓和jenkins,踩了不少的坑,有总结才有进步。
  gitlab环境之前已经安装完成可用,具体步骤另外详解吧。本例目标是在gitlab可用前提下,通过jenkins将git仓库的代码自行编译打包,生成可用的apk安装文件。
  一、相关环境
1Linux Centos6.3 2.6.32-279.el6.x86_64  各相关软件版本
1    JDK 1.8.0    Gradle 2.13    SDK R24    git 2.7.1      jenkin 2.11  依赖软件安装,
123456   git安装,不可用yum直接的git版本,需要重新下载新版,本例用git2.7.1,编译安装即可,下载地址          https://www.kernel.org/pub/software/scm/git/git-2.7.1.tar.gz   本例中下载的,JDK,SDK,Gradle 都是解压后,设置环境变量即可用了   其中: JDK 解压目录为/usr/local/java       SDK解压目录为/an/android-sdk-linux       Gradle目录为/an/package/gradle-2.13  编辑.bashrc文件,设置环境变量,设置完成后使用source ~/.bashrc重新加载配置即可,具体设置如下:
1  #JDK环境变量        export JAVA_HOME=/usr/local/java      
                     export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH        export PATH=$JAVA_HOME/bin: $PATH
1  #SDK环境变量        export ANDROID_HOME=/an/android-sdk-linux
                      export PATH=$ANDROID_HOME/platform-tools:$ANDROID_HOME/tools:$PATH
1  #gradle环境变量     export GRADLE_HOME=/an/package/gradle-2.13      
                     export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:${GRADLE_HOME}/bin:${JAVA_HOME}:${PATH}
1#使用java –version  android –h   gradle –version 三个命令测试安装是否成功。  哈哈哈,这里有一个坑,被我踩了,后面再详细说。
  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
12  这次使用了jenkins的2.11版,实际上已经有了2.13版,直接到官网下rpm包安装就好  Jenkins 官网centos系统的下载页面:http://pkg.jenkins-ci.org/redhat/  三、jenkins的启动和初始化配置
1启动:service jenkins start1   #**运行出错,出现如下提示*
  *Starting Jenkins Jenkins requires Java7 or later,
  but you are running 1.6.0_24-b24 from /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre     
  #在/etc/init.d目录下,编辑jenkins文件,
  将java的目标地址/usr/lib/****改为实际安装的地址就可以了
1  使用netsta 可以查看到,8080端口已被监听,
  [root@Centos6 init.d]#
  netstat -apn | grep 8080 tcp   0   0 :::8080   :::*     LISTEN
  使用 http://localhostip:8080即可以访问jenkins页面,如果不能访问,请检查iptables,本例中将iptables关闭,iptables相关知识请自行脑补
  首次登录,出现的第一个页面是这样子的,要通过主机上一个文件来解锁,这个设计很奇妙
DSC0000.jpg

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

  1、jenkins插件安装
123456#系统管理---管理插件---可安装插件,选中以下插件安装     Git plugin      #必须     Gradle plugin   #必须      GitLab Plugin     Git client plugin     Gitlab Hook Plugin  2、初始化设置

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

  l  系统设置Global Tool Configuration
  设置jdk、git 和gradle 安装路径(此处有坑)
DSC0003.jpg

  四、新建构建任务
  1、选择构建自由风格的软件项目
DSC0004.jpg

  2、源码管理,选git,若没有出现 git选项,请回头重新安装Git plugin插件,填写gitlab仓库地址,增加gitlab仓库验证方式,gitlab仓库验证有点波折,多尝试就好
  3、构建触发器
  jenkins其实可以和 gitlab 的 hooks结合起来用,有推送就触发,懒得去研究了,
  直接用了SCM排程5分钟检查一下,有新更新就打包,也挺好
DSC0005.jpg

  第一个参数代表的是分钟 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版本选我们自己增那个,不要用默认
DSC0006.jpg

  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 错误
12345Failed to connect to repository : Command "/usr/local/bin/git -c core.askpass=true ls-remote -h http://*********************/****r.git HEAD" returned status code 128: stdout:  stderr: fatal: Unable to find remote helper for 'http'  请检查git版本,删除centos自带的 git,编译安装2.7以上版本
  5、提示java内存溢出
1java.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
  参考资料:http://www.jianshu.com/p/526fbd59750e


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-562237-1-1.html 上篇帖子: Jenkins学习1-Hunk 下篇帖子: 安装配置maven、ant(Jenkins)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表