如何在Bitbucket Pipeline中读取Android应用版本名称
解决Bitbucket Pipeline获取Android版本名称的问题
你遇到的核心问题是:Gradle脚本内的变量不会自动暴露给Bitbucket Pipeline的Shell环境,所以直接引用$my_lib_version无法生效;而手动维护仓库变量又过于繁琐。以下是几种无需手动更新的可行方案:
方案1:通过Gradle任务输出版本号
在项目级build.gradle中添加一个专门用于输出版本号的任务:
task printLibVersion { doLast { println project.my_lib_version } }
然后在Bitbucket Pipeline脚本中执行该任务并捕获输出:
script: # 静默执行Gradle任务并捕获版本号 - LIB_VERSION=$(./gradlew -q printLibVersion) - echo "当前版本:$LIB_VERSION"
方案2:直接读取Gradle属性
无需修改build.gradle,直接通过Gradle的properties命令提取变量:
script: - LIB_VERSION=$(./gradlew -q properties | grep "my_lib_version" | awk '{print $2}') - echo "当前版本:$LIB_VERSION"
方案3:用Shell命令解析build.gradle文件
如果不想执行Gradle命令,也可以直接通过文本解析工具提取版本号:
script: - LIB_VERSION=$(grep 'project.ext.set("my_lib_version"' build.gradle | awk -F '"' '{print $4}') - echo "当前版本:$LIB_VERSION"
说明
之前直接引用$my_lib_version失效的原因是:project.ext定义的变量仅存在于Gradle运行时上下文,不会自动注入到Pipeline的Shell环境中,必须通过主动提取的方式获取。
内容的提问来源于stack exchange,提问作者Anchit Mittal
相关产品推荐
相关产品推荐

