Skip to content
Snippets Groups Projects
Commit 69e285c8 authored by Grégoire Kubler's avatar Grégoire Kubler
Browse files

feat: reworked the way tag artefacts are retrieved in ubuntu:select_jobs

now parses tag values to look for latest corresponding tag instead of retrieving tag chronologically
parent 38d60b74
No related branches found
No related tags found
No related merge requests found
......@@ -88,27 +88,40 @@
######################################
# CASE WHERE A COMMIT TAG IS CREATED
elif [[ ! -z "$CI_COMMIT_TAG" ]]; then
PROJECT_CURR_TAG_DATE=$(jq '.commit.created_at' <<<$(curl -s "$API_URL/projects/$CI_PROJECT_ID/repository/tags/$CI_COMMIT_TAG"))
echo "Retrieving tags of $DEP_NAME via url $DEP_API_URL/repository/tags?per_page=100."
DEP_TAGS=$(jq --slurp '
.[]
| sort_by(.commit.created_at)
| reverse
' <<<$(curl -s "$DEP_API_URL/repository/tags?per_page=100"))
TAGS_BEFORE_DATE=$(jq --slurp --arg before_date "$PROJECT_CURR_TAG_DATE" '
.[]
| map(select(.commit.created_at != null and (.commit.created_at <= $before_date)))
' <<<"$DEP_TAGS")
# retrieving data from current project
TAG_MAJOR=$(echo "$CI_COMMIT_TAG" | awk -F'[v.]' '{print $2}')
TAG_MINOR=$(echo "$CI_COMMIT_TAG" | awk -F'[v.]' '{print $3}')
TAG_FIX=$(echo "$CI_COMMIT_TAG" | awk -F'[v.]' '{print $4}')
echo "Retrieving tags of $DEP_NAME via url $DEP_API_URL/repository/tags?per_page=100."
DEP_TAGS=$(jq --slurp '
.[]
| sort_by(.commit.created_at)
| reverse
' <<<$(curl -s "$DEP_API_URL/repository/tags?per_page=100"))
if [[ $(jq length <<<"$TAGS_BEFORE_DATE") != 0 ]]; then
BRANCH_TO_PULL=$(jq -r '.[0].name' <<<"$TAGS_BEFORE_DATE")
echo "Found release : $BRANCH_TO_PULL. Using it as \$BRANCH_TO_PULL."
else
echo "Found no release predating $CI_PROJECT_NAME $CI_COMMIT_TAG's date : $CI_COMMIT_TAG."
echo "Retrieving latest repo tag."
BRANCH_TO_PULL=$(jq -r '.[0].name' <<<"$DEP_TAGS")
echo "\$BRANCH_TO_PULL = $BRANCH_TO_PULL"
fi
if [[ $(jq length <<< $DEP_TAGS) == 0 ]]; then
echo "No tag found for $DEP_NAME at url $DEP_API_URL/repository/tags?per_page=100"
echo "Leaving early."
exit 1
fi
echo "Looking for latest fix release corresponding to minor release : v$TAG_MAJOR.$TAG_MINOR.*"
SELECTED_DEPS_TAGS=$(jq --arg major "$TAG_MAJOR" \
--arg minor "$TAG_MINOR" \
'map(select(.name | startswith("v\($major).\($minor).")))' <<< "$DEP_TAGS")
if [[ $(jq length <<< $SELECTED_DEPS_TAGS) == 0 ]]; then
echo "No release v$TAG_MAJOR.$TAG_MINOR.* found. Looking for latest minor release v$TAG_MAJOR.*.* in $DEP_NAME."
SELECTED_DEPS_TAGS=$(jq --arg major "$TAG_MAJOR" \
'map(select(.name | startswith("v\($major).")))' <<< "$DEP_TAGS")
fi
if [[ $(jq length <<< $SELECTED_DEPS_TAGS) > 0 ]]; then
BRANCH_TO_PULL=$(jq -r '.[0].name' <<<"$SELECTED_DEPS_TAGS")
echo "Found a release with corresponding $BRANCH_TO_PULL"
else
echo "No release v$TAG_MAJOR.*.* found. Simply retrieving latest release v*.*.* in $DEP_NAME."
BRANCH_TO_PULL=$(jq -r '.[0].name' <<<"$DEP_TAGS")
fi
echo "Found release : $BRANCH_TO_PULL. Using it as \$BRANCH_TO_PULL."
###########################################
# CASE CASUAL COMMIT or Draft MR PIPELINE
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment