jenkins扫码安装iOS ipa包实现关键技术点

问题背景

在完成iOS APP持续集成打包的需求后,一直想实现APP扫码安装,方便开发和测试调试APP。但因为没有研发人员的配合,只能拖到新来的研发同事进场,我们一起克服各种问题实现了这个功能。

不想使用第三方的分发测试平台,总是有些担心安全的问题,但不可否认,使用第三方就是最简便快捷的。不过个人还是喜欢将一切尽可能控制在自己手里了。

总体说明

整个过程分为几个关键点:

  1. 二维码生成
  2. 下载二维码格式
  3. plist文件
  4. https服务器
  5. plist的URL
  6. 二维码显示插件
  7. 阻碍二维码显示的jenkins安全配置

二维码生成

参考:python之qrcode模块生成二维码
直接给脚本:

import qrcode
import argparse

parser = argparse.ArgumentParser(description='manual to this script')
parser.add_argument('--urlPath', type=str, default = None)
parser.add_argument('--imagePath', type=str, default = None)
args = parser.parse_args()


urlData = args.urlPath
img_path = args.imagePath

# 实例化QRCode生成qr对象
qr = qrcode.QRCode(
    version=1,    error_correction=qrcode.constants.ERROR_CORRECT_H,
    box_size=10,
    border=4
)
# 传入数据
qr.add_data(urlData)
qr.make(fit=True)
# 生成二维码
img = qr.make_image()
# 保存二维码
img.save(img_path)

下载二维码格式

itms-services://?action=download-manifest&url=<plist的URL>

这个就是上面脚本的第一个输入参数urlPath的值;

plist模板

如下模板,修改5个参数即可。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>items</key>
        <array>
            <dict>
                <key>assets</key>
                <array>
                    <dict>
                        <key>kind</key>
                        <string>software-package</string>
                        <key>url</key>
                        <string>ipa安装包的URL</string>
                    </dict>
                    <dict>
                        <key>kind</key>
                        <string>full-size-image</string>
                        <key>needs-shine</key>
                        <true/>
                        <key>url</key>
                       <string>安装包icon URL</string>
                    </dict>
                </array>
                <key>metadata</key>
                <dict>
                    <key>bundle-identifier</key>
                    <string>APP标识,根据打包参数修改</string>
                    <key>bundle-version</key>
                    <string>APP版本,根据打包参数修改</string>
                    <key>kind</key>
                    <string>software</string>
                    <key>title</key>
                    <string>APP名称,根据打包参数修改</string>
                </dict>
            </dict>
        </array>
    </dict>
</plist>

https服务器

上述plist必须放到一个https服务器上,否则无法下载安装;
尝试了github,gitee,发现gitee可用,plist就放到gitee上了,以后自建https服务器,放在内网环境中。

我们实现中是将ipa包放在本地http服务器上了,只将plist配置文件和APP icon文件放到gitee服务器上。

plist的URL

就是第二步下载二维码中的URL地址,这里一定要填写plist的raw URL,就是打开该URL,能够直接看到文件内容的。

这个坑,失败了很多次才趟过去。

二维码显示插件

使用build discription插件吧,这个跟当前的jenkins兼容。

后来尝试另一个插件,直接把jenkins 搞惨了。参见之前的文章。

<img src='二维码图片的URL' height='120' width='120'/>

参数根据实际修改吧
二维码图片的URL地址跟第一个脚本的第二个参数有个对应关系,这里是URL,第一个脚本中是文件的路径,两者存在映射关系。

阻碍二维码显示的jenkins安全配置

有了上面的配置,job中还是不能显示URL,因为jenkins安全配置问题。

修改jenkins的配置后,才能显示:
系统管理–》全局安全配置–》标记格式器,将纯文本改为Safe HTML,保存设置。

总结

前前后后跟开发联调了接近一周,失败了上百次,才搞清楚全部细节。记录一下吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Jenkins集成IOS全自动打可以使用Jenkins Pipeline来实现。下面是一些基本步骤: 1. 安装JenkinsiOS插件:确保您的Jenkins服务器已经安装并配置好Jenkins,并且已经安装了相关的iOS插件。 2. 创建Pipeline:在Jenkins中创建一个新的Pipeline,用于自动化IOS过程。 3. 配置环境:在Pipeline中配置所需的构建环境,iOS开发环境、模拟器等。 4. 编写脚本:使用Jenkins Pipeline的Groovy语言编写脚本,实现IOS自动打的过程。可以使用Xcode命令行工具来执行打操作,例如使用`xcodebuild`命令。 以下是一个简单的示例脚本,用于自动化IOS过程: ```groovy stage('Build') { steps { sh 'xcodebuild -project YourProject.xcodeproj -scheme YourScheme -configuration Release clean build' } } stage('Archive') { steps { archiveFile(file: 'YourApp.ipa', pattern: '**/*.ipa') { sh 'xcodebuild -exportArchive -archivePath build/Release-iphoneos/YourScheme.ipa -exportOptionsPlist export.plist -allowProvisioningUpdates' } } } ``` 这个脚本会在构建阶段使用`xcodebuild`命令清理并构建项目,并在归档阶段使用`xcodebuild`命令导出ipa文件。您可以根据需要修改脚本中的命令和参数,以适应您的项目配置。 5. 触发Pipeline:在Jenkins中配置相应的触发器,例如触发器时添加iOS项目目录作为输入源,然后在Jenkins Pipeline中自动执行打操作。 以上是一些基本步骤,您可以根据您的实际需求进行调整和扩展。请注意,自动打过程可能需要一些额外的配置和步骤,具体取决于您的项目和开发环境。另外,为了确保自动打过程的可靠性,您可能需要测试和验证脚本,以确保它在不同的环境中都能够正常运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值