Linux中Jenkins+Git+Gradle自动化打包Android

我的视频课程:《FFmpeg打造Android万能音频播放器》


        我们在Android的开发中常常需要:开发环境、测试环境和生产环境三个环境下测试我们的应用,经常会遇到这样的情况,测试人员给我们开发人员说“能不能给我打一个XXX的环境的包,我需要测试”,再工作不忙或者偶尔一次的情况下,开发人员还是很乐意给测试人员打包的,毕竟分分钟就搞定了。但是当维护的产品多了,或者测试人员需要很多的版本,那就不是分分钟搞定的事了,又让我们给他们打包非累坏我们可爱的程序员哥哥(妹妹)的。所以作为一名“懒”的猿类,当然想把打包这种简单的事交给测试人员自己干了,爱怎么打包就怎么打包,这里就利用Jenkins+Git+gradle来自动构建Android应用,一键搞定就这么简单。先来一张实例图片吧,毕竟无图无真相:


图中分为三个环境:开发、测试和生产;然后项目中维护了5个APP的项目(当然一个也是一样的)。然后最后一个参数是判断是来自哪里的打包,这里根据这个参数来设定打包后apk的存放路径。

先来说说大体思路:首先在Linux(Ubuntu)上面配置Java、Android SDK、Gradle、Tomact、Jenkins、Git等开发所需的环境;然后进入Jenkins中配置我们打包需要的环境;然后创建构建的项目;然后添加自定义参数(用户在gradle中获取);然后配置项目源码;然后构建脚本等。这么多然后以后,就可以愉快的构建了。

第一步:搭建Jenkins环境,这一步网上很多教程,搭建Tomact环境,然后部署Jenkins就行了,一般开发中如果是Jenkins构建所以项目的话,后台已经搭建好了,我们只需要添加我们需要的插件即可;然后配置Android SDK环境变量、Java环境变量等,这不是我们这次的重点,所以就不讲了,网上很多资料的。

第二步:在Jenkins上面创建我们的构建项目:

1):安装必要的插件(Git和Gradle)

1、在Jenkins主页面上面选择“系统管理”->“管理插件”,就到了插件管理的界面:


在上面导航栏中选择我们需要安装的插件,然后下载安装重启后就可以用了。

2、配置Gradle插件


选择“系统管理”->“Global Tool Configuration”,里面可以配置全部插件,应git后台已经配置好了,这里我们只需要配置gradle插件即可(附gradle下载地址:http://www.androiddevtools.cn/index.html)这里有很多Android的工具。然后下载相应的gradle版本,配置gradle插件:



2):创建项目

在Jenkins主页面上面点击“新建”,然后输入构建项目名称,然后选择“构建一个自由风格的软件项目”,就可以了。

然后进入我们创建的项目配置环境参数:

1:添加构建参数


配置中的“BUILD_TYPE”、“BUILD_SCRIPT”和“IS_JNEKINS”都是我们在Jenkins和gradle要获取的值,然后根据这些值来进行相应的打包配置,即可完成打包。里面的值有多重类型,一般选择“Choice”就可以了:


2:添加构建脚本

在“源码管理”中添加我们的项目源代码,选择Git然后添加项目git地址,Jenkins只能用SSH这种方式来clone代码,所以还需要添加账号的身份认证证书才行,这里也不絮叨了,找后台管理人员给添加就行了。


3:添加构建脚本


这里面主要是添加构建参数和脚本,通过参数来控制脚本里面的逻辑,实现不同的打包:Jenkins里面的参数可以在gradle.properties中获取到具体的值,然后gradle.properties中的值可以在build.gradle中获取到,这样我们就能在build.gradle中获取Jenkins中选择的参数的值了,然后进行打包配置操作。

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.
org.gradle.jvmargs=-Xmx1536m

# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
BUILD_TYPE = DEV
IS_JNEKINS = false

其中BUILD_TYPE、IS_JENKINS就是我们要获取的值,然后在build.gradle中调用如下:


build.gradle中我们通过(project.XXX)来获取我们配置在gradle.properties中的值 ,然后manifestPlaceholders里面是设置AndroidManifest.xml中相关SDK的参数的。 buildConfigField "String", "PUBLISH_MODE", "\"$project.BUILD_TYPE\""这一句是创建“PUBLISH_MODE”变量,我们在Java代码中可以调用,调用方式为:BuildConfig.PUBLISH_MODE,这样一来,Jenkins中的参数我们在build.gradle、AndroidManifest.xml和Java代码中都可以获取到了,然后就可以根据参数进行相关的配置。

最好我们来设置一下构建好的apk的输出目录:在build.gradle android下面添加如下代码

applicationVariants.all { variant ->
        variant.outputs.each  { output ->
            //开始输出
            if("true".equals(project.IS_JNEKINS))
            {
                if('DEV'.contentEquals(project.BUILD_TYPE))
                {
                    output.outputFile = new File('dev路径+***debug.apk')
                }
                else if('STG'.contentEquals(project.BUILD_TYPE))
                {
                    output.outputFile = new File('stg路径+***debug.apk')
                }
                else if('PRD'.contentEquals(project.BUILD_TYPE))
                {
                    output.outputFile = new File('stg路径+***debug.apk')
                }
            }

        }
    }
这样自动构建好的apk就放到了对应的路径下,然后测试人员或其他人员就可以在里面获取或设置成下载链接。file中的文件名也可以带参数,比如加上版本号等。


好的,写了这么多我也是够啰嗦的了,Linux下面通过Jenkins+Git+Gradle自动化打包Android项目就完成了,感觉还是不容易呀。






  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Jenkins是一款开源的持续集成工具,它可以帮助开发团队自动化构建、测试和部署软件项目。在Jenkins配置Docker插件后,我们可以结合Docker技术来进行自动化部署。Docker是一种轻量级的容器化技术,它可以将应用程序和其依赖的环境打包成一个可移植的容器,方便在不同的环境部署和运行。 而Kubernetes(简称K8s)是一个开源的容器编排平台,它可以管理和调度Docker容器集群。通过在K8s创建Pod、Service等资源对象,我们可以实现Spring Cloud项目的自动化部署。 首先,我们可以使用Jenkins的Pipeline功能来编写自动化部署的流水线脚本。流水线脚本可以定义一系列的步骤,包括构建、测试和部署等。在流水线脚本,我们可以使用Docker插件来创建Docker镜像,并将其推送到Docker仓库。接着,我们可以使用K8s插件来在Kubernetes集群创建相关的资源对象,如Deployment和Service等。 在自动化部署过程,我们可以将Spring Cloud项目的源代码与Dockerfile放在一个Git仓库,并通过Jenkins的Webhook功能来触发自动化部署流水线。当有新的代码提交时,Jenkins自动拉取最新的代码,并执行流水线脚本。在流水线脚本,我们可以使用Maven或Gradle等工具来构建打包Spring Cloud项目。然后,通过Docker插件创建可运行的Docker镜像,并将其推送到Docker仓库。 最后,使用K8s插件在Kubernetes集群创建相关的资源对象,如Deployment和Service等。通过创建Deployment对象,我们可以定义应用程序的副本数和容器的镜像。通过创建Service对象,我们可以定义应用程序可以访问的网络端口和负载均衡规则。 通过Jenkins、Docker和Kubernetes的自动化部署,我们可以实现Spring Cloud项目的快速、可靠和可重复部署。这种自动化部署的方式可以提高开发效率和部署质量,同时也降低了运维成本和风险。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ywl5320

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值