iOS-Jenkins-TestFlight自动打包流程

一、准备一台mac电脑
二、安装jenkins
打开终端运行:
brew install Jenkins
如果没有安装brew,请前往brew根据提示安装。
至少需要安装java1.8 ,如果没有安装会有提示,java
java安装完毕,链接 launchd 配置文件

ln -sfv/usr/local/opt/jenkins/*.plist ~/Library/LaunchAgents
launchctl load~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist  

启动jenkins
jenkins
打开Safari输入:http://localhost:8080/
就能看到jenkins已经运行起来了,如果你更换了端口就是你后来设置的端口。

接下来打开Jenkins后会让去一个填写password的页面如下图,存储password的地方就是图片上那行红色字体目录下,使用终端 cat + 红色字体路径就看到了


3499748-3744bb8265501e3d.png

然后将我们得到的password输入到“Administrator password“中,即可进入如下界面,接着安装一些建议的插件(左边的),请等待,并全部安装成功在进行下一步。


3499748-c330d4e3801bc125.png
3499748-92680cf279d6f69c.png

安装完成之后,输入账户密码,登陆。开始jenkins

二、cocoapod环境安装
项目中一般会使用cocoapod管理第三方库。这个时候如果使用jenkins自动打包,就需要安装好cocoapod环境

三、jenkins使用
1、安装插件
Keychains and Provisioning Profiles Management
Xcode integration
在系统管理-> 插件管理中搜索插件

3499748-6bda0d917eb1d719.png

配置Keychains and Provisioning Profiles Management


3499748-7be0865bd31c03e7.png

请先配置好p12和Provisioning Profiles文件
需要上传login.keychain文件,该文件获取方法,在终端中输入
cd ~/Library/Keychains
将login.keychain文件upload之后,会出现下图的界面,根据需要将证书添加进去即可,但是由于macOS10.12以及以后的系统里面没有login.keychain文件,只有login.keychain-db,可以复制出来删除-db,upload就好了。(上传keychain,路径用自己改名后的那个)

3499748-13e8ae3bc326ce0e.png

Code Signing Identity 需要自己去钥匙串找到对应证书的名字。

然后添加Provisioning Profiles,上传方法和上传login.keychain一样,去选择Provisioning Profiles文件,然后upload,然后结果如下图,蓝色框内的是固定格式的/Users/用户名/Library/MobileDevice/Provisioning Profiles


3499748-c748ac2b114c670e.png

配置好之后保存即可

3.开始配置任务
创建一个任务,自由风格的任务

General
创建一个自由风格的任务,然后在选择丢弃旧的构建,至于天数和保持的最大个数,按照自己的需求来就好


3499748-3ce2cf68feb817fc.jpeg

源码管理
接下来是源码管理,在Repository URL里面添加你的git地址,我这里添加的是http的,如果你的项目是使用的ssh的,那么就将git开头的地址填写上,然后点击Add添加你的git帐号,如果你的事ssh的,将ssh的密匙填写上,具体的自己百度一下就好咯,我就不多写了,结果如图


3499748-60eaaca3a34ac160.png

构建触发器
接下来是构建触发器,也就是什么时候触发自动打包我这里填写的是H 20 * * 这个意思就是H小时然后,后面跟着数字,在后面就是日月年,代表的我认为是每次都触发,也就是每天每月每年,但是Jenkins的时间不是绝对的,一般都是在随机在半点,也就是设置20点,大概会在20:30分左右会触发,如果需要两个时间,那么格式可以这样H 20,22 * * *结果如图

3499748-fb89921af6677d23.png

构建环境
在构建环境里面勾选Keychains and Code Signing Identities和Mobile Provisioning Profiles,Keychains and Code Signing Identities是打包需要的证书,Mobile Provisioning Profiles是打包需要的配置文件,都是可以自己选择的,我的如图


3499748-6ba2dc28a1b1abb7.png

构建环境第一次Code Signing Identity和PP文件可能有些不一样。应用,保存一下就可以了。

添加脚本

308319-aa003774ff94de9c.png

执行cocoapod脚本必须要在第一个

#bin/bsah - l

export LANG=en_US.UTF-8

export LANGUAGE=en_US.UTF-8

export LC_ALL=en_US.UTF-8

cd $WORKSPACE/工程名

/usr/local/bin/pod install --verbose --no-repo-update

执行打包并且上传到TestFlight脚本

# 工程名
TARGET_NAME="TARGET_NAME"

# 文件名前缀
APP_NAME="APP_NAME"

# 证书
CODE_SIGN_DISTRIBUTION="iPhone Distribution: "
# info.plist路径
project_infoplist_path="./${TARGET_NAME}/Info.plist"
# exportOptionPlist路径
exportOptionPlist_path="./${TARGET_NAME}/ExportOptions.plist"

#取版本号
bundleShortVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" "${project_infoplist_path}")

#取build值
bundleVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleVersion" "${project_infoplist_path}")

DATE="$(date +%Y%m%d)"
IPANAME="${APP_NAME}_V${bundleShortVersion}_${DATE}.ipa"

#要上传的ipa文件路径(我的路径是在桌面建了一个文件夹)
IPA_PATH="$HOME/Desktop/xiaodianpuCI/${IPANAME}"
echo ${IPA_PATH}
echo "${IPA_PATH}">> text.txt

#下面2行是集成有Cocopods的用法
xcodebuild clean -configuration "Release" -alltargets
#导出archive文件
xcodebuild archive -workspace "${TARGET_NAME}.xcworkspace" -scheme "${TARGET_NAME}" -configuration Release -archivePath ~/"Desktop/xiaodianpuCI/${IPANAME}.xcarchive" -quiet
#导出IPA包
xcodebuild -exportArchive -archivePath ~/"Desktop/xiaodianpuCI/${IPANAME}.xcarchive" -exportOptionsPlist "${exportOptionPlist_path}" -exportPath ~/"Desktop/xiaodianpuCI/${IPANAME}"


ALTOOLPATH=/Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/altool
IPAPATH="${IPA_PATH}/工程名.ipa"
APPID="开发者账号"
APPPASSWORD="开发者密码"
#验证信息
"${ALTOOLPATH}" --validate-app -f "${IPAPATH}" -u "${APPID}" -p "${APPPASSWORD}" --output-format xml


#上传iTunesConnect
"${ALTOOLPATH}" --upload-app -f "${IPAPATH}" -u "${APPID}" -p "${APPPASSWORD}" --output-format xml

关于exportOptionsPlist
请参考exportOptionsPlist
把exportOptionsPlist添加到infoPlist同一层并push到git

关于

xxxxx has conflicting provisioning settings. xxxxx isautomatically signed, but code signing identity xxxxxxxxxxxxx has beenmanually specified.
Set the code signing identity value to "iPhone Developer" in the build settings editor, or switch to manual signing in the project editor.

问题的解决。
证书不能使用自动管理,需要手动。


企业微信20190306080250.png

感谢

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

推荐阅读更多精彩内容