前言:自动化打包根本目的是为了节约时间,把重复且无技术含量的事情交给机器去做。Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作。搭建Jenkins前,请确认mac系统上已经搭建好了Java环境

一、Jenkins安装

打开Jenkins官网下载最新的pkg安装包(选择Mac OS)。安装完成之后,Safari可能会自动打开,如果没有自动打开,打开浏览器,输入http://localhost:8080。

这时候可能出现这个页面,这个问题的原因就是Java环境有问题,需要重装Java环境。下载Java的JDK

一般会有2个版本可选,选一个下载即可,下载完安装后打开终端,cd进入到jenkins.war包所在目录,执行以下命令:

$ java -jar jenkins.war --httpPort=8080

httpPort指的就是Jenkins所使用的http端口,这里指定8080(默认的就是这个),可根据具体情况来修改。待Jenkins启动后,在浏览器页面输入以下地址:http://localhost:8080这样就可以打开Jenkins管理页面了。

如果已经安装完java环境,则显示:

输入终端命令:

hujintaodeMacBook-Pro:~ MengYu$ sudo su

使用vim编辑,并复制密码 0b4e9c1d8524401182338a4d63612ae3

Password:
sh-3.2# vim /Users/Shared/Jenkins/Home/secrets/initialAdminPassword
[1]+  Stopped(SIGTSTP)        vim /Users/Shared/Jenkins/Home/secrets/initialAdminPassword

创建你的账号信息

安装成功~

二、拷贝文件

2.1

/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/MengYu/Library/MobileDevice/ /Users/Shared/Jenkins/Library/MobileDevice/

注意:曾遇到/Users/xxx/Library/下没有MobileDevice文件夹,原来是新机上没有安装Xcode。

2.2

/Users/用户名/Library/Keychains/下的login.keychain及login.keychain-db这两个文件拷贝到/Users/Shared/Jenkins/Library/Keychains文件夹下面

注意:Mac OS 10.12以下的没有login.keychain-db这个文件,只需要拷贝login.keychain文件。

在终端输入:

cd /Users/Shared/Jenkins/Library/
sudo mkdir Keychains
sudo cp /Users/MengYu/Library/Keychains/login.keychain ./Keychains/
sudo cp /Users/xxx/Library/Keychains/login.keychain-db ./Keychains/

再将这个login.keychain拷贝到桌面上

在终端输入

sudo cp /Users/MengYu/Library/Keychains/login.keychain ~/Desktop/

注意:如果/Users/xxx/Library/Keychains/目录下没有login.keychain这个文件,就复制login.keychain-db文件到指定目录,然后将复制在桌面上的该文件改后缀为.keychain。

三、修改钥匙串权限、~/Library权限以及电脑用户管理权限

3.1

打开钥匙串,找到相应的证书

右键密钥显示简介,在访问控制那一项里勾选允许所有应用程序访问此项目,并存储更改。

3.2

找到Library资源库文件夹,显示简介,设置共享与访问权限,everyone读与写都可以

3.3

进入mac系统偏好设置 — 用户与群组 — 其他用户 — jenkins ,勾选允许用户管理这台电脑,并右键选择高级选项,将名字改为jenkins

四、Jenkins插件及系统设置(Keychains和证书配置)

4.1进入管理插件,在可选插件里所有关键字,下载安装插件Keychains and Provisioning ProfilesManagement和 Xcode integration

点击系统管理,并 添加插件 Keychains(钥匙串插件)

4.2 login.keychain和证书配置

如何导出Xcode自动生成的Provisioning Profiles文件

1.打开终端输入下列命令,回车,进入到Xcode管理的.mobileprovision文件目录

#whoami 命令读取系统用户名
cd /Users/`whoami`/Library/MobileDevice/Provisioning\ Profiles/

2.通过BundleId 递归查找.mobileprovision文件,两个:一个development ,一个distribution版本

-r递归查找,因为.mobileprovision是一个二进制文件,不加会报错
-l只显示文件名

grep -r -l com.tencent.xin .

3.如何区分dev和dis

继续输入下面的代码,会打开Finder并选中文件。选中这个文件后,按空格键,会生成mobileprovision文件的预览窗口,里面会显示对应的信息,仔细找一下就能区分了

open -R ./5b857e06-f2ed-4256-88a3-0d7847e34371.mobileprovision

4.显示详细的预览信息

security cms -D -i ./5b857e06-f2ed-4256-88a3-0d7847e34371.mobileprovision

打印结果如下,是一个XML文件,如果有ProvisionedDevices字段(设备列表),说明是dev版本的,dis版本的没有这个字段。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict><key>AppIDName</key><string>aaa</string><key>ApplicationIdentifierPrefix</key><array><string>X9ASDF2345</string></array><key>CreationDate</key><date>2018-02-03T14:19:45Z</date><key>Platform</key><array><string>iOS</string></array><key>DeveloperCertificates</key><array><data>MIIFmjCCBIKgAwIBA..省略
</array><key>Entitlements</key><dict><key>keychain-access-groups</key><array><string>X9ASDF2345.*</string>       </array><key>get-task-allow</key><true/><key>application-identifier</key><string>X9ASDF2345.com.xxxx.aaa</string><key>com.apple.developer.team-identifier</key><string>X9ASDF2345</string></dict><key>ExpirationDate</key><date>2019-02-03T14:19:45Z</date><key>Name</key><string>iOS Team Provisioning Profile: com.xxxx.aaa</string><key>ProvisionedDevices</key><array><string>6126203adse3dbab4012374e5c01e2a497b9aa66</string></array><key>TeamIdentifier</key><array><string>X9SABCD345</string></array><key>TeamName</key><string>xiaoming</string><key>TimeToLive</key><integer>365</integer><key>UUID</key><string>5b857e06-f2ed-4256-88a3-0d7847e34371</string><key>Version</key><integer>1</integer>
</dict>

选取拷 在桌上login.keychain以及项 相对应的Provisioning Profile 并upload, 可以导入多个, 且应该是/Users/Shared/Jenkins/Library/MobileDevice/Provisioning Profiles目录下的provisioningProfile.

注意:开发证书和provision profile 一定要对应正确,不然命令行打包会认证不了而失败

password 一定要填写正确的钥匙串的密码

Code Signing Identity 是从钥匙 找到相应的证书,然后显示简介复制 来,这 Identities 少要填 两项,是因为这 放 个的话后 的设置 Code Signing Identity 能 动对应上。

Provisioning Profiles Directory Path 这 项 填写/Users/用户名/Library/ MobileDevice/Provisioning Profiles

注意:路径里Provisioning Profiles是Provisioning\ Profiles

此外,Xcode工程必须手动配置证书,并取消自动配置证书

五、开始构建打包任务

5.1点击新建任务,填写名字,选择自由风格,点击确定进行创建

5.2添加源码管理工具和SVN仓库地址,这里使用Subversion 进行管理,仓库地址去掉@和昵称-xxx@

添加构建者并且Add设置为Jenkins

添加账号:

5.3.构建触发器配置

配置为每五分钟自动打包一次

5.4构建环境勾选Keychains和Mobile Provisioning Profiles.

5.5增加构建步骤,执行Shell

Shell脚本如下:

a.自动配置证书的Shell脚本

#——————————————自动证书 ————————————————
# 工程名
APP_NAME="TEST"
# 证书
CODE_SIGN_DISTRIBUTION="iPhone Distribution: ZheXinIT (MZJ4H7VF63)"
# info.plist路径
project_infoplist_path="./${APP_NAME}/Info.plist"#取版本号
bundleShortVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" "${project_infoplist_path}")#取build值
bundleVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleVersion" "${project_infoplist_path}")DATE="$(date +%Y%m%d)"
IPANAME="${APP_NAME}_V${bundleShortVersion}_${DATE}.ipa"#要上传的ipa文件路径
IPA_PATH="$HOME/Desktop/iPAs/${IPANAME}"
echo ${IPA_PATH}
echo "${IPA_PATH}">> text.txt# 下面2行是没有Cocopods的用法
echo "=================clean================="
xcodebuild -target "${APP_NAME}"  -configuration 'Release' cleanecho "+++++++++++++++++build+++++++++++++++++"
xcodebuild -target "${APP_NAME}" -sdk iphoneos -configuration 'Release'  SYMROOT='$(PWD)'xcrun -sdk iphoneos PackageApplication "./Release-iphoneos/${APP_NAME}.app" -o ~/Desktop/iPAs/"${IPANAME}"# 设置上传到 Fir
FIRTOKEN="6815935ea0c92e69d30793d7f81a26f2"fir l ${FIRTOKEN}
fir p ${IPA_PATH}

b.手动配置证书的Shell脚本

# 工程名---- 手动证书
APP_NAME="TEST"
# 证书
CODE_SIGN_DISTRIBUTION="iPhone Distribution: ZheXinIT (MZJ4H7VF63)"
# info.plist路径
project_infoplist_path="./${APP_NAME}/Info.plist"#取版本号
bundleShortVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" "${project_infoplist_path}")#取build值
bundleVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleVersion" "${project_infoplist_path}")DATE="$(date +%Y%m%d)"
IPANAME="${APP_NAME}_V${bundleShortVersion}_${DATE}.ipa"#要上传的ipa文件路径
IPA_PATH="$HOME/Desktop/iPAs/${IPANAME}"
echo ${IPA_PATH}
echo "${IPA_PATH}">> text.txt# 下面2行是没有Cocopods的用法
echo "=================clean================="
xcodebuild -target "${APP_NAME}"  -configuration 'Release' cleanecho "+++++++++++++++++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 ~/Desktop/iPAs/"${IPANAME}"# 设置上传到 Fir
FIRTOKEN="6815935ea0c92e69d30793d7f81a26f2"fir l ${FIRTOKEN}
fir p ${IPA_PATH}

5.6构建后步骤

可以发送邮件、上传蒲公英等操作

然后保存,应用。

转载于:https://www.cnblogs.com/StevenHuSir/p/iOS_Jenkins_Package.html

iOS-Jenkins自动化打包集成相关推荐

  1. iOS Jenkins自动化打包 上传fir、蒲公英、邮件、钉钉提醒

    一.环境配置 注意,本文章是以Jenkins2.263.4为例 1.首先安装Java环境:官网下载地址 2.安装Jenkins 建议下载Jenkins 2.263.4版本,因为最新版本存在login. ...

  2. iOS Jenkins自动化打包

    最近测试打包实在烦的不要不要的,一天打N多个包.这样之后,让测试小哥哥小姐姐自己操作就行了. Jenkins houjianan:~> brew install Jenkins Updating ...

  3. iOS - mac环境Jenkins自动化打包并上传蒲公英分发从0到1详细搭建过程,自我的实践记录

    第一过程 :  环境的相关配置条: 0. mac 电脑,系统版本为为 10.14.5 1. 升级ruby环境: 我用的是  rvm 1.29.9,可在终端 用  rvm -v 查看当前版本. 2. 安 ...

  4. gitlab+jenkins自动化打包APK

    前置条件: 环境搭建,jenkins需要的插件看这里: gitlab+jenkins自动化打包IOS 配置思路: step1: 搭建sdk,gradle运行环境,参照: CentOS7下安装安装and ...

  5. Android jenkins 自动化打包

    前言:前段时间因项目需要捣拾了一下Jenkins自动化打包,过程中遇到了很多的坑,在此记录一下.因为这篇博客是之后写的,所以有些具体的坑就不能回显了. 一,实现的功能 选择版本号,git 分支,渠道, ...

  6. 跨平台应用开发进阶(十一) :uni-app 实现IOS原生APP-云打包集成极光推送(JG-JPUSH)详细教程

    文章目录 一.前言 二.资源 三.集成 四.遇到的问题及解决措施 4.1 IOS开发者证书无推送权限 4.2 manifest中并没有配置push模块.但云端打包ios就是一直报Code Signin ...

  7. Android-使用Jenkins自动化打包详解-Linux篇

    文章目录 购买和使用阿里云 安装宝塔面板 安装Tomcat 安装 jenkins 配置jenkins 设置FTP jenkins 常规操作 修改admin密码 购买和使用阿里云 首先购买阿里云,可从以 ...

  8. iOS开发-自动化打包Jenkins集成

    前言 自动化打包根本目的是为了节约时间,把重复且无技术含量的事情交给机器去做.Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件 ...

  9. Jenkins自动化打包iOS配置流程

    前提条件:Mac系统,并且已经安装xcode,homedrew,Java,如果项目工程中集成了cocoapod,也需要安装cocoapod Jenkins打包方式分为两种,一种是xcode插件化配置打 ...

最新文章

  1. 王贻芳院士:我们的科技管理过度强调竞争,缺乏稳定支持
  2. 量子力学工具箱再添利器—科学家提出高效驱动微型引擎概念
  3. golang的channel使用
  4. Java CopyOnWriteArrayList
  5. nginx多进程,日志不乱序
  6. tensorflow从入门到精通100讲(六)-在TensorFlow Serving/Docker中做keras 模型部署
  7. linux查看文件夹目录大小
  8. 2021计算机专业考408的学校,2021考研:计算机考研408是什么?统考学校有哪些?...
  9. linux性能监控sar命令详解
  10. iQOO 5今日发布:厚度/重量揭晓 5G手机也能够轻薄
  11. u-boot移植随笔:System.map文件格式
  12. Activity使用Intent启动另一个Activity
  13. 如何清空c盘只剩系统_c盘怎么清理到最干净只保留系统,教你如何给C盘减肥
  14. html5 横向溢出隐藏,溢出:隐藏的HTML5视频
  15. Function与函数
  16. oracle中12560,请问Oracle错误 了,ORA-12560该如何解决?
  17. IDEA中报错:java: -source 1.5 中不支持静态接口方法调用
  18. android x86 v2ex,v2ex签到脚本改进 - 就爱阅读网
  19. 从“吉德林法则”看错题本的正确整理方法
  20. 计算机的定义以及发展史

热门文章

  1. Android 获取App可用内存
  2. 回溯法专题--回溯法总结
  3. 参与 Spring 4 中文文档翻译
  4. stm32使用串口进行通讯之发送数据
  5. 学习笔记_关于switch在whlie中无限循环的解决办法_C语言
  6. delphi操作webbrowser htmldocument,操作web界面
  7. 氢os android8,最新!氢OS 11正式发布:颠覆安卓流畅体验,一加 8 系列抢先尝鲜...
  8. 以民法典为契机构建数字经济竞争规则
  9. 实验-笔墨”的表现力感受实验-评价十二个”一“的各种感受-文献综述
  10. k8s部署weave scope可视化工具