CI/CD流程解析:构建无缝集成与持续交付的应用开发管道

2024软件测试面试刷题,这个小程序(永久刷题),靠它快速找到工作了!(刷题APP的天花板)_软件测试刷题小程序-CSDN博客文章浏览阅读3.4k次,点赞86次,收藏15次。你知不知道有这么一个软件测试面试的刷题小程序。里面包含了面试常问的软件测试基础题,web自动化测试、app自动化测试、接口测试、性能测试、自动化测试、安全测试及一些常问到的人力资源题目。最主要的是他还收集了像阿里、华为这样的大厂面试真题,还有互动交流板块……_软件测试刷题小程序​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502icon-default.png?t=N7T8https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502

你是否曾经厌烦过手动构建移动端应用程序的繁琐过程?每次修改代码后都要重新编译、打包、签名,再上传至应用商店,这一系列操作不仅费时费力,还容易出错。

如果你也有这样的困扰,那么恭喜你,今天我们将介绍一种解决方案:使用Jenkins自动构建移动端App。

实现案例

一个基于Jenkins 进行开发的自动构建系统,使用专门的机器负责所有App的构建任务,目的是解决简化打包流程。

目前公司项目已接入。系统根据不同项目主要分为两种类型的任务:

  • 一种是 iOS/Android 内测分发的构建任务;

  • 另一种则是iOS构建好后直接上传到 TestFlight/AppStore 的构建任务。

整体流程:

iOS内测分发构建任务流程:

选择想要构建的任务 -> 选择需要构建的分支 -> 点击开始构建 -> 系统自动拉取项目代码 -> 自动下载相关依赖项目后进行整体项目的集成 -> 编译构建打包 -> 将生成的ipa包上传到OSS服务器存档 -> 上传到蒲公英平台 -> 根据生成的ipa包相关基本信息、下载安装地址与途径以钉钉形式发送。

AppStore上传构建任务流程:

选择想要构建的任务 -> 选择需要构建的分支 -> 点击开始构建 -> 系统自动拉取项目代码 -> 自动下载相关依赖项目后进行整体项目的集成 -> 编译构建打包 -> 将生成的ipa包上传到OSS服务器存档 ->上传到TestFlight/AppStore -> 上传到蒲公英平台 -> 根据生成的ipa包相关基本信息、下载安装地址与途径以钉钉形式发送。

Android内测分发构建任务流程:

选择想要构建的任务 -> 选择需要构建的分支 -> 点击开始构建 -> 系统自动拉取项目代码 -> 自动下载相关依赖项目后进行整体项目的集成 -> 编译构建打包 -> 将生成的apk包加渠道 -> 上传阿里云进行加固 -> 加固包重新签名 -> 上传到OSS服务器存档 -> 上传到蒲公英平台 -> 根据生成的apk包相关基本信息、下载安装地址与途径以钉钉形式发送。

实现步骤

安装jenkins

先安装JDK,然后下载最新的war包,打开终端,进入到war包所在目录,执行命令:

java -jar jenkins.war --httpPort=8080

http://localhost:8080
  • Git插件

  • Git 参数化构建插件(Git Parameter)

  • Gradle 插件 (Gradle plugin) - Android 专用

  • Xcode 插件 (Xcode integration) - iOS 专用

  • Jenkins 输出日志文字颜色插件(AnsiColor)

iOS Job自动构建设置

编译打包之前干了什么?

修改版本号以及build号

PlistBuddy 是 Mac 系统中一个用于命令行下读写 plist 文件的工具。可以用来读取或修改 plist 文件的内容/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString 

APPVERSION""APP_VERSION" "APPVERSION""{project_infoplist_path}"

bundleShortVersion=(/usr/libexec/PlistBuddy−c"printCFBundleShortVersionString""(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" "(/usr/libexec/PlistBuddy−c"printCFBundleShortVersionString""{project_infoplist_path}")

build号(一个版本对应一个json文件,内容为

{"BuildNumber": 99, "BuildVersion": "2.0.0"} 每次编译打包前递增build号,然后修改
Info.plist的build号
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $BuildNumber" "${project_infoplist_path}"

bundleVersion=(/usr/libexec/PlistBuddy−c"printCFBundleVersion""(/usr/libexec/PlistBuddy -c "print CFBundleVersion" "(/usr/libexec/PlistBuddy−c"printCFBundleVersion""{project_infoplist_path}")

编译打包

  • 清理:xcodebuild -workspace "WORKSPACE"−scheme"{WORK_SPACE}" -scheme "WORKSPACE"−scheme"{TARGET_NAME}" -configuration 'Release' clean

  • 编译:xcodebuild archive -workspace "WORKSPACE"−sdkiphoneos−scheme"{WORK_SPACE}" -sdk iphoneos -scheme "WORKSPACE"−sdkiphoneos−scheme"{TARGET_NAME}" -archivePath "./build/${XCARCHIVE}" -configuration 'Release' -arch "arm64"(-archivePath:设置项目的归档路径)

  • 导出ipa:xcodebuild -exportArchive -archivePath "./build/XCARCHIVE"−exportPath"./build/{XCARCHIVE}" -exportPath "./build/XCARCHIVE"−exportPath"./build/{IPAPATH}" -target "TARGETNAME"−exportOptionsPlist"{TARGET_NAME}" -exportOptionsPlist "TARGETNAME"−exportOptionsPlist"{EXPORTOPTIONSPLIST}" -allowProvisioningUpdates-exportArchive:导出ipa

-exportPath:导出ipa文件的路径

-exportOptionsPlist:文件导出时的配置信息

-allowProvisioningUpdates:允许xcodebuild与苹果网站通讯,进行自动签名,证书自动更新,生成

上传appstoreXcode 11 之后已不再提供 Application Loader,改用 xcrun altool 上传 ipaaltool 可以 --validate-app 验证和 --upload-app 上传

验证:
/usr/bin/xcrun altool --validate-app -f ${IPANAME} -t ios --apiKey C7RL3QD397 --apiIssuer 69a6de97-9460-47e3-e053-5b8c7c11a4d1 --verbose
apiKey 和 apiIssuer 需要登录开发者网站,打开 用户和访问->密钥->然后新增密钥
成功会提示:No errors validating archive at ... 

上传:

/usr/bin/xcrun altool --upload-app -f ${IPANAME} -t ios --apiKey C7RL3QD397 --apiIssuer 69a6de97-9460-47e3-e053-5b8c7c11a4d1 --verbose

如下图所示,表示上传成功

图片

小提示:

每次 TestFlight 发布测试都会询问你的 app 有没有使用加密技术,勾选完后才能测试。这时可以在 Info.plist 添加 ITSAppUsesNonExemptEncryption 为 false 就可以了。

ITSAppUsesNonExemptEncryption 下次打包上传,接收到 App Store Connect 邮件 has completed processing 就能自动发布测试了。

上传oss

发送钉钉

将截图所示数据拼接之后发送钉钉

Android Job自动构建设置

渠道包

解压之后,META-INF文件夹下写入文件kpl_channel_{channel}(我们目前是这样做的)

签名

官网介绍:

zipalign 是一种归档对齐工具,可对 Android 应用 (APK) 文件提供重要的优化。

其目的是要确保所有未压缩数据的开头均相对于文件开头部分执行特定的对齐。

具体来说,它会使 APK 中的所有未压缩数据(例如图片或原始文件)在 4 字节边界上对齐。这样做的好处是可以减少运行应用时消耗的 RAM 容量。

按着有利于系统处理的排列方式,对我们apk中的资源文件进行排列,提高资源的查找速度,从而去提高应用的运行效率。

zipalign 4 {old_apk_path} {new_apk_path} 对齐
zipalign -c -v 4 {new_apk_path} 检测是否对齐成功
apksigner sign --ks {jks_path} --ks-key-alias {ks_key_alias} --ks-pass pass:{ks_pass} --key-pass pass:{key_pass} --v1-signing-enabled true --v2-signing-enabled true {new_apk_path} 签名
--ks //签名证书路径--ks-key-alias //生成jks时指定的alias--ks-pass //密码--key-pass //签署者的密码,即生成jks时指定alias对应的密码

最后

这篇文章主要介绍了自动构建的整体思路,以及Jenkins设置。

分开APP主要通过蒲公英,但实际使用中,上传蒲公英可能比较耗时,其实可以去除上传蒲公英,只上传OSS然后通过OSS下载链接生成二维码,这样能减少上传耗时步骤。

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群: 759968159,里面有各种测试开发资料和技术可以一起交流哦。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

​​​软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

  • 12
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值