fix(agents): preserve migrated release versions
This commit is contained in:
parent
93fa554ce9
commit
ff79ec05ad
|
|
@ -22,64 +22,83 @@ jobs:
|
|||
id: bump
|
||||
shell: bash
|
||||
run: |
|
||||
LEGACY_REPO="https://github.com/t8y2/dbx-agents.git"
|
||||
LEGACY_BASE_TAG="v0.2.33"
|
||||
PREV_TAG=$(git tag --sort=-creatordate | grep '^agents-v' | sed -n '2p')
|
||||
if [ -z "$PREV_TAG" ]; then
|
||||
echo "No previous tag found, all modules are new"
|
||||
PREV_TAG=$(git rev-list --max-parents=0 HEAD)
|
||||
fi
|
||||
echo "Comparing $PREV_TAG..HEAD"
|
||||
SKIP_BUMP=false
|
||||
MIGRATED_FIRST_RELEASE=false
|
||||
|
||||
VERSIONS=$(cat agents/versions.json)
|
||||
PREV_VERSIONS="$VERSIONS"
|
||||
|
||||
if [ -z "$PREV_TAG" ]; then
|
||||
echo "No previous agents-v tag found; treating this as the first migrated agents release"
|
||||
PREV_TAG=$(git rev-list --max-parents=0 HEAD)
|
||||
|
||||
TMP_LEGACY="$(mktemp -d)"
|
||||
git clone --depth 1 --branch "$LEGACY_BASE_TAG" "$LEGACY_REPO" "$TMP_LEGACY"
|
||||
PREV_VERSIONS=$(cat "$TMP_LEGACY/versions.json")
|
||||
rm -rf "$TMP_LEGACY"
|
||||
|
||||
SKIP_BUMP=true
|
||||
MIGRATED_FIRST_RELEASE=true
|
||||
fi
|
||||
echo "Comparing $PREV_TAG..HEAD"
|
||||
|
||||
CHANGED=false
|
||||
|
||||
for dir in $(echo "$VERSIONS" | python3 -c "import sys,json; [print(k) for k in json.load(sys.stdin)]"); do
|
||||
if [ -d "agents/drivers/$dir" ] || [ -d "agents/$dir" ] || [ "$dir" = "common" ]; then
|
||||
if [ -d "agents/drivers/$dir" ]; then
|
||||
CHECK_DIR="drivers/$dir"
|
||||
else
|
||||
CHECK_DIR="$dir"
|
||||
fi
|
||||
EXTRA_CHECK_DIR=""
|
||||
if [ "$dir" = "oracle" ]; then
|
||||
EXTRA_CHECK_DIR="drivers/oracle-go"
|
||||
fi
|
||||
DIFF_PATHS=("agents/$CHECK_DIR/")
|
||||
if [ -n "$EXTRA_CHECK_DIR" ]; then
|
||||
DIFF_PATHS+=("agents/$EXTRA_CHECK_DIR/")
|
||||
fi
|
||||
# common changes affect all modules
|
||||
if git diff --quiet "$PREV_TAG"..HEAD -- agents/common/ 2>/dev/null; then
|
||||
COMMON_CHANGED=false
|
||||
else
|
||||
COMMON_CHANGED=true
|
||||
fi
|
||||
if [ "$SKIP_BUMP" = "true" ]; then
|
||||
echo "Skipping automatic module version bump for migrated first release; versions.json was carried over from dbx-agents."
|
||||
else
|
||||
for dir in $(echo "$VERSIONS" | python3 -c "import sys,json; [print(k) for k in json.load(sys.stdin)]"); do
|
||||
if [ -d "agents/drivers/$dir" ] || [ -d "agents/$dir" ] || [ "$dir" = "common" ]; then
|
||||
if [ -d "agents/drivers/$dir" ]; then
|
||||
CHECK_DIR="drivers/$dir"
|
||||
else
|
||||
CHECK_DIR="$dir"
|
||||
fi
|
||||
EXTRA_CHECK_DIR=""
|
||||
if [ "$dir" = "oracle" ]; then
|
||||
EXTRA_CHECK_DIR="drivers/oracle-go"
|
||||
fi
|
||||
DIFF_PATHS=("agents/$CHECK_DIR/")
|
||||
if [ -n "$EXTRA_CHECK_DIR" ]; then
|
||||
DIFF_PATHS+=("agents/$EXTRA_CHECK_DIR/")
|
||||
fi
|
||||
# common changes affect all modules
|
||||
if git diff --quiet "$PREV_TAG"..HEAD -- agents/common/ 2>/dev/null; then
|
||||
COMMON_CHANGED=false
|
||||
else
|
||||
COMMON_CHANGED=true
|
||||
fi
|
||||
|
||||
if git diff --quiet "$PREV_TAG"..HEAD -- "${DIFF_PATHS[@]}" 2>/dev/null && [ "$COMMON_CHANGED" = "false" ]; then
|
||||
echo " $dir: no changes"
|
||||
else
|
||||
echo " $dir: CHANGED"
|
||||
OLD_VER=$(echo "$VERSIONS" | python3 -c "import sys,json; print(json.load(sys.stdin).get('$dir','0.1.0'))")
|
||||
IFS='.' read -r major minor patch <<< "$OLD_VER"
|
||||
NEW_VER="$major.$minor.$((patch + 1))"
|
||||
VERSIONS=$(echo "$VERSIONS" | python3 -c "
|
||||
if git diff --quiet "$PREV_TAG"..HEAD -- "${DIFF_PATHS[@]}" 2>/dev/null && [ "$COMMON_CHANGED" = "false" ]; then
|
||||
echo " $dir: no changes"
|
||||
else
|
||||
echo " $dir: CHANGED"
|
||||
OLD_VER=$(echo "$VERSIONS" | python3 -c "import sys,json; print(json.load(sys.stdin).get('$dir','0.1.0'))")
|
||||
IFS='.' read -r major minor patch <<< "$OLD_VER"
|
||||
NEW_VER="$major.$minor.$((patch + 1))"
|
||||
VERSIONS=$(echo "$VERSIONS" | python3 -c "
|
||||
import sys, json
|
||||
d = json.load(sys.stdin)
|
||||
d['$dir'] = '$NEW_VER'
|
||||
json.dump(d, sys.stdout, indent=2)
|
||||
print()
|
||||
")
|
||||
CHANGED=true
|
||||
echo " $dir: $OLD_VER -> $NEW_VER"
|
||||
CHANGED=true
|
||||
echo " $dir: $OLD_VER -> $NEW_VER"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
done
|
||||
done
|
||||
fi
|
||||
|
||||
echo "$VERSIONS" > agents/versions.json
|
||||
cat agents/versions.json
|
||||
echo "versions=$(cat agents/versions.json | python3 -c 'import sys,json; print(json.dumps(json.load(sys.stdin)))')" >> "$GITHUB_OUTPUT"
|
||||
echo "prev_versions=$(echo "$PREV_VERSIONS" | python3 -c 'import sys,json; print(json.dumps(json.load(sys.stdin)))')" >> "$GITHUB_OUTPUT"
|
||||
echo "prev_tag=$PREV_TAG" >> "$GITHUB_OUTPUT"
|
||||
echo "migrated_first_release=$MIGRATED_FIRST_RELEASE" >> "$GITHUB_OUTPUT"
|
||||
|
||||
if [ "$CHANGED" = "true" ]; then
|
||||
git config user.name "github-actions[bot]"
|
||||
|
|
|
|||
|
|
@ -7,42 +7,68 @@ set -euo pipefail
|
|||
# ./scripts/release.sh minor # 递增 minor 版本
|
||||
# ./scripts/release.sh major # 递增 major 版本
|
||||
# ./scripts/release.sh agents-v0.3.0 # 手动指定版本号
|
||||
# ./scripts/release.sh v0.3.0 # 手动指定旧 dbx-agents 版本号,会转换为 agents-v0.3.0
|
||||
|
||||
BUMP="${1:-patch}"
|
||||
|
||||
# 获取最新的 agents-v 开头的 tag
|
||||
latest_tag=$(git tag --sort=-v:refname | grep '^agents-v' | head -1)
|
||||
to_agents_tag() {
|
||||
case "$1" in
|
||||
agents-v*) echo "$1" ;;
|
||||
v*) echo "agents-$1" ;;
|
||||
*) echo "$1" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
bump_tag() {
|
||||
local tag="$1"
|
||||
local bump="$2"
|
||||
local version major minor patch
|
||||
|
||||
version="${tag#agents-v}"
|
||||
IFS='.' read -r major minor patch <<< "$version"
|
||||
|
||||
case "$bump" in
|
||||
major)
|
||||
echo "agents-v$((major + 1)).0.0"
|
||||
;;
|
||||
minor)
|
||||
echo "agents-v${major}.$((minor + 1)).0"
|
||||
;;
|
||||
patch)
|
||||
echo "agents-v${major}.${minor}.$((patch + 1))"
|
||||
;;
|
||||
agents-v*|v*)
|
||||
to_agents_tag "$bump"
|
||||
;;
|
||||
*)
|
||||
echo "错误: 未知的版本递增方式 '$bump',请使用 patch/minor/major 或 agents-vX.Y.Z" >&2
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# 获取当前仓库最新的 agents-v 开头的 tag
|
||||
latest_tag=$(git tag --sort=-v:refname | grep '^agents-v' | head -1 || true)
|
||||
|
||||
if [ -z "$latest_tag" ]; then
|
||||
echo "未找到任何 Agent 版本 tag,从 agents-v0.1.0 开始"
|
||||
latest_tag="agents-v0.0.0"
|
||||
# 迁移后首次发布时,沿用旁边旧 dbx-agents 仓库的 vX.Y.Z tag。
|
||||
legacy_tag=""
|
||||
if git -C ../dbx-agents rev-parse --is-inside-work-tree >/dev/null 2>&1; then
|
||||
legacy_tag=$(git -C ../dbx-agents tag --sort=-v:refname | grep '^v' | head -1 || true)
|
||||
fi
|
||||
|
||||
if [ -n "$legacy_tag" ]; then
|
||||
latest_tag=$(to_agents_tag "$legacy_tag")
|
||||
echo "当前仓库未找到 Agent 版本 tag,沿用旧 dbx-agents 最新 tag: $legacy_tag"
|
||||
else
|
||||
latest_tag="agents-v0.0.0"
|
||||
echo "未找到任何 Agent 版本 tag,从 agents-v0.1.0 开始"
|
||||
fi
|
||||
else
|
||||
echo "当前最新 tag: $latest_tag"
|
||||
fi
|
||||
|
||||
echo "当前最新 tag: $latest_tag"
|
||||
|
||||
# 去掉 agents-v 前缀
|
||||
version="${latest_tag#agents-v}"
|
||||
IFS='.' read -r major minor patch <<< "$version"
|
||||
|
||||
# 计算新版本号
|
||||
case "$BUMP" in
|
||||
major)
|
||||
new_tag="agents-v$((major + 1)).0.0"
|
||||
;;
|
||||
minor)
|
||||
new_tag="agents-v${major}.$((minor + 1)).0"
|
||||
;;
|
||||
patch)
|
||||
new_tag="agents-v${major}.${minor}.$((patch + 1))"
|
||||
;;
|
||||
agents-v*)
|
||||
new_tag="$BUMP"
|
||||
;;
|
||||
*)
|
||||
echo "错误: 未知的版本递增方式 '$BUMP',请使用 patch/minor/major 或 agents-vX.Y.Z"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
new_tag=$(bump_tag "$latest_tag" "$BUMP")
|
||||
|
||||
echo "新版本: $new_tag"
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue