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

Features

xcodebuild自动构建命令

确保项目证书等配置都没问题,可以完美运行。

简介

首先说明下使用文档:

man xcodebuild

基本上现在的包管理都是以pod来的,也就是以workspace的形式,所以基本的形式为:

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

解释两个参数:

  • target,可以通过 xcodebuild -list 查看
  • configrtion,也可以通过 xcodebuild -list 查看
  • sdk,可用 xcodebuild -showsdks,一般默认就行

可以查看项目配置选项:

xcodebuild -target Demo -configuration Debug -showBuildSettings

构建

基本的构建命令:

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

命令运行成功后会提示 ** BUILD SUCCEEDED **,一般会在项目目录下生成build文件夹,可以在里面看到你的生成的包。

对于workspace的形式来说,基本上也差不多:

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

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

生成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=
#或简单的写法
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

分享查询网

蒲公英

iOS - 自动化编译打包(Jenkins)的更多相关文章

  1. iOS自动化编译

    最近研究了一下iOS的自动化编译,目的是为了简化测试和开发的同学沟通协调的次数,实现测试同学可以随时从网页操作编译SVN最新源码并打包ipa进行测试. 具体思路是通过从配置文件读取需要编译的项目配置列 ...

  2. iOS自动化编译方案

    本文主要来源以下Bryce Zhang博主的文章,感谢博主的无私分享,转载请注明出处,尊重原创 然,根据Bryce Zhang文章进行实践过程中遇到一些问题,解决后在此做相应的总结.大神请绕道,觉得低 ...

  3. cocos2d-js 3.0 ios平台编译打包

    原帖在http://www.cocoachina.com/bbs/read.php?tid=209356 整理到github的https://github.com/faint2death/cocos2 ...

  4. Mac Jenkins+fastlane 简单几步实现iOS自动化打包发布 + jenkins节点设置

    最近在使用jenkins 实现ios自动化打包发布蒲公英过程实践遇到了一些坑,特意记录下来方便有需要的人. 进入正题: 一.安装Jenkins 1.Mac上安装Jenkins 遇到到坑 因为 Jenk ...

  5. Jenkins+ Xcode+ 蒲公英 实现IOS自动化打包和分发

    Jenkins+ Xcode+ 蒲公英 实现IOS自动化打包和分发 直接入正题: Screen Shot 2015-09-18 at 16.56.20.png Mac上安装Jekins jekins下 ...

  6. 自动化打包 Jenkins 持续集成 Git Gradle MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  7. IOS自动化打包介绍

    IOS自动化打包介绍  标签: app打包 , Ios打包 , iphone打包 , iphone自动化打渠道包    分类:无线客户端技术, 贴吧技术 摘要 随着苹果手持设备用户的不断增加,ios应 ...

  8. 构建Jenkins自动化编译管理环境

    今天研究了一下Jenkins,有了一个粗浅的认识,顺手把构建的过程说一下,后续慢慢补充: (1)Secure CRT 连接到Linux服务器 要注意的一点是,要搞好一个文件传输的路子,否则不好传东西. ...

  9. 持续集成篇_08_Hudson持续集成服务器的使用(自动化编译、分析、打包、部署)

    持续集成篇_08_Hudson持续集成服务器的使用(自动化编译.分析.打包.部署) 1.创建任务 svn用户验证 验证通过 *****五颗*表示每分钟检查svn路径是否有变更,有变更就会重新构建,相当 ...

随机推荐

  1. Spring Boot 处理 REST API 错误的正确姿势

    摘要:如何正确的处理API的返回信息,让返回的错误信息提供更多的含义是一个非常值得做的功能.默认一般返回的都是难以理解的堆栈信息,然而这些信息也许对于API的客户端来说有可能并没有多大用途,并没有多大 ...

  2. Asp.net mvc怎么在razor里写js代码

    我试图在Razor里写JS代码,但是不行 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 3 ...

  3. linux 安装 Django 安装

    下载源码包:https://www.djangoproject.com/download/ 输入以下命令并安装: tar xzvf Django-X.Y.tar.gz # 解压下载包 cd Djang ...

  4. python中是否有单独的字符类型,通过下标的方式表示字符串中的字符

    说明: 在python中,没有单独的字符类型,一个字符呢就是一个大小为1的字符串. 并且可以通过下标的方式,表示字符串中的字符. 操作过程: 1.通过[ ]的方式表示字符串中的第几个字符 >&g ...

  5. Eclipse------maven使用Maven build编译web项目显示" javax.servlet.http 不存在"

    缺少javax.servlet包 解决方法: 引入下面代码即可 <project> <dependencies> <dependency> <groupId& ...

  6. Java输出错误信息与调试信息

    创建一个类,在该类的main()主方法中,使用System类中的out和err两个成员变量来完成调试与错误信息的输出. public class PrintErrorAndDebug { public ...

  7. 给树莓派安装看门狗的两种方法,二代B

    树莓派的CPU是保护有硬件看门狗的,可以通过安装模块和值守程序来实现看门狗防止树莓派死机. 安装方法一:watchdog.sh的源码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...

  8. Windows 7 无密码文件共享

    Windows7中创建无密码的文件共享的几个步骤: 在“控制面板\所有控制面板项\网络和共享中心\高级共享设置”开启“关闭密码保护共享”和“启用文件和打印机共享”.关闭密码保护共享的操作会启用Gues ...

  9. ubuntu 手动安装mysql

    申请了一台云主机,需要手动安装所有环境,今天将mysql安装过程记下. 安装mysqla. 下载不了gcc, 需要先运行apt-get updateb. cmake报错,每次要先删除cmakeCach ...

  10. 来数一数XML解析成为Dataset数据

    最近在看一些接口,所以目标就是写接口啦,但是我想说的是公司的业务还不曾了解,所以自己先来做一个小小的demo练习吧,主要知道需要和xml有关系的,但是之前从来没有接触过解析xml文件的,在玩撒谎能够搜 ...