一、简述
公司特意配了一台mac机给测试用,并且打包发布这些功能都要在这台测试机上完成,老大特意让我去研究一下jenkins实现自动化打包,好吧,那就去看吧。
百度搜一下,Mark一下简介:jenkins是一个广泛用于持续构建的可视化web工具,持续构建即各种项目的”自动化”编译、打包、分发部署。jenkins可以很好的支持各种语言(比如:Java, c#, PHP等)的项目构建,也完全兼容ant、maven、gradle等多种第三方构建工具,同时跟svn、Git能无缝集成,也支持直接与知名源代码托管网站,比如github、bitbucket直接集成。
二、Jenkins的安装
1、Jenkins本身是用java语言开发的,所以安装Jenkins之前,要保证你的电脑有jdk,如果没有,请到如下链接下载:http://rj.baidu.com/soft/detail/25851.html?ald ,另外建议git、ant、maven、gradle、groovy等工具也一并安装好,方便与这些构建工具集成。
2、进入Jenkins的官网 https://jenkins.io/index.html ,然后下载并安装Jenkins。此处有两种安装方法,使用命令行安装和使用jenkins.pkg安装,建议使用后一种
3、下载
1)点击链接进入官网
2)点击download
3)我选择的是Mac OS X
4)下载完成后,得到 jenkins-2.19.4.pkg 文件,点击直接安装即可,在下图中,选择自定,取消 start at boot as“jenkins”,一般不需要自启动
5)安装完成后,会直接跳转到如下界面,如果没有跳转或者跳转失败,可通过执行如下命令 ” open /Applications/Jenkins/jenkins.war ” 进入到该界面
如果打开没有反应,启动不了,就在浏览器直接打开:http://localhost:8080/ ,就可以进入到上面界面了。
6)观察图中的路径,然后打开你的终端,执行如下命令(注意:该命令仅在安装Jenkins的过程中执行才有效;安装成功后,再在终端中执行是无效的):
7)然后将我们得到的password输入到“Administrator password“中,即可进入如下界面,接着安装一些建议的插件,安装过程中,有的插件可能会安装失败,可以跳过,之后需要对应的插件时,再重新安装即可,具体后面会讲到:
8)插件安装完成后,可能会卡在如下界面,不会自动跳转,刷新下界面即可:
9)在刷新后的界面中注册,输入用户名和密码,如下:
10)注册成功后,点击”Start using Jenkins”
三、Jenkins的使用
1、安装成功后,会进入到如下界面:2、新建项目
2)输入项目名称,并选择构建一个自由风格的软件项目,点击下方的OK。
3)General 中建议写上一些项目描述,这里启用项目安全是指管理员对对应登录用户设置的一些权限。
4)这里设置的是构建项目(即用jenkins打包ipa时)的参数设置。
具体的使用是在项目页点击
然后进入页面,BR就是刚刚设置的参数名称,master就是你对应项目的分支,在所有的设置都设置好了时就可以点击开始构建。
5)由于我们在配置jenkins用到了JDK,这里对应的是JDK的名称,第二个勾选项是配置的打包的项目关联的mac电脑名称(自己设置)。
具体的在首页中可看到
点击进去
6)源码管理,公司的项目是放在gitlab上的,这里Repository URL填的是项目的路径,Credentials添加的是gitlab上登录的用户名和密码, Branch Specifier (blank for 'any')这里就是上面提到的构建时的分支设置参数。
输入对应的用户名和密码后,并在Credentials中选择该帐号。
7)由于项目是在另一台mac机上构建的,则这里配置身份验证令牌。
8)构建设置
在下图的Target中,保证该Target和Xcode项目工程中的Target同名。建议勾选Clean before build?,并将Configuration设为Release。勾选Pack application and build .ipa?,同时为即将输出的ipa文件命名并指定输出路径。
• Target:就是我们在项目中建立的Target
如果不清楚有哪些Target的情况下可以到xcodeproj或xcworkspace的目录下运行如下命令 xcodebuild -list 即可看到Targets,其中是所有可以用的target。
• Clean before build?:这个是在编译前是否clean一次,一般是选择YES。
• Configuration: 对应的是xcodebuild命令里的-configuration的参数,可选项为[Debug、Release],一般都填Debug,这样就可以将打包后的ipa交付给测试人员测试
• Pack application and build .ipa?:这个是在结束是是否要产生对应的ipa文件,一般都是打上勾的
• .ipa filename pattern:这个配置项是配置所产生ipa的文件名,其中有一些可用的全局变量
其中${VERSION}和${SVN_REVISION}都是可以直接用的环境变量,如果想看还有哪些环境变量而已用可以点击在Execute shell下方有个 "See the list of available environment variables"进行查看,这里就不进行列出来了。
• Output directory:这个配置了ipa的输出目录(默认Build output directory所在路径,见下图)
Code signing & OS X keychain options (签名的设置)
Codee Signing Identity:所使用的签名
如果不知道具体填什么可以到钥匙串访问中寻找 iPhone Distribution:开头的所使用的证书,然后选中后点击右键选择显示简介,在弹出的窗口中找到常用名称,将其复制填入即可。 或者可以在命令行中输入security find-identity -p codesigning -v来查找iPhone Distribution:开头的签名即可,找到后将双引号中的内容复制。
• Unlock Keychain?: Jenkins需要访问Keychain,获取响应的key,所以需要授权。选上就自动解锁。需要提供密码。
• Keychain path: 默认都是${HOME}/Library/Keychains/login.keychain
• Keychain password: 钥匙串的密码
注意:这个可以在 系统管理-》系统设置-》Xcode-》BuilderKeychains-》添加,在配置中可以选取
Advanced Xcode build options(xcodebuild命令的配置)
• Clean test report?:这个是如果要用到xcode测试的时候才用到,意思就跟英语一样
• Xcode Scheme File: 关于这个其实对应的就是xcodebuild命令中的-scheme的参数
如果您不知道要填写什么的话, 可以通过xcodebuild -list来查询。是不是觉得这条命令很熟悉,没错前面查找target的时候也是用这个命令!
• SDK:这里是xcodebuild命令中的-sdk的参数,指定编译和打包的sdk号。如果不懂可以填写哪些可以通过xcodebuild -showsdks来查看。
• SYMROOT:该变量是编译和打包产生结果的输出目录( .a, .zip, .ipa, .hmap等产生文件的位置),其中该目录其实是包括了CONFIGURATION BUILD DIR和OBJROOT这两个目录,默认的路径是所编译的xcodeproj所在目录,如主项目和POD项目整合后,则会在主项目的和POD项目的XCODEPROJ所在目录
如果在指定了OBJROOT的位置后,编译过程中产生的文件不会在该目录体现 如果在指定CONFIGURATION_BUILD_DIR的位置后,该变量则变成无效化
• Custom xcodebuild arguments:这个就是xcodebuild命令中的指定buildsetting的命令的参数,至于可以指定哪些参数请不要问我,可以找度娘或者谷哥
• Xcode Workspace File:该配置是指明了xcodebuild中的-workspace的变量,其实就是如果您需要编译打包一个workspace时候的时候指定那个后缀名为xcworkspace的文件, 如果指定了该配置,那么Xcode project file配置项将无效
• Xcode Project Directory:该目录是指明了包含xcodeproj文件的目录(这个我是没用用到如果用了该参数可能最开始第一步的构建就没用了------不过我还没证实,欢迎小伙伴证实后告诉我)
• Xcode Project File: 如果需要构建一个project而不是一个workspace的话则指定文件的名称(后缀名为xcodeproj的文件)
• Build output directory:该参数只是指明了最终需要产生的动态包,ipa,app等文件默认路径为所编译的xcodeproj所在目录,如主项目和POD项目整合后,则会在主项目的和POD项目的XCODEPROJ所在目录(编译产生的相关文件所在目录,默认为$SYMROOT/$CONFIGURATION)
• 值得说的是有一个参数也是挺常用的就是OBJROOT,该参数是产生 .a和 .hmap文件的目录,默认路径为所编译的xcodeproj所在目录,如主项目和POD项目整合后,则会在主项目的和POD项目的XCODEPROJ所在目录,关于OBJROOT、CONFIGURATION BUILD DIR以及SYMROOT三个路径之间的关系大家可以去查看官方的文档。
3、添加上传到第三方分发平台(这里选择蒲公英平台作为例子)
蒲公英上的User Key
uKey="41ed0a30a0cdf9296501232e69b5a66b"
蒲公英上的API Key
apiKey="ece94057dd3d5bd3d570ae509a0c3e3d"
要上传的ipa文件路径
IPA_PATH="${WORKSPACE}/build/PPCSDKTest.ipa"
密码
PASSWORD="123456"
MSG=git log -1 --pretty=%B
执行上传至蒲公英的命令
echo "++++++++++++++upload+++++++++++++"
curl -F "file=@${IPA_PATH}" -F "uKey=${uKey}" -F "_api_key=${apiKey}" -F "updateDescription=${MSG}" -F "password=${PASSWORD}" http://www.pgyer.com/apiv1/app/upload
到此为止关于Jenkins整合Xcode的配置项并自动上传到蒲公英差不多就说好了。那么可以稍微构建一下项目试试了,构建完项目后,你就会发现测试人员不需要天天来烦你,再也不需要听到“开发狗,赶紧给我安装一个最新的版本”了。