Jenkins十:Mac通过 Tomcat里安装Jenkins配置Master-Slave打包iOS并上传到svn服务器

前一篇:Jenkins九:Jenkins打包时同时生成企业ipa服务器下载plist
后一篇:Jenkins十一:一份代码多个APP的多Target和单Target比较

参考如下:

资源下载列表
jenkins下载页面
jenkins War包下载页面
http://mirrors.jenkins-ci.org/

1、将jenkins.war放入到安装的tomcat的webapps路径里
2、访问:http://localhost:8080/jenkins进行jenkins的配置

3、jenkins安装好后开始配置Master-Slave节点
依次点击:
Manage Jenkins -> Manage Nodes

tmp1c1a695c.png

参考:

然后点击左侧的新建节点

tmp22aa7b16.png

配置如下
tmp364dcba0.png

Tips:
jenkins安装几个插件会比较好用:
Node and Label parameter
git parameter

遇到问题xcode-select: error: tool 'xcodebuild' requires Xcode
解决办法:xcode-select: error: tool 'xcodebuild' requires Xcode

xcrun: error: unable to find utility "PackageApplication", not a developer tool or in PATH
解决方案:xcrun: error: unable to find utility "PackageApplication", not a developer tool or in PATH

完整脚本:

#xxx表示需要更加自己项目进行配置
# 工程名
APP_NAME="xxxx"

#***************动态配置部分*********************
#平台名称及SVN文件夹名称#Target名称#发布证书所有者
platform_scheme_sign_Array=(${platform_scheme_sign//\#/ })
# 平台及SVN文件夹名称
svnName=${platform_scheme_sign_Array[0]}
#target/scheme名称
#SCHEMECA=${platform_scheme_sign_Array[1]}
SCHEMECA="OneNumberDev"
#code sign
#signName=${platform_scheme_sign##*#}
signName="iPhone Distribution: xxxx"
profile="xxxx"
#打包日期(年月日)
DATEOFDAY="$(date +%Y%m%d)"
#打包的时间(年月日-时分秒)
DATE="$(date +%Y%m%d-%H%M%S)"
Node_User="xxxx"
Node_Pwd="xxxx"

#*************************************
#下面2行是集成有Cocopods的用法
security unlock-keychain -p ${Node_Pwd} /Users/${Node_User}/Library/Keychains/login.keychain
echo "=================clean================="
xcodebuild -workspace "./${APP_NAME}.xcworkspace" -scheme ${SCHEMECA}  -configuration 'Release' clean

echo "+++++++++++++++++archive+++++++++++++++++"
#生成的archive的位置
ArchivePath="./${SCHEMECA}_${DATE}.xcarchive"
xcodebuild archive \
-workspace "./${APP_NAME}.xcworkspace" \
-scheme ${SCHEMECA} \
-configuration Release \
-archivePath ${ArchivePath}

APPPath="${ArchivePath}/Products/Applications/${SCHEMECA}.app"
IPAFolderPath="${WORKSPACE}/${SCHEMECA}_${DATE}"
IPAPath="${WORKSPACE}/${SCHEMECA}_${DATE}.ipa"

echo "+++++++++++++++++create plist+++++++++++++++++"
myOptionsPlist="/Users/xxxx/jenkins_workspace/ExportOptions.plist"
#这里创建和修改ExportOptions

echo "+++++++++++++++++export ipa+++++++++++++++++"
#生成xxx.ipa
xcodebuild -exportArchive \
-archivePath "${ArchivePath}" \
-exportPath "${IPAFolderPath}" \
-exportOptionsPlist ${myOptionsPlist}

##读取打包后的内容的Info
InfoPath="${APPPath}/Info.plist"
#取build值
bundleVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" "${InfoPath}")
#取APP名称

#打包代码的分支
tagOrBranchName=${GIT_BRANCH_TAG/origin\//""}
#生成的唯一名称
UNIQUE_NAME="${APP_NAME}_${SCHEMECA}_V${bundleVersion}_${tagOrBranchName}_${DATE}"
IPANAME="${UNIQUE_NAME}.ipa"
ParentSVNPath="./svn_${DATE}"
svnPath="${ParentSVNPath}/${svnName}/${DATEOFDAY}"
#如果没有文件夹,则创建文件夹
if [ ! -d ${svnPath}  ];then
  mkdir -p ${svnPath}
fi
mv "${IPAFolderPath}/${SCHEMECA}.ipa" "${svnPath}/${IPANAME}"
#生成dSYM
dsymutil ${APPPath}/${SCHEMECA} -o "${svnPath}/${UNIQUE_NAME}.app.dSYM"
#删除生成的文件
rm -rf ${ArchivePath}
rm -rf ${IPAFolderPath}

echo "+++++++++++++++++svn+++++++++++++++++"
export LC_ALL=en_US.UTF-8 
export LANG=en_US.UTF-8 
export LANGUAGE=en_US.UTF-8 
svn import "${ParentSVNPath}/${svnName}/${DATEOFDAY}/${IPANAME}" \
"https://xxxx/xxx/xxx/${svnName}/${DATEOFDAY}/${IPANAME}" \
--username 'xxxx' \
--password 'xxxx' \
-m "测试添加文件"

svn import "${ParentSVNPath}/${svnName}/${DATEOFDAY}/${UNIQUE_NAME}.app.dSYM" \
"https://xxx.xxx.xx.xx/xxx/xxxx/${svnName}/${DATEOFDAY}/${UNIQUE_NAME}.app.dSYM" \
--username 'xxx' \
--password 'xxxx' \
-m "测试添加文件"

rm -rf ${ParentSVNPath}

SVN命令行上传单个文件到服务器
参考:

上传命令:
#防止报编码的错误
export LC_ALL=en_US.UTF-8 
export LANG=en_US.UTF-8 
export LANGUAGE=en_US.UTF-8 
svn import 本地文件或目录 远程服务端目录 --username '用户名' --password '密码' -m '添加描述(可为空)'   

例子:将本地的test.txt文件上传到svn服务器上,一定要精确到文件上,不要上传空文件夹
svn import ./test.txt https://192.168.x.xxx:xxx/xx/xxx/test.txt -m "测试添加文件"

下载命令:
svn export 远程服务端文件或目录 本地路径(可为空,则下载到当前位置) --username '用户名'
xcodebuild -archivePath "/Users/USERNAME/.jenkins/workspace/APPNAME/build/Debug-iphoneos/APPNAME.xcarchive" -project /Users/USERNAME/.jenkins/workspace/PROJECT NAME/APPNAME.xcodeproj -sdk iphoneos -scheme "SCHEMENAME" -configuration "Debug" archive

[Jenkins + Xcode9 打包报错: requires a provisioning profile with the Push Notifications feature.](https://www.jianshu.com/p/7d6ef618f5f4)

xcodebuild -exportArchive -archivePath "/Users/USERNAME/.jenkins/workspace/APPNAME/build/Debug-iphoneos/APPNAME.xcarchive" -exportPath "/Users/USERNAME/.jenkins/workspace/APPNAME/build/APPNAME_debug" -exportOptionsPlist '/Users/USERNAME/.jenkins/workspace/APPNAME/build/ExportOptions.plist' -allowProvisioningUpdates

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

推荐阅读更多精彩内容