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;
}
}
}
JENKINS安卓打包CI的更多相关文章
- jenkins 安卓打包生成二维码下载
先来张图看看吧 构思 jenkins gradle 打包apk文件,python myqr 模块生成二维码 放入nginx 访问图片的路径,apk安装包放在 nginx 下载目录. 环境 centos ...
- 安卓打包apk
打apk包的环境依赖 1.jdk 2.sdk 3.ndk 打apk包的工具 gradle mkdir /usr/local/Android cd /usr/local/Android mkdir sd ...
- gitlab+jenkins自动化打包APK
前置条件: 环境搭建,jenkins需要的插件看这里: gitlab+jenkins自动化打包IOS 配置思路: step1: 搭建sdk,gradle运行环境,参照: CentOS7下安装安装and ...
- 庐山真面目之十一微服务架构手把手教你搭建基于Jenkins的企业级CI/CD环境
庐山真面目之十一微服务架构手把手教你搭建基于Jenkins的企业级CI/CD环境 一.介绍 说起微服务架构来,有一个环节是少不了的,那就是CI/CD持续集成的环境.当然,搭建CI/CD环境的工具很多, ...
- CentOS安装gitlab,gerrit,jenkins并配置ci流程
CentOS安装gitlab,gerrit,jenkins并配置ci流程 By Wenbin juandx@163.com 2016/4/9 这是我参考了网上很多的文档,配置了这三个软件在一个机器上, ...
- Jenkins 集成打包和上传 App Store 的冲突
周一下午用 Jenkins 集成打包,遇到了一个很奇怪的问题,之前上传到 APP Store 的时候 Build Settings->“Code Signing Resource Rules P ...
- Unity3D安卓打包参数配置与兼容性的关系分析
前言 在使用Unity3D工程导出安卓安装包的时候,往往会遇到兼容性的问题,针对某些机型,要么无法打开游戏,要么会出现卡机的现象.面对这种情况,我们可以调节相关的参数来提高兼容性. 为了了解在打包时候 ...
- Jenkins+Maven+Git CI环境搭建手册
Jenkins+Maven+Git CI环境搭建手册 环境: OS:Linux version 2.6.32-220.23.2.ali878.el6.x86_64 (ads@kbuild) (gcc ...
- Unity3D安卓打包
Unity3D安卓打包须知: 最近在接触Unity3D,在打包安卓时,出现了一些问题,在这里写出来跟大家分享: 首先需要安装jdk和android-sdk,安装方法略 Jdk的目录结构如下: andr ...
随机推荐
- Centos7 搭建wordpress
WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站.也可以把 WordPress当作一个内容管理系统(CMS)来使用. 搭建WordP ...
- 接口项目servlet的一种处理方式,将异常返回给调用者【我】
接口项目servlet的一种处理方式,其他层有异常全部网上抛,抛到servlet层,将异常返回给调用者: Servlet层: private void processRequest(HttpServl ...
- Elasticsearch6.2.1安装elasticsearch-sq插件
参考 https://github.com/NLPchina/elasticsearch-sql 1.下载插件 wget https://github.com/NLPchina/elasticsear ...
- c++生成数据程序模板
in.cpp: #include<bits/stdc++.h> #define random(a,b) rand()%(b-a+1)+a using namespace std; cons ...
- node excel export包导致find函数被覆盖
这个包确实是巨坑:https://github.com/functionscope/Node-Excel-Export 本来是想用来导出Excel的,没想到把Array的find函数能乱了.这种基础函 ...
- .NET Core开源Quartz.Net作业调度框架实战演练
一.需求背景 人生苦短,我用.NET Core!作为一枚后端.NET开发人员,项目实践常遇到定时Job任务的工作,在Windows平台最容易想到的的思路Windows Service服务应用程序,而在 ...
- 基础自动化部署搭建过程【Jenkins】
测试环境搭建 为了快速搭建一套PHP测试环境我决定用laradock了,虽然文件很多,但是里面封装的东西也是比较全的,后期开发不知道会用到什么技术,就决定先用这个,随时可以启动用得到的服务.larad ...
- 处理html换行问题
String.prototype.replaceAll = function (FindText, RepText) { regExp = new RegExp(FindText, "g&q ...
- 【LEETCODE】64、链表分类,medium&hard级别,题目:2,138,142,23
package y2019.Algorithm.LinkedList.medium; import y2019.Algorithm.LinkedList.ListNode; /** * @Projec ...
- vue中引入百度地图
xxx.vue <template> <div> <el-input v-model="inputaddr"> </el-input> ...