让天下iOS开发者没有难打的jenkins构建包

作者: shaneZhang 分类: ios技术 发布时间: 2019-04-03 00:43

你需要知道的java基础知识

java基础知识

JDK是Java 语言的软件开发工具包,由于我们这里使用到了jenkins,jenkins的运行来依赖于jdk,所以要提前安装jdk.在MacOS中安装jdk是非常方便的,直接去官网下载pkg软件包安装即可。
JDK官方下载地址

jenkins简介

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具。官方地址:传送门一般我们选择稳定版本的jar包即可。

tomcat运行使用基础知识

jenkins最终我们获取到的成品是jar包,在java中war包一般有两种运行方式,可使用java -jar test.jar的方式来运行,java -jar jenkins.war也是同样的方式。这种方式的参数要通过命令行传入,一般不推荐这种。还有一种方式就是用tomcat容器来运行。tomcat服务器是一个免费的开放源代码的Web应用服务器,使用起来也是非常方便。

tomcat官网下载:传送门 下载好软件包后,解压到任意地方即可开箱使用

启动tomcat及关闭的方法
cd tomcat7/bin/
./startup.sh 即可启动 
关闭的方法一般是杀死进程
ps -ef|grep java
kill -9 2331  2331为tomcat的进程ID
将jenkins官方下载到的jar包扔到tomcat的webapps目录即可
tomcat的运行地址:http://10.99.39.206:8080
jenkins的运行地址:http://10.99.39.206:8080

因为端口经常被占用,你也可以更换新的端口来启动tomcat
修改tomcat目录config下的server.xml即可,比如我将运行端口配置为8008,由于一个机器可以运行多个tomcat最好将所有端口都配置为未使用的一个端口即可,避免了和其他开发环境的端口冲突。
在新版本的jenkins首次运行中,是根据请求谷歌的地址来确认网络是否联通,那么在我大天朝的话当然这个会被认为当前是无网络连接的。这里需要修改一些配置,在说这个之前需要先介绍一下jenkins的环境变量。
在jenkins运行中默认的环境变量为用户主目录下的.jenkins目录,如果不去特别设置它默认就是这个目录。cd ~/.jenkins。因为我不喜欢用这个目录,所以在tomcat的环境变量里去更改了这个位置。

在tomcat的bin目录下的catalina.sh中加入一个export即可。
export JENKINS_HOME="/Users/zhangyuqing/jenkins"
这样jenkins的运行主目录会被变更为我的用户下的jenkins目录。

如果jenkins出现已经离线了,编辑jenkins主目录下的hudson.model.UpdateCenter.xml将url改为国内的镜像地址https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json即可。

jenkins运行的一些配置信息

配置账号信息

首次运行需要配置基本的管理员账号信息。
第一步是安装鉴权,按照给定文件的密钥配置上,然后设置管理员的用户名和密码即可。

安装插件

在后台的系统管理,插件设置里安装想要的插件信息。一般需要git插件等插件可以自行安装。

构建iOS项目

添加一个自由风格的iOS项目

在iOS项目中我们一般将一些可变的东西配置成参数,这个需要开启参数化的构建参数,然后配置一些动态自定义的参数即可。这里截图一个我这边配置的一些参数。这些参数后面我们在构建的时候都会用到的一些变量。

配置git地址等代码仓库的信息

默认的话pull的时间是有限的,一般大型项目代码仓库很大,pull的时候会超时,在高级选项里配置pull的超时时间即可。如下图所示

配置一些构建的shell脚本

其实iOS的构建过程还是要依赖于xcode的命令行脚本。下面来解析一下

##############进入到构建的主目录下
cd ${WORKSPACE}
##############git reset code
git reset --hard
git clean -d -f
##############删除上次构建的用户临时文件
rm -rf ./ios/build_*
##############config plist 生成xcode archive所使用plist文件,这里我是用的一个python的模板文件然后用python来最终生成一个参数化的plist文件
cd /Users/zhangyuqing/Workspace/buildshell
python exportParams.py  "${PackageType}" "${Profile}" "${Cert}" "${TeamID}" "${BundleID}" "BWCMT.plist"
##############查看plist文件
cat BWCMT.plist
##############auto change build number 自动设置编译的版本号码build号码
cd ${WORKSPACE}
/usr/bin/xcrun agvtool new-version -all ${BUILD_NUMBER}
/usr/bin/xcrun agvtool new-marketing-version ${VersionCode}
/usr/bin/xcrun agvtool what-marketing-version
##############pod update
pod install
##############pod repo update
pod install
##############unlock the keychain
security default-keychain -s  ~/Library/Keychains/login.keychain
security unlock-keychain -p zhangyuqing ~/Library/Keychains/login.keychain
##############build&&archive
xcodebuild -workspace BWCMTApp.xcworkspace -scheme BWCMTApp -configuration ${Scheme} -derivedDataPath build_${BUILD_NUMBER}/ -archivePath build_${BUILD_NUMBER}/BWCMTApp_${BUILD_NUMBER}.xcarchive clean archive DEVELOPMENT_TEAM=${TeamID}
xcodebuild -exportArchive -archivePath build_${BUILD_NUMBER}/BWCMTApp_${BUILD_NUMBER}.xcarchive -exportPath build_${BUILD_NUMBER}/${BUILD_NUMBER}/  -exportOptionsPlist  ~/Workspace/buildshell/BWCMT.plist
ls ${WORKSPACE}
#################################到这里已经给可以成功构建出ipa了,下面这两个是用七牛的云存储配合二维码来实时安装的配置
cp   ${WORKSPACE}/build_${BUILD_NUMBER}/${BUILD_NUMBER}/BWCMTApp.ipa    ~/Workspace/tomcat9/webapps/ROOT/debug/BWCMTApp_${Scheme}_${BUILD_NUMBER}.ipa
##############这里用到了七牛存储云服务器来生成二维码和安装的plist地址
python ~/Workspace/upload.py  http://10.99.39.206:8008/debug/BWCMTApp_${Scheme}_${BUILD_NUMBER}.ipa  BWCMTApp_${Scheme}_${BUILD_NUMBER}  ${VersionCode}

一些脚本解析

首先用到了一个archive需要的一个plist配置的文件,我这里设置了一个模板,然后用python去根据动态化的参数去配置生成一个可用的plist
这个python脚本和plist模板可用参考我之前的这篇文档升级Xcode9之后对于iOS打包一些shell的调整

xcodebuild这个是xcode自带的一个命令,可用参考xcode –help的帮助文档来使用。 第一行是编译 第二行是签名并导出ipa文件。-workspace指定workspace -scheme参数为指定scheme -configuration为指定的打包的配置 -derivedDataPath为编译文件的目录 -archivePath为指定最终生成文件的路径 clean archive DEVELOPMENT_TEAM=${TeamID}为清理并构建指定开发者的teamID

七牛上传的脚本可以参考我这边文章利用七牛打造自动化数据灾备

上传到蒲公英,利用python将iOS安装包上传到蒲公英的脚本

使用命令行来安装p12证书和profile描述文件用命令行安装mobileprovision和p12证书

jenkins打包重新梳理

iOS利用企业证书测试打包时暂时屏蔽掉ApplePay

用python添加iOS Framework的Debug标记

jenkins设置Git Hooks

python连接腾讯企业邮箱发送html邮件

最终生成的效果预览

配合gitlab的webhook,构建完毕可以发送邮件通知到相关人,也可以将二维码发送到邮件中,这样大家扫码就可以及时查看了。

如果觉得我的文章对您有用,请随意打赏。如果有其他问题请联系博主QQ(909491009)或者下方留言!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注