Jenkins九:Jenkins打包时同时生成企业ipa服务器下载plist

前一篇:Jenkins八:Jenkins添加新的target自动打包
后一篇:Jenkins十:Mac通过 Tomcat里安装Jenkins配置Master-Slave打包iOS并上传到svn服务器

前言

之前已经在jenkins自动打包时部署了一个nginx作为企业版ipa服务器,当时使用的人不多,就删掉了,现在项目经理让重新做一次,记录下流程

参考资料:

1、部署nginx服务器

2、部署nginx服务器ssh,支持https访问
3、部署ipa下载说明的plist的服务器,这个可以和2是同一个服务器,单要保证支持https的证书是正式机构签名的ssl证书,不能是自签名的证书,如果没有机构前面的证书,可以把使用GitHub等公共仓库代替,把plist存到GitHub上

4 生成ipa包、ipa下载plist、dYSM

打ipa包

# schema名称,需要替换成自己要打包的scheme
SCHEMECA="xxxxx"
#下面2行是集成有Cocopods的用法
echo "=================clean================="
xcodebuild -workspace "./xxx/xxxx.xcworkspace" -scheme ${SCHEMECA}  -configuration "Release" clean


#生成xxx.app的包
echo "+++++++++++++++++build+++++++++++++++++"
xcodebuild -workspace "./xxx/xxx.xcworkspace" -scheme ${SCHEMECA} -sdk iphoneos -configuration "Release" CODE_SIGN_IDENTITY="xxxx" SYMROOT='$(PWD)' -allowProvisioningUpdates

#读取打包的配置信息
#读取bundleId
bundleId=$(/usr/libexec/PlistBuddy -c "print CFBundleIdentifier" "${WORKSPACE}/Release-iphoneos/${SCHEMECA}.app/Info.plist")
#读取build版本号
bundleShortVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" "${WORKSPACE}/Release-iphoneos/${SCHEMECA}.app/Info.plist")
#读取展示版本号
bundleVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleVersion" "${WORKSPACE}/Release-iphoneos/${SCHEMECA}.app/Info.plist")
#读取APP的名称
displayNmae=$(/usr/libexec/PlistBuddy -c "print CFBundleName" "${WORKSPACE}/Release-iphoneos/${SCHEMECA}.app/Info.plist")
#拷贝APPIcon到指定的地方
cp "${WORKSPACE}/Release-iphoneos/${SCHEMECA}.app/AppIcon60x60@3x.png" "/xxx/${SCHEMECA}_AppIcon60x60@3x.png"


#将xxx.app的包转换成xxx.ipa的包
xcrun -sdk iphoneos PackageApplication "./Release-iphoneos/${SCHEMECA}.app" -o "xxx.ipa"
#将xxx.ipa上传到其他服务器或文件夹
#删除xxx.ipa

#生成用于不同shell脚本间公用的参数
#先删除之前用过的参数文件
if [ -f "${WORKSPACE}/userParams.txt" ];then
rm "${WORKSPACE}/userParams.txt"
else
echo "文件不存在"
fi
#将参数写入到参数文件里
echo bundleID="${bundleId}" >> "${WORKSPACE}/userParams.txt"
echo bundleShortVersion="${bundleShortVersion}" >> "${WORKSPACE}/userParams.txt"
echo bundleVersion="${bundleVersion}" >> "${WORKSPACE}/userParams.txt"
echo displayNmae="${displayNmae}" >> "${WORKSPACE}/userParams.txt"
echo SCHEMECA="${SCHEMECA}" >> "${WORKSPACE}/userParams.txt"

生成plist

#读取shell之间的共享参数
source "${WORKSPACE}/userParams.txt"
cat << EOF > xxx.plist
<?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的地址,比如:https://127.0.0.1/ipas/12345.ipa</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>${bundleID}</string>
<key>bundle-version</key>
<string>${bundleShortVersion}</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>${displayNmae}</string>
</dict>
</dict>
</array>
</dict>
</plist>
EOF

#压缩文件
zip -q -r -m -o "xxx.plist.zip" "xxxx.plist"
#将plist文件上传到指定服务器
curl -k "https://api.bugly.qq.com/openapi/file/upload/symbol?
\ app_key=xxxxxx&app_id=xxxxxx" 
\ --form "api_version=1" 
\ --form "app_id=xxxxxx" 
\ --form "app_key=xxxxxx" 
\ --form "symbolType=2"  
\ --form "bundleId=${bundleId}" 
\ --form "productVersion=${bundleShortVersion}" 
\ --form "channel=xxx" 
\ --form "fileName=${UNIQUE_NAME}.app.dSYM.zip" 
\ --form "file=@${UNIQUE_NAME}.app.dSYM.zip" 
\ --verbose

#删除生成的文件
rm "xxxx.plist"
rm "xxx.plist.zip"

生成手机可访问点击自动安装的html

source "${WORKSPACE}/userParams.txt"
if [ -f "/xxx/xxx/index.html" ];then
rm "/xxx/xxx/index.html"
else
echo "文件不存在"
fi
cat << EOF > /xxx/xxx/index.html
<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="description" content="">
    <meta name="keywords" content="">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>${displayNmae}</title>
</head>
<body>
    <a href="itms-services://?action=download-manifest&url=https://xxxx.plist">下载${displayNmae}ios测试版</a>
</body>
</html>
EOF

生成dSYM文件

#读取shell之间的共享参数
source "${WORKSPACE}/userParams.txt"
#生成dsYM文件
dsymutil "${WORKSPACE}/Release-iphoneos/${SCHEMECA}.app/${SCHEMECA}" -o "xxxx.app.dSYM"
if [ ! -d "xxx.app.dSYM"  ];then
  echo "没有可以压缩的dsYM文件"
else
  zip -q -r -m -o "xxxx.app.dSYM.zip" "xxx.app.dSYM"
  #上传dsYM文件到解析平台或保存到指定文件夹
fi

使用git或svn提交创建的包

#git提交
#cd "/xxx/xxxx"
#git pull
#git add xxx
#git commit -m "自动提交plist"
#git push

#svn提交
#export LC_ALL=en_US.UTF-8
#export LANG=en_US.UTF-8
#cd /xxx/xxxx
#svn up
#svn add . --no-ignore --force
#svn ci -m "jenkins ios auto commit"
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容