基础python学习网站www.runoob.com/python/python-tutorial.html
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