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)