zoukankan      html  css  js  c++  java
  • JENKINS安卓打包CI

     jenkins构建脚本:

    [root@localhost tomcat]# cat move.sh 
    #!/bin/bash
    # author lql
    
    release_dir=/data/android_git/app/build/outputs/apk/tuji/release
    debug_dir=/data/android_git/app/build/outputs/apk/tuji/debug
    releasetest_dir=/data/android_git/app/build/outputs/apk/tuji/releaseTest
    
    function release ()
    {
    cd /data/android_git && gradle clean
    cd /data/android_git && gradle assembleTujiRelease    
    
    if [ -d $release_dir ];then
        cd $release_dir
        apk=`ls -lt|grep .apk|awk -F " " '{print $NF}'`
        new_time=`date +%Y%m%d%H%M`
        version=`echo $apk | awk -F ".apk" '{print $1}'`
        new_apk=$version-$new_time.apk
        mv $apk $new_apk
        cp -rf $release_dir/$new_apk /data/download/release
        python3 /home/tomcat/jenkins_android_test.py $new_apk release 
    else
        python3 /home/tomcat/jenkins_android_test.py path_release_error 
    fi
    }
    
    function debug ()
    {
    cd /data/android_git && gradle clean             
    cd /data/android_git && gradle assembleTujiDebug 
    
    if [ -d $debug_dir ];then
        cd $debug_dir
        apk=`ls -lt|grep .apk|awk -F " " '{print $NF}'`
        new_time=`date +%Y%m%d%H%M`
        version=`echo $apk | awk -F ".apk" '{print $1}'`
        new_apk=$version-$new_time.apk
        mv $apk $new_apk
        cp -rf $debug_dir/$new_apk /data/download/debug
        python3 /home/tomcat/jenkins_android_test.py $new_apk debug
    else
        python3 /home/tomcat/jenkins_android_test.py path_debug_error
    fi
    }
    
    function releasetest () 
    {
    cd /data/android_git && gradle clean
    cd /data/android_git && gradle assembleTujiReleaseTest 
    
    if [ -d $releasetest_dir ];then
        cd $releasetest_dir
        apk=`ls -lt|grep .apk|awk -F " " '{print $NF}'`
        new_time=`date +%Y%m%d%H%M`
        version=`echo $apk | awk -F ".apk" '{print $1}'`
        new_apk=$version-$new_time.apk
        mv $apk $new_apk
        cp -rf $releasetest_dir/$new_apk /data/download/releasetest
        python3 /home/tomcat/jenkins_android_test.py $new_apk releasetest
    else
        python3 /home/tomcat/jenkins_android_test.py path_releasetest_error
    fi
    }
    
    case $1 in
        release)
        echo release runing
        release;    
        ;;
        debug)
        echo debug ruing
        debug;
        ;;
        releasetest)
        echo releasetest runing
        releasetest;
        ;;
        *)
        release;
        debug;
        releasetest;
        ;;
    esac

    构建成功WEBHOOK提醒

    #!/usr/local/python-3.6.4/bin/python3
    # -*- coding:UTF-8-*-
    # Author: lql
     
    from urllib import request
    import json
    from sys import argv
    
    import time 
    #获得当前时间时间戳 
    now = int(time.time()) 
    #转换为其他日期格式,如:"%Y-%m-%d %H:%M:%S" 
    timeStruct = time.localtime(now) 
    strTime = time.strftime("%Y-%m-%d %H:%M:%S", timeStruct) 
    
    access_token = ""
    
    #def send_msg(mobile, item_name):
    def send_msg(time_str,apk_name,download_dir=False):
        if download_dir:
            content=apk_name + '  ' + time_str + '  ' + 'http://ip?/download/' + download_dir + "/" 
        else:
            content=apk_name + '  ' + time_str
        url = "https://oapi.dingtalk.com/robot/send?access_token=" + access_token
     
        data = {
            "msgtype": "text",
            "text": {
                "content": content 
            },
            "at": {
                #"atMobiles": [
                #    mobile
                #],
                "isAtAll": "false"
            }
        }
        json_data= json.dumps(data).encode(encoding='utf-8')
        print(json_data)
        header_encoding = {"Content-Type": "application/json"}
        req = request.Request(url=url, data=json_data, headers=header_encoding)
        res = request.urlopen(req)
        res = res.read()
        print(res.decode(encoding='utf-8'))
     
     
    if __name__ == "__main__":
        time_str = strTime
        if len(argv) == 3:     
            apk_name=argv[1]
            download_dir=argv[2]
            send_msg(time_str,apk_name,download_dir)
        else: 
           apk_name = argv[1]
           send_msg(time_str,apk_name)

    nginx作为下载服务器配置:

    [root@localhost ~]# cat /usr/local/nginx/conf/nginx.conf
    user  nobody;
    worker_processes  1;
    error_log  logs/error.log  warn;
    pid        logs/nginx.pid;
    events {
        worker_connections  1024;
    }
    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  logs/access.log  main;
        sendfile        on;
        keepalive_timeout  65;
        gzip  on;
        server_tokens off;
        server {
            listen       80;
            server_name  localhost;
            location / {
                root html;
                rewrite ^/(.*) http://ip?/download redirect;
            }
            location ~* ^/download {
                root html;
                autoindex on;
                autoindex_localtime on;
                autoindex_exact_size off; 
            }
        }
    }
    

      

  • 相关阅读:
    As3 模拟As2.0LoadVars 传参
    OracleERP库存管理
    OracleERP采购管理
    Oracle EBS R12文件系统结构
    OracleERP物料
    ORACLE APPLICATION 数据结构
    WIN7 X64 Setup Oracle Developer Suite 10g
    实例14. 库存补充操作——再订购点计划(Reorder Point Planning)
    OracleERP供应商
    ORACLE EBS环境下可以使用的开发语言和工具
  • 原文地址:https://www.cnblogs.com/jokerbj/p/11066846.html
Copyright © 2011-2022 走看看