插件准备
Manage Jenkins -> Manage Plugins -> Available -> Filter
安装Git Plugin、Xcode Plugin、GitLab Plugin、
Environment Injector Plugin四个插件
jenkins配置
Manage Jenkins -> Configure System
配置Git
配置Keychain
配置GitLab
Gitlab配置部分,填写Gitlab host URL(例如:http://gitlab)、API Token(查看Gitlab个人账号里面的API Token值),勾选Ignore SSL Certificate Errors
job配置
创建job
第一次使用Freestyle project 下次可以直接copy这个项目的配置
配置gitlab connetion 和 job name
设置jenkins版本保留时间
配置要编译的版本choices就是你远程库对应的分支名称
1 | remotes/origin/dev_build |
配置远程仓库对应的地址,和授权用户
配置环境变量
注意target 名称不能有空格,否则编译之后脚本运行会出错,当时这边我使用项目原有的target去Duplicate一个新的target之后,workspace 会生成一个target copy的scheme,这个scheme要改掉,中间不能有空格,我改成了target_dev
控制编译版本实现自增形式来区分每个构建的不同
这里为了给测试人员区分debug和release版本,原来计划通过更改bundleid,后来发现不是最优的,因为测试人员要求debug和release版本要有不同的icon,这样我不得不在build的时候去更改的appicon,需要些一堆的脚本,想想都麻烦的要死,具体怎么做可以看这里How To Change Your App Icon at Build Time。后来选择另一种方法,在项目原有的target Duplicate出一个target来区分。
xcode 构建设置
不同的bundleid需要对应不用的provisioning file,在jenkins环境中的/Users/{username}/Library/MobileDevice/Provisioning Profiles目录下面,这里也可以不填写对应的provisioning file 名称,因为build的时候会自动去找最新的file来完成进行签名
将生成的app打包成ipa
将打包好的ipa上传到fir,具体怎么操作可以去fir.im的官网Tool下看具体教程
fir.im Jenkins 插件使用方法,
1 | fir publish ${BUILD_DIR}/${TARGET}.ipa -p -T fca939....cde93 |
第一次build是会报出sode sign的错误,这是你需要去你的jenkins所以电脑上的工程路径中编译一次,然后系统会弹出证书是否允许访问的玩意,点击始终允许就OK了。如果在编译的时候收到no scheme的错误提示,需要到所在的工程目录下运行如下命令,会列出错有scheme要是没有需要在你的工程中的manage scheme 将所有的scheme都勾选上就可以了
1 | KingxiqueWorkPlatform_Dev-Info.plist test-reports |
到这里就大功告成