|
|
|
@ -2,6 +2,9 @@ import json |
|
|
|
import os |
|
|
|
import requests |
|
|
|
import sys |
|
|
|
from hashlib import md5 |
|
|
|
from wget import download |
|
|
|
import ssl |
|
|
|
|
|
|
|
def file_write(file_name,text_content): |
|
|
|
# charset() |
|
|
|
@ -45,12 +48,17 @@ def obsUpload(file,uploadType): |
|
|
|
return info |
|
|
|
|
|
|
|
# APP管理-新增APP |
|
|
|
def platformAppAdd(): |
|
|
|
def platformAppAdd(package,suffix=None): |
|
|
|
# with open(".tags") as f: version = f.read().strip() |
|
|
|
logoFile = obsUpload(file=str(os.getenv('logo')), uploadType='logo') |
|
|
|
packageFile = obsUpload(file=str(os.getenv('package')),uploadType='compress') |
|
|
|
|
|
|
|
name = os.getenv('name') |
|
|
|
if suffix !=None: |
|
|
|
name = name + str(suffix) |
|
|
|
|
|
|
|
bodyjson = { |
|
|
|
'name': os.getenv('name'), |
|
|
|
'name': name, |
|
|
|
'version': os.getenv('version'), |
|
|
|
'genre': os.getenv('genre'), |
|
|
|
'logoCode': logoFile['code'], |
|
|
|
@ -105,7 +113,7 @@ def multipleProgramToOneProject(): |
|
|
|
def platformProgramAdd(): |
|
|
|
# with open(".tags") as f: version = f.read().strip() |
|
|
|
logoFile = obsUpload(file=str(os.getenv('logo')), uploadType='logo') |
|
|
|
packageFile = obsUpload(file=str(os.getenv('package')),uploadType='compress') |
|
|
|
packageFile = obsUpload(file=str(os.getenv('package')),uploadType='compress') |
|
|
|
bodyjson = { |
|
|
|
'name': os.getenv('name'), |
|
|
|
'version': os.getenv('version'), |
|
|
|
@ -131,31 +139,78 @@ def platformProgramAdd(): |
|
|
|
# multipleProgramToOneProject() |
|
|
|
|
|
|
|
|
|
|
|
def get_the_last_windowsApp(name): |
|
|
|
def get_the_last_windowsAppZIP(name): |
|
|
|
bodyjson = { |
|
|
|
'name': os.getenv('name'), |
|
|
|
'name': name |
|
|
|
} |
|
|
|
print (bodyjson) |
|
|
|
url_platformAppAdd = os.getenv('url_for_iotplatform') + "/api/platform/v1/platformApp/getPlatformAppList/1/10" |
|
|
|
headers = {'content-type': 'application/json;charset=UTF-8'} |
|
|
|
r = requests.post(url_platformAppAdd, headers=headers, data=json.dumps(bodyjson)) |
|
|
|
print (r.text) |
|
|
|
packageName=r.text['data']['packageName'] |
|
|
|
packageUrl=r.text['data']['packageUrl'] |
|
|
|
version=r.text['data']['version'] |
|
|
|
print(packageName) |
|
|
|
print(packageUrl) |
|
|
|
print(version) |
|
|
|
return |
|
|
|
listObject=json.loads(r.text)['data']['listObject'] |
|
|
|
if len(listObject) > 0: |
|
|
|
for obj in listObject: |
|
|
|
if obj.get("packageName", "").endswith(".zip"): |
|
|
|
print(f"id: {obj.get('id')}") |
|
|
|
print(f"name: {obj.get('name')}") |
|
|
|
print(f"packageName: {obj.get('packageName')}") |
|
|
|
print(f"packageUrl: {obj.get('packageUrl')}") |
|
|
|
packageUrl=obj.get('packageUrl') |
|
|
|
break # 找到第一个满足条件的对象后停止遍历 |
|
|
|
|
|
|
|
# 忽略未经核实的SSL证书认证,linux下wget可能会有ssl问题 |
|
|
|
context = ssl._create_unverified_context() |
|
|
|
ssl._create_default_https_context = ssl._create_unverified_context |
|
|
|
download(cdn_url + packageUrl) |
|
|
|
print(cdn_url + packageUrl) |
|
|
|
the_last_windowsAppZIP = os.getcwd() + packageUrl.split("/")[-1] |
|
|
|
return the_last_windowsAppZIP |
|
|
|
else: |
|
|
|
return None |
|
|
|
|
|
|
|
def build_for_windowsApp(): |
|
|
|
print ("开始打包exe流程") |
|
|
|
os.system('makensis Sources/nbn.nsi') |
|
|
|
os.system('du -sh Sources/Setup.exe') |
|
|
|
|
|
|
|
|
|
|
|
def build_for_windowsAppZIP(): |
|
|
|
print ("开始打包zip流程") |
|
|
|
os.system('unzip ' + the_last_windowsAppZIP + ' -d /tmp/a/') |
|
|
|
os.system('unzip ' + the_current_windowsAppZIP + ' -d /tmp/b/') |
|
|
|
|
|
|
|
def build_the_current_windowsApp(name): |
|
|
|
the_last_windowsAppZIP = get_the_last_windowsAppZIP(name) |
|
|
|
if the_last_windowsAppZIP == None: |
|
|
|
print("初次上传,不比对zip,直接打包上传") |
|
|
|
else: |
|
|
|
print ("比对新老版本zip文件") |
|
|
|
the_current_windowsAppZIP="/drone/src/IOTContainer/" + os.getenv('DRONE_REPO_NAME') + '.' + os.getenv('version') + '.zip' |
|
|
|
|
|
|
|
with open(the_last_windowsAppZIP) as f: content1 = f.read() |
|
|
|
with open(the_current_windowsAppZIP) as f: content2 = f.read() |
|
|
|
|
|
|
|
if md5(content1.encode("utf8")).hexdigest() != md5(content2.encode("utf8")).hexdigest(): |
|
|
|
print ("比对结果:程序版本已更新") |
|
|
|
os.system('mkdir -p /tmp/a/ /tmp/b/ /tmp/IOTContainer/') |
|
|
|
os.system('unzip ' + the_last_windowsAppZIP + ' -d /tmp/a/') |
|
|
|
os.system('unzip ' + the_current_windowsAppZIP + ' -d /tmp/b/') |
|
|
|
os.system('/bin/sh -c zip_diff.sh') |
|
|
|
diff_zip=os.getenv('DRONE_REPO_NAME') + '.' + os.getenv('version') + '.zip' |
|
|
|
build_for_windowsApp() |
|
|
|
platformAppAdd('/drone/src/Sources/Setup.exe', '.exe') |
|
|
|
platformAppAdd(diff_zip, '.zip') |
|
|
|
else: |
|
|
|
print ("\033[34m比对结果: 程序版本无更新,流程终止\033[0m") |
|
|
|
|
|
|
|
if os.getenv("isiot") != 'False': |
|
|
|
if sys.argv[1] == "WindowsAPP": |
|
|
|
platformAppAdd() |
|
|
|
elif sys.argv[1] == "distZIP": |
|
|
|
platformProgramAdd() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if os.getenv("isiot") != 'False': |
|
|
|
name=os.getenv('name') |
|
|
|
build_the_current_windowsApp(name) |
|
|
|
else: |
|
|
|
print ("is not iot") |
|
|
|
if os.getenv("DRONE_BRANCH") == 'master': |
|
|
|
|