10

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

 4 years ago
source link: https://www.longdw.com/2019/04/04/jenkinsgogsandroid/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

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

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

WX20190404-095733@2x.png

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

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

一、准备工作

1、配置gradle

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

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

gradle-1024x246.png

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、配置全局变量

系统管理—》系统设置

huanjing-1024x245.png

二、配置自动化构建

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

(2)配置参数化构建

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

1111-1024x456.png
step1-1024x489.png

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

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

2222-1024x545.png

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

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

111-2-1024x420.png

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

三、Windows下的SSH协议

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

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK