如何从 Gitlab ci 脚本中的 kotlin-dsl Gradle 文件获取 versionName/versionCode?

How to get versionName/versionCode from kotlin-dsl Gradle file in Gitlab ci script?

如何在 Gradle(Kotlin-DSL) 来自 Gitlab ci 脚本的文件(gitlab-ci.yaml)?

我有这两个命令可以从 gradle-groovy-dsl 获取它们,但它们在 gradle-kotlin-dsl 上不起作用。

- export VERSION_NAME=`egrep '^[[:blank:]]+versionName[[:blank:]]'  app/build.gradle | awk '{print }' | sed s/\"//g`
- export VERSION_CODE=`egrep '^[[:blank:]]+versionCode[[:blank:]]'  app/build.gradle | awk '{print }'`

示例 gradle groovy-dsl 中的脚本:

android {
    defaultConfig {
        versionCode 1
        versionName "1.0"
    }
}

kotlin-dsl 中的示例 gradle 脚本:

android {
    defaultConfig {
        versionCode = 1
        versionName = "1.0"
    }
}

我阅读了有关 Regex 的内容,并且了解了如何操作。

您应该更改正则表达式以获得 versionName/versionCode,因为分配它们的方式已更改。

你应该这样做:

- export VERSION_NAME=`egrep '[[:blank:]]*versionName[[:blank:]]?=[[:blank:]]?\"((\w|\.)+)\"'  app/build.gradle.kts | awk '{print }'| sed s/\"//g`
- export VERSION_CODE=`egrep '[[:blank:]]*versionCode[[:blank:]]?=[[:blank:]]?([0-9]+)'  app/build.gradle.kts | awk '{print }'`

如果您想了解正则表达式,我建议您在 youTube 上观看 this 视频