Android Jenkins自动化构建之参数化构建、多分支构建(二)

上篇,Android之Jenkins自动化打包流程及问题处理(一) 完成Jenkins最基本的自动化国建过程。
但是,我们正式的项目往往需要配置很多的参数,设置等等。所以,最进本的打包,是无法满足我们的要求的。
这篇文章,就说明下,自动化打包的其他配置,参数化构建,多分支构建等等。

本文内容:

  • 参数化构建
  • 多分支构建
  • 定时构建

一、参数化构建

在新建的项目里,点击左侧配置
Android Jenkins自动化构建之参数化构建、多分支构建(二)_第1张图片

进入配置页面,【General】-勾选【参数化构建过程(This project is parameter)】这个选项。

点击添加参数,可以看到好几个选项,有boolean类型参数,String类型参数,选择的参数等等,用哪个类型的参数,需要根据我们的需求来选择。
Android Jenkins自动化构建之参数化构建、多分支构建(二)_第2张图片
现在,我们来模拟2个场景,来看下,这些参数怎么使用。

配置Gradle打包命令

1,一般的Android项目,都会有测试环境,开发环境,生产环境。
我们会配置productFlavors,如下

Android{
	flavorDimensions "env"
    productFlavors {
        online {
            buildConfigField "String", "API_HOST", "\"${cfg["apiUrlRelease"]}\""
            dimension "env"
        }
        //开发版本
        dev {
            buildConfigField "String", "API_HOST", "\"${cfg["apiUrlDev"]}\""
            dimension "env"
        }
        //测试版(本地)
        local {
            buildConfigField "String", "API_HOST", "\"${cfg["apiUrlDebug"]}\""
            dimension "env"
        }
    }
}

通常,这样的情况,我们本地打包的命令是这样

gradlew assembleOnlineRelease //生产环境
gradlew assembleDevRelease //开发环境

这种情况的话,我们打不同环境的包,就需要 assebleXXXRelease这样的命令。
这样,我们就需要添加一个带选择的参数(环境就几个,是固定的)来跟我们的task命令关联起来,。

说干就干。

  • 我们添加一个选项参数
    Android Jenkins自动化构建之参数化构建、多分支构建(二)_第3张图片
    这里的3个选项,对应我们项目里面的3个测试环境(选项跟build.gradle里面的环境名字(local,dev,online)需要一样)。

  • 修改构建的task
    Android Jenkins自动化构建之参数化构建、多分支构建(二)_第4张图片
    这里,我们使用了 ${API_HOST} 替换了打包时候(gradlew assembleXXXRelease),中间的那个环境(XXX)。

这样的话,在构建项目的时候,就可以通过选项来构建不同环境的包。

配置项目APP的属性

上面,我们是通过参数来配置打包命令的,并没有涉及到修改APP里面的属性。

这样,我们强行加戏,再来一个动态添加版本名(versionName),这个属性。

添加参数,其实,在构建的时候会替换掉项目gradle.properties里面的相同的参数。所以,我们在Jenkins里面添加参数后,需要在gradle.properties里面也添加相应的参数,这样,我们才可以使用。

知道了,怎么替换后,我们的步骤就是:

  • 1,在Jenkins里,添加String参数,在构建的时候写入进去
  • 2,在Android项目的gradle.properties里添加一个相同的参数
  • 3,在build.gradle里面引用gradle.properties的参数
  • 4,这样能行吗。。。。

1, 我们先在添加一个String参数的选项了。如下
Android Jenkins自动化构建之参数化构建、多分支构建(二)_第5张图片
2,在项目的gradle.properties里面也添加这个APP_VERSION_NAME参数

gradle.properties

# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.

APP_VERSION_NAME=2.0.0

3,我们在项目里面引用这个参数

在app的module里的build.gradle引用这个版本名

build.gradle

android {
	...
    defaultConfig {
        versionName APP_VERSION_NAME
		...
	}
	...
}

4,这样能行么?

事实上,我们做完了上面的3个步骤的话,还是不行的。
我们需要把Jenkins配置的参数,映射到代码里。

步骤:
配置 - 构建 - 高级 - 勾选Pass all job parameters as Project properties
如下图
Android Jenkins自动化构建之参数化构建、多分支构建(二)_第6张图片
到这里就可以构建我们的参数了

最后,回到Jenkins里我们创建的项目里。点击Build with Parameters
Android Jenkins自动化构建之参数化构建、多分支构建(二)_第7张图片
点击完成后,会让我们配置,我们的参数
Android Jenkins自动化构建之参数化构建、多分支构建(二)_第8张图片
当我们配置完成后,就可以开心的构建我们的项目了。

二、多分支构建

在添加完了参数化构建后,项目确实方便了不少。

但是,我们发现,我们的项目有很多分支,难道说,每个分支都要创建一个项目么,这不科学啊。

后来发现,我们可以通过Git Parameter这个插件,可以实现多个分支的切换。

安装Git Parameter插件

系统管理 - 插件管理
Android Jenkins自动化构建之参数化构建、多分支构建(二)_第9张图片
进去后,点击可用插件,搜索git parameter
在这里插入图片描述
然后,安装
Android Jenkins自动化构建之参数化构建、多分支构建(二)_第10张图片

安装完成

参数化构建,添加Git Parameter参数

参数化构建 - 添加Git Parameter
Android Jenkins自动化构建之参数化构建、多分支构建(二)_第11张图片
看下Git Parameter需要设置哪些参数
Android Jenkins自动化构建之参数化构建、多分支构建(二)_第12张图片
Parameter Type 选择Branch or Tag,这样,分支跟tag都可以显示选择。
默认分支,选择的还是master
到这里,参数就填写完了。

修改源码管理,默认的master分支

修改我们在设置git地址时候,添加的默认的分支(*/master)

Android Jenkins自动化构建之参数化构建、多分支构建(二)_第13张图片
这里的指定分支用我们刚才构建 的参数替换(前面要加上‘$’符号)

开始构建

返回,Jenkins的项目里面,点击Build with Parameters

我们就看到了,我们远程的分支就都显示出来了。

Android Jenkins自动化构建之参数化构建、多分支构建(二)_第14张图片

现在,我们就可以自由的选择分支来打包了。

三、定时构建

1,我们还是进入项目,选择,左侧的配置

Android Jenkins自动化构建之参数化构建、多分支构建(二)_第15张图片

2,选择构建触发器下面的Build periodically(定时构建)

Android Jenkins自动化构建之参数化构建、多分支构建(二)_第16张图片
Build periodically表示周期性的对项目进行构建。到指定的时间,触发构建任务。

3,填写定时构建的规则

Android Jenkins自动化构建之参数化构建、多分支构建(二)_第17张图片
定时构建规则:
定时构建有5颗星组成。每个星代表不同的含义。


* * * * *

  • 第一颗*,表示分钟,取值范围0~59
  • 第二颗*,表示小时,取值范围0~23
  • 第三颗*,表示一月的第几天,取值1~31
  • 第四颗*,表示第几个月,取值1~12
  • 第五颗*,表示一周的第几天,取值0~7(0和7都是周日)

1,10分钟构建一次
H/10 * * * *
2,每2小时构建一次
H H/2 * * *
3,每月的1-10号,每个2天构建一次
H H 1-10/2 * *
4,每周的周一,周五的下午8点,构建一次
H 18 * * 1,5

1,多个指定的时间点,用逗号“,”隔开(比如,H H * * 1,3,5)
2,“/”,表示间隔时间,每隔多长时间,执行一次
3,“1-10”,表示取值返回,连续的日期(分?时?天?)来构建

填写好构建时间后,下面就会显示出来优化的规则和执行的时间。

到这里,这3种构建就说完啦。
Jenkins里面的功能还有好多好多,push自动构建,构建完成自动上传到蒲公英,钉钉提示,发邮件等等等等。后面,等尝试完了,在补充。

你可能感兴趣的:(技术,技巧)