文档章节

使用Jenkins配置iOS自动化构建工具

珲少
 珲少
发布于 2018/06/28 14:48
字数 1828
阅读 1.2K
收藏 4

使用Jenkins配置iOS自动化构建工具

      关于iOS自动化构建其实并不复杂,通过一些简单的Git与Xcode指令,加上UI,我们自己也可以动手编写一款自动化构建工具。这在之前的博客中也有涉及,有兴趣的朋友可以在如下地址找到这篇博客:

自己动手设计一款iOS自动构建发布工具:https://my.oschina.net/u/2340880/blog/1486246

       本篇博客主要记录使用Jenkins搭建iOS自动化构建项目的过程,关于Jenkins的更多自动化脚本的应用,有机会后面再出专门的博客介绍。

一、Jenkins的安装与启动

    Jenkins的安装非常方面,在如下官网可以直接下载Jenkins的安装包,其中有支持各个平台的安装包,选择自己所需要的进行下载安装即可。

https://jenkins.io/

   安装完成后,Jenkins会自动启动运行,在当前电脑的8080端口开启一个Web应用服务,如果是第一次安装启动,我们需要配置一个账户作为初始用户。

   对于在Mac上Jenkins的启动,有两种方式:

方式一:直接运行Java归档文件启动Jenkins

    如果是Mac电脑,Jenkins安装完成后,在Applications目录下会多出一个Jenkins文件夹,这个文件夹中包含一个jenkins.war的文件,如下图所示:

使用如下命令来启动Jenkins:

java -jar /Applications/Jenkins/jenkins.war

使用这种方式启动的Jenkins,要关闭服务需要找到Jenkins服务对应的PID,在终端输入如下命令:

ps

在终端输出的信息中,可以看到Jenkins服务所对应的PID号,如下图:

终端使用如下命令将此服务杀死即可:

kill -9 PID号

方式二:使用Mac的启动进行控制器启动Jenkins

    如果成功安装了Jenkins,在Mac电脑磁盘的资源库中的LaunchDaemons文件夹下可以找到Jenkins的启动配置文件,如下图:

在命令行中执行如下命令即可启动Jenkins服务:

sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist

使用如下命令关闭Jenkins服务:

sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist

二、创建持续集成项目

    在Jenkins的主页选择新建一个项目,创建选项中,我们输入项目名称,并选择构建一个自由风格的软件,如下图:

下一步将进入到项目配置界面,首先需要设置下通用的配置,如下图:

其中,描述部分可以填写项目的相关介绍,丢弃旧的构建设置构建记录保存的天数和最多保持多少个构建记录等。

    源码管理的配置是比较重要的一步,其用来设置构建项目从哪里拉取项目的源代码以及进行源码更新的操作。如下图:

如果使用的是Git仓库,如上图所示,需要配置项目的路径,账户以及要进行构建的分支。账户的主要用途是使得Jenkins有权限拉取项目的代码,如果之前没有添加过,可以点击右侧的Add按钮进行添加,如下图:

可以选择配置用户名加密码的方式添加账户,也可以使用SSH公钥的方式。

    下一步我们需要配置构建的触发器,构建触发器有多种形式,比如定时触发构建,远程触发,代码提交后触发等等,如下图:

其中远程触发是指我们可以通过远程访问Jenkins服务器地址加上令牌参数来触发构建。

之后再构建一栏中选择增加构建步骤->执行Shell,添加如下Shell脚本:

export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
/usr/local/bin/pod install
xcodebuild -archivePath "/Users/Shared/Jenkins/Home/workspace/Jenkins项目名称/你的项目名.xcarchive" -workspace 你的项目名.xcworkspace -sdk iphoneos -scheme "你的项目名" -configuration "Release" archive

xcodebuild -exportArchive -archivePath "/Users/Shared/Jenkins/Home/workspace/Jenkins项目名称/你的项目名.xcarchive" -exportPath "/Users/Shared/Jenkins/Home/workspace/Jenkins项目名称/buildIPA" -exportOptionsPlist '/Users/Shared/Jenkins/Home/workspace/Tictalk-iOS/ExportOptions.plist' -allowProvisioningUpdates
curl -F "file=@/Users/Shared/Jenkins/Home/workspace/Jenkins项目名称/buildIPA/你的项目名.ipa" -F "uKey=蒲公英userKey" -F "_api_key=蒲公英apikey" https://qiniu-storage.pgyer.com/apiv1/app/upload

上面脚本中,xcodebuild -archivePath 命令用来编译项目,如果你的项目没有使用workspace,需要将命令中的workspace修改成project,configuration参数用来配置编辑的方式,Release为发布环境。xcodebuild -exportArchive 命令用来到处API包,需要额外注意,提前我们需要在/Users/Shared/Jenkins/Home/workspace/Jenkins项目名称/你的项目名这个目录下添加一个ExportOptions.plist文件,新Xcode如果不配置这个文件是无法打包成功的。curl -F 命令是用来将打包好的IPA包自动上传到蒲公英分发平台。

    ExportOptions.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>compileBitcode</key>
	<false/>
	<key>method</key>
	<string>ad-hoc(IPA包模式)</string>
	<key>provisioningProfiles</key>
	<dict>(下面设置bundleID对应的provisioningProfiles文件名)
		<key>com.***</key>
		<string>AD_HOC</string>
		<key>com.***.TKNotificationCentent</key>
		<string>Content</string>
		<key>com.***.TKNotificationService</key>
		<string>Service</string>
	</dict>(下面配置证书)
	<key>signingCertificate</key>
	<string>iPhone Distribution</string>
	<key>signingStyle</key>
	<string>manual</string>
	<key>stripSwiftSymbols</key>
	<true/>(下面配置teamID)
	<key>teamID</key>
	<string>KJYHPT****</string>
	<key>thinning</key>
	<string>&lt;none&gt;</string>
</dict>
</plist>

三、构建可能出错的地方

    配置完了上面的脚本,你可以尝试点击立即构建按钮进行构建,当然构建过程中极有可能会出错,你可以根据log输出检查下是否是因为下面的问题。

1.git相关命令出错

    可能是Jenkins找不到git所在位置,在Jenkins的系统设置中选择全局工具配置,配置git路径如下图所示:

2.pod相关命令出错

   这一步出错的可能性极大,首先你的电脑可以使用pod不代表jenkins用户有使用pod的权限,最好使用jenkins用户登录电脑,进行pod的更新升级,或者直接使用jenkins用户登录,找到我们的项目,手动使用pod进行第三方的安装。

3.xcodebuild相关命令出错

    和git命令出错的问题基本一致,我们需要配置路径。在Jenkins的系统设置中找到系统配置,设置xcode相关工具如下:

4.编译过程中证书或配置文件出错

    首先确保你的应用证书放在了钥匙串的系统分类下,如图:

其次,需要将Provisioning Profiles文件复制到下面的目录下,切记:

/Users/Shared/Jenkins/Library/MobileDevice/Provisioning Profiles

最后,请确认可以使用Xcode手动进行编辑和打包。而且证书和Provisioning Profiles文件一定要正确和匹配。

© 著作权归作者所有

珲少

珲少

粉丝 896
博文 395
码字总数 478732
作品 0
上海
程序员
私信 提问
加载中

评论(0)

React Native 【学习总结】-【Jenkins集成】

简述 Jenkins是一个持续集成工具,它本身有很丰富的插件提供使用,方便持续集成,为开发省时省力,下面是项目中对新的RN项目做的持续集成例子,通过该例子学会如何使用jenkins。 Jenkins安装...

Pape
2018/05/18
0
0
Jenkins Gitlab持续集成打包平台搭建

相关概念 Jenkins Jenkins,一个用Java编写的开源的持续集成工具,提供了软件开发的持续集成服务,可监控并触发持续重复的工作,具有开源,支持多平台和插件扩展,安装简单,界面化管理等特点...

nineep
2018/06/27
0
0
关于 fir.im 你可能不知道的实用小工具

大家可能都知道 fir.im 是做测试发包的,上传你的 IPA/APK, 测试用户可以通过一个短链接和二维码就可快速安装测试。 除了基本的发包功能即应用上传下载外,fir.im 还为提高发包体验提供了一系...

风起云飞fir_im
2015/11/16
372
0
IOS 使用命令行xcodebuild打包报错library not find for -lxxx

我在使用jenkins做代码打包是遇到个问题 在使用命令行打包时提示library not find for -lAsyncDisplayKit(用Xcode打包无问题),可是通过xcodebuild -showBuildSettings构建设置查看 LIBRAR...

糖多多
2015/10/22
1.5K
0
iOS使用Fastlane实现自动化打包和上传

简介:Fastlane是一套使用Ruby写的自动化工具集,用于iOS和Android的自动化打包、发布等工作,可以节省大量的时间。 目标:使用fastlane进行iOS代码自动打包ipa,以及ipa包上传到蒲公英和fir...

爱自由鹏
2019/10/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

21天完美搞定Vue框架技术(第3天)

前言: 上一节我们主要学的是【选项合并】,了解了初始化阶段各个选项的合并策略, 本节课我们来学一下【数据代理】这个知识点。 1、数据代理的定义 数据代理,也叫作数据劫持。有两个核心作...

有鱼是只猫
41分钟前
39
0
OSChina 周二乱弹 —— 一山里不容二猫

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: 《数え歌》- 池田綾子 手机党少年们想听歌,请使劲儿戳(这里) @诺墨 :哈哈哈哈...

小小编辑
55分钟前
49
1
敏捷开发验收评审会议

迭代验收评审是Scrum中的重要活动之一,迭代验收评审会议召开过程是否符合敏捷原则,实践是否贴近实际,参照以下:要点一:参加迭代验收评审会议的角色是否完整和投入 ●敏捷团队所有...

沐沐爸比
今天
43
0
js 获取文件本地内存路径

URL.createObjectURL(file)

DrChenXX
今天
51
0
CentOS 6.5 安装 Hadoop 集群【未完】

1、安装 CentOS 6.5 2、关闭 iptables 3、关闭 suliunx 4、修改 IP 4、修改 hostname 5、修改 hosts 6、SSH 免密 7、JDK(1.8)安装 华为镜像直达 8、...

产品哥
今天
59
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部