基于Jenkins的CocoaPods化iOS项目构建+蒲公英/FIR系统发布

本文以本地和Git为例,结合CocoaPods,简单介绍了如何用jenkins来进行CI编译并上传蒲公英和Fir生成相应二维码的流程。

准备工作

首先,去Jenkins主页下载war包进行本地编译,网址为:https://jenkins.io/index.html
这里,笔者以LTS Release的2.7.2.war包为例

Jenkins下载页面

下好了war包后,运行War包,并设置其端口号,命令如下:

java -jar jenkins.war --httpPort=8888

运行后命令行如下图所示:

Jenkins 运行状态
http://localhost:8888

之后根据页面提示,输入密码并且创建账户后,即可打开Jenkins主页。

配置工作

配置工作里主要进行插件的安装,插件安装方法为:
系统管理 -->管理插件,选可选插件,选择对应插件后点击直接安装即可。

插件界面

以iOS的持续集成为例,推荐安装的插件为:

  • build timeout plugin
    This plugin allows builds to be automatically terminated after the specified amount of time has elapsed.
  • Checkstyle Plug-in
    This plug-in collects the Checkstyle analysis results of the project modules and visualizes the found warnings.
  • Credentials Binding Plugin
    Allows credentials to be bound to environment variables for use from miscellaneous build steps.
  • description setter plugin
    This plugin sets the description for each build, based upon a RegEx test of the build log file.
  • Email Extension Plugin
    This plugin is a replacement for Jenkins's email publisher
  • Git Changelog
    Plugin creating JIRA filter URL based on commit messages containing JIRA ticket keys in the GIT history
  • GitHub Organization Folder Plugin
    Scan entire GitHub organization for buildable branches and pull requests, in repositories. See Pipeline as Code solution page for more details.
  • Gitlab Hook Plugin
    Enables Gitlab web hooks to be used to trigger SMC polling on Gitlab projects
  • GitLab Plugin
    This plugin integrates GitLab to Jenkins by faking a GitLab CI Server.
  • Gradle Plugin
    This plugin allows Jenkins to invoke Gradle build scripts directly
  • HTML Publisher plugin
    This plugin publishes HTML reports.
  • Keychains and Provisioning Profiles Management
    This plugin integrates management of keychain and provisioning files for iOS and OSX projects.
  • Log Parser Plugin
    Parse the console output and highlight error/warning/info lines.
  • Pipeline
    A suite of plugins that lets you orchestrate automation, simple or complex. See Pipeline as Code with Jenkinsfor more details.
  • Post-Build Script Plug-in
    PostBuildScript makes it possible to execute a set of scripts at the end of the build.
  • Project Description Setter
    Set the project description from a file in the workspace
  • Publish Over FTP
    Send build artifacts over FTP
  • Subversion Plug-in
    This plugin adds the Subversion support (via SVNKit) to Jenkins.
  • Timestamper
    Adds timestamps to the Console Output.
  • Workspace Cleanup Plugin
    This plugin deletes the project workspace after a build is finished.
  • Xcode integration
    This plugin provides builders to build xcode projects, invoke agvtool and package .ipa files

创建任务

在Jenkins主页点击新建,输入Job名后,选择第一项:构建一个自由风格的软件项目

Paste_Image.png

之后进入配置页面,按照下图来进行配置:

Jenkins配置 part1

配置管理配置部分按下图填写:

Jenkins配置 part2

CocoaPods配置

选择构建-->增加构建步骤-->Execute Shell,再对应pod的代码填写进去:

CocoaPods配置

Command里必须要的是pod install,其他视项目结构而定。例如笔者的项目由于podfile文件在子目录之中,所以先执行CD [子目录名]进入子目录再执行。

Warning

  • 在Jenkins中设置CocoaPods配置之前请务必保证本地CocoaPods可以正常工作。这里默认你的CocoaPods已经执行过了pod setup这些步骤了。
  • CocoaPods的Execute Shell一定要在XCode配置之前执行。(点击左侧的拖动bar,可以自由调整插件顺序)
  • 目前Jenkins上虽然有CocoaPods的插件,但是功能有限,不推荐使用

XCode General配置

先进行添加:选择构建-->增加构建步骤-->XCode

Paste_Image.png

General Build Settings

在target处填写XCode项目的target名称。如果不知道名称,去项目目录下运行xcodebuild -list进行查看;
Configuration设置为Debug或者Release,取决于你想要什么样的版本;
ipa filename pattern:可以定制ipa的名称,例如yourIPAname_${VERSION}_${BUILD_DATE}
Output directory设置ipa的路径。

General Setting

配置证书

Code signing & OS X keychain options设置如下:


Code Siging设置

Code Sign Identity填写证书的名称(请查看你的Keychain里对应iPhone Developer证书的名称,包括括号里的内容)
unlock Keychain,在Keychain Path里填入在项目中倒入的开发者证书的keychain。如果不知道在哪儿,可以试试:

default : ${HOME}/Library/Keychains/login.keychain

Password是你的登陆密码

XCode 高级设置

XCode Schema File:如果不知道名称,去项目目录下运行xcodebuild -list进行查看;
SYMROOT:填写你想设置的SYMROOT,例如${WORKSPACE}/build/
Custom xcodebuild arguments:XCode配置参数,可以参考下图的设置
XCode Workspace File:如果需要运行workspace,请选择项目下对应的*. xcworkspace文件
XCdoe Project Directory:填写项目路径
XCode Project File:填写Project文件所在路径

高级设置

开发者证书导入

XCode此时应该导入开发者证书:

  • 从苹果开发者官网:官网地址,导入Certificates和Provisioning Profiles证书或密钥:
    Apple Developer

    应该保证XCode的General窗口箭头位置没有黄色的惊叹号:
General

集成蒲公英发布系统:

点击增加构建步骤-->Execute shell,创建脚本窗口:

QQ20160826-1.png

在脚本里填写如下格式代码:

curl -F "file=@${WORKSPACE}/ipa/helloJenkins.ipa" -F "uKey=xxxx" -F "_api_key=xxx" https://www.pgyer.com/apiv1/app/upload

其中,file是ipa文件的路径,记得要带@;uKey与F_api_key是蒲公英系统上的userKey与apiKey,蒲公英官网注册好后填写完全即可。

选择增加构建后操作步骤--> Set Build Description,如下图所示:

SetBuild

在Description中填写Image的对应地址即可:

image

点击OK,编译即可。然后进入Console页面去查看。
成功后应该如下图所示:

Paste_Image.png

集成fir.im发布系统

集成fir比集成蒲公英更加简单,因为官方有jenkins插件。直接安装后配置其apiKey即可。
参考fir官网对其的介绍页面

集成Git

取消掉XCode对应设置

如果确定要通过Git来构建,先取消掉之前的Advanced Xcode build options步骤,方法是清除Advanced Xcode build options内部的所有配置

更改源码管理

随后,回到源码管理,将选项由none改为Git,填入Git项目地址。这里以public项目为例,所有下面的credentials不用填写。如果是private,则需要填写git的用户名密码。

Git选项

参数化构建

想要达到根据具体分支构建的目的,需要添加对应插件Git Parameter Plugin
之后进入配置页面:

添加参数

在添加参数页面中设置 Git Parameter

之后按照下图所示进行设置:


Git Parameter 配置

之后要在下面的 源码管理 Git配置页面中Branch的对应字段填写你在Git Parameter中Name上所写的名字,如下所示:


源码管理中git的设置

希望小文能给各位的工作带来帮助!

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

推荐阅读更多精彩内容