brew install jenkins-lts
Execute shell
rm -rf build
/usr/bin/xcodebuild clean archive -archivePath build/XXXX.xcarchive -scheme XXXX -workspace XXXX.xcworkspace -configuration ${BUILD_TYPE}
/usr/bin/xcodebuild -exportArchive -archivePath "build/XXXX.xcarchive" -exportOptionsPlist Development-ExportOptions.plist -exportPath build/
#/usr/bin/xcodebuild -exportArchive -archivePath "build/XXXX.xcarchive" -exportOptionsPlist Distribution-ExportOptions.plist -exportPath build/
BundleVersion=`/usr/libexec/PlistBuddy -c "print CFBundleVersion" XXXX/Info.plist`
BundleShortVersionString=`/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" XXXX/Info.plist`
ssh username@xxx.xxx.xxx.xxx "mkdir -p /xxxx/jenkins-result/${JOB_NAME}/${BUILD_NUMBER}"
ssh username@xxx.xxx.xxx.xxx "mkdir -p /xxxx/jenkins-result/${JOB_NAME}/${BUILD_NUMBER}/XXXX.xcarchive"
scp ${WORKSPACE}/build/XXXX.ipa username@xxx.xxx.xxx.xxx:/xxxx/jenkins-result/${JOB_NAME}/${BUILD_NUMBER}/XXXX_${BRANCH}_${BundleVersion}_${BundleShortVersionString}_${BUILD_NUMBER}_${BUILD_TYPE}.ipa
scp -r ${WORKSPACE}/build/XXXX.xcarchive/BCSymbolMaps/ username@xxx.xxx.xxx.xxx:/xxxx/jenkins-result/${JOB_NAME}/${BUILD_NUMBER}/XXXX.xcarchive/
#生成install.manifest.plist
echo "<?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>items</key>
<array>
<dict>
<key>assets</key>
<array>
<dict>
<key>kind</key>
<string>software-package</string>
<key>url</key>
<string>https://xxx.xxx.xxx/jenkins-result/${JOB_NAME}/${BUILD_NUMBER}/XXXX_${BRANCH}_${BundleVersion}_${BundleShortVersionString}_${BUILD_NUMBER}_${BUILD_TYPE}.ipa</string>
</dict>
<dict>
<key>kind</key>
<string>display-image</string>
<key>needs-shine</key>
<true/>
<key>url</key>
<string>http://xxx.xxx.xxx/jenkins-result/icon.png</string>
</dict>
<dict>
<key>kind</key>
<string>full-size-image</string>
<key>needs-shine</key>
<true/>
<key>url</key>
<string>http://xxx.xxx.xxx/jenkins-result/icon.png</string>
</dict>
</array><key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>xxx.xxx.xxx</string>
<key>bundle-version</key>
<string>${BundleShortVersionString}</string>
<key>kind</key>
<string>software</string>
<key>subtitle</key>
<string>DB</string>
<key>title</key>
<string>XXXX_${BRANCH}_${BundleVersion}_${BundleShortVersionString}_${BUILD_NUMBER}_${BUILD_TYPE}.ipa</string>
</dict>
</dict>
</array>
</dict>
</plist>" > ${WORKSPACE}/build/XXXX_${BRANCH}_${BundleVersion}_${BundleShortVersionString}_${BUILD_NUMBER}_${BUILD_TYPE}.ipa.install.manifest.plist
scp ${WORKSPACE}/build/XXXX_${BRANCH}_${BundleVersion}_${BundleShortVersionString}_${BUILD_NUMBER}_${BUILD_TYPE}.ipa.install.manifest.plist username@xxx.xxx.xxx.xxx:/XXXX/jenkins-result/${JOB_NAME}/${BUILD_NUMBER}/XXXX_${BRANCH}_${BundleVersion}_${BundleShortVersionString}_${BUILD_NUMBER}_${BUILD_TYPE}.ipa.install.manifest.plist
#生成ipa安装install.html
echo "<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">
<title> iOS-XXXX-DB </title>
<style>
div {
margin-top: 10px;
margin-bottom: 5px;
margin-left: 10px;
margin-right: 10px;
font-size: 20px;
}
</style>
</head>
<body>
<div>点击安装</div>
<div>
<a href=\"itms-services://?action=download-manifest&url=https://xxx.xxx.xxx/jenkins-result/${JOB_NAME}/${BUILD_NUMBER}/XXXX_${BRANCH}_${BundleVersion}_${BundleShortVersionString}_${BUILD_NUMBER}_${BUILD_TYPE}.ipa.install.manifest.plist\">XXXX_${BRANCH}_${BundleVersion}_${BundleShortVersionString}_${BUILD_NUMBER}_${BUILD_TYPE}.ipa</a>
</div>
</body>
</html>" > ${WORKSPACE}/build/XXXX_${BRANCH}_${BundleVersion}_${BundleShortVersionString}_${BUILD_NUMBER}_${BUILD_TYPE}.ipa.install.html
scp ${WORKSPACE}/build/XXXX_${BRANCH}_${BundleVersion}_${BundleShortVersionString}_${BUILD_NUMBER}_${BUILD_TYPE}.ipa.install.html username@xxx.xxx.xxx.xxx:/XXXX/jenkins-result/${JOB_NAME}/${BUILD_NUMBER}/XXXX_${BRANCH}_${BundleVersion}_${BundleShortVersionString}_${BUILD_NUMBER}_${BUILD_TYPE}.ipa.install.html
IpaInstallUrl="https://xxx.xxx.xxx/jenkins-result/${JOB_NAME}/${BUILD_NUMBER}/XXXX_${BRANCH}_${BundleVersion}_${BundleShortVersionString}_${BUILD_NUMBER}_${BUILD_TYPE}.ipa.install.html"
echo "BundleVersion=${BundleVersion}\nBundleShortVersionString=${BundleShortVersionString}\nIpaInstallUrl=${IpaInstallUrl}" > build/jenkins.env.properties
Team ID
XCode->Build Settings->Code Signing Identity->(括号中)
Debug
Release
打开权限/Users/Shared/Jenkins/Library
拷贝/Users/xxxxxx/Library/MobileDevice/Provisioning Profiles/*.mobileprovision 到 /Users/Shared/Jenkins/Library/MobileDevice/Provisioning Profiles/
拷贝
/Users/xxxxxx/Library/Keychains/login.keychain
/Users/xxxxxx/Library/Keychains/login.keychain-db
到
/Users/Shared/Jenkins/Library/Keychains/login.keychain
/Users/Shared/Jenkins/Library/Keychains/login.keychain-db
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k MAC_LOGIN_KEYCHAIN_PASSWORD_XXXXX /Users/Shared/Jenkins/Library/Keychains/login.keychain-db
To have launchd start jenkins-lts now and restart at login:
brew services start jenkins-lts
Or, if you don't want/need a background service you can just run:
jenkins-lts
mac升级后jenkins无法启动
sudo chown jenkins /var/log/jenkins
sudo chown jenkins /var/log/jenkins/jenkins.log
xcodebuild打包签名授权弹窗
security import xxx.p12 -T /usr/bin/codesign
sudo cp ~/Library/Keychains/login.keychain-db /Users/Shared/Jenkins/Library/Keychains/