【Python】从Jenkins下载最近一次成功构建的安装包

简介:
#-*- 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





目录
相关文章
|
3天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
使用Python构建简单的图像识别应用
本文将介绍如何利用Python语言及其相关库来构建一个简单但功能强大的图像识别应用。通过结合OpenCV和深度学习模型,我们将展示如何实现图像的特征提取和分类,从而实现对图像中物体的自动识别和分类。无需复杂的算法知识,只需一些基本的Python编程技巧,你也可以轻松地创建自己的图像识别应用。
|
7天前
|
数据采集 NoSQL 搜索推荐
五一假期畅游指南:Python技术构建的热门景点分析系统解读
五一假期畅游指南:Python技术构建的热门景点分析系统解读
|
7天前
|
机器学习/深度学习 资源调度 数据可视化
使用Python和Keras进行主成分分析、神经网络构建图像重建
使用Python和Keras进行主成分分析、神经网络构建图像重建
|
8天前
|
数据库 开发者 Python
Python中使用Flask构建简单Web应用的例子
【4月更文挑战第15天】Flask是一个轻量级的Python Web框架,它允许开发者快速搭建Web应用,同时保持代码的简洁和清晰。下面,我们将通过一个简单的例子来展示如何在Python中使用Flask创建一个基本的Web应用。
|
11天前
|
开发者 Python
Python中使用`requests`库进行文件上传与下载的技术详解
【4月更文挑战第12天】在Python的网络编程中,文件上传和下载是常见的需求。`requests`库作为一个强大且易用的HTTP客户端,为我们提供了简便的文件上传和下载功能。本文将详细介绍如何在Python中使用`requests`库进行文件上传和下载。
|
12天前
|
JavaScript 搜索推荐 前端开发
音乐发现平台:借助Python和Vue构建个性化音乐推荐系统
【4月更文挑战第11天】本文介绍了如何使用Python和Vue.js构建个性化音乐推荐系统。首先确保安装Python、Node.js、数据库系统和Git。后端可选择Flask或Django搭建RESTful API,处理歌曲数据。前端利用Vue.js创建用户界面,结合Vue CLI、Vuex和Vue Router实现功能丰富的SPA。通过Vuex管理状态,Axios与后端通信。这种前后端分离的架构利于协作和系统扩展,助力打造定制化音乐体验。
|
12天前
|
机器学习/深度学习 人工智能 算法
|
14天前
|
数据采集 自然语言处理 搜索推荐
一篇博客带你领略学习Python的第三方库---如何获取和安装第三方库,关于三种常见第三方库的下载和讲解(pyinstall库,jieba库,wordcloud库),更多第三方库的分类介绍
一篇博客带你领略学习Python的第三方库---如何获取和安装第三方库,关于三种常见第三方库的下载和讲解(pyinstall库,jieba库,wordcloud库),更多第三方库的分类介绍
|
18天前
|
jenkins 测试技术 持续交付
软件测试|docker搭建Jenkins+Python+allure自动化测试环境
通过以上步骤,你可以在Docker中搭建起Jenkins自动化测试环境,实现Python测试的自动化执行和Allure报告生成。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
38 6
|
22天前
|
jenkins 持续交付
Jenkins构建简单流水线
Jenkins构建简单流水线
11 0