Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#!/bin/bash
TAG_BASE="2301"
EXIST=0
for row in $(curl --header "PRIVATE-TOKEN: $TOKEN_GITLAB" "https://labs.maarch.org/api/v4/projects/$CI_PROJECT_ID/repository/branches?search=2301_releases" | jq -r '.[] | @base64'); do
_jq() {
echo ${row} | base64 --decode | jq -r ${1}
}
EXIST=$((EXIST + 1))
done
if [ $EXIST == 1 ]
then
echo "2301_releases already exist, skipping ..."
else
echo "2301_releases branch does not exist, creating ..."
# Create 2301_releases branche
echo "https://labs.maarch.org/api/v4/projects/$CI_PROJECT_ID/repository/branches?branch=2301_releases&ref=main"
curl --request POST --header "PRIVATE-TOKEN: $TOKEN_GITLAB" "https://labs.maarch.org/api/v4/projects/$CI_PROJECT_ID/repository/branches?branch=2301_releases&ref=main"
# Create 2301_releases mr
BODY="{\"id\":\"$CI_PROJECT_ID\",\"source_branch\":\"2301_releases\",\"target_branch\":\"main\",\"title\":\"Next tag release\",\"description\":\"\",\"remove_source_branch\":\"true\",\"squash\":\"false\"}"
curl -v -H "PRIVATE-TOKEN: $TOKEN_GITLAB" -H "Content-Type: application/json" -X POST -d "$BODY" "https://labs.maarch.org/api/v4/projects/$CI_PROJECT_ID/merge_requests"
FIRST_TAG=0
for row in $(curl --header "PRIVATE-TOKEN: $TOKEN_GITLAB" "https://labs.maarch.org/api/v4/projects/$CI_PROJECT_ID/repository/tags?search=^$TAG_BASE" | jq -r '.[] | @base64'); do
_jq() {
echo ${row} | base64 --decode | jq -r ${1}
}
NAME=$(_jq '.name')
IS_TMA=$(echo $NAME | grep -o '[.]*_TMA[.]*')
if [[ -n $IS_TMA ]]; then
echo "TMA tag branch : $NAME ! Skipping..."
else
TAGS+=("$NAME")
fi
done
if [ ${#TAGS[@]} -eq 0 ]; then
FIRST_TAG=1
LATEST_TAG="$TAG_BASE.0.0"
BRANCH_TAG_VERSION=$TAG_BASE
MAJOR_TAG_VERSION='0'
MINOR_TAG_VERSION='0'
NEXT_TAG="$TAG_BASE.0.0"
NEXT_NEXT_TAG="$TAG_BASE.0.1"
else
SORTED_TAGS=($(echo ${TAGS[*]} | tr " " "\n" | sort -Vr))
LATEST_TAG=$(echo ${SORTED_TAGS[0]})
structures=$(echo $LATEST_TAG | tr "." "\n")
IT=1
for item in $structures; do
if [ $IT = 1 ]; then
BRANCH_TAG_VERSION=$item
fi
if [ $IT = 2 ]; then
MAJOR_TAG_VERSION="$item"
fi
if [ $IT = 3 ]; then
MINOR_TAG_VERSION=$item
fi
IT=$((IT + 1))
done
fi
if [ $FIRST_TAG == 0 ]; then
VERSION=$((MINOR_TAG_VERSION + 1))
VERSION_NEXT=$((MINOR_TAG_VERSION + 2))
NEXT_TAG="$BRANCH_TAG_VERSION.$MAJOR_TAG_VERSION.$VERSION"
NEXT_NEXT_TAG="$BRANCH_TAG_VERSION.$MAJOR_TAG_VERSION.$VERSION"
fi
# Update files version
git config --global user.email "$GITLAB_USER_EMAIL" && git config --global user.name "$GITLAB_USER_NAME" && git config core.fileMode false
git remote set-url origin "https://gitlab-ci-token:${TOKEN_GITLAB}@${GITLAB_URL}/${CI_PROJECT_PATH}.git"
git fetch
git branch -D $TAG_BASE"_releases"
git pull origin $TAG_BASE"_releases"
git checkout $TAG_BASE"_releases"
cp package.json tmp_package.json
jq -r ".version |= \"$NEXT_NEXT_TAG\"" tmp_package.json >package.json
rm tmp_package.json
git add -f package.json
git commit -m "Update next tag version files : $NEXT_NEXT_TAG"
git push
fi