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です.
1、自動修正Build号(Shellスクリプト)
(1)現在のBuild番号を先に取って、Shellでplistファイルを読み込む方法は比較的簡単で、Macでplistファイルを操作するPlestBuddyを利用しています.経路は/usr/libexec/PlestBuddyの下にあります.これは前の文章で書きました:Jenkinsが自動的にパッケージ化した後にtagを打ってoriginに同期します.
(2)バージョン番号(例:1.0.8.3)を文字列を分割し、最後の要素(2桁または3桁の可能性がある)に取り出し、最後の要素を数値に変換して+1し、文字列に戻します.
(3)文字列の結合を行い、最終効果:1.0.8.4
(4)infoに新しいBuild番号を書き込む.plistファイル
2、commitを生成し、pushを上げる(Gitコマンド)
(1)コミット記述を生成する:
(2)対応するGitディレクトリの下でGit操作を行う
2つのShellステップに書けばいいです.
この点は前のJenkinsの記事で書いたように、主にxcbuildコマンドを利用していますが、ここで注意したいのはパッケージのタイプをdebugからreleaseに変更すればいいことです.
これで、三つのステップが終わり、熱心なテストたちに自分で注文してもらいましょう.彼らと梱包にこだわるのではなく、自分の時間を節約したのではないでしょうか.
最新のブランチのコードを引くと、プロセス全体が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
これで、三つのステップが終わり、熱心なテストたちに自分で注文してもらいましょう.彼らと梱包にこだわるのではなく、自分の時間を節約したのではないでしょうか.