您现在的位置是:首页 > 文章详情
【Python】从Jenkins下载最近一次成功构建的安装包
日期:2018-11-15点击:752收藏
#-*- coding:utf-8 -*-
from case.beatles.test_beatles import TestBeatles
from framework.logger import Logger
from page.ios.beatles.jenkins_page import Jenkins_Tool
class DownloadApp(TestBeatles):
def testDownloadfromJenkins(self):
try:
jp = Jenkins_Tool()
jp.download_app_from_jenkins()
except Exception, e:
Logger.error(e)
self.save_screenshot()
self.fail(e.message)
#-*- coding:utf-8 -*-
from datetime import datetime
import urllib
import jenkins
import os
job_names = ['job-ios','job_android']
username = 'Jenkins用户名'
password = 'Jenkins密码'
base_ios_debug_download_url = 'https://xxx/ios/Debug/'
base_android_debug_download_url = 'https://xxx/android/Debug/'
ios_app_suffix = '.ipa'
class Jenkins_Tool():
def __init__(self):
self.jenkins_url = 'http://jenkins host url'
self.sever = jenkins.Jenkins(self.jenkins_url, username=username, password=password)
# 获取最新构建号
def get_build_number(self, job_name):
lastest_completed_build_number = self.sever.get_job_info(job_name)['lastCompletedBuild']['number']
# print(lastest_completed_build_number)
return lastest_completed_build_number
# 获取Jenkins下的所有job
def get_all_jobs(self):
all_josbs = self.sever.get_all_jobs()
print(self.sever.jobs_count())
for job in all_josbs:
print(job['name'])
# 获取构建日志
def get_build_console_output(self, job_name):
number = self.get_build_number(job_name)
resps = (self.sever.get_build_console_output(job_name, number))
print(resps)
# 生成ios下载的绝对URL
def getIosAbsoluteURL(self, job_name):
ios_download_url = base_ios_debug_download_url + str(self.get_build_number(job_name)) + '/' + self.getPkgName(job_name)
return ios_download_url
# 生成android下载的绝对URL
def getAndroidAbsoluteURL(self, job_name):
android_download_url = base_android_debug_download_url + str(self.get_build_number(job_name)) + '/' + self.getPkgName(job_name)
return android_download_url
# 拼接包名
def getPkgName(self, job_name):
number = self.get_build_number(job_name)
if job_name == 'carpool_iosbuild':
pkg_name = 'iOS包名前缀' + str(number) + '_.ipa'
# print(pkg_name)
return pkg_name
else:
pkg_name = 'Android包名.apk'
return pkg_name
# 从Jenkins下载最新ios App
def download_ios_app(self, job_name):
local = os.path.join('/Users/didi/Downloads/', self.getPkgName(job_name))
ios_download_url = self.getIosAbsoluteURL(job_name)
print('开始下载iOS App...')
urllib.urlretrieve(ios_download_url, local)
print('iOS App 下载完成')
# 从Jenkins下载最新android App
def download_android_app(self, job_name):
local = os.path.join('/Users/didi/Downloads/', self.getPkgName(job_name))
android_download_url = self.getAndroidAbsoluteURL(job_name)
print('开始下载Android App...')
urllib.urlretrieve(android_download_url, local)
print('Android App 下载完成')
# 下载进度
def callbackfunc(blocknum, blocksize, totalsize):
'''回调函数
@blocknum: 已经下载的数据块
@blocksize: 数据块的大小
@totalsize: 远程文件的大小
'''
percent = 100.0 * blocknum * blocksize / totalsize
if percent > 100:
percent = 100
print "%.2f%%" % percent
# 重命名ios app
def rename(self, file_dir, file_name):
os.chdir(file_dir) #切换目录
# print "当前目录为: %s" % os.listdir(os.getcwd())
for root, dirs, files in os.walk(file_dir):
os.listdir(os.getcwd()) # 获得当前目录中的内容
for file in files:
if os.path.splitext(file)[1] == '.ipa':
os.rename(file_name, 'xxx'+ios_app_suffix)
print('ios app已重命名为 xxx.ipa')
return
#从Jenkins下载最新的构建包
def download_app_from_jenkins(self):
jt = Jenkins_Tool()
start_download_time = datetime.now() # 开始下载时间
jt.download_ios_app('ios-job')
jt.rename('/Users/didi/Downloads/',jt.getPkgName('ios-job'))
jt.download_android_app('android-job')
end_download_time = datetime.now() # 下载完成时间
print('Android & iOS下载耗时:' + str((end_download_time - start_download_time).seconds))
return True
关注公众号
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Appium iOS三种滑动方式
方法一:不推荐 driver.execute_script("mobile: scroll", {"direction": "down"}) 实际使用中发现会执行两次滑动操作 方法二:不推荐 driver.execute_script("mobile: swipe", {"direction": "down"}) 滑动距离较小 方法三:推荐使用 driver.execute_script("mobile:dragFromToForDuration",{"duration":0.5,"element":None,"fromX":0,"fromY":650,"toX":0,"toY":100}
- 下一篇
App移动端性能工具调研
使用GT的差异化场景 平台 描述 release版本 development版本 Android 在Android平台上,如果希望使用GT的高级功能,如“插桩”等,就必须将GT的SDK嵌入到被调测的应用的工程里,再配合安装好的GT使用。 支持 Android iOS 在iOS平台上,GT是以Framework的形式发布的,使用者只要把GT的Framework合入到被调测工程中,就能使用GT的全部功能。 支持 N/A
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
扫描即可查看该文章
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS关闭SELinux安全模块
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程