当前位置:首页 » 编程软件 » jenkins编译ios

jenkins编译ios

发布时间: 2023-06-04 06:58:11

❶ jenkins ios 自动化打包一定要在mac下吗

首先搭建起jenkins环境,android官方提供了使用ant编译打包的脚本,所以要在jenkins系统配置里面将ant配置好;然后在jenkins里面新建一个项目,这里列出比较重要的几项配置: 1、项目源代码位置,一般就是指定svn吧 2、构建过程添加shell

❷ iOS 的自动构建流程

用来打包做类似事情的工具很多,更主要的是为什么使用自动构建:

• 效率上,解放出开发人员的时间。也更方便其他同事使用。

• 保证打包的标准,避免配置或环境问题,带来的失败。把事情做对,比做快更重要。

• 权限安全上,通过构建系统集中管理,对于使用者来说是一个黑盒。

• 项目流程上,便于有需求时做 Daily Build 或者 自动测试。

对于 如何安装 Jenkins 或者 Jenkins 参数配置 之类的基本配置不做涉及。

网上已经有不少详细的文章进行介绍。比如 手把手教你利用Jenkins持续集成iOS项目 https://www.jianshu.com/p/41ecb06ae95f 。

先介绍整体的构建流程,具体的内容会在下面分步骤介绍.

构建前

• 设置构建名

• 配置 app 图标水印(build号,分支)

• ruby 脚本根据参数,修改工程 bundleID ,宏等

• 安装第三方依赖,pod update

执行构建

• xcodebuild clean

• xcodebuild archive

• xcodebuild exportArchive

构建完成

上传分发平台: 蒲公英/fir/appstore(历史版本记录: git tag )

• 符号表处理:上传 bugly

• 归档产物: 上传 FTP 服务器

• 清理: 删除 IPA 等

• 设置构建描述

• 通知: 企业微信 webhook 机器人推送

首先设置我们的构建名称,我这里使用到几个参数:

• BUILD_NUMBER ,Jenkins 自带的参数,代表第几次构建

• BetaPlatform ,设置的选项参数,代表分发平台。我这里的值分别是:fir,pgyer,appstore

• Mode,设置的选项参数,代表 Xcode 构建的环境设置,为 Snapshot 和 Release

• Branch,Jenkins 自带的参数,代表 Git 分支名称

为了打包后进行测试的 APP ,便于定位问题,可以在 App Logo 上打上水印,加入构建使用的 git 分支名,jenkins 构建号,app 版本号 等关键信息。

配置图标水印的流程为:

• 判断此次是否为 appstore 分发平台。如果是 appstore 的话,将旧有的图标目录清理掉,然后将图标复制到使用的目录中。

• 如果不是 appstore ,则为测试平台分发,进行水印处理。

因为要使用替换资源的方式,所以准备两个目录。

一个目录作为 源目录,存放未处理的图片。一个目录作为目标目录,存储 App Logo 使用的图片。

为什么使用两个图片目录存储?假设只用一个,原图为A,当第一次处理,图片为 A1水印图片,当第二次再拿到的图片,已经是被处理过的 A1水印图片了,而不是原图A 。

这里注意 icons_path 为存放原图的地址, icons_dest_path 为要修改使用的目标路径。命名为 AppIcon-Internal。

可以参考 iOS APP图标版本化 https://www.jianshu.com/p/a37e114b7e66

关于 version 的获取, 因为目前版本有改动,使用 ruby 去获取,脚本会在后面提供链接:

还有一个临时存放路径,要提前创建好这个文件夹:

添加水印主要使用到了命令行工具 ImageMagick ,所以要先安装:

具体的脚本如下:

这里使用 ruby 实现参数修改(当然也可使用 python 等各种语言,自己方便就 OK )。

目前做的操作:

• 区分是否 beta 版本 -- 修改定义 beta 宏 的真假值

• 不同分发平台,使用不同 bundleID -- 对 bundleID 进行修改

脚本里依靠 CocoaPods 开源的 Xcodeproj ,对工程的 name.xcodeproj/project.pbxproj 文件进行配置修改。

python 的话,可以使用这个项目 mod-pbxproj

安装/更新第三方库,这里使用到的是 Cocoapods,其它的包管理器可使用其它方式。

在开始之前,我们要做些准备工作,比如设置要使用的变量,常量。

需要提前写好,尽量避免散落。

旧有的方式,是直接通过 info.plist 取:

然而在新的 Xcode 取 版本号 和 bundleID 的方式发生变化,现在 info.plist 里的值是变量名,取版本号为 $(MARKETING_VERSION) , bundleID 为 $(PRODUCT_BUNDLE_IDENTIFIER) .

结局思路是通过脚本到工程配置里去获取,下面使用 ruby 实现了这两个目的。

我们将 App 与 Jenkins 的 build number 设置为同一个,方便需要时,查看构建的参数以及符号表等:

加入 security 解锁操作的原因,是在子节点 ssh 登录上去之后,keychain 没有被解锁.导致打包失败.
解决方案是用 security unlock-keychain 命令将证书解锁。

另外可以通过命令查看描述文件的详细信息 包括UUID等信息

对工程进行构建打包,主要在于使用 Xcodebuild .
分为三个阶段:

• Clean

• Archive

• Export

如果在执行过程中又不喜欢日志输出的,可以在命令行最后加上

每次构建时,对工程进行 clean ,保证没有其它影响的因素。
使用xcodebuild clean [-optionName]...清除编译过程生成文件,使用如下:

非 cocoapods 的工程,将 -workspace "${APP_NAME}.xcworkspace" 换成 -project ${APP_NAME}.xcodeproj 即可。
新版本的 Xcode 有了新的构建系统,使用 -UseModernBuildSystem= 来做新旧区分。

Xcodebuild archive

更新到Xcode9.0后,之前写的自动打包脚本不可用了。

需要添加 -allowProvisioningUpdates,获取访问钥匙串权限的关键所在,设置了这个字段就会在打包过程弹框请求获取钥匙串内容权限。

特别说明的是,exportOptionsPlist 一定要检查,不同的环境和分发平台要选择对。

最简单方式,就是调好需要的环境后,直接手动 archive ,export 出来,使用产物里的 exportOptionsPlist 文件。

检查对应路径是否有 **.ipa 文件:

这里分为 蒲公英,fir,appstore 三个平台,上传 IPA.

下面使用的三个上传命令,最好先提前在机器上实验可以正常用再构建。

上传 bugly

进行完所有操作后,对于产物做一次保存,需要时可以用上。

首先将文件压缩

通过 FTP 插件,把 zip 文件上传到归档的路径下

删除 IPA 等文件,注意的是,当状态为 success 才清理,避免有时上传出问题,可以进行手动上传。

设置构建描述

完成后,企业微信 webhook 机器人推送,效果如下:

这里设置成可选项,避免频繁打扰其它同事。脚本如下:

[1] https://juejin.im/post/6844903843994533896
[2] https://www.cnblogs.com/zhou--fei/p/11371019.html
[3] https://www.jianshu.com/p/4f4d16326152
[4] https://www.jianshu.com/p/f50053d50436
[5] https://dengweijun.com/2018/12/26/Xcode%E8%87%AA%E5%8A%A8%E6%89%93%E5%8C%85%E9%82%A3%E4%BA%9B%E4%BA%8B/

❸ iOS-Jenkins-TestFlight自动打包流程

一、准备一台mac电脑
二、安装jenkins
打开终端运行:
brew install Jenkins
如果没有安装brew,请前往 brew 根据提示安装。
至少需要安装java1.8 ,如果没有安装会有提示, java
java安装完毕,链接 launchd 配置文件

启动jenkins
jenkins
打开Safari输入: http://localhost:8080/
就能看到jenkins已经运行起来了,如果你更换了端口就是你后来设置的端口。

接下来打开Jenkins后会让去一个填写password的页面如下图,存储password的地方就是图片上那行红色字体目录下,使用终端 cat + 红色字体路径就看到了

然后将我们得到的password输入到“Administrator password“中,即可进入如下界面,接着安装一些建议的插件(左边的),请等待,并全部安装成功在进行下一步。

安装完成之后,输入账户密码,登陆。开始jenkins

二、cocoapod环境安装
项目中一般会使用cocoapod管理第三方库。这个时候如果使用jenkins自动打包,就需要安装好cocoapod环境

三、jenkins使用
1、安装插件
Keychains and Provisioning Profiles Management
Xcode integration
在系统管理-> 插件管理中搜索插件

配置Keychains and Provisioning Profiles Management

请先配置好p12和Provisioning Profiles文件
需要上传login.keychain文件,该文件获取方法,在终端中输入
cd ~/Library/Keychains
将login.keychain文件upload之后,会出现下图的界面,根据需要将证书添加进去即可,但是由于macOS10.12以及以后的系统里面没有login.keychain文件,只有login.keychain-db,可以复制出来删除-db,upload就好了。(上传keychain,路径用自己改名后的那个)

然后添加Provisioning Profiles,上传方法和上传login.keychain一样,去选择Provisioning Profiles文件,然后upload,然后结果如下图,蓝色框内的是固定格式的/Users/用户名/Library/MobileDevice/Provisioning Profiles

配置好之后保存即可

3.开始配置任务
创建一个任务,自由风格的任务

General
创建一个自由风格的任务,然后在选择丢弃旧的构建,至于天数和保持的最大个数,按照自己的需求来就好

源码管理
接下来是源码管理,在Repository URL里面添加你的git地址,我这里添加的是http的,如果你的项目是使用的ssh的,那么就将git开头的地址填写上,然后点击Add添加你的git帐号,如果你的事ssh的,将ssh的密匙填写上,具体的自己网络一下就好咯,我就不多写了,结果如图

构建触发器
接下来是构建触发器,也就是什么时候触发自动打包我这里填写的是H 20 * * 这个意思就是H小时然后,后面跟着数字,在后面就是日月年, 代表的我认为是每次都触发,也就是每天每月每年,但是Jenkins的时间不是绝对的,一般都是在随机在半点,也就是设置20点,大概会在20:30分左右会触发,如果需要两个时间,那么格式可以这样H 20,22 * * *结果如图

构建环境
在构建环境里面勾选Keychains and Code Signing Identities和Mobile Provisioning Profiles,Keychains and Code Signing Identities是打包需要的证书,Mobile Provisioning Profiles是打包需要的配置文件,都是可以自己选择的,我的如图

构建环境第一次Code Signing Identity和PP文件可能有些不一样。应用,保存一下就可以了。

添加脚本

执行cocoapod脚本必须要在第一个

执行打包并且上传到TestFlight脚本

关于exportOptionsPlist
请参考 exportOptionsPlist
把exportOptionsPlist添加到infoPlist同一层并push到git

关于

问题的解决。
证书不能使用自动管理,需要手动。

感谢

热点内容
linux怎么编译内核 发布:2025-02-12 16:03:02 浏览:188
新的怎么注册微信账号密码忘了怎么办 发布:2025-02-12 15:50:08 浏览:658
android代码搜索 发布:2025-02-12 15:45:36 浏览:778
矢量图算法 发布:2025-02-12 15:43:53 浏览:192
python量化投资入门 发布:2025-02-12 15:34:17 浏览:174
苹果的天气跟安卓的天气哪个准 发布:2025-02-12 15:33:37 浏览:313
西安分布式存储咨询 发布:2025-02-12 15:33:24 浏览:179
我的世界服务器怎么获得32k乱码棒 发布:2025-02-12 15:25:15 浏览:545
hadoopftp 发布:2025-02-12 15:22:23 浏览:753
ftp怎么增加 发布:2025-02-12 15:21:08 浏览:379