diff --git a/UPDATE_MILVUS_API.md b/UPDATE_MILVUS_API.md new file mode 100644 index 0000000000..7ceb765bbd --- /dev/null +++ b/UPDATE_MILVUS_API.md @@ -0,0 +1,72 @@ +# Update Milvus API Version + +This document explains how to use the `update-milvus-api` command to update the milvus-proto version across all go.mod files in the project. + +## Overview + +The `update-milvus-api` command has been enhanced to update the milvus-proto version in all 4 go.mod files: + +1. `go.mod` (main module) +2. `client/go.mod` (client module) +3. `pkg/go.mod` (pkg module) +4. `tests/go_client/go.mod` (test client module) + +## Usage + +### Update to a specific tagged version + +```bash +make update-milvus-api PROTO_API_VERSION=v2.3.0-dev.1 +``` + +### Update to a specific commit ID + +```bash +make update-milvus-api PROTO_API_VERSION=4080770055ad +``` + +## What the command does + +1. **Validates the version**: Checks if the provided version is a valid git tag or treats it as a commit ID +2. **Updates all go.mod files**: Updates the milvus-proto dependency in all 4 go.mod files +3. **Runs go mod tidy**: Ensures all dependencies are properly resolved +4. **Updates the local milvus-proto repo**: Updates the third-party milvus-proto repository if it exists +5. **Provides feedback**: Shows which files were updated + +## Example output + +``` +---------------------------- +Update the milvus-proto/go-api/v2@v2.3.0-dev.1 +Updating milvus-proto version in all go.mod files... +Updating main go.mod... +Updating client/go.mod... +Updating pkg/go.mod... +Updating tests/go_client/go.mod... +---------------------------- +Update the milvus-proto repo +---------------------------- +Successfully updated milvus-proto version to v2.3.0-dev.1 in all go.mod files: + - go.mod + - client/go.mod + - pkg/go.mod + - tests/go_client/go.mod +``` + +## Error handling + +- If no version is provided, the command will show usage examples +- If the milvus-proto third-party directory doesn't exist, a warning will be displayed but the go.mod updates will still proceed +- If a git branch with the same name already exists, the command will checkout the commit directly + +## Prerequisites + +- Go must be installed and available in PATH +- Git must be installed and available in PATH +- Internet connection to fetch the milvus-proto repository + +## Notes + +- The command will automatically determine if the provided version is a git tag or commit ID +- All go.mod files will be updated to the same version +- The command includes proper error handling and user feedback \ No newline at end of file diff --git a/scripts/update-api-version.sh b/scripts/update-api-version.sh index da413217a6..e4971f2bd3 100755 --- a/scripts/update-api-version.sh +++ b/scripts/update-api-version.sh @@ -24,20 +24,64 @@ echo "Update the milvus-proto/go-api/v2@${version}" if [[ $commitID == "" ]]; then echo "${version} is not a valid tag, try to use it as commit ID" commitID=$version - go get -u github.com/milvus-io/milvus-proto/go-api/v2@$commitID + update_version=$commitID else - go get -u github.com/milvus-io/milvus-proto/go-api/v2@$version + update_version=$version fi SCRIPTS_DIR=$(dirname "$0") -EXAMPLE_DIR=$SCRIPTS_DIR/../cmake_build/thirdparty/protobuf/protobuf-src/examples -rm -rf $EXAMPLE_DIR +PROJECT_ROOT=$(cd "$SCRIPTS_DIR/.." && pwd) + +# Update all 4 go.mod files +echo "Updating milvus-proto version in all go.mod files..." + +# 1. Update main go.mod +echo "Updating main go.mod..." +cd "$PROJECT_ROOT" +go get -u github.com/milvus-io/milvus-proto/go-api/v2@$update_version go mod tidy -line echo "Update the milvus-proto repo" +# 2. Update client/go.mod +echo "Updating client/go.mod..." +cd "$PROJECT_ROOT/client" +go get -u github.com/milvus-io/milvus-proto/go-api/v2@$update_version +go mod tidy + +# 3. Update pkg/go.mod +echo "Updating pkg/go.mod..." +cd "$PROJECT_ROOT/pkg" +go get -u github.com/milvus-io/milvus-proto/go-api/v2@$update_version +go mod tidy + +# 4. Update tests/go_client/go.mod +echo "Updating tests/go_client/go.mod..." +cd "$PROJECT_ROOT/tests/go_client" +go get -u github.com/milvus-io/milvus-proto/go-api/v2@$update_version +go mod tidy + +# Return to project root +cd "$PROJECT_ROOT" + +# Clean up protobuf examples directory +EXAMPLE_DIR=$SCRIPTS_DIR/../cmake_build/thirdparty/protobuf/protobuf-src/examples +rm -rf $EXAMPLE_DIR + +line +echo "Update the milvus-proto repo" THIRD_PARTY_DIR=$SCRIPTS_DIR/../cmake_build/thirdparty -pushd $THIRD_PARTY_DIR/milvus-proto - git fetch - git checkout -b $version $commitID -popd +if [ -d "$THIRD_PARTY_DIR/milvus-proto" ]; then + pushd $THIRD_PARTY_DIR/milvus-proto + git fetch + git checkout -b $version $commitID 2>/dev/null || git checkout $commitID + popd +else + echo "Warning: milvus-proto directory not found at $THIRD_PARTY_DIR/milvus-proto" +fi + +line +echo "Successfully updated milvus-proto version to $update_version in all go.mod files:" +echo " - go.mod" +echo " - client/go.mod" +echo " - pkg/go.mod" +echo " - tests/go_client/go.mod"