iOS - 自动化编译打包(Jenkins)
从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.swift
和end.swift
,恩,感觉还是不错的
参考:
iOS - 自动化编译打包(Jenkins)的更多相关文章
- iOS自动化编译
最近研究了一下iOS的自动化编译,目的是为了简化测试和开发的同学沟通协调的次数,实现测试同学可以随时从网页操作编译SVN最新源码并打包ipa进行测试. 具体思路是通过从配置文件读取需要编译的项目配置列 ...
- iOS自动化编译方案
本文主要来源以下Bryce Zhang博主的文章,感谢博主的无私分享,转载请注明出处,尊重原创 然,根据Bryce Zhang文章进行实践过程中遇到一些问题,解决后在此做相应的总结.大神请绕道,觉得低 ...
- cocos2d-js 3.0 ios平台编译打包
原帖在http://www.cocoachina.com/bbs/read.php?tid=209356 整理到github的https://github.com/faint2death/cocos2 ...
- Mac Jenkins+fastlane 简单几步实现iOS自动化打包发布 + jenkins节点设置
最近在使用jenkins 实现ios自动化打包发布蒲公英过程实践遇到了一些坑,特意记录下来方便有需要的人. 进入正题: 一.安装Jenkins 1.Mac上安装Jenkins 遇到到坑 因为 Jenk ...
- Jenkins+ Xcode+ 蒲公英 实现IOS自动化打包和分发
Jenkins+ Xcode+ 蒲公英 实现IOS自动化打包和分发 直接入正题: Screen Shot 2015-09-18 at 16.56.20.png Mac上安装Jekins jekins下 ...
- 自动化打包 Jenkins 持续集成 Git Gradle MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- IOS自动化打包介绍
IOS自动化打包介绍 标签: app打包 , Ios打包 , iphone打包 , iphone自动化打渠道包 分类:无线客户端技术, 贴吧技术 摘要 随着苹果手持设备用户的不断增加,ios应 ...
- 构建Jenkins自动化编译管理环境
今天研究了一下Jenkins,有了一个粗浅的认识,顺手把构建的过程说一下,后续慢慢补充: (1)Secure CRT 连接到Linux服务器 要注意的一点是,要搞好一个文件传输的路子,否则不好传东西. ...
- 持续集成篇_08_Hudson持续集成服务器的使用(自动化编译、分析、打包、部署)
持续集成篇_08_Hudson持续集成服务器的使用(自动化编译.分析.打包.部署) 1.创建任务 svn用户验证 验证通过 *****五颗*表示每分钟检查svn路径是否有变更,有变更就会重新构建,相当 ...
随机推荐
- Get started with ros -- 1
原创博文:转载请标明出处(周学伟):http://www.cnblogs.com/zxouxuewei/tag/ 一.Introduction: 机器人操作系统(ROS)是使机器人系统的不同部分能够发 ...
- 存储过程中SELECT INTO的使用
在MySQL存储过程中使用SELECT …INTO语句为变量赋值: 用来将查询返回的一行的各个列值保存到局部变量中. 要求: 查询的结果集中只能有1行. SELECT col_name[,...] I ...
- yarn基础架构
Yarn的基本架构 Yarn是Hadoop2.0中的资源管理系统,它的基本设计思想是将MRv1中的JobTracker拆分成两个独立的服务:一个全局的资源管理器ResourceManager和每个应用 ...
- Java 数据库访问层
最近项目中需要对mysql进行操作,数据库的知识早在本科毕业那会就忘光了,这几年开发都没接触到数据库的操作. 借这个机会重新学习,数据库访问层是对数据库操作的一个封装,屏蔽底层的数据操作细节,通过使用 ...
- Ubuntu 13.10 下安装搜狗输入法
1.卸载ibus输入法: sudo apt-get remove ibus sudo为取得root权限的意思,Ubuntu系统默认root账户关闭,很多操作需要取得root 权限才可以 ...
- N76E003之WDT(看门狗定时器)
N76E003提供一个看门狗定时器(WDT),它可以配置成一个超时复位定时器用于复位整个设备.一旦由于外界干扰设备进入非正常状态或挂起,看门狗可以复位恢复系统.这有用于监测系统运行以提高系统可靠性.对 ...
- 使用java连接数据库以后显示“ Establishing SSL connection without server's identity verification is not recommended”的警告如何解决
今天写了一段查询数据库的操作,如下 package MySQL; import java.sql.*; public class MySQL { //JDBC驱动名以及数据库URL static fi ...
- gcc/g++基本命令简介
gcc & g++现在是gnu中最主要和最流行的c & c++编译器 .g++是c++的命令,以.cpp为主,对于c语言后缀名一般为.c.这时候命令换做gcc即可.其实是无关紧要的.其 ...
- codeforces水题100道 第十三题 Codeforces Round #166 (Div. 2) A. Beautiful Year (brute force)
题目链接:http://www.codeforces.com/problemset/problem/271/A题意:给你一个四位数,求比这个数大的最小的满足四个位的数字不同的四位数.C++代码: #i ...
- 用MyEclipse将Maven Dependencies中的jar包导出
1.右击pom.xml文件,选择Run As ——> Maven build… 2.在打开的页面中,如图输入“dependency:copy-dependencies”,后点击“Run”即可 ...