diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..2a6a57f --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +IOTContainer/* diff --git a/.drone.yml b/.drone.yml index d6359f6..80dc9a1 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,28 +1,85 @@ kind: pipeline -type: exec +type: docker name: windows打包exe host_aliases: - ip: 192.168.0.2 hostnames: - git.1000my.com -platform: - os: windows - arch: amd64 - # version: 1809 clone: pull: if-not-exists - depth: 1 + trigger: branch: - master event: - push + +volumes: + - name: dockersock + host: + path: /data/drone/docker/sock + steps: -- name: greeting - commands: - - echo hello world - - ping git.1000my.com - - ipconfig - - makensis .\nbn.nsi - - ls + - name: 生成Release版本 + pull: if-not-exists + image: registry.cn-hangzhou.aliyuncs.com/tgabc-namespace/tgabc:semantic-release-v21.0.1 + environment: + GITEA_TOKEN: + from_secret: gitea_token + settings: + git_login: + from_secret: gitea_username + git_password: + from_secret: gitea_password + + - name: 获取tag数据 + image: registry.cn-hangzhou.aliyuncs.com/qmiot/init:alpine-git-v2.36.2 + commands: + - git fetch --tags + - git submodule init + - git submodule update --recursive --remote + # - git submodule add -b master https://git.1000my.com/project_runteng/server_iot-common.git + # - git mv server_iot-common iot-common + # - git submodule sync + - git describe --tags `git rev-list --tags --max-count=1` + + # 获取当前分支的tag + - git describe --abbrev=0 --tags > .tags + - cat .tags + + + - name: 编译 + pull: if-not-exists + image: registry.cn-hangzhou.aliyuncs.com/qmiot/init:nsis20241212 + commands: + - makensis Sources/nbn.nsi + - ls Sources/Setup.exe + - du -sh Sources/Setup.exe + when: + branch: + - master + + + # - 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 \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2ebf88c --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +Dockerfile +nsWindows.nsh +TextReplace.nsh +Sources/Setup.exe diff --git a/.releaserc b/.releaserc new file mode 100644 index 0000000..8f55a5d --- /dev/null +++ b/.releaserc @@ -0,0 +1,27 @@ +{ + "branches": [ + "master", { + "name": "test", "prerelease": "beta" + } + ], + "plugins": [ + ["@semantic-release/commit-analyzer", { + "preset": "angular", + "releaseRules": [ + {"type": "docs", "scope":"README", "release": "patch"}, + {"type": "refactor", "release": "patch"}, + {"type": "style", "release": "patch"} + ], + "parserOpts": { + "noteKeywords": ["BREAKING CHANGE", "BREAKING CHANGES"] + } + }], + "@semantic-release/release-notes-generator", + "@semantic-release/git", + ["@saithodev/semantic-release-gitea", { + "giteaUrl": "https://git.1000my.com", + "assets": [ + ] + }] + ] +} \ No newline at end of file diff --git a/nbn.nsi b/Sources/nbn.nsi similarity index 95% rename from nbn.nsi rename to Sources/nbn.nsi index 3d97da3..af852a5 100644 --- a/nbn.nsi +++ b/Sources/nbn.nsi @@ -54,7 +54,7 @@ Section "MainSection" SEC01 SetOutPath "$INSTDIR" SetOverwrite ifnewer ;File "..\..\..\..\..\..\path\to\file\AppMainExe.exe" - File /r "C:\Windows\Temp\drone-fmTy6kY7EJCcy0qF\drone\src\IOTContainer\*.*" + File /r "../IOTContainer/*.*" CreateDirectory "$SMPROGRAMS\qm" CreateShortCut "$SMPROGRAMS\qm\qm.lnk" "$INSTDIR\AppMainExe.exe" CreateShortCut "$DESKTOP\qm.lnk" "$INSTDIR\AppMainExe.exe" diff --git a/iot_upload.py b/iot_upload.py new file mode 100644 index 0000000..3441398 --- /dev/null +++ b/iot_upload.py @@ -0,0 +1,148 @@ +import json +import os +import requests + + +def file_write(file_name,text_content): + # charset() + file = open(file_name , "w") + file.write(str(text_content)) + file.close() + + +def dingtalk(cdn_url,packageUrl): + tpl_for_dingtalk=f''' + + 下载地址: ({cdn_url}{packageUrl}) + + + +![image]([TPL_STATUS_PIC]) + +项目名称:[PLUGIN_TPL_REPO_SHORT_NAME] + +更新作者: [CI_COMMIT_AUTHOR_NAME] + + + 更新内容:[TPL_COMMIT_MSG] + + +[ [查看构建详情)]]([TPL_BUILD_LINK]) + + ''' + print (tpl_for_dingtalk) + file_write("./.tpl",tpl_for_dingtalk) + + +def obsUpload(file,uploadType): + url_obsUpload = os.getenv('url_for_iotfile') + "/api/file/v1/attachment/obsUpload" + myfiles = {'file': open(file, 'rb')} + mydata = {'uploadType': uploadType} + r = requests.post(url_obsUpload, data=mydata, files=myfiles) + print (r.text) + json_str = r.text + info = json.loads(json_str)['data'] + return info + +# APP管理-新增APP +def platformAppAdd(): + # 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') + bodyjson = { + 'name': os.getenv('name'), + 'version': os.getenv('version'), + 'genre': os.getenv('genre'), + 'logoCode': logoFile['code'], + 'logoUrl': logoFile['url'], + 'packageCode': packageFile['code'], + 'packageUrl': packageFile['url'], + 'des': os.getenv('des') + } + print (bodyjson) + url_platformAppAdd = os.getenv('url_for_iotplatform') + "/api/platform/v1/platformApp/platformAppAdd" + headers = {'content-type': 'application/json;charset=UTF-8'} + r = requests.post(url_platformAppAdd, headers=headers, data=json.dumps(bodyjson)) + print (r.text) + + cdn_url = os.getenv('cdn_url') + packageUrl = packageFile['url'] + dingtalk(cdn_url,packageUrl) + + +# 应用管理-授权(获取code list) +def getPlatformProgramList(): + bodyjson = { + 'name': os.getenv('name'), + 'version': os.getenv('version'), + 'genre': os.getenv('genre'), + } + print (bodyjson) + url_platformAppAdd = os.getenv('url_for_iotplatform') + "/api/platform/v1/platformProgram/getPlatformProgramList/1/10" + headers = {'content-type': 'application/json;charset=UTF-8'} + r = requests.post(url_platformAppAdd, headers=headers, data=json.dumps(bodyjson)) + print (type(json.loads(r.text))) + print (json.loads(r.text)['data']["listObject"][0]['code']) + + return json.loads(r.text)['data']["listObject"][0]['code'] + + +# 应用管理-授权 +def multipleProgramToOneProject(): + codeList = getPlatformProgramList() + bodyjson = { + "projectCode": os.getenv('projectCode'), + "codeList": [codeList] + } + print (bodyjson) + url_platformAppAdd = os.getenv('url_for_iotplatform') + "/api/platform/v1/platformProgram/multipleProgramToOneProject" + headers = {'content-type': 'application/json;charset=UTF-8'} + r = requests.post(url_platformAppAdd, headers=headers, data=json.dumps(bodyjson)) + print (r.text) + + +# 应用管理-新增应用 +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') + bodyjson = { + 'name': os.getenv('name'), + 'version': os.getenv('version'), + 'genre': os.getenv('genre'), + 'sourceId': os.getenv('sourceId'), + "resolution": os.getenv('resolution'), + 'logoCode': logoFile['code'], + 'logoUrl': logoFile['url'], + 'packageCode': packageFile['code'], + 'packageUrl': packageFile['url'], + 'des': os.getenv('des') + } + print (bodyjson) + url_platformAppAdd = os.getenv('url_for_iotplatform') + "/api/platform/v1/platformProgram/platformProgramAdd" + headers = {'content-type': 'application/json;charset=UTF-8'} + r = requests.post(url_platformAppAdd, headers=headers, data=json.dumps(bodyjson)) + print (r.text) + cdn_url = os.getenv('cdn_url') + packageUrl = packageFile['url'] + dingtalk(cdn_url,packageUrl) + + # 自动授权 + # multipleProgramToOneProject() + + + + +if os.getenv("isiot") != 'False': + platformProgramAdd() +else: + 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) + + + diff --git a/logo.jpg b/logo.jpg new file mode 100644 index 0000000..d18594a Binary files /dev/null and b/logo.jpg differ