基于linux下Jenkins+gradle+gitlab+Android studio实现APP自动打包详细教程

说明:查阅各个介绍Jenkins自动打包的网址,虽然都各有特色,但是按照介绍还是一路遇到很多处坑。经过整理,完成了相对较为准确的教程,如果对各位有帮助就给个好评。谢谢~~~话不多说,咱们开始!!

对于完全第一次接触Jenkins的小白来说,安装和部署Jenkins并不难,唯一相对较难的是gitlab的配置,以及gradle和android studio的配置。咱们一步步慢慢来。

一、Jenkins安装和部署

1、什么是Jenkins?

参考地址:https://jenkins.io/zh/doc/book/installing/

Jenkins通常作为一个独立的应用程序在其自己的流程中运行, 内置Java servlet容器/应用程序服务器(Jetty)。

Jenkins也可以运行在不同的Java servlet容器((如Apache TomcatGlassFish))中作为servlet运行.

2、Jenkins安装

首先要说明下,基于linux安装Jenkins,有多种方式,较为常见的有2种,一是直接在官网下载war包,二是直接在linux中通过yum安装,那么咱们一个个介绍

(一)通过下载war包方式安装Jenkins

(1)首先,打开网址:https://jenkins.io/zh/download/

这里要说明下,无论Linux的内核版本是什么,都下载的是上图红色圈中部分的war包。

(二)通过yum安装Jenkins

通过命令安装

1、sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo

2、sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key //如果已经有 key 存在,请忽略。具体见官方 wiki

3、sudo yum install jenkins

二、安装tomcat和jdk

此处需要介绍下建议jdk安装版本在1.8.0以上,由于目前Android studio编译过程中会查找相应的资源信息,对于jdk版本较低,会提示资源无法加载(com.android.build.gradle.tasks.BuildArtifactReportTask),谨记!!!

安装tomcat和jdk都可以通过多种方式安装,各位凭借喜好自己选择,通常都是yum安装和手动下载好安装包,然后上传到Linux,这里咱们就看下第二种方式。

1、安装tomcat

首先,打开网址:https://tomcat.apache.org/download-80.cgi

这里大家随意选择一种就好,只是解压的命令不一样而已。

下载完成后,将tomcat上传到Linux中,要是下载的是zip压缩格式的,用命令  unzipapache-tomcat-8.5.46-deployer.zip 。要是下载的是tar.gz压缩格式的,用命令  tar -zxvfapache-tomcat-8.5.46-deployer.tar.gz 解压即可。

2、安装jdk

其次安装jdk,打开网址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

这里要看下各位的Linux系统是32位还是64位,按照所需下载即可,建议下载后缀为tar.gz压缩格式的安装包。

下载完成后,上传到Linux,以下载64位为例,通过命令 tar -zxvf jdk-8u221-linux-x64.tar.gz即可

在这里要牢记,别忘记配置环境变量:

export JAVA_HOME=/home/muchenglin/dale/jdk/jdk1.8.0_221

export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

三、Android studio 安装

Android Studio是谷歌自己的 Android 开发 IDE,是带 ADT 插件的 Eclipse 的不错替代品。Android Studio 可以通过源代码安装,但在这篇文章中,我们将看到如何在 Ubuntu 18.04、16.04 和相应的 Linux Mint 变体中安装 Android Studio。

在继续安装 Android Studio 之前,请确保你已经在 Ubuntu 中安装了 Java

在Ubuntu中有多种安装方式

1、使用 Snap 在 Ubuntu 和其他发行版中安装 Android Studio

自从 Ubuntu 开始专注于 Snap 软件包以来,越来越多的软件开始提供易于安装的 Snap 软件包。Android Studio 就是其中之一。Ubuntu 用户可以直接在软件中心找到 Android Studio 程序并从那里安装。

如果你在软件中心安装 Android Studio 时看到错误,则可以使用 Snap 命令安装 Android Studio。

命令:sudo snap install android-studio --classic

2、不习惯Ubuntu页面?只安装了Ubuntu server版本?同样可以安装Android studio

安装SDK linux 服务器下载, wget http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz

解压tar xvzfandroid-sdk_r24.4.1-linux.tgz

进入Android studio安装目录下的tools目录

执行命令:./android list sdk -a   查看sdk目录

执行命令:android  update sdk -u -t 28 -a 安装第28个文件

安装完成过,要配置环境变量

export ANDROID_HOME=/home/muchenglin/dale/sdk/android-sdk-linux

export PATH=$PATH:${ANDROID_HOME}/tools

export PATH=$PATH:${ANDROID_HOME}/platform-tools

四、安装git

参考文章:https://blog.csdn.net/vslyu/article/details/80337675

五、配置Jenkins

1、将下载好的Jenkins的war包放到tomcat下webapps下​

2、更改下tomcat目录conf下的server.xml

修改其中的tomcat端口

保存后,进入到tomcat下的bin目录,执行命令 ./startup.sh,开始运行tomcat

3、打开网址:服务器IP:端口/Jenkins

将公钥复制粘贴到Jenkins页面输入框,点击”确定“按钮。

4、输入完成后会提示安装自定义插件还是推荐插件,此处我选择推荐插件,安装过程可能由于网络原因导致失败,后续失败的可以在系统设置-插件管理里面卸载或者重新安装即可。如下图

5、只要等待安装完成即可,如下图:

6、选择continue继续设置管理员

7、创建用户并登陆

好了,到这里linux下安装jenkins教程就结束了。

六、Jenkins配置

首先,要确定已经安装了必要的插件,分别为:Android Lint PluginAnt PluginGitGradle Plugin、PUBLISH OVER SSH、Subversion Plug-in、Credentials Binding Plugin、Maven Integration plugin等

1、系统管理-系统设置

修改环境变量:

第一个环境变量是配置Android SDK,第二个环境变量是配置gradle,第三个环境变量是项目完成打包后需要用到的变量(可不设置)

2、项目配置

(1)点击”新建任务“,输入任务名称,选择”构建一个自由风格的软件项目“,点击左下角”确定“

(2)点击”源码管理“,复制项目仓库地址,身份信息点击”添加“,

(3)系统管理-全局工具配置,设置jdk、Git、gradle的相关配置,其中jdk的别名任意填写,JAVA_HOME填写Linux中/etc/profile中设置的jdk环境变量。Git的名称任意填写,在Linux下输入whereis git 命令,git根目录的地址填写到Path to Git executable中。gradle要根据你打包的app用到的gradle版本一致,比如前端开发人员开发app时,用到的gradle版本是4.4版本,那这里勾选”自动安装“,其次下面的版本号要选择”Gradle4.4“,点击保存,再点击应用即可自动安装

(4)再次配置项目,选择构建,勾选上面刚自动安装的gradle版本,再执行shell脚本,内容为

TIME=`date +%F-%H-%M-%S`

echo $BUILD_ID

rm -f /home/muchenglin/dale/jpg/test.jpg

cp /root/.jenkins/workspace/zsd/xiaoyusan/android/app/build/outputs/apk/Xiaoyusan/debug/xys-Xiaoyusan-2.6.6-debug.apk /home/muchenglin/dale/downloading/android/xys-Xiaoyusan-2.6.6-debug.apk

myqr http://192.168.13.88:9090/xys-Xiaoyusan-2.6.6-debug.apk  -n ${BUILD_ID}-test.jpg -d /home/muchenglin/dale/jpg

注释:第一行TIME为获取系统时间,第二行引入BUILD_ID,第三行为删除上次生成的二维码,第四行将编译成功的apk文件拷贝到另外的路径,第五行myqr是将apk文件生成二维码图片,格式为”myqr apk名称 -n 自定义图片名称 -d 图片存放路径“

(5)构建-高级,Switches输入框输入”clean build --stacktrace --debug“,Root Build script输入框输入linux系统通过git拉取到的项目路径,一定要进入到项目路径中app所在的路径!!Build File输入框填写”build.gradle“即可。

(6)选择”构建后操作“,点击”新增构建后操作“,选择”set build description“。Regular expression输入框不需要填写,Description输入框填写”<img src='http://192.168.13.88:8088/${BUILD_ID}-test.jpg' width=200px height=200px>“ 格式为”<img src='图片' width=自定义大小  height=自定义大小>“。描述为编译完成后,在项目页面显示生成的二维码图片。

其次,还要修改最后一点,打开系统管理-全局安全设置,找到标记格式器,选择”Safe HTML“即可。

至此,所有配置均完成,效果如下图:

附加(其他网站均未写到二维码如何显示,如何实现下载):

1、二维码图片展示

需要在nginx配置相关代码,如下:

server{

listen       8088;

server_name  192.168.13.88;

location / {

root html;

index    index.html index.htm;

}

location ~ .*\.(gif|jpg|jpeg|png)$ {

root /home/muchenglin/dale/jpg;

expires -1;

}

}

2、扫码自动下载功能

同样需要在nginx中配置相关代码,如下:

server {

listen 9090;

server_name 192.168.13.88;

charset utf-8;

root /home/muchenglin/dale/downloading/android;

location / {

autoindex on;             #开启索引功能

autoindex_exact_size off; # 关闭计算文件确切大小(单位bytes),只显示大概大小(单位kb、mb、gb)

autoindex_localtime on;   # 显示本机时间而非 GMT 时间

}

}

在编译过程遇到的很多坑,百度很多都找不到解决方式,我会在下次的博客中一一举证出来,期望大家有问题可以直接问,感谢!!!

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

推荐阅读更多精彩内容