Semver版本管理:Jenkins自动打标签异常问题排查
问题排查:Semver版本升级脚本未按预期生成minor版本标签
我的项目默认Docker镜像构建标签为1.0.0,希望通过Jenkins结合Semver版本控制实现自动化构建、打标签及推送,预期后续版本依次为1.1.0、1.2.0等。但调用以下bash脚本执行时,生成的标签却是1.0.1,请帮忙排查问题。
#!/bin/bash latest_tag="1.0.0" # Extract the MAJOR, MINOR, and PATCH numbers from the latest tag IFS='.' read -r -a version_parts <<< "$latest_tag" major=${version_parts[0]} minor=${version_parts[1]} patch=${version_parts[2]} # Determine the type of version bump if [ "$1" == "major" ]; then major=$((major + 1)) minor=0 patch=0 elif [ "$1" == "minor" ]; then minor=$((minor + 1)) patch=0 else patch=$((patch + 1)) fi # Construct the new version tag new_tag="$major.$minor.$patch" # Output the new tag echo $new_tag
问题原因
脚本的版本升级逻辑完全依赖第一个传入的参数$1:
- 只有当传入参数为
minor时,才会执行minor版本升级(minor+1,patch重置为0); - 如果调用脚本时没有传参,或者传入的参数不是
major/minor,脚本会默认进入else分支,执行patch版本升级,也就是生成1.0.1这类标签。
解决方法
方法1:调用脚本时明确传入参数
在Jenkins的构建步骤中,执行脚本时必须加上minor参数:
./your-version-script.sh minor
方法2:修改脚本默认行为(可选)
如果希望脚本默认升级minor版本,而非patch,可以调整else分支的逻辑:
else # 默认升级minor版本 minor=$((minor + 1)) patch=0 fi
内容的提问来源于stack exchange,提问作者Tate_87
相关产品推荐
相关产品推荐

