一种基于Jenkins实现iOS程序自动打包的方法与流程

未命名 08-27 阅读:213 评论:0
一种基于jenkins实现ios程序自动打包的方法
技术领域
1.本发明涉及软件开发测试技术领域,具体的,涉及一种基于jenkins实现ios程序自动打包的方法。


背景技术:

2.目前,app的开发过程中,打包测试也是非常重要的一环,但是频繁的机械式操作反而阻塞我们的开发测试效率,我们希望通过自动打包上传到测试环境减少一些不必要的简单操作,提高工作效率。


技术实现要素:

3.本发明的目的是针对以上问题提供一种基于jenkins实现ios程序自动打包的方法,提升开发人员开发效率。
4.为达到上述目的,本发明公开了一种基于jenkins实现ios程序自动打包的方法,该方法包括以下步骤:s1、配置钥匙串和描述文件;s2、构建打包脚本,配置标识和编译环境,依据工程文件路径找到要上传的工程文件,并配置导包方式及导包方式配置文件路径;s3、将app打包成xcarchive格式文件,然后,将xcarchive格式文件打包成ipa;s4、上传。
5.优选的,在步骤s1中,配置打包分支。
6.优选的,在步骤s2中,标识包括工程名、target名称、ipa前缀、info.plist路径、版本号、日期、存放ipa的文件夹名称,工程根目录#工程源码目录,要上传的ipa文件路径。
7.优选的,在步骤s2结束时,进入工程源码根目录并执行pod。
8.优选的,在步骤s3中,使用fastlane进行打包。
9.优选的,在步骤s3结束时,删除工程文件。
10.优选的,其特征在于,在步骤s4中,上传文件到蒲公英。
11.优选的,在步骤s4中,创建蒲公英上传结果日志文件夹及蒲公英上传结果日志。
12.综上所述,本发明的有益效果在于:基于jenkins自动运行脚本进行打包,大幅提升开发人员开发效率。
实施方式
13.下面结合实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
14.一种基于jenkins实现ios程序自动打包的方法,包括以下步骤:s1、配置钥匙串和描述文件。
15.在步骤s1中,配置打包分支。
16.使用 homebrew 软件包管理器安装jenkins。
17.自制安装程序 jenkins-lts 。安装命令:安装最新的lts版本:brew install jenkins-lts安装特定的lts版本:brew install jenkins-lts@your_version启动 jenkins 服务:brew services start jenkins-lts重新启动 jenkins 服务:brew services restart jenkins-lts更新 jenkins 版本:brew upgrade jenkins-lts。
18.安装ios相关插件。
19.ios打包需要钥匙串中访问证书、描述文件等,所以要安装钥匙串和描述文件插件。进入jenkins-》系统管理-》插件管理安装相关插件,可通过右上角过滤搜索。然后选择需要安装的插件,进行勾选,安装。安装成功后可以选择是否重启jenkins。
20.s2、构建打包脚本,配置标识和编译环境,依据工程文件路径找到要上传的工程文件,并配置导包方式及导包方式配置文件路径。
21.在步骤s2中,标识包括工程名、target名称、ipa前缀、info.plist路径、版本号、日期、存放ipa的文件夹名称,工程根目录#工程源码目录,要上传的ipa文件路径。
22.在步骤s2结束时,进入工程源码根目录并执行pod。
23.脚本内容#!/bin/shexport lang=en_us.utf-8# 1.设置配置标识,编译环境(根据需要自行填写 release |debug )configuration="release"# 工程名(根据项目自行填写)app_name="testdome"# target名称(根据项目自行填写)target_name="testdome"# ipa前缀(根据项目自行填写)ipa_name="测试"# info.plist路径#project_infoplist_path="./${target_name}/info.plist"# 取版本号#bundleshortversion=$(/usr/libexec/plistbuddy
ꢀ‑
c "print cfbundleshortversionstring" "${project_infoplist_path}")#bundleversion=$(/usr/libexec/plistbuddy
ꢀ‑
c "print cfbundleversion" "${project_infoplist_path}")# 日期date=$(date +%y%m%d-%h-%m-%s)# 工程文件路径archive_name="${app_name}_${date}.xcarchive"# 存放ipa的文件夹名称(根据自己的喜好自行修改)
ipaname="${app_name}_${date}_ipa"# 工程根目录#工程源码目录(这里的${workspace}是jenkins的内置变量表示(jenkins job的路径):/users/plz/.jenkins/workspace/testdome/)# ${workspace}/testdome/ 中的testdome根据你的项目自行修改code_path="${workspace}"# 要上传的ipa文件路径 ${username} 需要换成自己的用户名root_path="/users/${username}/desktop/jenkins"archive_path="${root_path}/archive/${archive_name}"ipa_path="${root_path}/export/${ipaname}"echo "archive_path: ${archive_path}"echo "ipa_path: ${ipa_path}"echo "ipa_path:\n${ipa_path}"》》export_history.txt# 导包方式(这里需要根据需要手动配置:adhoc/appstore/enterprise/development)export_method="adhoc"# 导包方式配置文件路径(这里需要手动创建对应的xxxexportoptionsplist.plist文件,并将文件复制到根目录下[我这里在源项目的根目录下又新建了exportplist文件夹专门放exportplist文件])ploads3、将app打包成xcarchive格式文件,然后,将xcarchive格式文件打包成ipa。
[0024]
在步骤s3中,使用fastlane进行打包。
[0025]
在步骤s3结束时,删除工程文件。
[0026]
fastlane是用ruby语言编写的一套自动化工具集和框架,每一个工具实际都对应一个ruby脚本,用来执行某一个特定的任务,而fastlane核心框架则允许使用者通过类似配置文件的形式,将不同的工具有机而灵活的结合在一起,从而形成一个个完整的自动化流程。
[0027]
使用fastlane自动打包上传的基本步骤如下:1、安装fastlane
ꢀ‑
》2、fastlane初始化
ꢀ‑
》3、配置证书和描述文件
ꢀ‑
》4、一键上传fastlane的安装有多种途径,其中之一就是使用sudo gem install fastlane命令安装,其他途径这里不再赘述,也是一行命令的事。
[0028]
可以用命令fastlane
ꢀ‑‑
version来查看是否安装成功在项目中初始化fastlane 使用命令fastlane init,根据提示一步步进行即可。
[0029]
初始化成功之后,在项目根目录下会多几个文件,appfile苹果账号信息、fastfile填写打包脚本的地方(重点、重点、重点)。
[0030]
若使用蒲公英上传,需安装蒲公英插件,在终端输入fastlane add_plugin pgyer命令,即可安装蒲公英的 fastlane 插件。
[0031]
fastlane打包脚本示例(使用ruby语言)fastlane打包脚本示例(使用ruby语言)default_platform(:ios)
#蒲公英api_key和user_keyapi_key = "your api_key"user_key = "your user_key"configuration = "release"#debug_production_serverplatform :ios do desc "打包并上传蒲公英" lane :pgybeta do #指定项目的scheme名称 scheme = "tuwanapp" #更新描述 update_desc = "更新描述" gym(
ꢀꢀꢀ
#输出的ipa名称
ꢀꢀ
output_name:"#{scheme}_#{time.new.strftime("%y%m%d%h%m")}",
ꢀꢀꢀ
# 是否清空以前的编译信息 true:是
ꢀꢀꢀ
clean:true,
ꢀꢀꢀ
scheme:scheme,
ꢀꢀꢀ
# 指定打包方式,release 或者 debug
ꢀꢀ
configuration:"#{configuration}",
ꢀꢀꢀ
# 指定打包所使用的输出方式,目前支持app-store, package, ad-hoc, enterprise, development
ꢀꢀ
export_method:"ad-hoc",
ꢀꢀꢀ
# 指定输出文件夹
ꢀꢀ
output_directory:"./build/pgy",
ꢀꢀꢀ
) pgyer(api_key: "#{api_key}", user_key: "#{user_key}", update_description: "#{update_desc}") endends4、上传。
[0032]
在步骤s4中,上传文件到蒲公英。
[0033]
在步骤s4中,创建蒲公英上传结果日志文件夹及蒲公英上传结果日志。
[0034]
jenkins + fastlane配置jenkins shell脚本#!/bin/bashexport lang=en_us.utf-8export language=en_us.utf-8export lc_all=en_us.utf-8set
ꢀ‑e#输出错误function echo_error() {
ꢀꢀꢀ
echo "\033[31m$1\033[0m"}#输出信息function echo_info() {
ꢀꢀꢀ
echo "\033[32m$1\033[0m"}#打包function packaging() {
ꢀꢀꢀ
echo_info "====================开始===================="
ꢀꢀꢀ
#参数校验 $# 添加到shell的参数个数
ꢀꢀꢀ
if [ $# != "1" ] || ([ $1 != "debug" ]&&[ $1 != "release" ]&&[ $1 != "appstore" ]); then
ꢀꢀꢀꢀꢀꢀ
echo_error '请指定打包类型:debug, release, appstore'
ꢀꢀꢀꢀꢀꢀ
exit 1
ꢀꢀꢀ
fi
ꢀꢀꢀ
#参数配置
ꢀꢀ
fastlane_output_path="./build/pgy"
ꢀꢀꢀ
#你的蒲公英账号 api key
ꢀꢀ
pgy_api_key="your api_key"
ꢀꢀꢀ
#定义一些符变量
ꢀꢀꢀ
export v_env=$1
ꢀꢀꢀ
export v_project_name="tuwanmusic"
ꢀꢀꢀ
export v_build_number="${build_number}"
ꢀꢀꢀ
export v_git_branch="${git_branch}"
ꢀꢀꢀ
export v_commit_node="$(git log
ꢀ‑
n 1
ꢀ‑‑
pretty=format:"%h")"
ꢀꢀꢀ
export v_download_url="https://www.pgyer.com/8hat"
ꢀꢀꢀ
export v_qrcode_url="https://www.pgyer.com/8hat"
ꢀꢀꢀ
export v_last_10_logs="$(git log
ꢀ‑
n 10
ꢀ‑‑
pretty=format:"%h %ci %cn%n%s%n")"
ꢀꢀꢀ
echo_info "====================安装pod依赖===================="
ꢀꢀꢀ
#安装pod依赖
ꢀꢀꢀ
#rm
ꢀ‑
rf './pods/local podspecs'
ꢀꢀꢀ
#pod update
ꢀꢀꢀ
pod install
ꢀꢀꢀ
#删除构建输出
ꢀꢀꢀ
rm
ꢀ‑
rf "${fastlane_output_path}"
ꢀꢀꢀ
#一个项目里面多个target设置
ꢀꢀ
target="tuwanmusic"
ꢀꢀꢀ
if [ $1 == "debug" ]; then
ꢀꢀꢀꢀꢀꢀ
target="tuwanmusic"
ꢀꢀꢀ
fi
ꢀꢀꢀ
#版本号
ꢀꢀꢀ
export v_app_version=$(echo "$(fastlane run get_version_number xcodeproj:oneaset.xcodeproj target:${target}))" | tr
ꢀ‑
d '\n' | sed
ꢀ‑
e 's/.*result: ([0-9\.]*).*/\1/g')
ꢀꢀꢀ
#构建
ꢀꢀꢀ
echo_info "====================构建===================="
ꢀꢀ
ipa_name="tuwanmusic"
ꢀꢀꢀ
#fastlane打包
ꢀꢀꢀ
fastlane ${v_env}
ꢀꢀꢀ
#上传二进制包到蒲公英
ꢀꢀꢀ
if [ $1 != "appstore" ]; then
ꢀꢀꢀꢀꢀꢀꢀ
echo_info "====================上传二进制包到蒲公英===================="
ꢀꢀꢀꢀꢀꢀꢀ
resp=$(curl
ꢀ‑
f "file=@${fastlane_output_path}/${ipa_name}.ipa"
ꢀ‑
f "_api_key=${pgy_api_key}"
ꢀ‑
f "buildinstalltype=1" https://www.pgyer.com/apiv2/app/upload)
ꢀꢀꢀꢀꢀꢀꢀ
echo "pgy_resp=${resp}"
ꢀꢀꢀꢀꢀꢀꢀ
#解析数据,生成下载地址
ꢀꢀꢀꢀꢀꢀ
build_key=$(echo "$resp" | tr "\n" " " | sed
ꢀ‑
e 's/.*"buildkey" *: *"([^"]*)".*/\1/g')
ꢀꢀꢀꢀꢀꢀ
v_qrcode_url=$(echo "$resp" | tr "\n" " " | sed
ꢀ‑
e 's/.*"buildqrcodeurl" *: *"([^"]*)".*/\1/g' | sed
ꢀ‑
e 's/\////g')
ꢀꢀꢀꢀꢀꢀ
v_download_url="https://www.pgyer.com/apiv2/app/install?_api_key=${pgy_api_key}&buildkey=${build_key}"
ꢀꢀꢀꢀꢀꢀ
v_download_url="https://www.pgyer.com/${build_key}"
ꢀꢀꢀꢀꢀꢀꢀ
echo_info "二维码地址:${v_qrcode_url}"
ꢀꢀꢀꢀꢀꢀ
echo_info "app下载地址:${v_download_url}"
ꢀꢀꢀ
fi}export fastlane_xcodebuild_settings_timeout=120#执行打包packaging ${buildtype}基于jenkins自动运行脚本进行打包,大幅提升开发人员开发效率。
[0035]
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和替换,这些改进和替换
也应视为本发明的保护范围。

技术特征:
1.一种基于jenkins实现ios程序自动打包的方法,其特征在于,包括以下步骤:s1、配置钥匙串和描述文件;s2、构建打包脚本,配置标识和编译环境,依据工程文件路径找到要上传的工程文件,并配置导包方式及导包方式配置文件路径;s3、将app打包成xcarchive格式文件,然后,将xcarchive格式文件打包成ipa;s4、上传。2.如权利要求1所述的基于jenkins实现ios程序自动打包的方法,其特征在于,在步骤s1中,配置打包分支。3.如权利要求1所述的基于jenkins实现ios程序自动打包的方法,其特征在于,在步骤s2中,标识包括工程名、target名称、ipa前缀、info.plist路径、版本号、日期、存放ipa的文件夹名称,工程根目录#工程源码目录,要上传的ipa文件路径。4.如权利要求3所述的基于jenkins实现ios程序自动打包的方法,其特征在于,在步骤s2结束时,进入工程源码根目录并执行pod。5.如权利要求1所述的基于jenkins实现ios程序自动打包的方法,其特征在于,在步骤s3中,使用fastlane进行打包。6.如权利要求1所述的基于jenkins实现ios程序自动打包的方法,其特征在于,在步骤s3结束时,删除工程文件。7.如权利要求1到6中任一项所述的基于jenkins实现ios程序自动打包的方法,其特征在于,在步骤s4中,上传文件到蒲公英。8.如权利要求7所述的基于jenkins实现ios程序自动打包的方法,其特征在于,在步骤s4中,创建蒲公英上传结果日志文件夹及蒲公英上传结果日志。

技术总结
本发明公开了一种基于Jenkins实现iOS程序自动打包的方法,该方法包括以下步骤:S1、配置钥匙串和描述文件;S2、构建打包脚本,配置标识和编译环境,依据工程文件路径找到要上传的工程文件,并配置导包方式及导包方式配置文件路径;S3、将app打包成xcarchive格式文件,然后,将xcarchive格式文件打包成ipa;S4、上传。基于Jenkins自动运行脚本进行打包,大幅提升开发人员开发效率。开发人员开发效率。


技术研发人员:杨崇健 王宾 蒙小行 陈会君 王洋 刘虹
受保护的技术使用者:雷沃重工集团有限公司
技术研发日:2022.12.16
技术公布日:2023/8/24
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐