Linux+Jenkins+Gradle构建Android参数化自动打包上传蒲公英(二)

1,252 阅读2分钟
原文链接: lhalcyon.com

前一篇文章中,说明了在CenterOS上进行一系列的环境搭建,本文开始说明关于项目的一系列配置

Jenkins项目配置

首先创建一个项目,将构建保持的天数和个数进行限制

此处感谢后台同事提示,因为Android SDK NDK 就特别占空间了,如果构建缓存不进行限制,则很快服务器空间就会不足🤥

jenkins_total

参数构建配置

打包环境

jenkins_total

分支指定

jenkins_branch

email自定义接收者

jenkins_email

打包时间戳

jenkins_total

因为笔者的公司对打包的Apk名以及测试版本号时间戳显示的要求,因此需要使用动态参数

还有其他参数均与以上类似,可自行配置

!!! 记住尤为重要的是这些参数都是Jenkins上配置的Gradle属性,得传递到App的Gradle中

jenkins_email

这里勾选Pass all job parameters as Project properties

源码管理

源码管理处配置Git账号

jenkins_total

这里的*/${BRANCH}对应参数配置时的BRANCH.为什么这里做成选择型参数呢,是因为分支名是未知的,做成填写的话,可能压根拉不到指定分支的代码🤐

Gradle构建脚本

增加构建动作

这里${WORKSPACE}指的是Git拉下的根目录.途中马赛克位置则为项目根目录

jenkins_total

蒲公英上传

增加构建动作,将Apk上传蒲公英

jenkins_total

curl -k -F "file=@${WORKSPACE}/source/项目根目录/app/apks/${BUILD_PREFIX}_${JENKINS_TIME}_${DAY_VERSION}.apk" -F "uKey=你的ukey" -F "_api_key=你的apiKey" -F "installType=2" -F "password=下载密码" -F "updateDescription=${DESCRIPTION}" https://www.pgyer.com/apiv1/app/upload

${WORKSPACE}/source/项目根目录/app/apks/为笔者自行修改的Apk输出目录,此处请根据自己的项目输入目录进行修改

curl命令如果使用不了可自行百度解决

以下为蒲公英的上传Api,可以自行调整参数

jenkins_total

邮件通知

首先还是进入Jenkins->系统设置

Jenkins Location中进行配置

Jenkins URL:http://10.50.0.16:8777/jenkins/

系统管理员邮件地址: Android参数化构建<aaa@163.com>

此处Android参数化构建就为邮件中的发送人名称

jenkins_total

jenkins_total

系统设置中的默认收件人最好不要配置为自己,因为如果配置后,自己就永远在收件人的前端,后面想发送给领导时,便不大好. 邮件的内容可自定义html内容,二维码直接线下生成蒲公英的地址然后贴在邮件内即可

App本地Gradle配置

首先在gradle.properties文件中进行参数化构建在非Jenkins写入情况时的缺省值配置

jenkins_total

在未使用Jenkins构建的情况下应用会读本地的这些变量值

然后在appmodule下的build.gradle中进行配置写入的值配置

jenkins_total

//修改生成的apk名字及输出目录
applicationVariants.all { variant ->
    variant.outputs.each { output ->
        def newName
        def oldFile = output.outputFile
        def outDirectory = oldFile.parent
        def buildPrefix
        def showVersion
        if (variant.buildType.name == 'debug') {
            buildPrefix = BUILD_PREFIX
        } else {
            buildPrefix = BUILD_PREFIX_RELEASE
        }
        def jenkinsTime = JENKINS_TIME
        if (variant.buildType.name == 'debug') {
            showVersion = buildPrefix + '_' + jenkinsTime + '_' + DAY_VERSION
        } else {
            showVersion = APP_VERSION
        }
        resValue("string", 'fund_app_version', showVersion)
        def tempFile = file("build.gradle")
        outDirectory = tempFile.parent + '/apks'
        if (IS_JENKINS) {
            newName = buildPrefix + '_' + jenkinsTime + '_' + DAY_VERSION + '.apk'
        } else {

            newName = 'android-v' +
                    APP_VERSION + '-' + variant.productFlavors[0].name + '-' + variant.buildType.name + '.apk'
        }

        output.outputFile = new File(outDirectory, newName)

    }
}

系统默认的输入路径是在build文件夹中,层级比较深.此处笔者将apk的输出路径进行了修改并且对apk的输出名称进行了调整

至此,Jenkins参数自动化构建已经完成!😀