在代码上线前,往往需要升级API的版本号。但是每次都要在nexus上手动查看最新的版本号还是挺麻烦的。还是为了更高效的钓鱼,我写了一个python脚本查询指定api的最大版本号。#引入第三方库requestsimportrequestsimportreimportmathimportjsonARTIFACT_ID='one-api'GROUP_ID='com.one'NEXUS_URL='http://repo.one.com/service/extdirect'NEXUS_COOKIE='onetwothree'defmain():#从nexus中获取指定项目的所有版本号version_list=__get_version_list(ARTIFACT_ID,GROUP_ID,NEXUS_URL,NEXUS_COOKIE)#计算最大版本号max_version=__get_max_version(version_list)print('最新版本号>>>'+max_version)#从集合中找出最大的版本号def__get_max_version(version_list):#初始值设置为0.0.0#数据格式为('完整版本号',majorversionnumber,minorversionnumber,minorversionnumber)max_version_tup=('0.0.0',0,0,0)forcurrent_versioninversion_list:#对于1.1.0-SNAPSHOT形式的版本号,转换为1.1.0temp_version=re.sub('-.*','',current_version)num_list=temp_version.split('.')current_version_tup=[current_version,int(num_list[0]),int(num_list[1]),int(num_list[2])]#最大版本号与上一条记录号比较,取两者的最大值作为最新的最大版本号max_version_tup=__get_max_version_tup(max_version_tup,当前rent_version_tup)returnmax_version_tup[0]#比较两个版本号,返回最大的一个def__get_max_version_tup(tup_a,tup_b):#依次比较3个版本号iftup_a[1]>tup_b[1]:returntup_aiftup_a[1]tup_b[2]:如果tup_a[2]则返回tup_atup_b[3]:如果tup_a[则返回tup_a3]0:#流通页面查询版本号circulation_num-=1page_index+=1request_dist=__build_request_dist(artifact_id,group_id,page_index,page_size)response=__post_json(request_dist,url,cookie)#从响应参数中提取所有版本号,和appendtothearray__fill_version(version_list,response)returnversion_list#获取版本号总数def__get_total(response):response=json.loads(response)result=response["result"]total=result["total"]returntotal#从响应参数中提取所有版本号并附加到数组中def__fill_version(version_list,response):response=json.loads(response)result=response["result"]data=result["data"]foriindata:version_list.append(i['version'])returnversion_list#构建请求参数def__build_request_dist(artifact_id,group_id,page_index,page_size):#设置起始值start=(page_index-1)*page_size#查询参数request_dist={'action':'coreui_Search','method':'read','data':[{'page':page_index,'start':start,'limit':page_size,'filter':[#以maven格式搜索{'property':'format','value':'maven2'},{'property':'attributes.maven2.artifactId','value':artifact_id},{'property':'attributes.maven2.groupId','value':group_id},#只查询发布版本{'property':'repository_name','value':'maven-releases'}]}],'type':'rpc','tid':14}returnrequest_dist#json格式post请求def__post_json(request_dist,url,cookie):#发送数据转换到JSON格式数据_json=json.dumps(request_dist)headers={'Cookie':cookie,'content-type':'application/json','charset':'utf-8'}response=requests.post(url,data=data_json.encode('utf-8'),headers=headers)返回response.textif__name__=='__main__':main()