fix(agents): preserve migrated release versions

This commit is contained in:
t8y2 committed 2026-06-23 14:37:58 +08:00
1 parent 93fa554ce9
commit ff79ec05ad
2 files changed
+112 -67

No files matched your search

+57 -38
View File
@@ -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]"