2017-09-29 04:38:19 -05:00
|
|
|
#!/bin/bash
|
2018-03-05 07:29:24 -06:00
|
|
|
# Builds the latest released version
|
2017-09-29 04:38:19 -05:00
|
|
|
|
2018-04-10 03:58:31 -05:00
|
|
|
echo "▶️ $0 $*"
|
|
|
|
|
2021-10-06 14:58:30 -05:00
|
|
|
###
|
|
|
|
# Check for the jq library needed for parsing JSON
|
|
|
|
###
|
2021-10-07 12:12:35 -05:00
|
|
|
if ! command -v jq; then
|
2021-10-14 01:30:07 -05:00
|
|
|
echo "⚠️ jq command missing from \$PATH!"
|
|
|
|
exit 1
|
2021-10-06 14:58:30 -05:00
|
|
|
fi
|
|
|
|
|
2019-10-10 05:42:10 -05:00
|
|
|
###
|
|
|
|
# Checking for the presence of GITHUB_OAUTH_CLIENT_ID
|
|
|
|
# and GITHUB_OAUTH_CLIENT_SECRET
|
|
|
|
###
|
2019-02-01 02:58:07 -06:00
|
|
|
if [ -n "${GITHUB_OAUTH_CLIENT_ID}" ] && [ -n "${GITHUB_OAUTH_CLIENT_SECRET}" ]; then
|
2018-08-28 11:21:08 -05:00
|
|
|
echo "🗝 Performing authenticated Github API calls."
|
|
|
|
GITHUB_OAUTH_PARAMS="client_id=${GITHUB_OAUTH_CLIENT_ID}&client_secret=${GITHUB_OAUTH_CLIENT_SECRET}"
|
|
|
|
else
|
|
|
|
echo "🕶 Performing unauthenticated Github API calls. This might result in lower Github rate limits!"
|
|
|
|
GITHUB_OAUTH_PARAMS=""
|
|
|
|
fi
|
|
|
|
|
2019-10-10 05:42:10 -05:00
|
|
|
###
|
|
|
|
# Checking if PRERELEASE is either unset, 'true' or 'false'
|
|
|
|
###
|
2019-10-14 17:40:48 -05:00
|
|
|
if [ -n "${PRERELEASE}" ] &&
|
2021-02-08 05:16:04 -06:00
|
|
|
{ [ "${PRERELEASE}" != "true" ] && [ "${PRERELEASE}" != "false" ]; }; then
|
2019-10-10 05:42:10 -05:00
|
|
|
|
2019-10-14 17:40:48 -05:00
|
|
|
if [ -z "${DEBUG}" ]; then
|
|
|
|
echo "⚠️ PRERELEASE must be either unset, 'true' or 'false', but was '${PRERELEASE}'!"
|
2019-10-10 05:42:10 -05:00
|
|
|
exit 1
|
|
|
|
else
|
2019-10-14 17:40:48 -05:00
|
|
|
echo "⚠️ Would exit here with code '1', but DEBUG is enabled."
|
2019-10-10 05:42:10 -05:00
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
###
|
|
|
|
# Calling Github to get the latest version
|
|
|
|
###
|
2019-07-02 14:32:58 -05:00
|
|
|
ORIGINAL_GITHUB_REPO="netbox-community/netbox"
|
2018-01-30 04:22:43 -06:00
|
|
|
GITHUB_REPO="${GITHUB_REPO-$ORIGINAL_GITHUB_REPO}"
|
2018-08-28 11:21:08 -05:00
|
|
|
URL_RELEASES="https://api.github.com/repos/${GITHUB_REPO}/releases?${GITHUB_OAUTH_PARAMS}"
|
2017-09-29 04:38:19 -05:00
|
|
|
|
2019-10-10 05:42:10 -05:00
|
|
|
# Composing the JQ commans to extract the most recent version number
|
2017-10-02 04:08:50 -05:00
|
|
|
JQ_LATEST="group_by(.prerelease) | .[] | sort_by(.published_at) | reverse | .[0] | select(.prerelease==${PRERELEASE-false}) | .tag_name"
|
|
|
|
|
2018-03-05 07:29:24 -06:00
|
|
|
CURL="curl -sS"
|
2017-10-02 04:08:50 -05:00
|
|
|
|
2019-10-10 05:42:10 -05:00
|
|
|
# Querying the Github API to fetch the most recent version number
|
2018-01-30 04:22:43 -06:00
|
|
|
VERSION=$($CURL "${URL_RELEASES}" | jq -r "${JQ_LATEST}")
|
2017-10-13 02:43:16 -05:00
|
|
|
|
2019-10-10 05:42:10 -05:00
|
|
|
###
|
2017-10-13 02:43:16 -05:00
|
|
|
# Check if the prerelease version is actually higher than stable version
|
2019-10-10 05:42:10 -05:00
|
|
|
###
|
2017-10-13 02:43:16 -05:00
|
|
|
if [ "${PRERELEASE}" == "true" ]; then
|
|
|
|
JQ_STABLE="group_by(.prerelease) | .[] | sort_by(.published_at) | reverse | .[0] | select(.prerelease==false) | .tag_name"
|
2018-03-05 07:29:24 -06:00
|
|
|
STABLE_VERSION=$($CURL "${URL_RELEASES}" | jq -r "${JQ_STABLE}")
|
2017-10-13 02:43:16 -05:00
|
|
|
|
2018-03-05 07:29:24 -06:00
|
|
|
# shellcheck disable=SC2003
|
2017-10-13 02:43:16 -05:00
|
|
|
MAJOR_STABLE=$(expr match "${STABLE_VERSION}" 'v\([0-9]\+\)')
|
2018-03-05 07:29:24 -06:00
|
|
|
# shellcheck disable=SC2003
|
2017-10-13 02:43:16 -05:00
|
|
|
MINOR_STABLE=$(expr match "${STABLE_VERSION}" 'v[0-9]\+\.\([0-9]\+\)')
|
2018-03-05 07:29:24 -06:00
|
|
|
# shellcheck disable=SC2003
|
2017-10-13 02:43:16 -05:00
|
|
|
MAJOR_UNSTABLE=$(expr match "${VERSION}" 'v\([0-9]\+\)')
|
2018-03-05 07:29:24 -06:00
|
|
|
# shellcheck disable=SC2003
|
2017-10-13 02:43:16 -05:00
|
|
|
MINOR_UNSTABLE=$(expr match "${VERSION}" 'v[0-9]\+\.\([0-9]\+\)')
|
2017-09-29 04:38:19 -05:00
|
|
|
|
2021-02-08 05:16:04 -06:00
|
|
|
if {
|
|
|
|
[ "${MAJOR_STABLE}" -eq "${MAJOR_UNSTABLE}" ] &&
|
|
|
|
[ "${MINOR_STABLE}" -ge "${MINOR_UNSTABLE}" ]
|
|
|
|
} || [ "${MAJOR_STABLE}" -gt "${MAJOR_UNSTABLE}" ]; then
|
2019-10-10 05:42:10 -05:00
|
|
|
|
2019-10-14 17:40:48 -05:00
|
|
|
echo "❎ Latest unstable version '${VERSION}' is not higher than the latest stable version '$STABLE_VERSION'."
|
2018-03-05 07:30:30 -06:00
|
|
|
if [ -z "$DEBUG" ]; then
|
2020-01-17 11:10:36 -06:00
|
|
|
if [ -n "${GH_ACTION}" ]; then
|
|
|
|
echo "::set-output name=skipped::true"
|
|
|
|
fi
|
|
|
|
|
2018-03-05 07:30:30 -06:00
|
|
|
exit 0
|
|
|
|
else
|
|
|
|
echo "⚠️ Would exit here with code '0', but DEBUG is enabled."
|
|
|
|
fi
|
2017-10-13 02:43:16 -05:00
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2019-10-14 14:54:49 -05:00
|
|
|
# shellcheck disable=SC2068
|
|
|
|
./build.sh "${VERSION}" $@
|
|
|
|
exit $?
|