iOS - 自动化编译打包(Jenkins)

从xcodebuild到shenzhen,再到Jenkins,完美演绎自动化操做。java

Features

xcodebuild自动构建命令

确保项目证书等配置都没问题,能够完美运行。ios

简介

首先说明下使用文档:git

man xcodebuild

 

基本上如今的包管理都是以pod来的,也就是以workspace的形式,因此基本的形式为:github

xcodebuild [-project projectname] [-target targetname ...] 
[-configuration configurationname] [-sdk [sdkfullpath | sdkname]] [buildaction ...] 
[setting=value ...] [-userdefault=value ...]

 

解释两个参数:shell

  • target,能够经过 xcodebuild -list 查看
  • configrtion,也能够经过 xcodebuild -list 查看
  • sdk,可用 xcodebuild -showsdks,通常默认就行

能够查看项目配置选项:swift

xcodebuild -target Demo -configuration Debug -showBuildSettings

 

构建

基本的构建命令:xcode

xcodebuild -workspace Demo.xcworkspace -scheme Demo -configuration Debug -sdk iphoneos10.1

 

命令运行成功后会提示 ** BUILD SUCCEEDED **,通常会在项目目录下生成build文件夹,能够在里面看到你的生成的包。浏览器

对于workspace的形式来讲,基本上也差很少:ruby

xcodebuild -workspace Demo.xcworkspace -scheme Demo -configuration Debug -sdk iphoneos10.1

 

好像对workspace构建后不会在项目目录下生成build文件夹,能够在你的命令后面添加SYMROOT=buildDir指定一个build文件夹)。markdown

生成IPA文件

生成文件的命令是xrun

xcrun -sdk iphoneos -v PackageApplication ./build/Release-iphoneos/Demo.app -o ~/Desktop/Demo.ipa

 

打包成功后,会在桌面找到你的ipa。

利用 shenzhen 进行打包

利用github上一个开源项目:  shenzhen 能够在命令行为ios项目进行打包并发布。 具体安装步骤以下:

gem install shenzhen

 

若是安装过程出现错误有多是ruby的源找不到,能够到  RubyGems 镜像 改变ruby源。

若是仍是出现问题能够更新下gem便可(sudo gem update)。

一切准备完毕就能在控制台上运行ipa命令了:

$ ipa 

Build and distribute iOS apps (.ipa files)

Commands:
build                    Create a new .ipa file for your app
distribute:crashlytics   Distribute an .ipa file over Crashlytics
distribute:deploygate    Distribute an .ipa file over deploygate
distribute:fir           Distribute an .ipa file over fir.im
distribute:ftp           Distribute an .ipa file over FTP
distribute:hockeyapp     Distribute an .ipa file over HockeyApp
distribute:itunesconnect Upload an .ipa file to iTunes Connect
distribute:pgyer         Distribute an .ipa file over Pgyer
distribute:rivierabuild  Distribute an .ipa file over RivieraBuild
distribute:s3            Distribute an .ipa file over Amazon S3
distribute:testfairy     Distribute an .ipa file over TestFairy
help                     Display global or [command] help documentation
info                     Show mobile provisioning information about an .ipa file

 

能够看出经过bulid参数就能建立ipa文件,好比输入命令:

ipa build

 

会直接在当前目录下生成ipa文件以及dSYM文件。

若是你的工程项目有不少targets,则ipa bulid命令会列出如今全部targets,咱们能够选择一个进行打包。

如简单的打包蒲公英事例:

ipa distribute:pgyer -u USER_KEY -a APP_KEY

 

iTunes Connect Distribution:

ipa distribute:itunesconnect -a me@email.com -p myitunesconnectpassword -i appleid --upload

 

Jenkins自动化

安装

在 Mac 环境下,咱们须要先安装 JDK,在Jenkins 的官网下载最新的 war 包。下载完成后,打开终端,进入到 war 包所在目录,执行如下命令:

java -jar jenkins.war --httpPort=8080
#或简单的写法
java -jar jenkins.war

 

待Jenkins启动后,在浏览器中输出一下地址: http://localhost:8080

这样就打开Jenkins管理页面了。

基本界面以下:

Jenkins开始页面

建立项目

点击左上角的新建,或是店家开始建立一个新任务,出现下面的页面:

Jenkins新建页面

这里输入的名字为Demo,并选择 构建一个自由风格的软件项目,点击OK进入到下一页面:

Jenkins新建页面

其中这里在General中,点击高级,先使用本地项目作测试:

Jenkins新建本地页面

源码管理暂选None,构建触发器和构建环境不须要选择:

Jenkins新建本地页面

构建,选择shell形式,使用shenzhen来构建并直接上传到蒲公英:

Jenkins使用shenzhen构建

其中,USER_KEY 和 API_KEY 能够在蒲公英的「帐户设置」中找到,以后进行相应替换。

构建后的操做咱们也不须要,直接点击保存。

构建

保存以后进入到项目工做目录,点击当即构建:

Jenkins构建

会在构建历史中显示构建结构,点击进入查看:

Jenkins

点击 Console Output 查看日志信息:

Jenkins

会有一堆信息,成功的话会提示去蒲公英查看。

进入到蒲公英后台,会发现咱们的应用已经发布上去,能够进行测试了。

配置远程仓库

首先配置SSH:

Jenkins

建立global的类型:

Jenkins

进去后点击左侧的 ` Add Credentials`:

Jenkins

选择SSH类型,输入本身的用户名,Private Key 直接从 ~/.ssh 目录下读取就好。

工程的配置,跟本地的区别就是不须要配置自定义的工做空间,同时选择源码管理中的Git,填写对应的地址信息:

Jenkins

而后其余的构建、查看过程都一致。

到蒲公英上检查,果真存在。完美!

便捷设置

以上面的方式运行的Jenkins的,命令行是不能关闭的,为了方便的话,须要设置在后台运行:

nohup java -jar jenkins.war &

 

将命令写入到sh文件中,好比就叫 start.sh,运行的时候直接跑脚本就好,附上文件内容:

#!/bin/sh
nohup java -jar /Users/home/Desktop/jenkinsWorkspace/jenkins/jenkins.war &

 

一样的,关闭命令也能够直接使用,不过在使用关闭以前,须要下载个 jenkins-cli.jar文件:

首页 -> 系统管理 -> Jenkins CLI

里面一样包含好多其余命令,能够根据本身须要来调试。

设置关闭 Jenkins 的脚本:

#!/bin/sh
java -jar /Users/home/Documents/jenkins/jenkins-cli.jar -s http://localhost:8080/ shutdown

 

别忘记修改成本身的路径。

通常的命令能够直接在网址上体现出来,好比重启: http://localhost:8080/restart

上面既然用了iOS的打包,因此脚本感受也是用swift来写也是比较配套的,在这里就不贴出来了,喜欢研究的童鞋就google一下~,我将之命名为begin.swiftend.swift,恩,感受仍是不错的

参考:

iOS 自动构建命令——xcodebuild

分享查询网

蒲公英

相关文章
相关标签/搜索