今天项目经理说让APP端做一下用Jenkins做持续集成,因为之前没有做过,所以就开始了解,终于在键哥的帮助下,完成了持续集成的功能,感动的不行,在这里感谢键哥。
因为公司的Jenkins是搭建好的,接下来我就直接上配置过程了。
由于公司的Jenkins的环境不是在Mac上的,所以要做自动集成打包的话,就只能把agent(节点)设置到我自己的电脑了,创建agent的过程如图。
其中远程工作目录就是你本地的Jenkins的安装路径。
接下来就是在Jenkins中新建项目了,点击新建,然后选择创建自由风格项目
接下来进入项目配置:
首先要配置的在元数据中配置,指定要运行工程的节点为我们之前创建的节点
然后在源码管理中设置源码管理方式,git地址以及认证方式,同时指定要build的分支
接下来就是构建触发器的设置,在这里设置自动构建的时间
然后就到重点了,添加构建的shell脚本
shell脚本如下
#!/bin/sh### 配置定义PROJECT_NAME="项目名称" ### ipa打包的路径 $(WORKSPACE)表示工作空间路径下ipaPath="${WORKSPACE}/ipa"### archive的路径xcarchivePath="${WORKSPACE}/xcarchive"CONFIGURATION="Release"### develop 分支描述文件#PROFILE_NAME="InHouse_loanCustomer"### master 分支描述文件#PROFILE_NAME="FinupCredit-Development"PROFILE_NAME="FinupPlatform_Adhoc"### 指定ipa名称IPAFILE_NAME="${PROJECT_NAME}_${BUILD_NUMBER}.ipa"# unlock login keygen#security unlock-keychain -p ${KEYCHAIN_PASSWORD} ${KEYCHAIN_PATH} || failed "unlock-keygen"# cleanecho "xcodebuild clean"xcodebuild clean -workspace ${WORKSPACE}/${PROJECT_NAME}/${PROJECT_NAME}.xcworkspace -scheme ${PROJECT_NAME} -configuration ${CONFIGURATION} || failed "xcodebuild clean"# archiveecho "xcodebuild archive"xcodebuild archive -workspace ${WORKSPACE}/${PROJECT_NAME}/${PROJECT_NAME}.xcworkspace -scheme ${PROJECT_NAME} -configuration ${CONFIGURATION} -destination generic/platform=iOS -archivePath ${xcarchivePath}/${IPAFILE_NAME}.xcarchive || failed "xcodebuild archive"# export ipaecho "xcodebuild exportArchive"xcodebuild -exportArchive -archivePath ${xcarchivePath}/${IPAFILE_NAME}.xcarchive -exportPath ${ipaPath}/${IPAFILE_NAME} -exportOptionsPlist ${WORKSPACE}/options.plist -verbose || failed "xcodebuild export archive" #-exportFormat ipa \ #-exportProvisioningProfile ${PROFILE_NAME} \ #-verbose \# run sonar#pushd ${WORKSPACE}/iphone/${PROJECT_NAME}#./run-sonar.sh#popd
设置好脚本之后就可以构建了。
然而到这里还是有问题,好像是在XCode9之后在命令行打包需要额外的options.plist文件,这个文件要放到与工程的同级目录下
options.plist如下
<?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>compileBitcode</key> <true/> <key>method</key> <string>ad-hoc</string> <!-- 描述文件 --> <key>provisioningProfiles</key> <dict> <key>*****</key> <string>****</string> </dict> <key>signingCertificate</key> <string>iPhone Distribution</string> <key>signingStyle</key> <string>manual</string> <key>stripSwiftSymbols</key> <true/> <!-- 团队id --> <key>teamID</key> <string>团队id</string> <key>thinning</key> <string><none></string></dict></plist>
至此就可以执行构建了