Mac Jenkins+fir 搭建

阐述

  最近在准备产品新版本开发的预备工作,网上看了很多产品方案,感觉一个成熟的产品必然是产品-测试-产品循环,因此寻找了很多关于CI环境搭建方面的资料,最终还是觉得Jenkins+fir这套方案适合公司目前的情况。故将搭建过程记录下来,供大家参考。

步骤

1. 安装Java环境
Jenkins平台需要对应的Java环境,请下载对应版本的Java环境包
下载地址: http://www.java.com/zh_CN/download/mac_download.jsp

2. 下载Jenkins
下载Jenkins最新版本的安装包(注意查看对应的Java版本)
Jenkins官网: https://jenkins.io

3. 安装Jenkins
一直选择(下一步)Next,不需要设置

4. 初始配置 Jenkins
a. 浏览器输入 http://localhost:8080
(注: 如端口冲突,请修改端口)

修改端口方法(命令行):
$ defaults write /Library/Preferences/org.jenkins-ci httpPort xxxx
(xxxx 为你要修改的端口号)

b. 按照提示,找到密码,输入下方的输入框

img1

c. 找到 /Users/Shared/Jenkins/Home/ 这个目录下,这个目录虽然是共享目录,但是有权限的,非Jenkins用户/secrets/目录是没有读写权限的。
故需要进行操作: 右键 - 显示简介 - 修改权限

d. 打开 initialAdminPassword 文件,复制并黏贴密码

img2

e. 选择 Install suggested plugins (当然也可自己选择对应插件进行安装)

img3

安装截图

img4

如有安装失败的,在失败之后,重启浏览器多次,即可跳过失败的插件安装步骤(失败的插件需要在Jenkins中手动安装)

img5

f. 账户创建(安装失败多次重启浏览器后也会到这个界面)
img6

这样Jenkins就初步安装完成

5. Jenkins 插件安装
img7

a. 通过插件名搜索,选择并安装

img8

b. 自己下载插件,手动安装
插件集合下载地址: https://wiki.jenkins-ci.org/display/JENKINS/Plugins

img9

注意:
需要安装的插件有 (可通过第一种方式)
GitLab 插件

  • GitLab Plugin
  • GItLab Hook Plugin

Xcode 插件

  • Xcode integration

Keychains 插件

  • Keychains and Provisioning Profiles Management

打包后续动作插件

  • Post-Build Script Plug-in

6. 配置发布证书
a. 进入有关操作界面,如下图

img10

b. 在下图中,上传 /Users/管理员用户名/Library/keychains/login.keychain 文件,并上传有关程序的 Provisioning Profiles 文件(证书p12不需要上传)

img11

c. 在下方输入要使用的证书的名称

img12

d. 设置 Provisioning Profiles 拷贝目的地路径
请输入 /Users/Shared/Jenkins/Library/MobileDevice/Provisioning Profiles/

img13

7. 配置fir插件
按照网址中介绍的fir配置步骤进行配置: http://blog.fir.im/jenkins/

8. 创建一个新项目

img14

img15

初步设置有关内容

img16

img17

img18

Poll SCM (poll source code management) 轮询源码管理 需要设置源码的路径才能起到轮询的效果。一般设置为类似结果: 0/5 每5分钟轮询一次 Build periodically (定时build) 一般设置为类似: 00 20 * 每天 20点执行定时build 。当然两者的设置都是一样可以通用的。

格式是:
分钟(0-59) 小时(0-23) 日期(1-31) 月(1-12) 周几(0-7,0和7都是周日) 更加详细的设置看这里

若 Code Signing Identity第一次不能选择,请Save一下,再次进入设置界面

img19

img20

其中:
APP_NAME 为项目名称
JENKINS_SVN_NAME 为此Jenkins项目名称
CODE_SIGN_DISTRIBUTION 为打包使用的证书名称

附上代码

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
30
APP_NAME="WizardIsBoy"  
JENKINS_SVN_NAME="WizardIsBoy"
CODE_SIGN_DISTRIBUTION="Apple Development IOS Push Services: com.caxaAS.WizardIsBoy"


project_infoplist_path="/Users/Shared/Jenkins/Home/workspace/${JENKINS_SVN_NAME}/${APP_NAME}/Info.plist"
bundleShortVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" "${project_infoplist_path}")


bundleVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleVersion" "${project_infoplist_path}")


DATE="$(date +%Y%m%d)"
IPANAME="${APP_NAME}_V${bundleShortVersion}_${DATE}.ipa"


IPA_PATH="$HOME/GGG/${IPANAME}"
echo ${IPA_PATH}
echo "${IPA_PATH}">> text.txt


echo "=================clean================="
xcodebuild -target "${APP_NAME}" -configuration 'Release' clean


echo "+++++++++++++++++build+++++++++++++++++"
xcodebuild -target "${APP_NAME}" -sdk iphoneos -configuration 'Release' CODE_SIGN_IDENTITY="${CODE_SIGN_DISTRIBUTION}" SYMROOT='$(PWD)'


xcrun -sdk iphoneos PackageApplication "./Release-iphoneos/${APP_NAME}.app" -o ~/"${IPANAME}"

img21

若 Ruby 出现问题则命令行输入以下命令,进行ruby重新安装
$ rvm get stable
$ rvm reinstall 2.0.0

参考资料:

  1. http://gold.xitu.io/post/57b01d50128fe10055bbc6d5?utm_source=gold_browser_extension
  2. http://stackoverflow.com/questions/20092600/error-loading-rubygems-plugin-openssl-bundle-loaderror
  3. http://blog.fir.im/jenkins/
文章目录
,