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>項目名稱&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;

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

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


}
View Code

 

相信大家看的懂nginx 配置

 

郵件查看


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM