jenkins 系列 -- 二维码下载安装包

概述

上一篇我们已经把Jenkins 打包好的 apk 文件上传到tomcat服务器,可以提供下载了。但这个下载需要手动去点击,才能下载。而现在的人又都那么懒,最好的下载方式当然是扫个二维码就能下载。

生成二维码工具

我们这里使用 qrcode,这是个python 开源库。具体使用方法可以看官方文档。关于怎么安装 python ,作为程序员,我想自己搞定吧。不过好多人推荐这个教程,我也贴在这吧,这是windows 平台的。说下使用这个库的注意事项,如下。

  • 这个库使用的python3,所以不要装错了。
  • qrcode 会使用到 PIL 这个图片处理库。但这个库只支持到python2python3应该安装 Pillow这个库,可参考python 安装PIL .
  • 不需要安装 qrcode 。把代码clone下来就OK了。我们采用执行脚本的形式生成二维码。当然你也可以用其他方式生成二维码。

jenkins 配置全局环境变量

Manage jenkins-->Config System
设置全局环境变量 PYTHON,值为你的python3 的位置。一般为 bin下的python文件的路径。

jenkins_python_1

执行脚本生成对应二维码

增加构建信息

找到对应的项目,点击配置。选择构建菜单,新增Execute shell,如下。

jenkins_python_2

当然如果你是 Windows 环境可能需要新增的是Execute Windows batch command

脚本组成

下面来看下脚本的组成,先贴上脚本代码。如下

xx/xx/bin/python /Users/tuoanlan/Developer/python_code/qrcode/myqr.py http://142.34.330.921:8080/apk/${BUILD_TIME}/JenkinsTest-v${APP_VERSION_NAME}-${PRODUCT_FLAVORS}-${BUILD_TYPE}.apk -v 7 -n jenkins.png -p /Users/zhang/Developer/python_code/qrcode/timo.jpg -c -con 1.5 -bri 1.6 -l L -d app/build/outputs/release/${BUILD_TIME}
  • 第一段xx/xx/bin/python:是我的python3的全路径(虽然我这里设置了全局变量,但不生效,和我conda环境有关。因为我的shell 使用conda 控制环境的,而启动shell 就会启用基础环境,所以我这里使用的是全路径。)

  • 第二段/Users/zhang/Developer/python_code/qrcode/myqr.py:是 myqr.py脚本的路径。myqr.py是我们clone 下来的qrcode仓库下的一个脚本。

  • 接下来的参数都是调用 myqr.py脚本,需要传的参数。详情可见 qrcode 使用说明

    • http://134.14.232.201:8080/apk/JenkinsTest-v${APP_VERSION_NAME}-${PRODUCT_FLAVORS}-${BUILD_TYPE}.apk 是拼接的apk的下载地址。也就是扫描二维码后指向的地址。
    • -v 7控制边长,二维码的边长
    • -l L纠错等级,L 是最低
    • -d app/build/outputs/release/${BUILD_TIME}指定二维码图片的存放路径。
    • -p /Users/zhang/Developer/python_code/qrcode/tim.jpg 指定二维码中的图片
    • -c二维码中图片显示为彩色
    • -con 1.5 调节图片的对比度为1.5,默认为1
    • -bri 1.6 调节图片的亮度
    • -n xxxx.png 指定生成二维码图片的名称。
    • 如果未指定,生成的二维码图片默认名称为 qrcode.png
    • 如果你指定了图片,如 github.jpg,但未指定二维码图片名称。那么生成的二维码图片名称默认为 github_qrcode.png需要注意噢!,所以建议指定下二维码图片的名称
      到这里我们执行构建就能生成二维码的图片了。但是这个图片在app/build/outputs/release 下,每次还要找到这个文件然后扫码。
注意:如果你是 Windows 环境。那么拼接apk 下载链接的时候。可能需要使用%%获取动态参数。如${APP_VERSION_NAME},在Windows平台,则应该使用%APP_VERSION_NAME% 这种方式获取。

显示二维码

效果如下,在构建历史中就可以看到二维码,可扫码下载,也可以点击下载。


jenkins_python_3

第一步: 设置标记格式器(Markup Formatter)

首先需要修改设置,将标记格式器设置为 Safe HTML,步骤如下。
Manager Jenkins-->Configure Global Security-->标记格式器(Markup Formatter) 更改为 Safe HTML,如下图所示

image

第二步:添加构建后操作

添加 Set build description

找到需要添加的项目,点击配置,然后点击构建后操作菜单 。然后增加 Set build description,如下所示。

jenkins_python_4

设置 description

Description 框中输入如下html

<img src='http://localhost:8080/me/my-views/view/all/job/${JOB_NAME}/${BUILD_NUMBER}/artifact/app/build/outputs/release/qrcode.png' width=200px height=200px> <br>  <a href='http://144.34.230.221:8080/apk/JenkinsTest-v${APP_VERSION_NAME}-${PRODUCT_FLAVORS}-${BUILD_TYPE}.apk '>点击下载 JenkinsTest-v${APP_VERSION_NAME}-${PRODUCT_FLAVORS}-${BUILD_TYPE}.apk-</a>

下面分开来看下每个标签的意思。

  • <img>标签,src 指定的是二维码图片的路径,当然也是需要拼接的。现在我们使用的是本地的二维码图片地址。之后我们会把二维码和apk 包都上传到文件服务器,到时这里会拼接二维码图片在服务器上的地址。关于如何上传apk和二维码图片到服务器可参考 jenkins 系列 - 安装包上传到 tomcat 并提供下载
<img src='http://localhost:8080/me/my-views/view/all/job/${JOB_NAME}/${BUILD_NUMBER}/artifact/app/build/outputs/release/qrcode.png' width=200px height=200px>
  • <br> 换行,不用说了吧。
  • <a> 标签 ,地址为apk 在服务器上的下载地址,显示为点击下载 加apk 的拼接名称,如下。
<a href='http://143.04.220.236:8080/apk/JenkinsTest-v${APP_VERSION_NAME}-${PRODUCT_FLAVORS}-${BUILD_TYPE}.apk '>点击下载 JenkinsTest-v${APP_VERSION_NAME}-${PRODUCT_FLAVORS}-${BUILD_TYPE}.apk-</a>

保存后构建就可以达到上图所示的效果。

总结

  • 首先是python的安装,并增加Pillow库。
  • qrcode库的代码 clone 下来。
  • 配置全局环境变量,增加 PYTHON 环境变量
  • 在构建模块中使用脚本生成二维码
  • 在构建后操作中增加 Set build description

下一篇

下一篇会说下如何在构建完成后,通过邮件通知相关人员。他们可以通过扫二维码下载,或点击下载。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,744评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,505评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,105评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,242评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,269评论 6 389
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,215评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,096评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,939评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,354评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,573评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,745评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,448评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,048评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,683评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,838评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,776评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,652评论 2 354

推荐阅读更多精彩内容