python ios自动化_iOS python 自动化构建打包脚本
1.准备工作和注意事项
2.配置填写
项目、python脚本文件及plist目录:
plist文件:
3.生成相关目录
4.xcodebuild命令打包
5.上传svn
建议:
1.上传app store还是手动,用熟悉的方式最可靠.
2.要修改python代码 或者 自行开发 还是学一下基础先.
3.附上源码
以下是源码:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import os
import copy
import time
import sys
import urllib
import shutil
#使用说明
#本脚本基于Python语言,学习优化的自动化构建打包脚本,目前仅发布SVN上传,如有其它需要,可自行开发...
#条件准备
#1. 装有python
#2. 运行python文件
#注意事项
#1.xcworkspace方式打包
#2.需要配置ipa的svn路径
#3.本文默认打包,上传SVN文件方式,schemeName+打包时间+.ipa为文件名上传
#4.schemeNames和configurationName可以在项目根目录下(xcworkspace所在位置),使用xcodebuild -list查看
#5.python所在plist文件夹中的plist文件一定要有!!!
#开始时间
start = time.time()
#******************需要手动填写***********************
#版本
jobVersion="1.1.1"
#工作空间
workspaceName="项目名" + ".xcworkspace"
#构建工程
schemeNames={"项目名-Test"} #debug版本[Debug|Release],使用xcodebuild -list查看configuration支持的类型
#编译版本信息
configurationName="Debug-Test" #debug版本[Debug|Release],使用xcodebuild -list查看configuration支持的类型
#需要打那个版本的ipa包(development/adhoc/enterprise/app-store) plist里 填写的就是版本证书
plistPath="/plist/development.plist"
#SVN地址
SVN_ADDRESS = '需要上传到svn地址目录'
#***************************************************
#python文件所在文件目录
filePath=sys.path[0]
#配置plist的目录
plistPath=filePath+plistPath
# 转换目录结构--转到代码库所在文件
codePath=os.path.abspath(os.path.join(os.path.dirname(__file__),".."))
os.chdir(codePath+'/项目名/');
#*****************拉取代码**********************************
os.system('git pull')
print('更新代码完成...')
#*****************打包**********************************
#获取当前时间并格式化
dateTime=time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime());
svnPackName=time.strftime("%m%d", time.localtime());
#获取当前目录路径
workspaceDirPath=os.getcwd()
#获取当前桌面路径
desktopPath=os.path.join(os.path.expanduser("~"), 'Desktop')
desktopPath2=os.path.expanduser("~/Desktop")
#最后生成基础目录
basePath=desktopPath+"/App"+dateTime
#archivePath目录
archivePath=basePath+"/archive"
if os.path.exists(archivePath)==False:
os.makedirs(archivePath)
#exportPath目录
exportPath=basePath+"/ipa"
if os.path.exists(exportPath)==False:
os.makedirs(exportPath)
for schemeName in schemeNames:
#BaseCommand
baseCommand=" -workspace "+workspaceName+" -scheme "+schemeName+" -configuration "+configurationName
#清除编译的app
xcodebuild_clean="xcodebuild clean"+baseCommand
#查看项目全部的targets,schemes和configurations
xcodebuild_list="xcodebuild -list"
#编译
xcodebuild_build="xcodebuild build"+baseCommand
#archivePath命令
archivePathOption=" -archivePath "+archivePath+"/"+schemeName
#exportPath命令
exportPathOption=" -exportPath "+exportPath+"/"
#指定exportOptionsPlist文件路径
exportOptionsPlistOption=" -exportOptionsPlist "+plistPath
#编译并生成.archive包
xcodebuild_archive="xcodebuild archive"+archivePathOption+baseCommand
#.archive包导出ipa包
xcodebuild_exportArchive="xcodebuild -exportArchive"+archivePathOption+".xcarchive"+exportPathOption+exportOptionsPlistOption
# 执行命令
os.system(xcodebuild_clean)
os.system('%s' % xcodebuild_archive)
os.system('%s' % xcodebuild_exportArchive)
# # 重命名文件
ipaNamePath=exportPath+'/'+schemeName+'.ipa'
#新ipa
newIpaName=schemeName+'-'+jobVersion+'-'+dateTime+'.ipa'
newIpaNamePath=exportPath+'/'+newIpaName
os.rename(ipaNamePath, newIpaNamePath)
# print ipaName
# print newIpaName
#***************************************************
#*******************上传svn********************************
# 判断今天的仓库是否创建,没有就创建
repositoryPath=desktopPath2+'/repository/'+jobVersion+'/development'
if os.path.exists(repositoryPath)==False:
os.makedirs(repositoryPath)
daliyPath=repositoryPath+'/'+svnPackName
print(daliyPath)
if os.path.exists(daliyPath)==False:
# 创建新的文件夹
os.makedirs(daliyPath)
shutil.move(newIpaNamePath, daliyPath)
# 转到仓库所在目录
os.chdir(daliyPath + '/')
# 打开仓库所在目录
os.system('cd ' + daliyPath + '/')
# 上传svn
importFolderSvn = 'svn import -m "New import folder" ' + daliyPath + "/" + newIpaName + " " + SVN_ADDRESS + "/" + svnPackName + "/" + newIpaName
print('daliyPath='+daliyPath)
print('newIpaName='+newIpaName)
print('svnPackName='+svnPackName)
print('newIpaName='+newIpaName)
print('importFolderSvn='+importFolderSvn)
os.system('%s' % importFolderSvn)
print '上传ipa包'
#***************************************************
#输出总用时
end = time.time()
print "用时: %f s" % (end - start)
#forend
python ios自动化_iOS python 自动化构建打包脚本相关推荐
- rpmbuild告警mangling shebang in xxx from /bin/python to /usr/bin/python/python2.
rpmbuild告警mangling shebang in xxx from #!/bin/python to #!/usr/bin/python/python2. This will become ...
- Android 通过python实现自动化构建打包上传加固
Android 通过python实现自动化构建打包上传加固 实现需求: 基于gradle命令,通过python实现多渠道,多环境打包,上传蒲公英,360加固等 经过学习调研完成步骤如下: 一,通过gr ...
- Python selenium —— 将你的自动化脚本打包成一个exe
写好了Python selenium脚本,到其他机器上运行,还得要在其他机器上也装一套Python的环境,尤其在你用了一些第三方库的时候,甚至还要顾及操作系统是32位还是64位,是不是很坑,如果能打成 ...
- python paramiko模块下载_Python自动化运维实战:使用Python管理网络设备
现在,我们已经知道如何在不同的操作系统中使用和安装Python以及如何使用EVE-NG搭建网络拓扑.在本章中,我们将学习如何使用目前常用的网络自动化库自动完成各种网络任务.Python可以在不同的网络 ...
- Appium+python自动化8-Appium Python API
Appium+python自动化8-Appium Python API 前言: Appium Python API全集,不知道哪个大神整理的,这里贴出来分享给大家. 1.contexts contex ...
- python接口测试框架实战与自动化进阶(三)
python接口测试框架实战与自动化进阶 一.持续集成 1.持续集成环境搭建 1)安装Jenkins 官网下载后直接安装:https://jenkins.io/ 终端直接安装及启动:java -jar ...
- python ui自动化脚本_ui自动化:python+appium----环境搭建
前言: appium可以说是app最火的一个自动化框架,它的主要优势是支持android和ios,另外脚本支持java和python.以下为python+appium的安装教程... 环境准备... ...
- 知乎高赞!python能做这么多自动化,可开发效率真的有Java高?
python可以用来干嘛? 可以用来处理海量的Excel表格数据并进行数据分析 可以用来收集想要的信息并进行数据分析 数据挖掘并为项目提供数据支持 我已经,把数据库移到了一台淘汰下来的办公电脑上,又用 ...
- iOS 自动化发布 Fastlane 本地构建 IPA 并分发
此篇文章相关代码已经上传至 GitHub,相关代码请移步 build_ios_app iOS 自动化发布测试包到 fir.im,以及自动打包上传 AppStore 并提交审核... 公司项目都是在 J ...
最新文章
- python读取一个文件夹/子文件夹下的所有文件名字
- [收藏] 王永民先生:自我白描
- 11月21日spring mvc的表单校验培训日记
- 高质量c/c++编程(10)
- 观察者模式及Java实现例子
- sqlserver大数据归档
- 南京php培训班哪家,南京PHP培训中心哪家比较专业
- SVN中“txn-current-lock:拒绝访问”错误
- storm的流分组策略
- javascript获取系统时间时区_详解Linux操作系统修改时间和修改时区的方法
- java实心菱形_java打印出实心菱形与空心菱形
- 解决MYSQL不报错误详细信息的问题 Can‘t find error-message file
- 数组操作--微信小程序学习教程
- Maven 常用仓库网址
- CAD,SolidWorks相比ProE,UG等软件有什么区别?
- FOI 2019 游记
- 云研发 IDE Uncode:演示版发布(欢迎加入开发)
- 输入半径,求球的表面积和体积
- Java计算百分比方法
- Ajax请求URL的写法
热门文章
- webbrowser设置横向打印_9个Excel打印神技巧!从此打印不求人!
- python day33
- 前端基础进阶之Promise
- SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型
- 解释OBJECT_ID和OBJECTPROPERTY
- 发现了一个美图看看软件的一个bug
- 鸿蒙系统的结构图,一图看懂鸿蒙系统中的JS开发框架!
- android 发送显示广播,如何查看Android系统当前发送了什么广播
- php如何获取js中的内容_解析PHP中的Javascript提取
- c++ 暂停功能_苹果拥抱Rust,正在将C代码移植到Rust