- 前序步骤:
一、《MAC Jenkins安装》
实验步骤
1.安装Xcode(不做赘述)
2.Jenkins安装插件: Xcode integration
1.png3.Jenkins安装插件: Keychains and Provisioning Profiles Management
2.png4.git shhkey 配置(有的同学可跳过,按照初学者来写的)
终端输入:
ssh-keygen -t rsa -C"邮箱"
ssh-add ~/.ssh/id_rsa
cat /Users/用户名/.ssh/id_rsa.pub
尝试使用一下
- 错误一: unable to get local issuer certificate
- 终端输入命令去掉git的ssl验证: git config --global http.sslVerify false
复制公钥至GIT
4.png私钥复制,待会儿有用
终端输入:
cat /Users/用户名/.ssh/id_rsa
5.新建自由风格JOB
5.png6.配置git
输入第4步拿到的私钥
6.png保存,注意使用.git地址
7.png7.配置证书
先将证书导入钥匙串
将/Users/用户名/Library/MobileDevice文件夹拷贝到/Users/Shared/Jenkins/Library
将/Users/用户名/Library/Keychains/下的login.keychain及login.keychain-db这两个文件拷贝到/Users/Shared/Jenkins/Library/Keychains文件夹下面(我在10.13上有这两个文件,而10.14上只有-db文件,将-db改为db,在将两个文件拷贝)
8.上传证书
回到jenkins,选择Keychains and Provisioning Profiles Management插件进行配置
选择profile和login.db文件进行上传,需要几个证书就需要多少profile文件
Code Signing Identity 可以在钥匙串-证书-右键简介查看
Provisioning Profiles Directory Path为
/Users/Shared/Jenkins/Library/MobileDevice/Provisioning Profiles
9.png
9.继续配置JOB
勾选Keychains and Code Signing Identities、Mobile Provisioning Profiles选择对应证书,直接保存。
10.png10.继续配置脚本
11.png参考脚本:
#!/bin/sh
# appName
export K_APP_NAME=""
# 项目名称
export K_PROJECT_NAME=""
# xcodeproj
export K_XCODEPROJ_NAME=".xcodeproj或.xcworkspace"
# project
export K_PROJECT_WORKSPACE_NAME="project"
# scheme名称
export K_SCHEME=""
# 编译类型(用于区分发布还是AdHoc模式,可以忽略)
export K_BUILD_TYPE="Development"
# 编译配置(主要根据自己的多环境进行配置,比如Release,Debug等)
export K_CONFIGURATION="Release"
# 包名前缀
export K_IPA_PREFIX=""
# 包类型
export K_IPA_TYPE="_alpha_"
# export
export K_EXPORT="export"
# Resources
export K_RESOURCES="Resources"
# xcode环境
export XCODE=/usr/bin
# 项目workspace
export K_WORK_SPACE=$WORKSPACE/$K_PROJECT_NAME/$K_XCODEPROJ_NAME/$K_PROJECT_WORKSPACE_NAME.xcworkspace
# 工程目录
export K_PRO_SPACE=$WORKSPACE/$K_PROJECT_NAME
# info.plist路径
export K_PROJECT_INFOPLIST_PATH=$WORKSPACE/$K_PROJECT_NAME/$K_APP_NAME/$K_RESOURCES/项目名-Info.plist;
# cd 工程目录
cd $K_PRO_SPACE
# 获取当前版本号
export K_VERSION_PRO=`/usr/bin/agvtool mvers -terse1`
# 取build值
export K_BUILD_VERSION=$(/usr/libexec/PlistBuddy -c "print CFBundleVersion" ${K_PROJECT_INFOPLIST_PATH})
# ExportOptions位置
export ExportOptionsPlistPath=/Users/用户/Desktop/项目名-Release/ExportOptions.plist
# 包释放根目录
export K_DIST_ROOT_PATH=/Users/用户/Desktop/项目名-Release
# 获取时间
export K_JENKINS_TIME=`date +%Y%m%d%H%M`
# 包/时间
export K_DIST_PATH=$K_DIST_ROOT_PATH/$K_JENKINS_TIME
# xcarchive文件
export K_ARCHIVE_PATH=$K_DIST_PATH/$K_APP_NAME.xcarchive
# 导出目录
export K_EXPORT_PATH=$K_DIST_PATH/$K_EXPORT
# 包命名规则示范:
export K_IPA_NAME=$K_IPA_PREFIX$K_VERSION_PRO$K_IPA_TYPE$K_BUILD_VERSION"_"$K_JENKINS_TIME
###############################################################################################################
# 目录判断
if [ ! -d $K_DIST_ROOT_PATH ];
then
mkdir $K_DIST_ROOT_PATH
fi
if [ ! -d $K_DIST_PATH ];
then
mkdir $K_DIST_PATH
fi
# 解锁钥匙串
# security unlock-keychain -p "电脑密码" ~/Library/Keychains/login.keychain-db
# clean
$XCODE/xcodebuild clean -workspace $K_WORK_SPACE -destination generic/platform=iOS -scheme $K_SCHEME -configuration $K_CONFIGURATION -quiet
# build
$XCODE/xcodebuild build -workspace $K_WORK_SPACE -destination generic/platform=iOS -scheme $K_SCHEME -configuration $K_CONFIGURATION -quiet
# archive
$XCODE/xcodebuild archive -archivePath $K_ARCHIVE_PATH -workspace $K_WORK_SPACE -destination generic/platform=iOS -scheme $K_SCHEME
$XCODE/xcodebuild -exportArchive -archivePath $K_ARCHIVE_PATH -exportPath $K_EXPORT_PATH -exportOptionsPlist $ExportOptionsPlistPath -allowProvisioningUpdates
cd $K_DIST_PATH
# 移除打包生成的.xcarchive文件
rm -rf 项目名.xcarchive
cd $K_DIST_PATH/$K_EXPORT
# 重命名包文件
mv 项目名.ipa $K_IPA_NAME.ipa
echo $K_IPA_NAME
# 包本地路径
export K_APP_PATH=$K_DIST_PATH/$K_EXPORT/$K_IPA_NAME.ipa
echo $K_APP_PATH
# svn上传
svn import -m "Jenkins upload ipa" $K_APP_PATH http://用户名@上传目录/$K_IPA_NAME.ipa --username 用户名 --password 密码
11.构建一次
12.png- 失败了查看控制台输出日志
错误原因:Failed to copy /Users/Shared/Jenkins/Home/kpp_upload/ 拷贝描述文件失败了。
开放Jenkins下面Library权限,参照MAC Jenkins安装》第一步。
再跑一次,结果如下:
错误:Command CodeSign failed with a nonzero exit code 签名失败。
修正: 打开钥匙串,设置证书可信任或者打开xcode,在对应项目上signing & Capabilities签名栏设置信任配置
重新做一次第七步,也就是替换login.keychain ,然后在 Keychains and Provisioning Profiles Management重新上传login.keychain
再次构建,就可以了
注意我这里导出的包放在了桌面,把desktop读写权限也开一下。
我的打包执行后包存放目录
14.png- 如果还报错Command CodeSign failed with a nonzero exit code
可以尝试把脚本中的打开钥匙串代码放开注释
- 2020-04-23补充
如果更换了证书,在进行打包导出的时候需要更换ExportOption.Plist文件
网友评论