開(kāi)篇瞎吹B
上周使用Jenkins + GitLab湃窍,完成了Android和iOS應(yīng)用的自動(dòng)化打包闻蛀,可持續(xù)集成,節(jié)省了人工打包的成本您市。本篇主要解決在自動(dòng)打包時(shí)觉痛,版本號(hào),即Android的versionCode茵休、iOS的build號(hào)自增的問(wèn)題薪棒。
核心命令
git rev-list HEAD --first-parent --count
這個(gè)命令會(huì)統(tǒng)計(jì)當(dāng)前分支的總提交次數(shù),每次commit榕莺,可以視為版本有更新俐芯,用這個(gè)當(dāng)做版本build號(hào),再適合不過(guò)了钉鸯。
Android集成
在App的gradle開(kāi)頭吧史,即android域上方,增加下面兩行:
def commitCount = 'git rev-list HEAD --first-parent --count'
def gitVersionCode = commitCount.execute().text.trim().toInteger()
隨后將android域內(nèi)的versionCode的數(shù)字唠雕,改為gitVersionCode:
versionCode gitVersionCode
完成后大致結(jié)構(gòu)如下:
def commitCount = 'git rev-list HEAD --first-parent --count'
def gitVersionCode = commitCount.execute().text.trim().toInteger()
android {
defaultConfig {
applicationId "com.xxxx"
minSdkVersion rootProject.minSdkVersion
targetSdkVersion rootProject.targetSdkVersion
versionCode gitVersionCode
versionName "1.5.0"
multiDexEnabled true
}
}
iOS集成
從Run Script入手
附上腳本
if [ $CONFIGURATION == Release ];
then
buildNumber=$(git rev-list HEAD --first-parent --count)
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${PROJECT_DIR}/${INFOPLIST_FILE}"
echo "build number increase"
fi
腳本不高深贸营,能用就好吨述。
其他思路
1. 使用時(shí)間戳做build號(hào)
比較適合每日構(gòu)建的團(tuán)隊(duì),但是這個(gè)號(hào)會(huì)很大莽使,注意不要超過(guò)int上限锐极。
2. 使用正則去匹配版本號(hào),+1后push到服務(wù)器芳肌,隨后打包
這個(gè)只是猜想灵再,沒(méi)有實(shí)踐,由于我配置了SCM亿笤,每半小時(shí)去檢查代碼更新翎迁,有更新就執(zhí)行打包操作,擔(dān)心自增后净薛,再次觸發(fā)打包汪榔,無(wú)限循環(huán),造成資源浪費(fèi)肃拜,最后沒(méi)有使用痴腌。