乐虎游戏|乐虎国际登录|欢迎你

iOS Jenkins自动化打包上传躺坑记

日期:2020-04-27编辑作者:计算机资讯

对此Jenkins的应用,本身是小白叁个,自个儿实施就是据守大神的篇章自个儿做了叁次尝试。本文首要说爱他美(Aptamil卡塔尔下在实行中碰着的坑。

  一说到自动打包很多人想到的就是jenkins,正好这段时间比较闲,我也研究了一下利用jenkins来自动打包上传蒲公英。
我看到网上有很多写Jenkins的文章,但是我发现我按照网上的文章步骤一步一步去弄还是踩了不少坑,费了不少劲,可能是每个人的项目情况背景不一样,所以碰到的问题,处理问题的方法也不一样吧。Jenkins安装网上有很多教程这里我就不说的,我就说说我自己的项目情况,及我在配置的过程中所遇到的问题及如何解决的。
 所以说这篇文章就建立在你已经装好了jenkins环境的基础上的。

图片 1图片 2

参谋文章:

花色情状:

  • cocopods代码处理
  • 码云源码管理
  • 上传小金英
  • Xcode9.2
  • 打包用的手动具名

1.1.1配置Provisioning Profiles

1、将/Users/管理员客户名/Library的MobileDevice文件夹拷贝到/Users/Shared/Jenkins/Library下;

/Users/Shared/Jenkins/Library/MobileDevice/Provisioning Profiles

/Users/HJDev/Library/MobileDevice/Provisioning Profiles

图片 3

1.新建配置流程

浏览器输入:http://localhost:8080 展开jenkins 输入jenkins账号密码

图片 4

显示器快速照相 2018-01-10 深夜3.35.47.png

点新建

图片 5

显示器快速照相 2018-01-10 下午3.37.36.png

输入你的项目名称,选取塑造二个自由风格的软件项目,然后确认,你就能够来到那么些页面:

图片 6

显示屏快速照相 2018-01-10 中午3.39.56.png

那边小编想非常提一下

图片 7

显示器快速照相 2018-01-10 早晨3.47.29.png

    general->源码管理->构建触发器->构建环境->构建->构建后操作 我们在执行构建的时候
是按这个顺序去执行的,所以当我们在构建的过程中只要前面的有错,后面的就不会再执行了,比
如我在源码管理这一块配置错了,那么我在构建的时候源码管理后面的就都不会再执行了,你解决
错误的时候就看源码管理的这块就行,执行到哪里有错我们就解决哪里的问题

一.General配置

general 里面都以有些平时性的设置,基本不须要做特殊的管理,不过大家在调整jenkins的进程中可能会营造很频繁(举例小编调通都创设了三百数12次,心塞~~),所以大家得以在甄选general 里面接收遗弃旧的创设

图片 8

显示器快速照相 2018-01-10 中午3.44.26.png

到那边General配置宗旨就这么多。

二.源码管理
源码大家先项目用的是码云的git管理,配置如下:

图片 9

E91D7454-7873-41A1-A5E3-BD9AB7E23D0E.png

选Git->git仓库地址(UCRUISERL卡塔尔国->验证(Credentials)->须要拉取的支行带啦(这里我拉取的是master代码),平日大家git管理有两种url地址,一种是git@*****.git格式的,一种是 ssh验证的法门丰富公钥私钥。具体操作如下:

  • 开发终端, 输入指令 cd ~/.ssh 步入.ssh文件下,然后输入:ssh-keygen -t rsa -C "账号",按下来按回车会现出给公钥起名,起过名之后再给公钥设置密码(假使无需设置密码直接按回车卡塔尔国,结果如下:
![](https://upload-images.jianshu.io/upload_images/5015143-d4dcc29473ee529e.png)

C8F46B07-3F9A-4C56-86FC-EAD3427BF877.png



然后ls ,我们就可以看到.ssh 问价夹下多了test跟test.pub两个文件



![](https://upload-images.jianshu.io/upload_images/5015143-8e5abf4c41435dd7.png)

屏幕快照 2018-01-11 上午10.03.09.png
  • 码云配置,登入码云,点设置->SSH公钥,增添标题,然后把刚刚生成的test.pub文件内容粘贴到公钥何地,确认,到此码云配置就OK了
![](https://upload-images.jianshu.io/upload_images/5015143-dfbc3f18b5bc228a.png)

B0C39F48-D55A-47EA-A641-768B25DD614D.png
  • jenkins配置。回到jenkins源码处理,为Git增多Credentials。点击Add:
![](https://upload-images.jianshu.io/upload_images/5015143-87d6077bd8bd591c.png)

屏幕快照 2018-01-11 上午10.15.07.png

Kind选择SSH Username with PrivateKey
,用户名可以自己看着填,将刚刚生成的test
文件内容(即私钥)粘贴到Key里面确认添加。源码管理到目前为止就差不多了,我们从git上下载源码的时候由于网速及其它因素,可能时间会比较长,但是Jenkins默认的克隆过期时间为10分钟,所以我们可以设置长一点,我这里设置了50分钟



![](https://upload-images.jianshu.io/upload_images/5015143-2448f888c95b3006.png)

屏幕快照 2018-01-11 上午10.22.02.png

三.塑造触发器

图片 10

显示屏快速照相 2018-01-11 凌晨10.39.21.png

自个儿这里安装的是天天6点到18点,每间距一钟头检查有未有源码更新塑造三遍,具体的你能够本人定义,网络有广大唇齿相依课程
jenkins构建触发器依期职责Build periodically和Poll SCM【转发】
四.创设蒙受
那块作者都以暗许的从未有过做取舍,因为自个儿的xcode配置,证书配置都是依附前边的脚本来完结的

图片 11

显示器快速照相 2018-01-11 早晨10.45.00.png

四.构建
点击增加营造步骤,实践脚本

图片 12

荧屏快速照相 2018-01-11 早上10.46.04.png

为了方便表明自己这里建了三个shell,第贰个shell是做pod操作,因为自身的代码是cocopods管理的,所以在下载完源码后先要实行pod install ,手艺一而再持续的打包上传

图片 13

7D7E7235-98FA-4043-B763-54EF5E2654CE.png

先cd到项目响应目录下,那些目录是Jenkins克隆源代码后的目录,然后施行pod install

 cd "${WORKSPACE}/XZXSchool"
 export LANG=en_US.UTF-8
 /usr/local/bin/pod install

其次个shell是打包上传相关的台本了

#钥匙串路径  这几句的意思是允许访问钥匙串,因为我们在打包的时候需要访问钥匙串 用里面的证书文件
KEY_PATH="/Users/Shared/Jenkins/Library/Keychains/login.keychain"
/usr/bin/security unlock-keychain -p ***(密码) ${KEY_PATH}
/usr/bin/security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k ***(密码) ${KEY_PATH}
/usr/bin/security set-keychain-settings ${KEY_PATH}
#工程名
APP_NAME="XZXSchool"
#目标名
##
CONFIGURATION="Release"
#证书
CODE_SIGN_DEVELOPER="iPhone Developer: **** (****)"
#info.plist路径
project_infoplist_path="${WORKSPACE}/XZXSchool/XZXSchool/Info.plist"
#取版本号
bundleShortVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" ${project_infoplist_path})
DATE="$(date +%Y%m%d)"
IPANAME="${APP_NAME}_V${bundleShortVersion}_${DATE}.ipa"
#要上传的ipa文件路径
IPA_PATH="${WORKSPACE}/ipa"
#rm -rf $IPAPATH
#mkdir -pv $IPAPATH
ARCHIVE_NAME="${APP_NAME}.xcarchive"
#workspace路径
WORKSPACE_PATH="${WORKSPACE}/XZXSchool/XZXSchool.xcworkspace"
#echo "+++++++++++++++++clean+++++++++++++++++"
#ExportOptions.plist文件生成,我们可以在Xcode中选好证书,按平时的流程手动打包,打包成功后会有一个ExportOptions.plist文件,我们将这个文件复制到下面这个相应目录下就行,然后我们的jenkins 就会自动打包一个跟我们手动打包的流程一样的IPA包
ExportOptionsPlistPath="${WORKSPACE}/ExportOptions/ExportOptions.plist"
xcodebuild -workspace ${WORKSPACE_PATH} -scheme "${APP_NAME}"  clean
#echo "+++++++++++++++++Build+++++++++++++++++"
xcodebuild -workspace ${WORKSPACE_PATH} -scheme "${APP_NAME}" -sdk iphoneos -configuration 'Release' CODE_SIGN_IDENTITY="${CODE_SIGN_DEVELOPER}" 
#echo "+++++++++++++++++Run+++++++++++++++++"
xcodebuild archive  -workspace ${WORKSPACE_PATH} 
                    -scheme ${APP_NAME} 
                    CFBundleVersion=${bundleShortVersion} 
                    -destination generic/platform=ios 
                    -archivePath ${IPA_PATH}/${ARCHIVE_NAME}               
xcodebuild -exportArchive -archivePath ${IPA_PATH}/${ARCHIVE_NAME}
                          -exportPath ${IPA_PATH}
                          -destination generic/platform=ios
                          -exportOptionsPlist ${ExportOptionsPlistPath}
                          -allowProvisioningUpdates




#蒲公英上的User Key

uKey="*****************"

#蒲公英上的API Key

apiKey="*******************"

#蒲公英密码

PASSWORD="********"

#MSG=git log -1 —pretty=%B

#执行上传至蒲公英的命令

echo "++++++++++++++upload+++++++++++++"

curl -F "file=@${IPA_PATH}/XZXSchool.ipa" -F "uKey=${uKey}" -F "_api_key=${apiKey}" -F "updateDescription=${MSG}" -F "password=${PASSWORD}" http://www.pgyer.com/apiv1/app/upload

难忘里面装有的路线都是jenkins目录下的品种路径。打包上传脚本大概正是那个。但大家写完后照旧开掘会报错

  • 问题1
    iOS编写翻译具名文件找不到

Check dependencies
Code Sign error: No codesigning identities found: No codesigning identities (i.e. certificate and private key pairs) that match the provisioning profile specified in your build settings
(“testxxxxx_Distribution_inhouse_01”) were found.

缘由是jenkins以jenkins客商地方运转,iOS项目编写翻译用的具名文件要从安装证书时的客户目录
~/Library/MobileDevice/Provisioning Profiles
拷贝到
/Users/Shared/Jenkins/Library/MobileDevice/Provisioning Profiles

  • 问题2
    iOS编写翻译证书找不到

Check dependencies
Code Sign error: No codesigning identities found: No codesigning identities (i.e. certificate and private key pairs) that match the provisioning profile specified in your build settings
(“testxxxxx_Distribution_inhouse_01”) were found.

没找到证件,打开“钥匙串访谈”,从“登入”拷贝安装的声明到“系统”下

  • 问题3
    User interaction is not allowed.

Signing Identity: "iPhone Distribution: ****************** Co., Ltd."
Provisioning Profile: "************"

/usr/bin/codesign --force --sign ************************************ --entitlements /Users/Shared/Jenkins/Home/workspace/****/build/**************.build/Release-iphoneos/*************.build/****.***.****--timestamp=none /Users/Shared/Jenkins/Home/workspace/********/build/Release-iphoneos/****.app

/Users/Shared/Jenkins/Home/workspace/*****/build/Release-iphoneos/****.app: User interaction is not allowed.
Command /usr/bin/codesign failed with exit code。

拷贝~/Library/Keychains/login.keychain到
Users/Shared/Jenkins/Library/Keychains/login.keychain

一时半刻先总计这么多,假如根据步骤还只怕有吗不懂的,不日常的,留言来看笔者会回复的

1.1.2 配置login.keychain文件

2、将/Users/管理员客户名/Library/Keychains/下的login.keychain及login.keychain-db那八个公文拷贝到/Users/Shared/Jenkins/Library/Keychains文件夹上面。

只顾:Mac OS 10.12以下的未有login.keychain-db那个文件,只需求拷login.keychain文件。

图片 14

事情发生前设置Jenkins使用的是官方网站的.pkg。那样的话会安装到 顾客/分享目录下。那样就能形成打包的时候找不到证书。

1.1.3 松开开荒证书与公布证书访问权限

设置开采证书与发表证书的访谈调节权限;

图片 15图片 16

化解办法:使用命令行安装。cd /Library 可在该路径实施相关命令。

1.1.4 上传login.keychain与ProvisioningProfile

2、在大局Keychains一项中upload刚刚拷贝的login.keychain与****Provisioning Profiles

iPhone Developer: ****

iPhone Distribution: China **** Co.,Ltd.

图片 17图片 18图片 19

在Mac OS上,证书其实是跟登录账号走的,也正是增加时,假如采用“登入”,则只会增加进该账号目录下的keychain中。针对Jenkins安顿,因为其会另创造贰个叫Jenkins的账户,借使发表证书是安装在近日账户时,营造会报错说找不到provisioning profile对应的证书,而当前帐号下的“钥匙串”中确定有其一评释。

此主题材料亟需登出当前Mac帐户,然后登录Jenkins帐号,然后重新扩张加证书,采用“登陆”类型,那样证书才会真的安装到jenkins帐号下,创设技能找到该证件。

参照随笔

1.2.1 CodeSigning Error: Provisioning profile "HJ_Dis" doesn't includesigning certificate "iPhone Distribution: China Dev Co., Ltd.".

构建报错:

Code Signing Error: Provisioningprofile "HJ_Dis" doesn't include signing certificate"iPhone Distribution: China Dev Co., Ltd.".

由来深入分析:

缘由在于Provisioning profile与具名证书没对应上,钥匙串中存在七个同名证书,应该只保留真正使用的那几个。

除此以外,还会有多个原因是Mac OS账号jenkins名下实际并不曾设置该证件,只是系统登入账号下安装了,而jenkins创设时是利用Jenkins帐号实行的,其名下找不到证书自然就报错了。

图片 20ssh配置样式图

2.1.1 设置工程SVN路线与账户

图片 21

微型机中ssh的浮动及查看形式:前往cd /Users/wangjiajia/.ssh 展开id_rsa.pub即可

2.1.2 指定Keychain与CodeSign

图片 22

在“源码管理”设置为None时,此处安装无效,须要在xcode工程中设置证书与provisioning pfrofile

图片 23

图片 24库房URL配置样式图

2.1.3 编写shell打包脚本

Xcode9以后只好经过shell脚本打包,而不能够经过Jenkins的xcode集成控件打包。

图片 25

在这之中打包类型是adhoc、dev可能app-store,是在剧本中plist文件中钦赐的,与工程中装置非亲非故。Provisioning profile也是在Jenkins中内定的,与工程安装无关。

包裹首借使xcodebuild命令,分为编译archive文件与导出ipa文件两步。编译archive时能够安装不一致scheme、target、configuration。

日前本人职业上将二个WorkSpace下的工程规划了7类target对应编写翻译差异意况App,蕴含:

多少个铺面景况包HJ_EntDev、HJ_EntPre、HJ_EntDis;四个App调节和测量试验情形包HJ_Dev、HJ_Pre、HJ_AppStore;三个Adhoc预公布包HJ_AdhocDis。

打包机器上脚本(注意要有换行连接符,不然会报CodeSign错误):

一旦是命令行测量试验,则要先步入其工程目录:

cd /Users/Shared/Jenkins/Home/workspace/IOS_Adhoc

Xcode9 xcodebuild export plist 配置

当有着配置没十分的意况下:实行营造的时候可能会现出 times out 的难点。此时在Jenkins中安装一下过期时间就好

2.2.1 Ent_Dev公司测量检验包脚本

包裹脚本:

IPANAME="HJ_EntDev"

security set-key-partition-list -Sapple-tool:,apple:,codesign: -s -k hjdev ~/Library/Keychains/login.keychain-db

xcodebuild -archivePath"./build/${IPANAME}-iphoneos/hjdev.xcarchive"

-workspace "hjdev.xcworkspace" -sdk iphoneos-scheme "${IPANAME}"

-configuration "Release" archive

xcodebuild -exportArchive -archivePath"./build/${IPANAME}-iphoneos/hjdev.xcarchive"

-exportPath "./build/${IPANAME}" -exportOptionsPlist "../hjEntDisExportOptions.plist"

-allowProvisioningUpdates

上传兔拳头菜脚本:

IPANAME="HJ_EntDev"

curl -F "file=@./build/${IPANAME}/${IPANAME}.ipa" -F "uKey=05cac7a8d17b3265d0fb3fda30b66751" -F "_api_key=d25e34087622e5c01d8810c328c125ee"

图片 26

图片 27拉替代码超时时间设置

2.2.2 adhoc包脚本

包装脚本:

IPANAME="HJ_AdhocDis"

securityset-key-partition-list -S apple-tool:,apple:,codesign: -s -k hjdev ~/Library/Keychains/login.keychain-db

xcodebuild-archivePath "./build/${IPANAME}-iphoneos/hjdev.xcarchive"

-workspace"hjdev.xcworkspace" -sdk iphoneos -scheme "${IPANAME}"

-configuration"Release" archive

xcodebuild-exportArchive -archivePath"./build/${IPANAME}-iphoneos/hjdev.xcarchive"

-exportPath"./build/${IPANAME}"

-exportOptionsPlist"../HJAdhocDisExportOptions.plist"

-allowProvisioningUpdates

上传小金英脚本:

IPANAME="HJ_AdhocDis"

curl -F "file=@./build/${IPANAME}/${IPANAME}.ipa"

-F"uKey=05cac7a8d9865f0bd0fb3fda30b66751" -F "_api_key=d25e3403921985c01d8810c328c125ee"

本文由乐虎游戏发布于计算机资讯,转载请注明出处:iOS Jenkins自动化打包上传躺坑记

关键词:

Xcode 9.2打包或者调试,iOS 8.2~iOS8.0的系统加载图片扭曲

场景:1、Xcode 9.2调治真机,打包测量检验,或许打包上线2、当前调节和测验的是iOS8.2真机,5S ,iOS8.1模拟器的相干机...

详细>>

【ag娱乐平台】项目常见的文件

这个系列主要写一些平时ios开发和学习过程中所记录的问题、随笔和解决方法,我会尽量用更多的截图或者gif图来还...

详细>>

Homebrew - macOS 缺点和失误的软件包微处理机

官网: 很好用的包管理工具! 安装 Homebrew 获取 Homebrew /usr/bin/ruby -e "$(curl -fsSL)" /usr/bin/ruby -e "$(curl -fsSL)" 将以上命令粘...

详细>>

4.3 多线程进阶篇<中>(GCD),4.3gcd

Hello, World!Endtask11!----NSThread: 0x1758fe10{number = 2,name = }task33!-----NSThread: 0x17673220{number = 3, name =}task44!-----NSThread: 0x1758fe10...

详细>>