1. 程式人生 > >jenkins 安卓打包生成二維碼下載

jenkins 安卓打包生成二維碼下載

java ken code .cn qrcode cau pass textarea buffers

先來張圖看看吧

技術分享

技術分享

構思

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

系統管->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>項目名稱&nbsp;&nbsp;${PROJECT_NAME}</li> <li>構建編號&nbsp;&nbsp;第${BUILD_NUMBER}次構建</li> <li>SVN&nbsp;版本:&nbsp;${SVN_REVISION}</li> <li>觸發原因:&nbsp;${CAUSE}</li> <li>構建日誌:&nbsp;<a href="${BUILD_URL}console">${BUILD_URL}console</a></li> <li>構建&nbsp;&nbsp;Url&nbsp;&nbsp;<a href="${BUILD_URL}">${BUILD_URL}</a></li> <li>工作目錄&nbsp;&nbsp;<a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li> <li>項目&nbsp;&nbsp;Url&nbsp;&nbsp;<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="&nbsp;&nbsp;&nbsp;&nbsp;%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>
View Code

技術分享

測試是否發送成功

進入:系統管理→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/android;

       location / {
        autoindex on;             #開啟索引功能
        autoindex_exact_size off; # 關閉計算文件確切大小(單位bytes),只顯示大概大小(單位kb、mb、gb)

        autoindex_localtime on;   # 顯示本機時間而非 GMT 時間
      }
  }

   server {
      listen 9091;
      server_name ios.com;

      charset utf-8;
      root /data/download/ios;

      location /ios {
       autoindex on;             #開啟索引功能
       autoindex_exact_size off; # 關閉計算文件確切大小(單位bytes),只顯示大概大小(單位kb、mb、gb)

       autoindex_localtime on;   # 顯示本機時間而非 GMT 時間
     }
  }

}
View Code

相信大家看的懂nginx 配置

郵件查看

技術分享

jenkins 安卓打包生成二維碼下載