转载

jenkins+gogs实现Android项目自动化部署(三)

上一篇项目主要介绍了jenkins+gogs实现JavaWeb项目自动化部署,这一篇重点介绍下Android项目的自动部署。另外注意下这一篇主要介绍在宿主机(jenkins安装所在的服务器)上打包,也就是远程打包部署,可能有同学会问你为什么要强调在远程打包部署呢,上一篇不就是远程打包部署JavaWeb项目的么,这里强调主要是为下一篇iOS项目自动部署做铺垫,因为iOS项目必须要在macOS系统上打包,所以我们没办法远程打包,但是jenkins可以添加slave节点,通过节点机来为我们打包,说人话就是我们可以将一台macOS系统的电脑作为节点跟jenkins做关联,jenkins在触发自动部署的时候可以通过我们设置的节点机来打包。

扯远了,我们开始回归正题。我们的 目标 是什么?

jenkins+gogs实现Android项目自动化部署(三)

很简单对不对?确实很简单。这里的B有点特殊,我这边的实际情况是要把apk传到windows系统的服务器上,后面我会说如何实现windows下的ssh协议。

正式开始前我们做些准备工作。

一、准备工作

1、配置gradle

先安装Gradle插件,怎么安装插件就不用说了吧?上一篇有介绍。

进入系统管理—》全局工具配置

jenkins+gogs实现Android项目自动化部署(三)

2、安装AndroidSDK

我是通过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" 可以根据需要替换版本号

耐心等待一会。。。

3、配置全局变量

系统管理—》系统设置

jenkins+gogs实现Android项目自动化部署(三)

二、配置自动化构建

(1)新建任务。这里省略步骤,不清楚的看我上一篇文章。

(2)配置参数化构建

配合参数化构建,可以打出不同参数的包,比如使用不同的签名,不同的url等。

jenkins+gogs实现Android项目自动化部署(三) jenkins+gogs实现Android项目自动化部署(三)

IS_JENKINS会映射到 gradle . properties 文件中,下面的选项一行一个,表示有两种选择true和false。

参数化构建配置上了,需要在构建时将参数映射到代码中。

jenkins+gogs实现Android项目自动化部署(三)

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参数。

配置完后我们通过下面的方式来选择参数化构建

jenkins+gogs实现Android项目自动化部署(三)

以上就是Android项目的自动化部署全过程。等我讲完iOS项目的构建过程后,可以借助节点机来完成编译。

三、Windows下的SSH协议

这个可以参考这篇文章,写的非常详细。https://www.linuxidc.com/Linux/2017-07/145984.htm

版权声明:本文为博主原创文章,未经博主允许不得转载。http://www.longdw.com/jenkinsgogsjavawebautopublish3/

原文  http://www.longdw.com/jenkinsgogsjavawebautopublish3/
正文到此结束
Loading...