From 849a8a2d5f6f7c2ac61331fbeea2b4a10ef23048 Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 13 Dec 2024 13:35:51 +0800 Subject: [PATCH] fix: ci --- .dockerignore | 1 + .drone.yml | 83 +++++++++++++++++---- .gitignore | 4 + .releaserc | 27 +++++++ nbn.nsi => Sources/nbn.nsi | 2 +- iot_upload.py | 148 +++++++++++++++++++++++++++++++++++++ logo.jpg | Bin 0 -> 5364 bytes 7 files changed, 251 insertions(+), 14 deletions(-) create mode 100644 .dockerignore create mode 100644 .gitignore create mode 100644 .releaserc rename nbn.nsi => Sources/nbn.nsi (95%) create mode 100644 iot_upload.py create mode 100644 logo.jpg 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 0000000000000000000000000000000000000000..d18594abc8f238827e5da351f821245b0214554a GIT binary patch literal 5364 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 UxRFLmHTJ5Z8|A+H?DE6^06!40wg3PC literal 0 HcmV?d00001