add function to check if minor release is being performed
This commit is contained in:
parent
422d942090
commit
ed08a42b9a
1 changed files with 19 additions and 5 deletions
24
.github/scripts/backwards_compatibility_check.sh
vendored
24
.github/scripts/backwards_compatibility_check.sh
vendored
|
|
@ -15,7 +15,7 @@ get_latest_jar() {
|
||||||
# clear the directory so that the latest release will be the only version in the Maven directory after running mvn dependency:get
|
# clear the directory so that the latest release will be the only version in the Maven directory after running mvn dependency:get
|
||||||
rm -rf "$KCL_MAVEN_DIR"
|
rm -rf "$KCL_MAVEN_DIR"
|
||||||
mvn -B dependency:get -Dartifact=software.amazon.kinesis:amazon-kinesis-client:LATEST
|
mvn -B dependency:get -Dartifact=software.amazon.kinesis:amazon-kinesis-client:LATEST
|
||||||
LATEST_VERSION=$(ls "$KCL_MAVEN_DIR" | grep '[0-9].[0-9].[0-9]')
|
LATEST_VERSION=$(ls "$KCL_MAVEN_DIR" | grep -E '[0-9]+.[0-9]+.[0-9]+')
|
||||||
LATEST_JAR=$KCL_MAVEN_DIR/$LATEST_VERSION/amazon-kinesis-client-$LATEST_VERSION.jar
|
LATEST_JAR=$KCL_MAVEN_DIR/$LATEST_VERSION/amazon-kinesis-client-$LATEST_VERSION.jar
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -26,6 +26,13 @@ get_current_jar() {
|
||||||
CURRENT_JAR=$KCL_MAVEN_DIR/$CURRENT_VERSION/amazon-kinesis-client-$CURRENT_VERSION.jar
|
CURRENT_JAR=$KCL_MAVEN_DIR/$CURRENT_VERSION/amazon-kinesis-client-$CURRENT_VERSION.jar
|
||||||
}
|
}
|
||||||
|
|
||||||
|
is_new_minor_release() {
|
||||||
|
local latest_minor_version=$(echo "$LATEST_VERSION" | cut -d . -f 2)
|
||||||
|
local current_minor_version=$(echo "$CURRENT_VERSION" | cut -d . -f 2)
|
||||||
|
[[ "$latest_minor_version" != "$current_minor_version" ]]
|
||||||
|
return $?
|
||||||
|
}
|
||||||
|
|
||||||
# Skip classes with the KinesisClientInternalApi annotation. These classes are subject to breaking backwards compatibility.
|
# Skip classes with the KinesisClientInternalApi annotation. These classes are subject to breaking backwards compatibility.
|
||||||
is_kinesis_client_internal_api() {
|
is_kinesis_client_internal_api() {
|
||||||
local current_class="$1"
|
local current_class="$1"
|
||||||
|
|
@ -56,11 +63,14 @@ ignore_abstract_changes_in_interfaces() {
|
||||||
# Checks if there are any methods in the latest version that were removed in the current version.
|
# Checks if there are any methods in the latest version that were removed in the current version.
|
||||||
find_removed_methods() {
|
find_removed_methods() {
|
||||||
echo "Checking if methods in current version (v$CURRENT_VERSION) were removed from latest version (v$LATEST_VERSION)"
|
echo "Checking if methods in current version (v$CURRENT_VERSION) were removed from latest version (v$LATEST_VERSION)"
|
||||||
|
if is_new_minor_release
|
||||||
|
then
|
||||||
|
echo "New minor release is being performed. Ignoring changes in classes marked with @KinesisClientInternalApi annotation."
|
||||||
|
fi
|
||||||
local latest_classes=$(jar tf $LATEST_JAR | grep .class | tr / . | sed 's/\.class$//')
|
local latest_classes=$(jar tf $LATEST_JAR | grep .class | tr / . | sed 's/\.class$//')
|
||||||
for class in $latest_classes
|
for class in $latest_classes
|
||||||
do
|
do
|
||||||
|
if (is_kinesis_client_internal_api "$class" && is_new_minor_release) || is_non_public_class "$class"
|
||||||
if is_kinesis_client_internal_api "$class" || is_non_public_class "$class"
|
|
||||||
then
|
then
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
@ -75,6 +85,10 @@ find_removed_methods() {
|
||||||
if [[ "$removed_methods" != "" ]]
|
if [[ "$removed_methods" != "" ]]
|
||||||
then
|
then
|
||||||
REMOVED_METHODS_FLAG=$TRUE
|
REMOVED_METHODS_FLAG=$TRUE
|
||||||
|
if is_kinesis_client_internal_api "$class"
|
||||||
|
then
|
||||||
|
echo "Found removed methods in class with @KinesisClientInternalApi annotation. To resolve these issues, upgrade the current minor version or address these changes."
|
||||||
|
fi
|
||||||
echo "$class does not have method(s):"
|
echo "$class does not have method(s):"
|
||||||
echo "$removed_methods"
|
echo "$removed_methods"
|
||||||
fi
|
fi
|
||||||
|
|
@ -84,10 +98,10 @@ find_removed_methods() {
|
||||||
get_backwards_compatible_result() {
|
get_backwards_compatible_result() {
|
||||||
if [[ $REMOVED_METHODS_FLAG == $TRUE ]]
|
if [[ $REMOVED_METHODS_FLAG == $TRUE ]]
|
||||||
then
|
then
|
||||||
echo "Current KCL version is not backwards compatible with version $LATEST_VERSION. See output above for removed packages/methods."
|
echo "Current KCL version $CURRENT_VERSION is not backwards compatible with version $LATEST_VERSION. See output above for removed packages/methods."
|
||||||
exit 1
|
exit 1
|
||||||
else
|
else
|
||||||
echo "Current KCL version is backwards compatible with version $LATEST_VERSION."
|
echo "Current KCL version $CURRENT_VERSION is backwards compatible with version $LATEST_VERSION."
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue