之前写的 iOS如何实现API环境自动部署 文章对于部分人来说可能觉得没什么太大的意义,毕竟对大部分公司来说可能只有一个人负责开发,不需要考虑分支切换(版本更新,临时需求或问题修复上线等问题), 接下来这篇文章将是 对iOS环境实现自动化部署最实用性的配套--自动化构建。
本次自动化构建基于 jenkins
jenkins下载地址:jenkins.io/zh/
根据个人爱好选择喜欢的安装方式,jar或dmg,安装好后,登录localhost:8080,根据文档设置管理账号,安装推荐插件, 还需要到插件管理中搜索安装Xcode integration插件 (Jenkins - Manage Jenkins - Manage Plugins)
插件安装好后,新建任务输入任务名称( 将会成为拉下来项目的目录名称 ),选择 构建一个多配置项目 ,然后点击确定,如下图所示
创建任务成功后进入到配置页
接下来直接到 构建 部分,选择Execute shell,采用脚本进行构建, 脚本内容如下
#!/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中获取到分支名称为空到问题,如下图
由于使用到是脚本打包,在部署jenkins环境的电脑上Xcode-Accounts中登录我们的开发者账号,同时我们的项目中需要ExportOptions.plist, 打包用到配置文件,想要了解更多关于ExportOptions.plist的键值可以通过终端输入xcodebuild -help进行查看,基本内容如下图
项目准备好后(推送到git仓库),jenkins配置后,执行Build Now即可进行构建,或者触发器触发后会自动进行构建,构建完成后的目录如下