以前写的 iOS如何实现API环境自动部署文章对于部分人来讲可能以为没什么太大的意义,毕竟对大部分公司来讲可能只有一我的负责开发,不须要考虑分支切换(版本更新,临时需求或问题修复上线等问题),接下来这篇文章将是 对iOS环境实现自动化部署最实用性的配套--自动化构建。git
本次自动化构建基于 jenkins
jenkins下载地址: jenkins.io/zh/
根据我的爱好选择喜欢的安装方式,jar或dmg,安装好后,登陆localhost:8080,根据文档设置管理帐号,安装推荐插件,还须要到插件管理中搜索安装Xcode integration插件 (Jenkins - Manage Jenkins - Manage Plugins)github
插件安装好后,新建任务输入任务名称(将会成为拉下来项目的目录名称),选择构建一个多配置项目,而后点击肯定,以下图所示shell
接下来直接到 构建 部分,选择Execute shell,采用脚本进行构建, 脚本内容以下xcode
#!/bin/sh
#export LC_ALL=zh_CN.GB2312;export LANG=zh_CN.GB2312
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
#项目路径,jenkins环境下的项目所在路径,
# /Users/你的电脑名称/.jenkins/workspace/项目名称(此处项目名称与jenkins上的一致)
projectDir=/Users/xxx/.jenkins/workspace/AutoDemo
#打包须要的ExportOptions.plist文件路径
#ExportOptions.plist的内容能够经过xcodebuild -help了解
exportOptionsPlistPath=${projectDir}/ExportOptions.plist
#项目名称,工程名称
projectName=AutoDemo
#编译的方式,默认为Release,还有Debug等
buildConfig=Release
#日志log文件/导出安装包的目录路径
buildAppToDir=/Users/xxx/Desktop/demoIpa
#项目的Info.plist路径
infoPlist=${projectDir}/${projectName}/Info.plist
#因为jenkins拉下来的项目没法获取到分支名,这里进行手动修改配置
#GIT_BRANCH 是jenkins提供的变量名,获得分支名称
/usr/libexec/PlistBuddy -c "Set :GitCommitBranch ${GIT_BRANCH/#origin\//}" $infoPlist
mkdir -pv $buildAppToDir
logPath=$buildAppToDir/$projectName-$buildConfig.log
###############
mkdir -pv $buildAppToDir
#用到cocoapods,须要更新Pods的执行下命令,不须要则可注释
#cd $projectDir
#pod install
###############开始编译app
echo "分支名称: ${GIT_BRANCH/#origin\//}" >>$logPath
#编译前先clean
xcodebuild clean
#使用cocoapods的项目 workspace的,则执行此行
# xcodebuild -workspace ${projectDir}/${projectName}.xcworkspace -scheme ${projectName} -configuration $buildConfig -sdk iphoneos -archivePath $buildAppToDir/$projectName.xcarchive archive
#project,非workspace项目执行此行
xcodebuild -project ${projectDir}/${projectName}.xcodeproj -scheme ${projectName} -configuration $buildConfig -sdk iphoneos -archivePath $buildAppToDir/$projectName.xcarchive archive
#判断编译结果
if test $? -eq 0
then
echo "~~~~~~~~~~~~~~~~~~~编译成功~~~~~~~~~~~~~~~~~~~" >>$logPath
else
echo "~~~~~~~~~~~~~~~~~~~编译失败~~~~~~~~~~~~~~~~~~~" >>$logPath
echo "\n" >>$logPath
exit 1
fi
###############开始打包成.ipa
ipaName="`date +%Y%m%d%-H:%m:%s`"
echo "安装包名称:${ipaName}" >>$logPath
echo "开始打包$projectName.xcarchive成ipa....." >>$logPath
xcodebuild -exportArchive -archivePath ${buildAppToDir}/${projectName}.xcarchive -exportPath ${buildAppToDir}/${ipaName} -exportOptionsPlist ${exportOptionsPlistPath} -allowProvisioningUpdates
if test $? -eq 0
then
#statements
echo "打包${projectName}的ipa包成功" >>$logPath
else
echo "打包${projectName}的ipa包失败" >>$logPath
exit 1
fi
复制代码
项目GitScript修改, 适配jenkins中获取到分支名称为空到问题,以下图bash
因为使用到是脚本打包,在部署jenkins环境的电脑上Xcode-Accounts中登陆咱们的开发者帐号,同时咱们的项目中须要ExportOptions.plist, 打包用到配置文件,想要了解更多关于ExportOptions.plist的键值能够经过终端输入xcodebuild -help进行查看,基本内容以下图 app
项目准备好后(推送到git仓库),jenkins配置后,执行Build Now便可进行构建,或者触发器触发后会自动进行构建,构建完成后的目录以下iphone
我的认为无论一人仍是多人同时开发,都应保持良好的分支管理习惯,这样才能从容的应对产品不断变化的需求,以及触不及防的bug....post
因为jenkins用的很少,写的冲忙,有不对的地方欢迎你们指出ui
示例项目AutoDemospa