Итак, у меня есть это android приложение, в котором я использую jenkins для создания отладочных apks. Я использую пользовательское имя файла для apks. Чтобы использовать пользовательское имя файла для apks, я использую следующие коды в файле gradle уровня приложения для переименования моего встроенного apk:
def gitBranch() {
def branch = ""
def proc = "git rev-parse --abbrev-ref HEAD".execute()
proc.in.eachLine { line -> branch = line }
proc.err.eachLine { line -> println line }
proc.waitFor()
branch
}
android {
compileSdkVersion 29
buildToolsVersion '28.0.3'
android.applicationVariants.all { variant ->
variant.outputs.each { output ->
// Redirect your apks to new defined location to outputDirPath
def outputDirPath = new File("${project.rootDir.absolutePath}/apks/${variant.flavorName}/${variant.buildType.name}")
variant.packageApplicationProvider.get().outputDirectory = outputDirPath
def apkFileName = "${rootProject.name}_${gitBranch()}_${android.defaultConfig.versionName}.apk"
output.outputFileName = apkFileName // directly assign the new name back to outputFileName
}
}
defaultConfig {
applicationId "com.example.androidbubble"
minSdkVersion 23
targetSdkVersion 29
versionCode 1
versionName "1.0"
resValue "string", "gitBranch", gitBranch()
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
targetCompatibility = 1.6
sourceCompatibility = 1.6
}
}
Теперь позже, когда я использую android studio для сборки apk, я нахожу apk в нужном месте с нужным именем файла (например, AndroidBubble_master_1.0.apk, где 'master' - ветвь git)
Но когда я пытаюсь выполнить сборку из jenkins, имя файла артефакта то, что генерирует jenkins после завершения сборки, не то, что я хочу. Я получаю неправильное имя ветки (например, AndroidBubble_HEAD_1.0.apk). Перед сборкой приложения в jenkins у меня есть branch_selector, который позволяет мне выбрать, из какой ветви git я хочу построить приложение. Вместо того, чтобы называть ветку как AndroidBubble_master_1.0, в jenkins это всегда «HEAD». Все отлично работает в AndroidStudio, но не на Дженкинс. Я пошел по следующему руководству по ссылке: https://www.serverkaka.com/2019/03/generate-android-apk-from-source-code-jenkins.html
К вашему сведению: я новичок в Дженкинс.