在时候使用Jenkins打包sdk的时候,有时候我们想在打包完成后更新一下sdk的版本号,这时可以这样做。
在工程跟目录下新增jenkins_aar.sh:
#!/usr/bin/env bash # jenkins打包脚本 # 校验环境 result=$(echo "$SDK_BRANCH") if [[ "$result" == "" ]]; then echo "非 jenkins 环境,无法执行" exit fi # 版本号格式为:1.0.0(三位),调用改方法会自动修改版本号(最后一位+1) versionFile='version.properties' currentVersionName1=$(sed -n 1p $versionFile) currentVersionName2=$(sed -n 2p $versionFile) currentVersionName3=$(sed -n 3p $versionFile | cut -d '=' -f 2) currentVersionName4=$(sed -n 4p $versionFile) currentVersionName5=$(sed -n 5p $versionFile) echo "Old versionName: $currentVersionName3" versionArr=($(echo $currentVersionName3 | tr '.' ' ' | tr -s ' ')) currentVersionName3="${versionArr[0]}.${versionArr[1]}.$[${versionArr[2]}+1]" echo "New versionName: $currentVersionName3" echo -e "$currentVersionName1\n$currentVersionName2\nversionName=$currentVersionName3\n$currentVersionName4\n$currentVersionName5" > $versionFile # 执行上传任务 ./gradlew photo:uploadArchives ./gradlew camera:uploadArchives //这里可以批量添加多个上传任务 # git Tag 任务 echo "---- 提交改动 ----" git add version.properties git commit -m "更新version.properties版本号:$currentVersionName3" git push origin HEAD:refs/heads/${SDK_BRANCH} echo "---- 提交当前分支(${SDK_BRANCH}) ----" git tag aar_$currentVersionName3 git push origin aar_$currentVersionName3
注意:SDK_BRANCH是从环境变量中读取的当前打包的分支名称
在工程跟目录下新增version.properties:
#【SHELL 中读取的是指定行数,所以不要添加新的行】 # jenkins 打包时,会自增 versionName 字段,用于 AAR 打包 versionName=1.0.0
在工程根目录的build.gradle里面配置如下:
buildscript { ext { // version 相关信息从 version.properties 文件中读取 Properties versionProperties = new Properties() InputStream versionIs = project.rootProject.file('version.properties').newDataInputStream() versionProperties.load(versionIs) versionIs.close() sdk_version = versionProperties.getProperty('versionName') } repositories { google() } dependencies { classpath 'com.android.tools.build:gradle:3.2.1' } }