流程

1、配置Java环境

2、安装Jenkins

3、Jenkins配置

具体操作

1、安装JDK和配置java环境

参考:[java环境配置]https://www.jianshu.com/p/964bdfeb9465

注意:java需要安装8.0版本

2、Jenkins安装

参考:[Jenkins安装]https://www.jianshu.com/p/41ecb06ae95f

[Jenkins官网下载地址]https://jenkins.io/

注意:安装好Jenkins后需要启动Jenkins

jenv use java 1.8 (切换java版本)

cd Jenkins安装目录

java -jar jenkins.war

3、Jenkins配置(重点)

一、git源码管理

Repository URL:填写git clone的地址

Credentials:手动添加

注意1:这里的ssh配置,需要填写的是Jenkins用户下面创建的ssh key,Jenkins上面的配置以及git上的配置都需要填写Jenkins用户下生成的ssh key

切换账号可以使用“su 账号名”进行切换

注意2:如果项目下有子模块,需要配置Additional Behaviours

选择Recursively update submodules,

避免项目拉取超时,需要设置Timeout (in minutes) for submodules operations:60min

二、配置login.keychain文件

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

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

三、配置配置Provisioning Profiles

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

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

/Users/用户/Library/MobileDevice/Provisioning Profiles

注意:在Mac OS上,证书其实是跟登陆账号走的,也就是添加时,如果选择“登陆”,则只会添加进该账号目录下的keychain中。针对Jenkins部署,因为其会另创建一个叫Jenkins的账户,如果发布证书是安装在当前账户时,构建会报错说找不到provisioning profile对应的证书,而当前帐号下的“钥匙串”中明明有这个证书。

此问题需要登出当前Mac帐户,然后登录Jenkins帐号,然后再次添加证书,选择“登录”类型,这样证书才会真正安装到jenkins帐号下,构建才能找到该证书。

[参考]https://www.jianshu.com/p/6a3a009da35b

四、配置ExportOptions.plist文件

因为 Xcode 9 默认不允许访问钥匙串的内容,必须要设置 allowProvisioningUpdates 才会允许,Jenkins的Xcode插件目前无法支持此项完成打包流程。

打包一次即可导出即可生成ExportOptions.plis文件,将ExportOptions.plis添加到本地一个固定的位置,然后在脚本中配置

五、图文配置实例

1、git仓库配置

1.jpg

2、添加Credentials

2.jpg

3、子模块拉取以及拉取超时时间设置

3.jpg

六、配置shell

pwd
ls
#pod install --repo-update
security unlock-keychain -p "*23***"#用户账号密码
xcodebuild clean
xcodebuild archive -archivePath ~/RainbowSix/RainbowSix.xcarchive -workspace ./RainbowSix.xcworkspace -scheme RainbowSix
xcodebuild -exportArchive -archivePath ~/RainbowSix/RainbowSix.xcarchive -exportPath ~/RainbowSix.ipa -exportOptionsPlist ~/RainbowSix/ExportOptions.plist
pwd
ls
cd ~/RainbowSix.ipa #ipa包地址
IPA_PATH=`pwd`/RainbowSix.ipa
curl -F "file=@${IPA_PATH}" -F "uKey=42c5afe1c2a3baadce2e415e4fc85***" -F "_api_key=7df3e23ca32b2f979e6e7d6165eb5***" https://qiniu-storage.pgyer.com/apiv1/app/upload