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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值