移动端持续集成(Jenkins+Gradle+fir.im)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了移动端持续集成(Jenkins+Gradle+fir.im)相关的知识,希望对你有一定的参考价值。

参考技术A 持续集成是敏捷开发中重要的一项,可以减少开发成员的工作量,通过自动化构建,即编译、发布、自动化测试。从而进行持续交付和持续部署。

Jenkins+Gradle实现Android移动端自动打包+生成apk二维码

Android移动端自动打包后生成apk二维码主要思路是:
1)、将编译后的apk存放路径生成一张二维码;
2)、然后用Java的第三方库生成二维码,提取码:p052。

  1. Job配置添加Windows批处理
    进入Job里,在项目源码 assemble 后添加“Execute Windows Batch Command” Windows批处理,配置批处理脚本如下:
    技术图片
    脚本:
    set BASE_PATH=%WORKSPACE%apk\%BUILD_ID%
    set BASE_URL=%JOB_URL%ws/apk/%BUILD_ID%
    mkdir %BASE_PATH%
    copy %WORKSPACE%appuildoutputsapkali
    eleaseali_release_V1.5.5.apk  %WORKSPACE%apk\%BUILD_ID%ali_release_V1.5.5.apk
    cd G:jenkins-workspaceandorid-jar
    java -jar makeQR.jar %BASE_URL%/ali_release_V1.5.5.apk %BASE_PATH%qrcode.png

    设置apk路径,访问URL,编译后的apk包复制到一目录中,使用第三方jar包生成二维码图片。

  2. Job配置添加set build description
    如果在“增加构建步骤”中没有“set build description”项,先安装该插件"description setter plugin"。该插件可以实现构建完成后设置当次build的描述信息。
    技术图片
    配置set build description:
    技术图片
    <img src="${JOB_URL}ws/apk/${BUILD_ID}/qrcode.png" height="200" width="200" /></br><a href = "${JOB_URL}ws/apk/${BUILD_ID}/ali_release_V1.5.5.apk">点击下载</a>

    接下来在Jenkins构建后照理会在Build History下应该生成二维码图片,但事实并非预想的情况发生,而是
    技术图片
    将set build description中的Description内容原封不动的打印出来。此块查处问题纠结好长时间,后面从Console控制台中的URL与 Build History 下的URL做了对比,怀疑是 Build History 中的URL出现ZERO-WIDTH SPACE 问题,即没有宽度的空格,此问题很难发现。
    后面在网上博文中发现是因为Jenkins出于安全的考虑,所有描述信息的 Markup Formatter 默认都是采用Plain text模式,非Safe HTML模式,这种模式下是不会对 build 描述信息中的HTML编码进行解析的。
    所以接下来在 Manage Jenkins -> Configure Global Security 中,将标记格式器(Markup Formatter)选择“Safe HTML”。
    技术图片
    如果Configure Global Security 中未发现标记格式器,需先安装技术图片插件。

  3. 构建
    构建成功后,在 Build History 中能查看到生成的apk二维码图片,如下图:
    技术图片

以上是关于移动端持续集成(Jenkins+Gradle+fir.im)的主要内容,如果未能解决你的问题,请参考以下文章

jenkins+gradle+上传蒲公英(Android持续集成)

使用Gradle构建构建一个Java Web工程及持续集成环境Jenkins配置

如何在Jenkins,Git和Gradle的持续集成环境中处理用户名/密码? [关闭]

Jenkins+Gradle实现Android移动端自动打包+邮件发送通知

技术分享 | Jenkins 持续集成体系介绍

利用 Jenkins 持续集成 iOS 项目,搭建自动化打包环境