ios,jenkins,參數(shù)化構(gòu)建,shell,xcodebuild,多bundle identifier,版本號同步

1.參數(shù)化構(gòu)建,ios需要兩個版本,一個是企業(yè)版內(nèi)部測試,一個是appstore版本,如下圖所示,打鉤參數(shù)化構(gòu)建,添加Boolean Value的參數(shù),名稱設(shè)置為IS_INHOUSE_VERSION。這樣在execute shell中構(gòu)建的時候可以這樣寫:

if [ true == $IS_INHOUSE_VERSION ]; then

echo "archive inhouse version"

else

echo "archive appstore version"

fi


2.版本號同步,修改程序的小版本號Build版本號,就是在xcodebuild前,修改plist文件,使用PlistBuddy。

#修改ipa的版本號,和jenkins編譯的號碼相同

/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $BUILD_NUMBER" "${WORKSPACE}/info.plist"

3.xcodebuild

/usr/bin/xcodebuild -scheme buspaipai -workspace helloworld.xcworkspace -configuration Release clean build

/usr/bin/xcrun -sdk iphoneos PackageApplication -v ~/Library/Developer/Xcode/DerivedData/helloworld-guftoidjqmsbfvajothheubre***/Build/Products/Release-iphoneos/helloworld.app -o ${WORKSPACE}/Build/helloworld-appstore.ipa

4.多bundle identifier,不同版本主要有2個地方的設(shè)置,一個是bundle identifier,另外一個是簽名。

4.1. bundle identifier,對于xode7(6是不行的),build setting->packaging中,可以設(shè)置不同的bundle identifier,截圖如下,不過注意如果在general里面設(shè)置后,這里又變成統(tǒng)一的了。


4.2. code signing,build setting->code signing直接設(shè)置,注意設(shè)置id和profile.



5.所有的shell代碼如下:

exportLANG=en_US.UTF-8

#pod install --verbose --no-repo-update

/usr/bin/xcodebuild -version

/usr/bin/xcodebuild -showsdks

/usr/bin/xcodebuild -list -workspace helloworld.xcworkspace

#修改ipa的版本號,和jenkins編譯的號碼相同

/usr/libexec/PlistBuddy -c"Set :CFBundleVersion $BUILD_NUMBER""${WORKSPACE}/helloworld.plist"

#讀取程序大版本號,文件名上顯示

helloworldMainVersion=$(/usr/libexec/PlistBuddy -c"Print :CFBundleShortVersionString""${WORKSPACE}/helloworld.plist")

security unlock-keychain -p "123456" "~/Library/Keychains/login.keychain"

if[true== $IS_INHOUSE_VERSION ]; then

echo"archive inhouse version"

/usr/bin/xcodebuild -scheme helloworld -workspace helloworld.xcworkspace -configuration adhoc clean build

/usr/bin/xcrun -sdk iphoneos PackageApplication -v ~/Library/Developer/Xcode/DerivedData/helloworld-guftoidjqmsbfvajothheubreqzu/Build/Products/adhoc-iphoneos/helloworld.app -o ${WORKSPACE}/Build/helloworld_V${helloworldMainVersion}_B$BUILD_NUMBER_inhouse.ipa

else

echo"archive appstore version"

/usr/bin/xcodebuild -scheme helloworld -workspace helloworld.xcworkspace -configuration Release clean build

/usr/bin/xcrun -sdk iphoneos PackageApplication -v ~/Library/Developer/Xcode/DerivedData/helloworld-guftoidjqmsbfvajothheubreqzu/Build/Products/Release-iphoneos/helloworld.app -o ${WORKSPACE}/Build/helloworld_V${helloworldMainVersion}_B$BUILD_NUMBER_appstore.ipa

fi

6.最后有點遺憾的是路徑名如何簡寫呢,或者如何設(shè)置呢?我寫的那個有點惡心。~/Library/Developer/Xcode/DerivedData/helloworld-guftoidjqmsbfvajothheubreqzu/Build/Products/Release-iphoneos/

--------------------------------持續(xù)更新中-------------------------

7.換了個jenkins服務(wù)器,編譯中發(fā)現(xiàn)了如下錯誤:

/usr/bin/codesign --force --sign ..... .app: User interaction is not allowed.

但是不管是命令行方式還是直接用xcode都能編譯通過。最后的解決辦法是,在/usr/bin/xcodebuild之前加了一句security unlock-keychain -p "password" "~/Library/Keychains/login.keychain".然后編譯通過,通過后就可以把這句話給刪除了,以后編譯都沒有問題了。具體可以參考

http://www.verydemo.com/demo_c134_i6629.html

。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容