kubectl/scripts/add-new-versions.sh

32 lines
1.2 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euxo pipefail
RELEASES=$(gh api graphql -F owner='kubernetes' -F name='kubernetes' -f query='query($name: String!, $owner: String!) {repository(owner: $owner, name: $name) {releases(first: 100) {nodes { tagName, isPrerelease }} }}' | jq -r '.data.repository.releases.nodes[] | select(.isPrerelease != true) | .tagName' | sort -V)
# Including v1.20 to v1.39
INCLUDE_VERSIONS="v1\.[2-3][0-9]\.[0-9]+"
VERSIONS_FILE="versions.txt"
ADDED_VERSIONS=()
for RELEASE in $RELEASES; do
if [[ $RELEASE =~ $INCLUDE_VERSIONS ]]; then
echo "Version ${RELEASE} matched include versions, checking if already present"
if ! grep -q "^${RELEASE}$" "${VERSIONS_FILE}"; then
echo "Version ${RELEASE} not present in versions file ${VERSIONS_FILE}, adding"
ADDED_VERSIONS+=( "${RELEASE}" )
echo "${RELEASE}" >> "${VERSIONS_FILE}"
else
echo "Version ${RELEASE} already present in versions file ${VERSIONS_FILE}, skipping"
fi
else
echo "Version ${RELEASE} does not match include versions, skipping"
fi
done
if [ "${#ADDED_VERSIONS[@]}" -gt 0 ]; then
echo "Added [${#ADDED_VERSIONS[@]}] versions: (${ADDED_VERSIONS[@]})"
sort -rV -o "${VERSIONS_FILE}" "${VERSIONS_FILE}"
else
echo "No new versions added"
fi