随着一步一步的集成。发现只剩下最后一步了

交付

废话不说了

教程开始   在android的下面新建main.py代码如下。有些需要打马赛克。所以就马赛克一下哈

 

import sys
import os
# 正则获取 apk路径 并且上传到蒲公英
import json
import subprocess

import re

import requests


def main():
# 参数1 build 类型 一共两个值 Release Debug
# 参数2 buildEnv
# dev
# baidu
# sanliuling
# yyb
# xiaomi
# huawei
#
# meizu
# 发布到线上记得改成False
#参数3 web 分支
#参数4 android 分支
#参数5 默认url file:///android_asset/www/index.html|||||http://192.168.*.*:8080/index.html
#参数6 默认host
# webBranch=sys.argv[3].replace("/","_")
# androidBranch=sys.argv[4].replace("/","_")
# codeUrl=sys.argv[5].replace("\“","")
# host=sys.argv[6].replace("\“","")
debug = False
if debug:
# 自己创建的钉钉群组的url
url = "https://oapi.dingtalk.com/robot/send?access_token=***"
else:
# 线上的url
url = "https://oapi.dingtalk.com/robot/send?access_token=***"

buildType = sys.argv[1]
try:
buildEnv = sys.argv[2]
except:
print("参数2 没有传 直接发版不需要生成apk到蒲公英")
return "";


# \app\build\outputs\apk\dev\release
path = os.getcwd() + "/app/build/outputs/apk"
if buildEnv == "":
print("数2 没有传 直接发版不需要生成apk到蒲公英")
return "";
else:
path += "/" + buildEnv
if buildType == "Release":
path += "/release"
elif buildType == "Debug":
path += "/debug"
pass
path = getApkPath(path)
path = path.replace("\\", "/");
print("找到路径:"+path)
cmd = 'curl -F "file=@' + path + '" -F "uKey=*****" -F "_api_key=******b" https://qiniu-storage.pgyer.com/apiv1/app/upload'
(status, uploadRes) = subprocess.getstatusoutput(cmd)
print("============命令行运行结果" + "\n")
print(str(uploadRes) + "\n")
uploadRes="{"+re.findall("k{(.*?)\"}}",uploadRes)[0]+"\"}}"
print("============截取后返回结果" + "\n")
print(str(uploadRes)+"\n")

uploadRes = json.loads(str(uploadRes))
if uploadRes['code'] != 0:
print("上传失败 错误码" + uploadRes['code'])
return
qrAdress=uploadRes['data']['appQRCodeURL']
versionCode=uploadRes['data']['appVersionNo']
versionName=uploadRes['data']['appVersion']
pgyVersion=uploadRes['data']['appBuildVersion']
appName=uploadRes['data']['appName']
print(qrAdress)
# isWEbCode="不是"
# if codeUrl=="file:///android_asset/www/index.html":
# isWEbCode="是"
# else:
# isWEbCode="不是。用的环境为"+codeUrl
# isHost="测试"
# if host == "https://gateway.gaoxiaobang.com":
# isHost="线上或灰度环境(灰度请自己配置dns)";
# else:
# isHost="测试环境:"+host
#格式化整体内容
res="";
res+="--------------------------\n"
res+="android 端代码打包成功\n"
res+="应用名称:%s\n"%appName
res+="版本号:%s\n"%versionCode
res+="版本名称:%s\n"%versionName
res+="蒲公英版本号:%s\n"%pgyVersion
# res+="web 端分支为"+webBranch+"\n"
# res+="android 端分支为"+androidBranch+"\n"
# res+="web端使用的是分支代码么?"+isWEbCode+"\n"
# res+="android 环境为"+isHost+"\n"
res+="android 蒲公英下载二维码:"+qrAdress+"\n"

res+="--------------------------\n"
sendText(res,url)
def getApkPath(dirname):
result = [] # 所有的文件
for maindir, subdir, file_name_list in os.walk(dirname):

for filename in file_name_list:
if (".apk" in filename):
apath = os.path.join(maindir, filename) # 合并成一个完整路径
return apath

return dirname+"apk路径未找到"

def sendText(res, url):
if (res != ""):
headers = {
"Content-Type": "application/json"
}
data = {"msgtype": "text",
"text": json.dumps({
"content": res
})
}

# print(json.loads(data))
res = requests.post(url, headers=headers, data=json.dumps(data))
print("发送状态" + str(res.status_code))
if __name__ == '__main__':
main()

这个python做了一些事情、

1 得到apk 路径上传到蒲公英

蒲公英上传的时候有一个file=@ 这个@不要少了哦

蒲公英地址

​https://www.pgyer.com/manager/dashboard/app/*​​******

【完整教程windows10版本】jenkins最后的交付 jenkins发布蒲公英到然后消息发到钉钉上面(七)_json

可以找到对应的参数

那么钉钉机器人又是个什么鬼???

【完整教程windows10版本】jenkins最后的交付 jenkins发布蒲公英到然后消息发到钉钉上面(七)_上传_02

【完整教程windows10版本】jenkins最后的交付 jenkins发布蒲公英到然后消息发到钉钉上面(七)_json_03

加上后就会有上面的url 可以根据代码来发消息

jenkins 蒲公英 和钉钉都是免费的、、

下面看重头戏。jenkins配置

【完整教程windows10版本】jenkins最后的交付 jenkins发布蒲公英到然后消息发到钉钉上面(七)_上传_04

 

一些环境变量。。必不可少。

 

【完整教程windows10版本】jenkins最后的交付 jenkins发布蒲公英到然后消息发到钉钉上面(七)_上传_05

包含了py3 curl 和nodejs

构建步骤再加一步

【完整教程windows10版本】jenkins最后的交付 jenkins发布蒲公英到然后消息发到钉钉上面(七)_json_06

 

cd 01_huikeyun_android
python main.py %DEBUG_RELEASE% %BUILD_ENV%

之后效果就是选好参数以后 

【完整教程windows10版本】jenkins最后的交付 jenkins发布蒲公英到然后消息发到钉钉上面(七)_json_07

 

铛铛~

【完整教程windows10版本】jenkins最后的交付 jenkins发布蒲公英到然后消息发到钉钉上面(七)_json_08

这样测试端、和web端同事就可以自己操作了 再也不用麻烦我们安卓端了、

我们只要做好git的版本就好了