上一篇项目主要介绍了jenkins+gogs实现JavaWeb项目自动化部署,这一篇重点介绍下Android项目的自动部署。另外注意下这一篇主要介绍在宿主机(jenkins安装所在的服务器)上打包,也就是远程打包部署,可能有同学会问你为什么要强调在远程打包部署呢,上一篇不就是远程打包部署JavaWeb项目的么,这里强调主要是为下一篇iOS项目自动部署做铺垫,因为iOS项目必须要在macOS系统上打包,所以我们没办法远程打包,但是jenkins可以添加slave节点,通过节点机来为我们打包,说人话就是我们可以将一台macOS系统的电脑作为节点跟jenkins做关联,jenkins在触发自动部署的时候可以通过我们设置的节点机来打包。
扯远了,我们开始回归正题。我们的 目标 是什么?
很简单对不对?确实很简单。这里的B有点特殊,我这边的实际情况是要把apk传到windows系统的服务器上,后面我会说如何实现windows下的ssh协议。
正式开始前我们做些准备工作。
先安装Gradle插件,怎么安装插件就不用说了吧?上一篇有介绍。
进入系统管理—》全局工具配置
我是通过Android SDK Tools来安装sdk的
下载地址 https://dl.google.com/android/repository/platform-tools-latest-linux.zip
地址被墙了,大家懂的,先本地下载好后传到宿主机上吧。
解压到/usr/local/android-sdk/下,没有android-sdk目录自己创建一个
sdkmanager命令大家移步这里 https://developer.android.com/studio/command-line/sdkmanager
执行 . / sdkmanager "platform-tools" "platforms;android-26" "build-tools;28.0.3" 可以根据需要替换版本号
耐心等待一会。。。
系统管理—》系统设置
(1)新建任务。这里省略步骤,不清楚的看我上一篇文章。
(2)配置参数化构建
配合参数化构建,可以打出不同参数的包,比如使用不同的签名,不同的url等。
IS_JENKINS会映射到 gradle . properties 文件中,下面的选项一行一个,表示有两种选择true和false。
参数化构建配置上了,需要在构建时将参数映射到代码中。
jenkins上的参数化构建配置完成后,我们需要在代码中接收该参数。
gradle.properties
...... IS_JENKINS=false url="http://xxxx" ......
项目的 build.gradle
def getMyStoreFile(){ if("true".equals(IS_JENKINS)){ return file("/usr/local/android-sdk/xxx.jks") }else{ return file("/Users/longdw/Desktop/xxx.jks") } } android { defaultConfig { ...... buildConfigField "String", "url", url } release { storeFile getMyStoreFile() storePassword 'xx' keyAlias 'xx' keyPassword 'xx' } buildTypes { release { zipAlignEnabled true //是否支持zip proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' //采用动态替换字符串的方式生成不同的release.apk android.applicationVariants.all { variant -> variant.outputs.all { if("true".equals(IS_JENKINS)){ outputFileName = "app-release.apk" } else { outputFileName = "longdw_${variant.name}_v${variant.versionName}.apk" } } } } } }
代码中我们可以通过 BuildConfig . url 来获取url参数。
配置完后我们通过下面的方式来选择参数化构建
以上就是Android项目的自动化部署全过程。等我讲完iOS项目的构建过程后,可以借助节点机来完成编译。
这个可以参考这篇文章,写的非常详细。https://www.linuxidc.com/Linux/2017-07/145984.htm
版权声明:本文为博主原创文章,未经博主允许不得转载。http://www.longdw.com/jenkinsgogsjavawebautopublish3/