1.前言
此篇文章是以 Jenkins安装包 + java8安装包组成的环境进行的。
2. 插件安装
Jenkins安装完成,并且基本设置做好后。我们需要安装一些插件:
- Xcode integration
- Keychains and Provisioning Profiles Management
2.1 系统管理
首页的左侧,点击 系统管理:
2.2 插件管理
在系统管理页面找到 插件管理:
2.3 安装插件
- 搜索插件安装

- 本地上传插件安装,点击
高级->上传插件
3. 系统设置
3.1 钥匙串权限、~/Library权限以及电脑用户管理权限
3.1.1 MobileDevice
将 /Users/用户名/Library 的 MobileDevice 文件夹拷贝到 /Users/Shared/Jenkins/Library下
注意:是将
MobileDevice这个文件夹拷贝过去,而不是MobileDevice里的文件,/Users/Shared/Jenkins/Library目录下是没有MobileDevice这个文件夹,所以先创建一个MobileDevice文件夹。
sudo mkdir /Users/Shared/Jenkins/Library/MobileDevice
sudo cp -r /Users/xxx/Library/MobileDevice/ /Users/Shared/Jenkins/Library/MobileDevice/
3.1.2 Keychains
将 /Users/用户名/Library/Keychains/ 下的 login.keychain-db文件拷贝到 /Users/Shared/Jenkins/Library/Keychains 文件夹下面
cd /Users/Shared/Jenkins/Library/
sudo mkdir Keychains
sudo cp /Users/xxx/Library/Keychains/login.keychain-db ./Keychains/
再将这个 login.keychain-db 拷贝到桌面上一份,将文件后缀改为 .keychain
3.1.3 钥匙串权限
打开钥匙串,找到相应的证书:
右键密钥显示简介,在访问控制那一项里勾选允许所有应用程序访问此项目,并存储更改
3.1.4 ~/Library权限
- 进入mac系统偏好设置 — 用户与群组 — 其他用户 — jenkins ,勾选允许用户管理这台电脑,并右键选择高级选项,将名字改为jenkins

Jenkins 安装成功之后,会自动创建一个用户,该用户没有名字
找到 Library 资源库文件夹,设置共享与访问权限,everyone读与写都可以
3.2 配置 Keychains and Provisioning Profiles Management
插件安装完成后回到系统管理页面进行 Keychains and Provisioning Profiles Management 配置
选取拷贝到桌面的 login.keychain 文件以及相对应的 Provisioning Profile 文件,并upload
注意:开发证书和 Provisioning profile 一定要对应正确,不然命令行打包会认证不了而失败
3.2.1 设置 Keychains

Filename: 直接就是login.keychainPassword: 钥匙串密码Code Signing Identity: 证书名称(PS:这里可以填写多个证书名称,一般开发和生产2个就够了)。可在钥匙串中找到证书,直接复制名称进行粘贴)
3.2.2 设置 Provisioning Profiles

4.项目新建和设置
4.1 新建任务
点击首页 新建任务,然后选择 构建一个自由风格的软件项目
在通用选项里可进行一些描述信息填写和构建包丢弃计划(非必要设置)
4.2 源码管理
以 Git 为例,在源码管理中填写项目Git地址、相关密钥信息(https账户密码或ssh密钥)、指定分支名称
如果 Credentials 设置为 无 的话,会报错:
面板点击添加来设置 SSH
私钥查看命令:
$ cat ~/.ssh/id_rsa私钥填写包含
-----BEGIN OPENSSH PRIVATE KEY-----和-----END OPENSSH PRIVATE KEY-----
4.3 构建触发器

4.4 构建环境
选择 Keychains andProvisioning Profiles Management 和 Mobile Provisioning Profiles
4.5 构建
4.5.1 Shell
来到构建选项,先选择添加 执行shell,因为要通过 shell 先执行 pod install操作,当然如果你没有使用 cocoapods 或者你直接把第三方库文件都放在git的话可以忽略这一步

4.5.2 XCode
4.5.3 General build settings
4.5.4 Code signing & OS X keychain options
4.5.5 Advanced Xcode build options
5.问题集锦
5.1 pod: command not found
$ /bin/sh -xe /Users/Shared/Jenkins/tmp/hudson6502897316694164242.sh
+ pod install --verbose --no-repo-update
/Users/Shared/Jenkins/tmp/hudson6502897316694164242.sh: line 2: pod: command not found
Build step 'Execute shell' marked build as failure
出现这个问题可能是因为你没有设置pod的运行路径,解决方法如下:
- 打开Jenkins,然后在Jenkins左侧的菜单中找到系统管理—>系统设置—>全局属性,然后找到
Environment variables(中文:环境变量)并且勾选。 - 打开终端,在终端中输入
echo $PATH,终端会打印出一串字符串,几个路径,复制该路径,返回到Jenkins中 - 会让填写一个键值对,键默认填写
PATH,值填写你从终端复制的那个字符串,点击保存,完成,构建该项目。
5.2 Cloning spec repo cocoapods from …
配置execute 脚本拉取CocoaPods依赖的时候,不管是 pod install --verbose --no-repo-update 还是用 pod install,页面一直处于转圈圈状态,如下图所示:
等待很长时间之后报错如下:
这个问题可以进入所在文件夹通过pod repo add 方式来解决,或者手动拷贝过去
5.3 xcode-select: error: tool ‘xcodebuild’ requires Xcode…

这个问题是 Xcode 路径不对,在终端输入 sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer/ 解决
5.4 xcodebuild: error: ‘xxx.xcworkspace’ does not exist.

这个错误是说我们选择的项目路径,也就是需要打包的工作路径、文件不对,修改方法为: 在Jenkins项目配置里面,找到构建,点击增加构建步骤,选择 Advanced Xcode build options,找到Xcode Workspace File填写你的工作路径: /Users/Shared/.jenkins/workspace/Jenkins创建的项目/项目名称
5.5 Unable to unlock the keychain
security: SecKeychainUnlock /Users/Shared/Jenkins/Home/workspace/test/login.keychain: The user name or passphrase you entered is not correct.
FATAL: Unable to unlock the keychain.
Code signing & OS X keychain options 中 Keychains Path 和 Keychains password 不对导致的
5.6 Code Signing Error: There are no accounts registered with Xcode…
打包出现以下报错:
原因: 使用了错误的 Provisioning Profile
未完待续…