jenkins 安卓打包生成二维码下载
先来张图看看吧
构思
jenkins gradle 打包apk文件,python myqr 模块生成二维码 放入nginx 访问图片的路径,apk安装包放在 nginx 下载目录。
环境
centos 6.6 sdk(https://developer.android.google.cn/studio/index.html)
gradle (http://services.gradle.org/distributions/)对应自己的版本去下载
jenkins 2.73.3 RPM 安装
java:1.8
python3 环境
python myqr pillow
nginx 版都都行,开启下载目录
安装完后在/etc/profile 加入环境变量
export JAVA_HOME=/usr/java/jdk1.8.0_101
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export ANDROID_HOME=/opt/SDK
export PATH=$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$PATH
source /etc/profile
配置
插件用到:
Email Extension Plugin
Subversion Plug-in
description setter plugin
系统管理->Configure Global Security
系统管理->系统设置
邮件配置
Default Subject:${BUILD_STATUS} - ${PROJECT_NAME} - Build # ${BUILD_NUMBER} !
Default Content
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<METAHTTP-EQUIV="Pragma" CONTENT="no-cache">
<METAHTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<METAHTTP-EQUIV="Expires" CONTENT="0">
<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>
</head> <body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"
offset="0"> <table width="95%" cellpadding="0" cellspacing="0"
style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
<tr>
<td>(本邮件是程序自动下发的,请勿回复!)</td>
</tr>
<tr>
<td><h2>
<font color="#0000FF">构建结果 - ${BUILD_STATUS}</font>
</h2></td>
</tr>
<tr>
<td><br />
<b><font color="#0B610B">构建信息</font></b>
<hr size="2" width="100%" align="center" /></td>
</tr>
<tr>
<td>
<ul>
<li>项目名称 : ${PROJECT_NAME}</li>
<li>构建编号 : 第${BUILD_NUMBER}次构建</li>
<li>SVN 版本: ${SVN_REVISION}</li>
<li>触发原因: ${CAUSE}</li>
<li>构建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
<li>构建 Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li>
<li>工作目录 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>
<li>项目 Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li>
</ul>
</td>
</tr>
<tr>
<td><b><font color="#0B610B">Changes Since Last
Successful Build:</font></b>
<hr size="2" width="100%" align="center" /></td>
</tr>
<tr>
<td>
<ul>
<li>历史变更记录 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li>
</ul> ${CHANGES_SINCE_LAST_SUCCESS,reverse=true, format="Changes for Build #%n:<br />%c<br />",showPaths=true,changesFormat="<pre>[%a]<br />%m</pre>",pathFormat=" %p"}
</td>
</tr>
<tr>
<td><b>Failed Test Results</b>
<hr size="2" width="100%" align="center" /></td>
</tr>
<tr>
<td><pre
style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">$FAILED_TESTS</pre>
<br /></td>
</tr>
<tr>
<td><b><font color="#0B610B">构建日志 (最后 100行):</font></b>
<hr size="2" width="100%" align="center" /></td>
</tr>
<!-- <tr>
<td>Test Logs (if test has ran): <a
href="${PROJECT_URL}ws/TestResult/archive_logs/Log-Build-${BUILD_NUMBER}.zip">${PROJECT_URL}/ws/TestResult/archive_logs/Log-Build-${BUILD_NUMBER}.zip</a>
<br />
<br />
</td>
</tr> -->
<tr>
<td><textarea cols="80" rows="30" readonly="readonly"
style="font-family: Courier New">${BUILD_LOG, maxLines=100}</textarea>
</td>
</tr>
</table>
</body>
</html>
测试是否发送成功
进入:系统管理→Global Tool Configuration
Gradle模块
现在我们来配置项目
新建一个自由风格的项目
svn/git 这些配置,这里就不说了,不会的请自行百度,网上一堆
直接到增加构建步骤这一块
我们选择 Invoke Gradle script
Gradle Version 选择默认了,如果选择你安装的那个到时候会报错,这是一个BUG
Root Build script 使用${WORKSPACE} jenkins 内置变量
Build File 选择你 app下面的build.gradle 文件;
这里使用 了jenkins 内置变量$BUILD_ID 防止生成二维码后,访问缓存
TIME=`date +%F-%H-%M-%S`
echo $BUILD_ID
rm -f /data/download/images/test.jpg cp ${WORKSPACE}/app/build/outputs/apk/app-release.apk /data/download/android/${TIME}-app-release.apk
myqr http://192.168.0.152:9090/${TIME}-app-release.apk -n ${BUILD_ID}-test.jpg -d /data/download/images
构建后操作
<img src='http://192.168.0.152/${BUILD_ID}-test.jpg' width=200px height=200px>
邮件里增加了
二维码下载:<br>
<img src='http://192.168.0.152/${BUILD_ID}-test.jpg' width=200px height=200px>
<br>
那会在系统设置下的是全局配置,增加这一段只是为了app项目
生成二维码
- 下载安装python3和pip,依次配置环境变量。(不会安装请自行百度)
- 安装图片支持插件Pillow和二维码生成库qrcode
安装Pillow
命令1:pip install Pillow (失败)
命令2:pip install -I --no-cache-dir -v Pillow (成功)
- 安装myqr pip install myqr
安装myqr后将 myqr 放入到/usr/bin/下
ln -s /usr/local/python/bin/myqr /usr/bin/
生成命令可以参考 https://github.com/sylnsfar/qrcode/blob/master/README-cn.md#%E6%99%AE%E9%80%9A%E4%BA%8C%E7%BB%B4%E7%A0%81
NGINX 配置
#user nobody;
worker_processes auto; error_log /var/log/nginx/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info; pid /var/run/nginx.pid; events {
worker_connections 65535;
use epoll;
} http {
include mime.types;
default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on;
tcp_nopush on;
tcp_nodelay on;
server_tokens off; keepalive_timeout 120; gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain text/css application/json application/javascript application/x-javascript text/javascript text/xml application/rss+xml application/atom+xml application/rdf+xml image/svg+xml;
gzip_vary on; client_header_buffer_size 16k;
large_client_header_buffers 16 32k;
open_file_cache max=65535 inactive=60s;
open_file_cache_valid 30s;
open_file_cache_min_uses 1; client_max_body_size 50m;
client_body_buffer_size 256k;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m; server {
listen 80;
server_name image.com; charset utf-8; location ~ .*\.(gif|jpg|jpeg|png)$ {
root /data/download/images/;
# expires 24h;
# access_log /var/log/nginx/images.log;
proxy_store on;
proxy_store_access user:rw group:rw all:rw;
proxy_temp_path /data/download/images/;#图片访问路径
proxy_redirect off;
proxy_set_header Host 127.0.0.1;
client_max_body_size 10m;
client_body_buffer_size 1280k;
proxy_connect_timeout 900;
proxy_send_timeout 900;
proxy_read_timeout 900;
proxy_buffer_size 40k;
proxy_buffers 40 320k;
proxy_busy_buffers_size 640k;
proxy_temp_file_write_size 640k;
if ( !-e $request_filename)
{
proxy_pass http://127.0.0.1;#默认80端口
}
} } server {
listen 9090;
server_name android.com; charset utf-8;
root /data/download; location / {
autoindex on; #开启索引功能
autoindex_exact_size off; # 关闭计算文件确切大小(单位bytes),只显示大概大小(单位kb、mb、gb) autoindex_localtime on; # 显示本机时间而非 GMT 时间
}
} }
相信大家看的懂nginx 配置
邮件查看
jenkins 安卓打包生成二维码下载的更多相关文章
- iOS - 上架的APP 生成二维码下载
1.首先打开苹果App Store商店进入到里面,找到需要打开链接地址的应用程序,例如:百度. 2. 在App Store商店里面先点击一下应用程序图标,再按一下…分享按钮. 3. 接着选择分享APP ...
- JavaScript的学习--生成二维码
有一些耗cpu的计算,完全可以在客户端上计算,比如生成二维码. qrcode其实是通过计算,然后使用jquery实现图形渲染和画图.支持canvas和table两种方式生成我们所需的二维码. 具体用法 ...
- Springboot生成二维码并下载图片png支持打包成zip
pom.xml <!--二维码--> <dependency> <groupId>com.google.zxing</groupId> <arti ...
- AppStore 中的app怎么样生成二维码,来提供下载
首先在:iTunes里面找到 AppStore模块,然后搜索你的 App 在App 下载选项有 Copy Link ,拷贝地址 在二维码生成器里直接生成二维码就,OK 如果,想要多个和安卓做一个二维 ...
- 生成扫描二维码下载app的二维码的方法
进入APP store苹果应用程序商店,根据分类找到你要生成二维码的APP,然后在浏览器连接里找到ID后的一串数字就是APP的应用ID了. 安卓系统的appid 在电脑浏览器中打开应用宝官网,http ...
- 使用qrcode输入信息生成二维码包含二维码说明信息,点击转化为图片并下载
说明:输入汉字和数字都可以识别并展示 <body> <h2 id="h2">二维码生成</h2> <br> <span id= ...
- js生成二维码以及点击下载二维码
js生成二维码 jquery.qrcode.js可以快速使用页面生成二维码.但改项目有两个小问题:1.不支持中文:2.不支持二维码中间生成图片. 支持中文的jquery-qrcode jquery.q ...
- java后台中处理图片辅助类汇总(上传图片到服务器,从服务器下载图片保存到本地,缩放图片,copy图片,往图片添加水印图片或者文字,生成二维码,删除图片等)
最近工作中处理小程序宝箱活动,需要java画海报,所以把这块都快百度遍了,记录一下处理的方法,百度博客上面也有不少坑! 获取本地图片路径: String bgPath = Thread.current ...
- jQuery.qrcode 生成二维码,并使用 jszip、FileSaver 下载 zip 压缩包至本地。
生成二维码 引用 jquery.qrcode.js :连接:https://files.cnblogs.com/files/kitty-blog/jquery.qrcode.js .https:// ...
随机推荐
- IDF实验室—不难不易的js加密
查看源代码 <html> <head> <script src="/tpl/wctf/Public/js/lib/jquery.js">< ...
- [转]EntityFramework的多种记录日志方式,记录错误并分析执行时间过长原因(系列4)
本文转自:https://www.cnblogs.com/GuZhenYin/p/5556732.html Entity Framework 延伸系列目录 今天我们来聊聊EF的日志记录. 一个好的数据 ...
- C# WPF打包部署时添加注册表信息实现开机启动
使用VS自带的打包模块可以很方便的对项目进行打包部署,同时我们也可以在安装部署时操作注册表实现开机启动软件.具体实现如下: 创建安装部署这部分就不用说了,添加安装部署项目后,鼠标右键安装项目-> ...
- JavaScript 函数全局变量定义
在 JavaScript 中, 作用域 影响着变量的作用范围.在函数外定义的变量具有 全局 作用域.这意味着,具有全局作用域的变量可以在代码的任何地方被调用. 没有使用var关键字定义的变量,会被自动 ...
- CSS 通过使用Important覆盖所有其他样式
在许多情况下,您将使用CSS库.这些可能会意外覆盖您自己的CSS.所以当你绝对需要确定一个元素具有特定的CSS时,可以使用 !important. 让我们回到之前的 pink-text class 声 ...
- fuz 2159 WuYou
Problem 2159 WuYou Accept: 16 Submit: 64Time Limit: 1000 mSec Memory Limit : 32768 KB Problem ...
- python学习之老男孩python全栈第九期_数据库day004 -- 作业
https://www.cnblogs.com/YD2018/p/9451809.html 11. 查询学过“001”并且也学过编号“002”课程的同学的学号.姓名 select student.si ...
- 有用的linux指令(资料转载)
对 Linux 新手非常有用的20个命令 你打算从Windows换 ...
- 关系型数据库基本概念及MySQL简述
数据库基本概念">关系型数据库基本概念 数据库: 对大量信息进行管理的高效解决方案. 按照数据结构来组织.存储和管理数据的库. 数据库系统(DBS,DATABASE SYSTEM): ...
- windows Ctrl + Alt + 方向键 取消屏幕反转
1.在桌面右击 2.再次右击桌面 3.单击选项和支持 4.点击禁用和应用