Compare commits

...

1 Commits

Author SHA1 Message Date
Your Name bbae79ef72 fix: ci 1 year ago
  1. 30
      .drone.yml
  2. 91
      iot_upload.py
  3. 12
      zip_diff.sh

30
.drone.yml

@ -29,9 +29,6 @@ steps:
- name: 生成Release版本
pull: if-not-exists
image: registry.cn-hangzhou.aliyuncs.com/tgabc-namespace/tgabc:semantic-release-v21.0.1
volumes:
- name: gitea
path: /root/.ssh/id_rsa
environment:
GITEA_TOKEN:
from_secret: gitea_token
@ -62,11 +59,8 @@ steps:
- git describe --abbrev=0 --tags > .tags
- cat .tags
- name: 获取上一个版本的zip
pull: if-not-exists
image: registry.cn-hangzhou.aliyuncs.com/qmiot/init:apisix-init-base
- name: 编译
- name: 编译构建上传
pull: if-not-exists
image: registry.cn-hangzhou.aliyuncs.com/qmiot/init:nsis20241212
commands:
@ -74,13 +68,6 @@ steps:
- ls Sources/Setup.exe
- du -sh Sources/Setup.exe
# zip打包
- zip_name=$DRONE_REPO_NAME.$(cat .tags).zip
- cd ./IOTContainer
- zip -q -r $zip_name ./
- ls $zip_name
- ls
- pwd
when:
branch:
@ -88,7 +75,7 @@ steps:
- name: 上传exe和zip到iot测试接口platformAppAdd
pull: if-not-exists
image: registry.cn-hangzhou.aliyuncs.com/qmiot/init:apisix-init-base
image: registry.cn-hangzhou.aliyuncs.com/qmiot/init:nsis20241212
environment:
url_for_iotplatform: 'http://192.168.0.142:31667'
url_for_iotfile: 'http://192.168.0.142:31666'
@ -96,11 +83,21 @@ steps:
cdn_url: 'https://test-598d.1000my.com'
# genre: "Samsung"
commands:
# zip打包
- chmod +x zip_diff.sh
- zip_name=$DRONE_REPO_NAME.$(cat .tags).zip
- cd ./IOTContainer
- zip -q -r $zip_name ./
- ls $zip_name
- ls
- pwd
# # 自动授权
# - export projectCode="projectCode=project-inluar4ppcxvciefgb_ila"
- export isiot="True" # 要不要传iot
- export name=${DRONE_REPO_NAMESPACE}-${DRONE_REPO_NAME} # 应用名称(自行填写 必填)
- export version=exe_$(cat .tags) # 应用版本
- export version=$(cat .tags) # 应用版本
- export sourceId="8" # 应用来源id(默认为8 即测试环境专用) //如需更改查看测试环境平台级下应用管理新增应用的/api/platform/v1/platformProgram/platformProgramAdd接口
- export genre="localpack" # 应用类型 本地资源包 [outchain, localpack]
- export resolution="2160*3840竖屏" # 分辨率(自行填写)[1080*1920竖屏, 1920*1080横屏, 3840*2160横屏, 2160*3840竖屏]
@ -108,6 +105,7 @@ steps:
- export des=$CI_COMMIT_MESSAGE # 应用描述
- python3 iot_upload.py WindowsAPP
- export name=${DRONE_REPO_NAMESPACE}-${DRONE_REPO_NAME}.zip # 应用名称(自行填写 必填)
- export package="/drone/src/IOTContainer/$DRONE_REPO_NAME.$(cat .tags).zip" # 包名称
- export version=zip_$(cat .tags) # 应用版本
- python3 iot_upload.py WindowsAPP

91
iot_upload.py

@ -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':

12
zip_diff.sh

@ -0,0 +1,12 @@
for i in $(diff -rq /tmp/a/ /tmp/b/ | grep Only | awk '{print $NF}')
do
mv /tmp/b/$i /tmp/IOTContainer/
done
cd /tmp/IOTContainer/
zip_name=$DRONE_REPO_NAME.$(cat .tags).zip
zip -q -r $zip_name ./
Loading…
Cancel
Save