Compare commits

...

42 Commits
master ... test

Author SHA1 Message Date
Your Name 080e65a36b fix: ci 1 year ago
Your Name 5666ed5452 fix: ci 1 year ago
Your Name bc27ec040b fix: ci 1 year ago
Your Name 8e3f659e4c fix: ci 1 year ago
Your Name 64dbb33405 fix: ci 1 year ago
Your Name 0c250c99ce fix: ci 1 year ago
Your Name 5fb1059130 fix: ci 1 year ago
Your Name d5cdc2ddf2 fix: ci 1 year ago
Your Name 6187a62b52 fix: ci 1 year ago
Your Name 6a88627817 fix: ci 1 year ago
Your Name 05f5ad846c fix: ci 1 year ago
Your Name 65335802af fix: ci 1 year ago
Your Name 7dedbdb21a fix: ci 1 year ago
Your Name 6885514090 fix: ci 1 year ago
Your Name 0b5eb049c6 fix: ci 1 year ago
Your Name 977df21c2a fix: ci 1 year ago
Your Name e92860188f fix: ci 1 year ago
Your Name f75c5e1d8e fix: ci 1 year ago
Your Name 6c97372b91 fix: ci 1 year ago
Your Name a8e6fe3bd6 fix: ci 1 year ago
Your Name 5efb4d3cc3 fix: ci 1 year ago
Your Name db482c4ffc fix: ci 1 year ago
Your Name 755b336707 fix: ci 1 year ago
Your Name 269f1f3dc3 fix: ci 1 year ago
Your Name 058c799155 fix: ci 1 year ago
Your Name b82862d0a7 fix: ci 1 year ago
Your Name 70bd78b161 fix: ci 1 year ago
Your Name 306f5b19e8 fix: ci 1 year ago
Your Name 49685de016 fix: ci 1 year ago
Your Name bbae79ef72 fix: ci 1 year ago
Your Name bae409b962 fix: ci 2 years ago
Your Name 2f37011326 fix: ci 2 years ago
Your Name 424f34b63a fix: ci 2 years ago
Your Name 6d6bbe1899 fix: ci 2 years ago
Your Name cfd395a4a0 fix: ci 2 years ago
Your Name a5c40dda3b fix: ci 2 years ago
Your Name 78308d3d9e fix: ci 2 years ago
Your Name c30196eee6 fix: ci 2 years ago
Your Name b65b603a93 fix: ci 2 years ago
Your Name d7c2a24d35 fix: ci 2 years ago
Your Name 762e01c53d fix: ci 2 years ago
千目管理员 d4d5a4630c Merge pull request 'master' (#1) from master into test 2 years ago
  1. 82
      .drone.yml
  2. 4
      .releaserc
  3. 1
      IOTContainer/testci
  4. 1
      IOTContainer/testdir/aaa/aaa.123
  5. 1
      IOTContainer/testdir/aaa/bbb/123.txt
  6. 2
      IOTContainer/testdir/aaa/bbb/a.txt
  7. 129
      iot_upload.py
  8. 30
      zip_diff.sh

82
.drone.yml

@ -6,11 +6,12 @@ host_aliases:
hostnames: hostnames:
- git.1000my.com - git.1000my.com
clone: clone:
disable: true
pull: if-not-exists
trigger: trigger:
branch: branch:
- master - master
- test
event: event:
- push - push
@ -24,24 +25,9 @@ volumes:
steps: steps:
- name: "Checkout"
image: registry.cn-hangzhou.aliyuncs.com/qmiot/init:alpine-git-v2.36.2
pull: if-not-exists
volumes:
- name: gitea
path: /root/.ssh/id_rsa
commands:
- echo 192.168.0.2 git.1000my.com >> /etc/hosts
- ping git.1000my.com -c 1
- git clone --depth=1 $DRONE_GIT_HTTP_URL .
- git submodule update --init --recursive
- name: 生成Release版本 - name: 生成Release版本
pull: if-not-exists pull: if-not-exists
image: registry.cn-hangzhou.aliyuncs.com/tgabc-namespace/tgabc:semantic-release-v21.0.1 image: registry.cn-hangzhou.aliyuncs.com/tgabc-namespace/tgabc:semantic-release-v21.0.1
volumes:
- name: gitea
path: /root/.ssh/id_rsa
environment: environment:
GITEA_TOKEN: GITEA_TOKEN:
from_secret: gitea_token from_secret: gitea_token
@ -61,7 +47,7 @@ steps:
- echo 192.168.0.2 git.1000my.com >> /etc/hosts - echo 192.168.0.2 git.1000my.com >> /etc/hosts
- ping git.1000my.com -c 1 - ping git.1000my.com -c 1
- git fetch --tags - git fetch --tags
- git submodule init
# - git submodule init
- git submodule update --recursive --remote - git submodule update --recursive --remote
# - git submodule add -b master https://git.1000my.com/project_runteng/server_iot-common.git # - git submodule add -b master https://git.1000my.com/project_runteng/server_iot-common.git
# - git mv server_iot-common iot-common # - git mv server_iot-common iot-common
@ -72,38 +58,38 @@ steps:
- git describe --abbrev=0 --tags > .tags - git describe --abbrev=0 --tags > .tags
- cat .tags - cat .tags
- name: 编译
- name: windows构建上传exe和zip到iot测试接口platformAppAdd
pull: if-not-exists pull: if-not-exists
image: registry.cn-hangzhou.aliyuncs.com/qmiot/init:nsis20241212
image: registry.cn-hangzhou.aliyuncs.com/qmiot/init:nsis20250102
environment:
url_for_iotplatform: 'http://192.168.0.142:31667'
url_for_iotfile: 'http://192.168.0.142:31666'
logo: '/drone/src/logo.jpg'
cdn_url: 'https://test-598d.1000my.com'
# genre: "Samsung"
commands: commands:
- makensis Sources/nbn.nsi
- ls Sources/Setup.exe
- du -sh Sources/Setup.exe
when:
branch:
- master
# zip打包
- chmod +x zip_diff.sh
- zip_name=$DRONE_REPO_NAME.$(cat .tags).zip
- cd ./IOTContainer
- zip -q -r $zip_name ./
- mv $zip_name /drone/
- cd /drone/src/
- ls /drone/$zip_name
- du -sh /drone/$zip_name
# # 自动授权
# - export projectCode="projectCode=project-inluar4ppcxvciefgb_ila"
- export isiot="True" # 要不要传iot
- export name=${DRONE_REPO_NAMESPACE}-${DRONE_REPO_NAME} # 应用名称(自行填写 必填)
- 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竖屏]
- export des=$CI_COMMIT_MESSAGE # 应用描述
- python3 -u iot_upload.py
# - name: 上传zip到iot正式接口platformProgramAdd
# pull: if-not-exists
# image: registry.cn-hangzhou.aliyuncs.com/qmiot/init:apisix-init-base
# environment:
# url_for_iotplatform: 'http://192.168.0.11:31667'
# url_for_iotfile: 'http://192.168.0.11:31666'
# logo: '/drone/src/logo.jpg'
# cdn_url: 'https://qianmu-iot.1000my.com'
# # genre: "Samsung"
# commands:
# - export isiot="True" # 要不要传iot
# - export name="导视_正式版" # 应用名称(自行填写)
# - export version=$(cat .tags) # 应用版本
# - export sourceId="3" # 应用来源id
# - export genre="localpack" # 应用类型 本地资源包
# - export resolution="1920*1080横屏" # 分辨率(自行填写)[1080*1920竖屏, 1920*1080横屏, 3840*2160横屏, 2160*3840竖屏]
# - export package="/drone/src/target/$DRONE_REPO_NAME.$(cat .tags).zip" # zip包名称
# - export des=$CI_COMMIT_MESSAGE # 应用描述
# - python3 iot_upload.py
# when:
# branch:
# - master
when:
branch:
- test

4
.releaserc

@ -19,9 +19,7 @@
"@semantic-release/release-notes-generator", "@semantic-release/release-notes-generator",
"@semantic-release/git", "@semantic-release/git",
["@saithodev/semantic-release-gitea", { ["@saithodev/semantic-release-gitea", {
"giteaUrl": "https://git.1000my.com",
"assets": [
]
"giteaUrl": "https://git.1000my.com"
}] }]
] ]
} }

1
IOTContainer/testci

@ -0,0 +1 @@
123456

1
IOTContainer/testdir/aaa/aaa.123

@ -0,0 +1 @@
14567

1
IOTContainer/testdir/aaa/bbb/123.txt

@ -0,0 +1 @@
123s

2
IOTContainer/testdir/aaa/bbb/a.txt

@ -0,0 +1,2 @@
aa

129
iot_upload.py

@ -1,8 +1,11 @@
import json import json
import os import os
import requests import requests
import sys
from hashlib import md5
from wget import download
import ssl
import hashlib
def file_write(file_name,text_content): def file_write(file_name,text_content):
# charset() # charset()
file = open(file_name , "w") file = open(file_name , "w")
@ -12,10 +15,7 @@ def file_write(file_name,text_content):
def dingtalk(cdn_url,packageUrl): def dingtalk(cdn_url,packageUrl):
tpl_for_dingtalk=f''' tpl_for_dingtalk=f'''
<font color=[TPL_STATUS_COLOR] size="3">
下载地址: (<a href="{cdn_url}{packageUrl}" target="_blank">{cdn_url}{packageUrl}</a>)
</font>
下载地址: (<a href="{cdn_url}{packageUrl}"
![image]([TPL_STATUS_PIC]) ![image]([TPL_STATUS_PIC])
@ -35,6 +35,7 @@ def dingtalk(cdn_url,packageUrl):
def obsUpload(file,uploadType): def obsUpload(file,uploadType):
print('开始OBS上传...')
url_obsUpload = os.getenv('url_for_iotfile') + "/api/file/v1/attachment/obsUpload" url_obsUpload = os.getenv('url_for_iotfile') + "/api/file/v1/attachment/obsUpload"
myfiles = {'file': open(file, 'rb')} myfiles = {'file': open(file, 'rb')}
mydata = {'uploadType': uploadType} mydata = {'uploadType': uploadType}
@ -45,12 +46,18 @@ def obsUpload(file,uploadType):
return info return info
# APP管理-新增APP # APP管理-新增APP
def platformAppAdd():
def platformAppAdd(package,suffix=None):
print('开始新增上传APP...')
# with open(".tags") as f: version = f.read().strip() # with open(".tags") as f: version = f.read().strip()
logoFile = obsUpload(file=str(os.getenv('logo')), uploadType='logo') logoFile = obsUpload(file=str(os.getenv('logo')), uploadType='logo')
packageFile = obsUpload(file=str(os.getenv('package')),uploadType='compress')
packageFile = obsUpload(file=package,uploadType='compress')
name = os.getenv('name')
if suffix !=None:
name = name + str(suffix)
bodyjson = { bodyjson = {
'name': os.getenv('name'),
'name': name,
'version': os.getenv('version'), 'version': os.getenv('version'),
'genre': os.getenv('genre'), 'genre': os.getenv('genre'),
'logoCode': logoFile['code'], 'logoCode': logoFile['code'],
@ -105,7 +112,7 @@ def multipleProgramToOneProject():
def platformProgramAdd(): def platformProgramAdd():
# with open(".tags") as f: version = f.read().strip() # with open(".tags") as f: version = f.read().strip()
logoFile = obsUpload(file=str(os.getenv('logo')), uploadType='logo') 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 = { bodyjson = {
'name': os.getenv('name'), 'name': os.getenv('name'),
'version': os.getenv('version'), 'version': os.getenv('version'),
@ -131,18 +138,106 @@ def platformProgramAdd():
# multipleProgramToOneProject() # multipleProgramToOneProject()
def get_the_last_windowsApp_GITversion(name):
bodyjson = {
'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))
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')}")
print(f"version: {obj.get('version')}")
the_last_windowsAppZIP_GITversion=obj.get('version')
break # 找到第一个满足条件的对象后停止遍历
print('正在git获取上一个版本的代码:')
os.system('cp -rp /drone/src/ /tmp/theLastCode')
os.chdir('/tmp/theLastCode/')
# os.system('git clone ' + os.getenv('DRONE_GIT_HTTP_URL') + ' .' )
os.system('git checkout ' + the_last_windowsAppZIP_GITversion)
os.system('ls && pwd && git describe --abbrev=0 --tags' )
return the_last_windowsAppZIP_GITversion
else:
return None
def build_for_windowsApp():
print ("开始打包exe流程")
os.chdir('/drone/src/')
os.system('makensis Sources/nbn.nsi')
os.system('du -sh Sources/Setup.exe')
def count_files_in_directory(directory):
count = 0
for root, dirs, files in os.walk(directory):
# 仅计算文件数量,不包括目录
count += len(files)
return count
# def calculate_md5(file_path):
# md5 = hashlib.md5()
# with open(file_path, 'rb') as f:
# while True:
# data = f.read(4096)
# if not data:
# break
# md5.update(data)
# print( file_path + 'MD5值为' + md5.hexdigest())
# return md5.hexdigest()
def build_the_current_windowsApp(name):
the_last_windowsApp_GITversion = get_the_last_windowsApp_GITversion(name)
the_current_windowsAppZIP="/drone/src/" + os.getenv('DRONE_REPO_NAME') + '.' + os.getenv('version') + '.zip'
# the_last_windowsAppZIP = get_the_last_windowsAppZIP(name)
# os.system('mkdir -p /tmp/a/ /tmp/b/ /tmp/IOTContainer/')
# os.system('unzip -q ' + the_last_windowsAppZIP + ' -d /tmp/a/')
# os.system('unzip -q ' + the_current_windowsAppZIP + ' -d /tmp/b/')
os.system('/bin/sh -c /drone/src/zip_diff.sh')
file_count = count_files_in_directory('/tmp/IOTContainer/')
if the_last_windowsApp_GITversion == None:
print("初次上传,不比对zip,直接打包上传")
platformAppAdd(the_current_windowsAppZIP, '.zip')
build_for_windowsApp()
platformAppAdd('/drone/src/Sources/Setup.exe', '.exe')
else:
print ("比对新老版本zip文件")
the_current_windowsAppZIP_dir = '/drone/src/IOTContainer'
the_last_windowsAppZIP_dir = '/tmp/theLastCode/IOTContainer'
if file_count == 1:
print ("\033[34m比对结果: 程序版本无更新,流程终止\033[0m")
else:
print ("比对结果:程序版本已更新")
os.system('cd /tmp/IOTContainer/ && zip -rq ' + os.getenv('DRONE_REPO_NAME') + '.' + os.getenv('version') + '.zip ./')
diff_zip='/tmp/IOTContainer/' + os.getenv('DRONE_REPO_NAME') + '.' + os.getenv('version') + '.zip'
platformAppAdd(diff_zip, '.zip')
build_for_windowsApp()
platformAppAdd('/drone/src/Sources/Setup.exe', '.exe')
if os.getenv("isiot") != 'False': if os.getenv("isiot") != 'False':
platformProgramAdd()
name=os.getenv('name')
cdn_url = os.getenv('cdn_url')
build_the_current_windowsApp(name)
else: else:
print ("is not iot") print ("is not iot")
if os.getenv("DRONE_BRANCH") == 'master':
cdn_url = 'https://qianmu-iot.1000my.com/'
else:
cdn_url = 'https://test-598d.1000my.com/'
packageUrl = os.getenv('DRONE_REPO_NAMESPACE') + '-' + os.getenv('DRONE_REPO_NAME') + '-' + os.getenv('DRONE_BRANCH') + '/' + os.getenv('DRONE_REPO_NAME') + '.' + os.getenv('version')+ '.zip'
dingtalk(cdn_url,packageUrl)

30
zip_diff.sh

@ -0,0 +1,30 @@
mkdir -p /tmp/IOTContainer/
the_current_windowsAppZIP_dir='/drone/src/IOTContainer'
the_last_windowsAppZIP_dir='/tmp/theLastCode/IOTContainer'
cat /drone/src/.tags > /tmp/IOTContainer/version
cd /tmp/IOTContainer/
for i in $(diff -qr /drone/src/IOTContainer/ /tmp/theLastCode/IOTContainer/ | grep /drone/src/IOTContainer/ | grep Only | sed s#/drone/src/IOTContainer/#./# | sed 's#Only in ##')
do
dir=${i%:*}
file=${i##* }
mkdir -p /tmp/IOTContainer/$dir
cp -rp /drone/src/IOTContainer/$dir/$file /tmp/IOTContainer/$dir/$file
echo 差异文件$dir/$file
done
for i in $(diff -qr /drone/src/IOTContainer/ /tmp/theLastCode/IOTContainer/ | grep /drone/src/IOTContainer/ | grep differ | sed s#/drone/src/IOTContainer/#./# | awk '{print $2}')
do
dir=${i%/*}
file=${i##*/}
mkdir -p /tmp/IOTContainer/$dir
cp -rp /drone/src/IOTContainer/$dir/$file /tmp/IOTContainer/$dir/$file
echo 差异文件$i
done
cd /tmp/IOTContainer/
ls -la
# zip_name=$DRONE_REPO_NAME.$(cat /drone/src/.tags).zip
# zip -q -r $zip_name ./
Loading…
Cancel
Save