Use version build in version name and version code
This commit is contained in:
parent
2e473f66bd
commit
089519b036
|
@ -35,9 +35,25 @@ pipeline {
|
|||
}
|
||||
}
|
||||
|
||||
stage('Check BUILD_ID') {
|
||||
steps {
|
||||
script {
|
||||
if ( env.BUILD_ID.toInteger() > 99 ) {
|
||||
error """
|
||||
BUILD_ID > 99 !
|
||||
|
||||
You should must this branch build history to prevent invalid APK version code.
|
||||
See https://stackoverflow.com/a/33495326 for more informations.
|
||||
"""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Generate release') {
|
||||
environment {
|
||||
BUILD_VERSION_CLASSIFIER = buildVersionClassifier()
|
||||
VERSION_CLASSIFIER = versionClassifier()
|
||||
VERSION_BUILD = "${env.BUILD_ID}"
|
||||
RELEASE_CHANNEL = releaseChannel()
|
||||
}
|
||||
steps {
|
||||
|
@ -105,7 +121,7 @@ Commit: ${env.GIT_COMMIT}
|
|||
}
|
||||
}
|
||||
|
||||
def buildVersionClassifier() {
|
||||
def versionClassifier() {
|
||||
return env.BRANCH_NAME != params.STABLE_BRANCH ?
|
||||
( 'SNAPSHOT-' + sh(script: 'git log -1 --format=%h', returnStdout: true).trim() ) :
|
||||
''
|
||||
|
|
|
@ -102,17 +102,17 @@ def enableProguardInReleaseBuilds = false
|
|||
|
||||
// From https://medium.com/@maxirosson/versioning-android-apps-d6ec171cfd82
|
||||
def generateVersionCode() {
|
||||
return rootProject.ext.minSdkVersion * 10000000 + rootProject.ext.versionMajor * 10000 + rootProject.ext.versionMinor * 100 + rootProject.ext.versionPatch
|
||||
return rootProject.ext.versionMajor * 1000000 + rootProject.ext.versionMinor * 10000 + rootProject.ext.versionPatch * 100 + rootProject.ext.versionBuild
|
||||
}
|
||||
|
||||
def generateVersionName() {
|
||||
def versionName = "${rootProject.ext.versionMajor}.${rootProject.ext.versionMinor}.${rootProject.ext.versionPatch}"
|
||||
if (rootProject.ext.versionClassifier == null && rootProject.ext.isSnapshot) {
|
||||
rootProject.ext.versionClassifier = "SNAPSHOT"
|
||||
}
|
||||
if (rootProject.ext.versionClassifier != null) {
|
||||
versionName += "-" + rootProject.ext.versionClassifier
|
||||
}
|
||||
if ( rootProject.ext.versionBuild != 0 ) {
|
||||
versionName += "+" + rootProject.ext.versionBuild
|
||||
}
|
||||
return versionName;
|
||||
}
|
||||
|
||||
|
|
|
@ -8,8 +8,9 @@ buildscript {
|
|||
versionMajor = 1
|
||||
versionMinor = 0
|
||||
versionPatch = 0
|
||||
versionClassifier = System.getenv('BUILD_VERSION_CLASSIFIER')
|
||||
isSnapshot = System.getenv('BUILD_IS_SNAPSHOT') == "y" ? true : false
|
||||
versionBuild = System.getenv('VERSION_BUILD') ? System.getenv('VERSION_BUILD').toInteger() : 0
|
||||
|
||||
versionClassifier = System.getenv('VERSION_CLASSIFIER')
|
||||
releaseChannel = System.getenv('RELEASE_CHANNEL')
|
||||
|
||||
buildToolsVersion = '28.0.3'
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
const assert = require('assert');
|
||||
|
||||
const MAX_VERSION_CODE = 2100000000;
|
||||
|
||||
function getVersionCode(major, minor, patch, build) {
|
||||
return major * 1000000 + minor * 10000 + patch * 100 + build;
|
||||
}
|
||||
|
||||
const tests = [
|
||||
[1, 0, 0, 0],
|
||||
[1, 0, 0, 1],
|
||||
[1, 1, 0, 99],
|
||||
[1, 1, 1, 0],
|
||||
[99, 99, 0, 99],
|
||||
[99, 99, 99, 0],
|
||||
[99, 99, 99, 99],
|
||||
];
|
||||
|
||||
let previousVersionCode = 0;
|
||||
tests.forEach(t => {
|
||||
let versionCode = getVersionCode(...t);
|
||||
console.log(`Version: ${t.join('.')}`);
|
||||
console.log(`Version code: ${versionCode}`);
|
||||
assert.ok(versionCode < MAX_VERSION_CODE, `${versionCode} < ${MAX_VERSION_CODE} == false`);
|
||||
assert.ok(versionCode > previousVersionCode, `${versionCode} > ${previousVersionCode} == false`);
|
||||
console.log("--------");
|
||||
previousVersionCode = versionCode;
|
||||
});
|
Loading…
Reference in New Issue