Получите правильное git имя ветки в архивных артефактах от Дженкинса - PullRequest
0 голосов
/ 27 января 2020

Итак, у меня есть это 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

К вашему сведению: я новичок в Дженкинс.

...