Jenkinsパッケージの後続:Shellスクリプトはbuild番号を自動的に変更し、TestFlightをコミットします.

5423 ワード

Jenkinsパッケージが完備されていて、ポイントたちがワンタッチで様々な環境を打ち出したパッケージに渡すことができた後、最終的にオンラインになる前に、Releaseを打ってTestFlightに送る必要があります.前のJenkinsの配置と基礎パッケージング操作は前の文章でOKになった(詳しくは、自動化パッケージング実戦-Jenkinsを参照).では、私たちは次にReleaseパッケージを打ってTestFlightをアップロードすることを実現し、その前に自分でBuild番号を修正する提出(TestFlightには異なるBuild番号が必要であるため)をpushする必要があり、ここではShellスクリプト処理を使用し、行、着工した.
最新のブランチのコードを引くと、プロセス全体が3つのステップに分かれます.
1、自動的にBuild番号を修正し、コミットを生成し、pushをリモートブランチに送る.2、Releaseパッケージの作成を開始し、IPAファイルをエクスポートする.3、Application Loaderプラグインを利用して自動アップロードを実現する.
前提:Jenkins関連の構成はすでに完了しており、証明書の発行、ローカルGitユーザー、pushからGitへの権限アカウントなどはすでに構成が完了しており、構成が完了していない場合、一部のエラーは後で発生し、追加してもOKです.

一、自動的にBuild番号を修正し、コミットを生成し、pushをリモートブランチに


1、自動修正Build号(Shellスクリプト)
(1)現在のBuild番号を先に取って、Shellでplistファイルを読み込む方法は比較的簡単で、Macでplistファイルを操作するPlestBuddyを利用しています.経路は/usr/libexec/PlestBuddyの下にあります.これは前の文章で書きました:Jenkinsが自動的にパッケージ化した後にtagを打ってoriginに同期します.
 // Jenkins , project ,info.plist 
PRODUCT_SETTINGS_PATH=/Users/xxxxx/.jenkins/workspace/xxxxx/xxxxx/Info.plist 
//  Build ( :1.0.8.3)
BundleVersion=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$PRODUCT_SETTINGS_PATH")

(2)バージョン番号(例:1.0.8.3)を文字列を分割し、最後の要素(2桁または3桁の可能性がある)に取り出し、最後の要素を数値に変換して+1し、文字列に戻します.
//  , Build “.” , @[1, 0, 8, 3]
array=(${BundleVersion//./ })
//   "3",(   ${#array[*]}   length)
lastNumber=${array[${#array[*]}-1]}
//   +1 ,  4
newLastNumber=`expr $lastNumber + 1`
//    “4”
newLastNumberString=${newLastNumber}

(3)文字列の結合を行い、最終効果:1.0.8.4
//  , “1”
NewBundleVersion=${array[0]}
//   “.”
point=.
//  for , 2 2 ( , )
for ((i = 1; i < ${#array[@]}-1 ; i++ ))
do
//   =   + . +  
    NewBundleVersion=${NewBundleVersion}${point}${array[$i]}
done

//    1   , 1.0.8.4
NewBundleVersion=${NewBundleVersion}${point}${newLastNumberString}

(4)infoに新しいBuild番号を書き込む.plistファイル
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $NewBundleVersion" "$PRODUCT_SETTINGS_PATH"

2、commitを生成し、pushを上げる(Gitコマンド)
(1)コミット記述を生成する:
//  Build 
PRODUCT_SETTINGS_PATH=/Users/xxxxx/.jenkins/workspace/xxxxx/xxxxx/Info.plist 
BundleVersion=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$PRODUCT_SETTINGS_PATH")
//  
CommitMessage=" testflight,build:"${BundleVersion}

(2)対応するGitディレクトリの下でGit操作を行う
//  
cd /Users/xxxx/.jenkins/workspace/xxxxxxxx

// git add -u  , , info.plist 
git add -u /Users/xxxx/.jenkins/workspace/xxxxxxxxxx/xxxxxxxx/Info.plist
//  commit
git commit -m ${CommitMessage}
// push , develop
git push origin HEAD:develop

手を伸ばす党の友达に完全版を添付します。


2つのShellステップに書けばいいです.
PRODUCT_SETTINGS_PATH=/Users/xxxx/.jenkins/workspace/xxxxxxx/xxxxx/Info.plist
BundleVersion=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$PRODUCT_SETTINGS_PATH")
array=(${BundleVersion//./ })
lastNumber=${array[${#array[*]}-1]}
newLastNumber=`expr $lastNumber + 1`
newLastNumberString=${newLastNumber}

NewBundleVersion=${array[0]}
point=.
for ((i = 1; i < ${#array[@]}-1 ; i++ ))
do
    NewBundleVersion=${NewBundleVersion}${point}${array[$i]}
done

NewBundleVersion=${NewBundleVersion}${point}${newLastNumberString}
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $NewBundleVersion" "$PRODUCT_SETTINGS_PATH"
PRODUCT_SETTINGS_PATH=/Users/xxxxx/.jenkins/workspace/xxxxx/xxxxx/Info.plist 
BundleVersion=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$PRODUCT_SETTINGS_PATH")
CommitMessage=" testflight,build:"${BundleVersion}

cd /Users/xxxx/.jenkins/workspace/xxxxxxxx
git add -u /Users/xxxx/.jenkins/workspace/xxxxxxxxxx/xxxxxxxx/Info.plist
git commit -m ${CommitMessage}
git push origin HEAD:develop

二、Releaseパッケージの作成を開始し、IPAファイルをエクスポートする


この点は前のJenkinsの記事で書いたように、主にxcbuildコマンドを利用していますが、ここで注意したいのはパッケージのタイプをdebugからreleaseに変更すればいいことです.
xcodebuild -archivePath "/Users/xxxx/.jenkins/workspace/xxxxxxxxx/build/Release-iphoneos/xxxxxx.xcarchive" -workspace  .xcworkspace -sdk iphoneos -scheme " scheme" -configuration "Release" archive

xcodebuild -exportArchive -archivePath "/Users/xxxx/.jenkins/workspace/xxxxxxxxxxx/build/Release-iphoneos/xxxxxxx.xcarchive" -exportPath "/Users/xxxx/.jenkins/workspace/xxxxxxxxx/build/ " -exportOptionsPlist '/Users/xxxx/.jenkins/workspace/xxxxxxxxxx/build/ExportOptions.plist' -allowProvisioningUpdates

三、Application Loaderプラグインによる自動アップロード

//  Application Loader altool 
ALTOOLPATH=/Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/altool
//  Apple ID , , 
APPID="[email protected]"
APPPASSWORD="xxxx-xxxx-xxxx-xxxx"
// IPA , IPA 
IPA_PATH="/Users/xxxx/.jenkins/workspace/xxxxxxxx/build/xxxxxxxxxx/xxxxxx.ipa"

# 
"${ALTOOLPATH}" --validate-app -f "${IPA_PATH}" -u "${APPID}" -p "${APPPASSWORD}" --output-format xml

# iTunesConnect
"${ALTOOLPATH}" --upload-app -f "${IPA_PATH}" -u "${APPID}" -p "${APPPASSWORD}" --output-format xml

これで、三つのステップが終わり、熱心なテストたちに自分で注文してもらいましょう.彼らと梱包にこだわるのではなく、自分の時間を節約したのではないでしょうか.