博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jenkins iOS自动化打包分发
阅读量:7221 次
发布时间:2019-06-29

本文共 4256 字,大约阅读时间需要 14 分钟。

为什么要自动化

  • 节省时间,快速迭代: 减少重复繁琐的过程,本地继续编码,使用工具自动拉取远程库代码后打包
  • 纠错: 打包出错,会自动查找到编译错误
  • 快速分发多个版本: 配置好不同分支的打包策略,可以将打包任务移交测试,分工更明确

工具

  • Jenkins CI
  • Flow CI
  • Travis CI
  • Hudson CI
  • Circle CI

本文只关注 Jenkins 的使用

Jenkins 的三种安装方式

  • war
  • pkg
  • homebrew

推荐使用 homebrew

jenkins 安装

1、 2、安装: brew install jenkins 3、终端启动命令: jenkins 4、浏览器访问jenkins地址: http://localhost:8080/ , 如果不能正常访问,要么Java环境出问题,要么jenkins没有启动; Java环境的去官网下载最新的jdk安装; 5、 正常的浏览器启动页面是如下的

根据提示修改文件夹权限,获取密钥,登录jenkins 6、安装插件 ,Jenkins功能很多以来相应的插件,简化了接入的难度

最好先跳过这一步,因为电脑环境问题,有些插件是需要翻墙安装,所以导致jenkins安装插件的时候,会卡在一个地方,然后就一直卡着,我安装过多次jenkins,因为这个问题,我习惯于跳过插件安装,先登录配置好环境,然后再手动安装插件!!!!!!!!!

如果出现一只卡死在安装插件的界面,关机重启,重新启动Jenkins后,登录http://localhost:8080 进入管理员注册页面 7、 管理员注册 要牢记这个名称,如果是自己测试用,直接用 admin admin 这种更简单的组合.

8、 进入首页,首先将需要安装的插件 再次补充全

需要的插件如下

  • Git , Gitlab,SVN , SSH Credentials用于授权后拉取远程库的代码
  • Keychains and Provisioning Profiles Management: 证书与描述文件的管理
  • Xcode integration Xcode打包的插件,所以iOS的打包只能部署在Mac系统
  • Cocoapods 如果项目使用了cocoapod插件 来获取依赖库
  • Mailer Plugin 用来发送通知邮件
  • fir-plugin 用来将ipa包分发到 fir.im上面,或者使用蒲公英(只能是脚本)也可以
  • Post-Build Script Plug-in 脚本插件

9、配置项目的访问ssh私钥

根据图上的路径

添加SSH的私钥, 一般你项目的访问私钥是 ~/.ssh/id_rsa 这个文件,如果没有配置,则询问你的源代码的管理员

如果私钥是错误的,则配置项目的时候会出现下面?的错误

所以务必要明白,项目的私钥是如何配置的. 需不需要口令码!!! 如果是公司项目,询问运维,当然一般运维会搭建jenkins(iOS必须要在Mac电脑上面搭建,如果是给JAVA使用,一般用linux,不能打包iOS). 自己的项目,不论是在Coding,Github,Gitlab 都可以在页面上查找对应的SSH添加,以明确将要在jenkins使用的ssh私钥是什么

10、配置项目依赖的证书与描述文件

进入后的界面是

主要有两个步骤, ①是 上传钥匙串的 login.keychain , mac地址~/Library/Keychains/

② 设置参数

注意 证书的名称就是本机钥匙串,安装后的证书简介的 常用名称

描述文件的地址 一般是 ~/Library/MobileDevice/Provisioning Profiles 不过我多次尝试 发现配置项目的时候 并没有得到描述文件,后面只能用脚本自己打包的

11、创建新的项目

选择项目的类型

进入项目的配置页面

丢弃旧的构建 ,可以自己定义策略

设置 源码的 拉取, 这一步 主要是可能卡在 私钥的配置上面,所以一定要明确SSH的配置(见上面的说明)

构建触发器 , 这里主要是 定时去 自动化打包项目

构建环境, 主要配置的是 证书与描述文件

下面是正确的环境,我不知道是不是xcode8之后才有的这问题,还是我使用homebrew确实获取不到.

Xcode的配置

具体配置

钥匙串 选择配置好的钥匙串

其他的编译打包参数 , 如果使用了cocoapods还需要指定具体的一些参数,并且执行脚本,拉取依赖的远程库

最最重要的来了,打包的脚本

如果使用了 cocoapods 则需要提供拉取依赖库的代码 否则请忽略这一步(比如我们叮叮暂时没有) 分别是 指定这是一个脚本(截图有问题,应该是#bin/bash -l), podfile文件的 中文格式编码, 切换到podfile的路径下,拉取依赖的pod

具体的代码如下

脚本① 样本 xcodebuild -workspace "demo.xcworkspace" -sdk iphoneos -scheme "targetName" -configuration 'Release Adhoc' CODE_SIGN_IDENTITY="keychain中证书代号名称" SYMROOT='$(PWD) 这里 -workspace "demo.xcworkspace"是使用cocoapods的样本, 没有使用就像下面的 -project "project的路径"

if [ -d "${WORKSPACE}/builds" ]; then rm -rf ${WORKSPACE}/builds; fi;mkdir ${WORKSPACE}/builds;if [ -d "${WORKSPACE}/builds/${BUILD_NUMBER}" ]; then rm -rf ${WORKSPACE}/builds/${BUILD_NUMBER}; fi;mkdir ${WORKSPACE}/builds/${BUILD_NUMBER};xcodebuild -project ${WORKSPACE}/ProjectName/ProjectName.xcodeproj -scheme "ProjectName" -sdk iphoneos archive -archivePath ${WORKSPACE}/builds/${BUILD_NUMBER}/archive CODE_SIGN_IDENTITY="iPhone Developer: xxxx"复制代码

注意 scheme 一定还要勾选 分享

并且注意 不同的打包method 要对应好.

脚本②

xcodebuild -exportArchive -archivePath ${WORKSPACE}/builds/${BUILD_NUMBER}/archive.xcarchive -exportOptionsPlist ${WORKSPACE}/ProjectName/ProjectName/ExportOptions_development.plist -exportPath ${WORKSPACE}/builds/${BUILD_NUMBER}/${JOB_NAME}_${BUILD_NUMBER}.ipa PROVISIONING_PROFILE="iPhone Developer: xxxx"复制代码

这里有一个注意点 就是 exportOptionsPlist ,需要自己在项目中配置 相应的信息

一切顺利就可以正常打包了 后面就是打包后 上传到 fir.im或者是蒲公英 给测试团队 .

还有就是 邮件通知

12、 正常使用

点击进入控制台输出,查看运行的细节

团队的使用

1、 设置一个 局域网的固定访问地址

公司内其他同事就可以通过这个地址,访问jenkins 自己去配置项目,进行打包 2、 设置jenkins运行电脑的安装工作目录 为 分享目录

![share files(http://upload-images.jianshu.io/upload_images/1435355-25ba6162e97b27a9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

同事可以通过Finder 访问共享的电脑,找到manajay名称的电脑,选择连接,可以设置密码,我直接让同事可以以客人的身份,无密码访问jenkins下的 workspace目录. 这样即使 上传失败,自己可以获取到ipa包,自己分发. 3、 jenkins 设置成,开机自启的程序

补充另一种打包方式 fastlane

如果你的项目使用的是 fastlane那就简单很多了.

  • match 配置证书与描述文件
  • gym 负责打包
  • pgyer 负责分发测试, fastlane有个蒲公英的插件,亲测有bug,所以我还是用的脚本

整个打包上传脚本,注意如果使用了fastlane就不需要配置证书的钥匙串,上面的xbuild脚本了.

#bin/bash -lpwdexport LANG=en_US.UTF-8export LANGUAGE=en_US.UTF-8export LC_ALL=en_US.UTF-8echo "pod 更新项目依赖 ----开始----"/usr/local/bin/pod update --verbose --no-repo-updateecho "pod 更新项目依赖 ----结束----"cd fastlanepwdecho "fastlane 打包命令-----开始-----"fastlane developmentecho "fastlane 打包命令-----结束-----"echo "pyger 上传命令-----开始----"sh ./deploy_pgyer.shecho "pyger 上传命令-----结束----"复制代码

待完成的

  • 测试蒲公英分发 curl -F "file=@/tmp/example.ipa" -F "uKey=" -F "_api_key=" https://qiniu-storage.pgyer.com/apiv1/app/upload
  • 添加webhooc自动触发构建

参考链接

转载地址:http://enhym.baihongyu.com/

你可能感兴趣的文章
技术的顶峰
查看>>
js动态添加事件-事件委托
查看>>
Python和人工智能到底啥关系?
查看>>
必读的Python入门书籍,你都看过吗?(内有福利)
查看>>
Java 科学计数法转成完整数字展示;double类型小数值不准确处理
查看>>
PHP代码补全(提示)中的两个 Atom 插件的对比
查看>>
C语言之流程控制
查看>>
ElasticSearch ik,elasticsearch-jdbc 使用 和 yii2 实例
查看>>
RPA视频教程丨UiBot—Function函数详解
查看>>
Getinstall如何解决下载一app 点击浏览器就变成一二微码
查看>>
我的友情链接
查看>>
Windows Server 2008 RemoteApp(五)---远程桌面Web访问
查看>>
linux C函数之strdup函数分析
查看>>
GHOST系统部分报错解决方法
查看>>
我的友情链接
查看>>
数据库与java程序数据传递过程中日期类型的转换
查看>>
改掉阻碍晋升的7个坏毛病 走通职场晋升路
查看>>
Hyper-V——snapshot虚拟机快照
查看>>
Android实现弹出Toast提示
查看>>
Ubuntu12.04平台安装cacti全过程(二)
查看>>