Jenkins --- iOS自动化打包

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/用户名/LibraryMobileDevice 文件夹拷贝到 /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权限

  1. 进入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.keychain
  • Password: 钥匙串密码
  • 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 ManagementMobile 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的运行路径,解决方法如下:

  1. 打开Jenkins,然后在Jenkins左侧的菜单中找到系统管理—>系统设置—>全局属性,然后找到 Environment variables(中文:环境变量)并且勾选。
  2. 打开终端,在终端中输入 echo $PATH,终端会打印出一串字符串,几个路径,复制该路径,返回到Jenkins中
  3. 会让填写一个键值对,键默认填写 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 optionsKeychains PathKeychains password 不对导致的

5.6 Code Signing Error: There are no accounts registered with Xcode…

打包出现以下报错:

原因: 使用了错误的 Provisioning Profile

未完待续…

本文作者:Rui
发布时间:2021-03-19, 20:36:33
原始链接:https://wrf8.github.io/posts/1870901654.html
版权声明:转载请保留原文链接及作者。

×

喜欢就点赞,疼爱就打赏