iOS Jenkins自动化打包

最近测试打包实在烦的不要不要的,一天打N多个包。这样之后,让测试小哥哥小姐姐自己操作就行了。

Jenkins构建之前,一定用Xcode进行打包测试,如果本地有多个Xcode一定要注意,Jenkins具体怎么选择的还没闹清楚,有明白的大神留言告知。感谢。

2019年7月10日 新增

添加一个jenkins用户,具体操作如图。


image.png

如果Jenkins这个文件夹没有在共享里面 直接拖进去


image.png

找到本地的MobildeDevice和Keychains文件夹复制到Jenkins的资源库中 (之前的login.keychain文件处理方法在这里有更新)<-- 注
路径:cd ~/Library/Keychains

参数配置

image.png

下载 Extended Choice Parameter 插件 (具体看文章下面插件下载安装即可)
插件使用如下:


image.png

参数使用使用:
${SelectedScheme}


image.png

参数配置完结🔼

以下是 2019年7月10日 之前部分

Jenkins

houjianan:~> brew install Jenkins  
Updating Homebrew...
jenkins: Java 1.8 is required to install this formula.
JavaRequirement unsatisfied!
You can install with Homebrew Cask:
 brew cask install homebrew/cask-versions/java8
You can download from:
 [https://www.oracle.com/technetwork/java/javase/downloads/index.html](https://www.oracle.com/technetwork/java/javase/downloads/index.html)
Error:An unsatisfied requirement failed this build.

java下载地址
上述错误是因为没有安装Java 点击链接地址 下载Java即可
再执行

houjianan:~> brew install Jenkins  
==>Downloading [http://mirrors.jenkins.io/war/2.156/jenkins.war](http://mirrors.jenkins.io/war/2.156/jenkins.war)
==>Downloading from [http://mirrors.tuna.tsinghua.edu.cn/jenkins/war/2.156/jenkins.war](http://mirrors.tuna.tsinghua.edu.cn/jenkins/war/2.156/jenkins.war)
######################################################################## 100.0%
==>jar xvf jenkins.war
==>Caveats
Note: When using launchctl the port will be 8080.
To have launchd start jenkins now and restart at login:
  brew services start jenkins
Or, if you don't want/need a background service you can just run:
  jenkins
==>Summary
🍺  /usr/local/Cellar/jenkins/2.156: 7 files, 76MB, built in 22 seconds

安装插件:

  1. Keychans and Provisioninng Profiles Management (管理本地的keychain和iOS证书的插件
  2. Xcode integration (用于Xcode构建)
  3. Publish Over SSH (上传服务器使用)

系统管理-插件管理-可选插件-过滤 (因为我安装过了)

BED4B18C-C96A-472B-9D5A-670AF86DBEEE.png
B6A2DB7C-970E-4673-A694-A5B5BAA0B3D2.png
9F7698C2-C4CD-4D5E-811E-861CB52382B5.png
Keychans and Provisioninng Profiles Management

步骤:

  1. login.keychain
    终端 cd ~/Library/Keychains
    将login.keychain-db复制出来(放到桌面或者其他目录),并且将名字后面的-db删除(有-db就删除)。
    login.keychain文件准备就绪
  2. 去苹果爸爸开发者中心下载证书和描述文件到本地
    证书和描述文件准备就绪
  3. 上传文件到Jenkins
    Jenkins-系统管理-Keychans and Provisioninng Profiles Management点击进入下面界面 上传上面修改好的文件
    选择(login.keychain 证书 描述文件 选一个 upload一次)之后 点击Upload 出现如下界面
    3A317CE8-20F6-4DE4-8497-A31F542E6F47.png

注:使用证书和描述文件之前在xcode测试是否可以正常archive

Jenkins创建任务
87D45939-4132-48A3-997D-2C9B5ADAD11D.png

输入名称,选择自由风格软件项目,点击确定,如下图


74B686AB-B710-4A98-85AE-0DC41EB87B81.png

Jenkins可以查看到创建的相应任务-点击名称-进入项目

27507498-990E-4446-97D9-55CC3371B7C4.png

项目GAJenkins,点击 配置

配置

1、General
点开高级

FC5BDA4B-DC80-4DDD-80E9-F013D9958BD3.png

2、源码管理

这里把代码传到gihub上了,为了测试使用。后续配置svn


git和svn都需要添加账号 Jenkins
Respository URL 去github复制

2019年7月10日更改

构建触发器(触发远程构建-身份证令牌 这步可以不添加)

[构建触发器]
获取身份验证令牌-右上角点击名字进入设置
在设置界面添加Token 我之前添加过了,所以显示的是创建日期

构建环境

在Keychans and Provisioninng Profiles Management添加过了,这里选择即可

Variables added to the build environment. They can be used in other build steps.
${KEYCHAIN_PATH}
Contains the absolute path of the selected copied keychain into the workspace.
${KEYCHAIN_PASSWORD}
Password to unlock the keychain.
${CODE_SIGNING_IDENTITY}
General name of the selected code signing identity.
```![43DB524C-6F4F-4E6A-85BF-40D0472493B6.png](https://upload-images.jianshu.io/upload_images/1024878-90452726e279196c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

构建-执行shell
执行shell 需要添加,不需要不添加
项目使用pod
这里添加执行shell
Pod install
Open GAFastlane.xcworkspace
注意后缀:.xcworkspace

077C3B64-EFB2-4E27-8A87-6F9A1F98F2B3.png

构建-Xcode
Xcode integration 在安装工具的时候已经安装好
需要勾选clean before build
Configration: Debug and Release两种
Xcode Schema File 如下图选择的 一般项目名字

6499C713-77F4-4B65-8F52-D7DECC194F0E.png
AC74AC3E-97B4-44F5-AE14-9458A360E593.png
4F45F0B5-683B-46EF-9E00-A6A2E78FC291.png

勾选Pack application, build and sign .ipa?
Export method 根据证书和需要填写
.ipa filename pattern

${BASE_NAME} 
It is replaced with the base name of the archive 
${VERSION} 
It is replaced with CFBundleVersion in Info.plist 
${SHORT_VERSION} 
It is replaced with CFBundleShortVersionString in Info.plist 
${BUILD_DATE} 
It is replaced with date on which the application was built (yyyy.MM.dd) 
${BASE_NAME}${VERSION}${SHORT_VERSION}${BUILD_DATE} 这样更完整

Output directory 导出的ipa放在哪里
${WORKSPACE}/build/ 相当于 /Users/houjianan/.jenkins/workspace/GAJenkins/build/

DEE3E2E8-FF33-4EA5-BE7B-8BD8BE22B695.png

Keychain path 之前搞得login.keychain绝对路径
Keychain password 电脑登录密码

Code signing & OS X keychain options

Advanced Xcode build options

Xcode Workspace File(使用了Workspace) {WORKSPACE}/GAFastlane Xcode Project Directory(没使用Workspace填这个) Build output directory{WORKSPACE}/build 固定写即可

1F4CDE6C-46B7-464F-9FF9-A36B3BB10ED6.png

构建后操作

Send build artifacts over SSH
Source files 注意路径别选错了

EB45C54A-CF92-4458-8449-5B6F952FE824.png

操作上面之前 先全局配置Publish over SSH
Use password authentication, or use a different key 使用密码登录和私钥密钥登录都可以密钥没做测试
Name随便起,上图会选择这个名字
Hostname 域名 ip
Username 访问地址的用户名
Remote Directory 路径 这里如果配置的路径是最后ipa文件传入的文件夹 上图就就不用配置RemoteDirectory 就是说 下图和上图的RemoteDirectory合并才是最后ipa文件传入的目录
Port 具体多少看情况

Timeout (ms)默认就行 网速特别差就写大点
96612D1E-74B7-4FA8-820C-C052184E64BF.png
DF685A30-A894-4195-AA54-ED84577FEB3B.png

去构建

EC7CAD37-3A09-4AB8-8B33-442683C34A8A.png

构建#99次...成功了

Archiving dSYM
No dSYM file found in /Users/houjianan/.jenkins/workspace/GAJenkins/build/GAFastlane.xcarchive/dSYMs !
No dSYM file found in /Users/houjianan/.jenkins/workspace/GAJenkins/build/GAFastlane.xcarchive/dSYMs !
SSH: Connecting from host [[houjianandeMacBook-Pro.local](http://houjianandemacbook-pro.local/)]
SSH: Connecting with configuration [10.3.10.33] ...
SSH: Creating session: username [root], hostname [10.3.10.33], port [22]
SSH: Connecting session ...
SSH: Connected
SSH: Opening SFTP channel ...
SSH: SFTP channel open
SSH: Connecting SFTP channel ...
SSH: Connected
SSH: cd [/data/uwsgi/test/]
SSH: OK
SSH: cd [/data/uwsgi/test/]
SSH: OK
SSH: mkdir [build]
SSH: OK
SSH: cd [build]
SSH: OK
SSH: put [GAFastlane.ipa]
SSH: OK
SSH: Disconnecting configuration [10.3.10.33] ...
SSH: Transferred 1 file(s)
Finished: SUCCESS

--------------问题记录-------------------

[问题1]
Source files 路径错误了 报下面错误
Transferred 0 ( 0 + 0 ) file(s)

[问题2]
** ARCHIVE FAILED **
The following build commands failed:
CompileSwift normal armv7
CompileSwiftSources normal armv7 com.apple.xcode.tools.swift.compiler
(2 failures)
Build step 'Xcode' marked build as failure
Finished: FAILURE

Jenkins忘记密码 Jenkins修改密码
#jbcrypt:$2a$10$DdaWzN64JgUtLdvxWIflcuQu2fgrrMSAMabF5TSrGK5nXitqK9ZMS(替换的这一串密码对应的原密码是111111)

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

推荐阅读更多精彩内容