Skip to content
Snippets Groups Projects
Commit 09f6a9f7 authored by Alex ORLUC's avatar Alex ORLUC
Browse files

Merge branch 'feat/23752/develop' into 'develop'

[23752] [ci] Refactoring des scripts de tag mineur et majeur

See merge request maarch/MaarchParapheur!189
parents a2c65d8c 4bf8d72b
No related branches found
No related tags found
No related merge requests found
......@@ -4,11 +4,10 @@ variables:
POSTGRES_PASSWORD: ""
stages:
- logs
- new_branch
- new_tag
- sync
- test
- synchronization
- deploy
- after_deploy
before_script:
- apt-get update -yqq > /dev/null
......@@ -36,12 +35,8 @@ job_php-8.1:
- curl --location -s --output /usr/local/bin/phpunit https://phar.phpunit.de/phpunit-9.phar
- chmod +x /usr/local/bin/phpunit
- phpunit --coverage-text --colors=never
# only:
# - develop
# except:
# - schedules
rules:
- if: '$CI_COMMIT_BRANCH =~ /(feat|fix)\/[0-9]{4,5}\/develop/'
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
artifacts:
paths:
......@@ -60,12 +55,8 @@ job_php-8.0:
- curl --location -s --output /usr/local/bin/phpunit https://phar.phpunit.de/phpunit-9.phar
- chmod +x /usr/local/bin/phpunit
- phpunit --coverage-text --colors=never
# only:
# - develop
# except:
# - schedules
rules:
- if: '$CI_COMMIT_BRANCH =~ /(feat|fix)\/[0-9]{4,5}\/develop/'
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
artifacts:
paths:
- test/unitTests/build/
......@@ -83,172 +74,82 @@ job_php-7.4:
- curl --location -s --output /usr/local/bin/phpunit https://phar.phpunit.de/phpunit-9.phar
- chmod +x /usr/local/bin/phpunit
- phpunit --coverage-text --colors=never -c phpunit.xml
# only:
# - develop
# except:
# - schedules
rules:
- if: '$CI_COMMIT_BRANCH =~ /(feat|fix)\/[0-9]{4,5}\/develop/'
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
artifacts:
paths:
- test/unitTests/build/
expire_in: 2h
# coverage: '^\s*Lines:\s*\d+.\d+\%'
commits:
create_merge_request:
image: debian:10-slim
stage: synchronization
only:
- develop
- "21.03"
except:
- tags
- schedules
stage: sync
rules:
- if: '$CI_COMMIT_BRANCH =~ /(feat|fix)\/[0-9]*/ && $CI_OPEN_MERGE_REQUESTS == null && $CI_COMMIT_BEFORE_SHA == "0000000000000000000000000000000000000000"'
before_script:
# Skip the synchronisation if it is not enabled
- if [ $SYNC_ENABLED = "true" ]; then echo "Sync enabled"; else echo "Sync disabled, stopping the job" && exit 0; fi
# Configure ssh, with the private key to push to the private repository
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- ssh-keyscan "$GITLAB_URL" >> ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" >> ~/.ssh/config'
# Install git command
- apt install -y git
- apt-get update -yqq > /dev/null
- apt install -y curl
- apt install -y jq
script:
- chmod +x ./ci/commit_synchronization.sh
- ./ci/commit_synchronization.sh
- chmod +x ./ci/create_mr.sh
- ./ci/create_mr.sh
tags:
end_merge_request:
image: debian:10-slim
stage: synchronization
only:
- tags
except:
- schedules
stage: sync
rules:
- if: '$CI_COMMIT_MESSAGE =~ /^Merge branch/ && $CI_PIPELINE_SOURCE != "schedule" && ($CI_COMMIT_BRANCH == "main" || $CI_COMMIT_BRANCH == "2301_releases")'
before_script:
# Skip the synchronisation if it is not enabled
- if [ $SYNC_ENABLED = "true" ]; then echo "Sync enabled"; else echo "Sync disabled, stopping the job" && exit 0; fi
# Configure ssh, with the private key to push to the private repository
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- ssh-keyscan "$GITLAB_URL" >> ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" >> ~/.ssh/config'
# Install git and curl command
- apt install -y git
- apt-get update -yqq > /dev/null
- apt install -y curl
# Install npm
- curl -sL https://deb.nodesource.com/setup_14.x | bash -
- apt install -y nodejs
- apt install -y jq
script:
- git config --global user.email "$CI_EMAIL" && git config --global user.name "$CI_USER"
# We will work in another directory, to avoid git conflicts
- mkdir tmp
- cd tmp
# Find the branch name from tag name
- VERSION1=$(echo $CI_COMMIT_TAG| cut -d'.' -f 1)
- VERSION2=$(echo $CI_COMMIT_TAG| cut -d'.' -f 2)
- VERSION="${VERSION1}.${VERSION2}"
# Pull the private repository
- git init && git remote add origin $PRIVATE_REPOSITORY_URL_SSH
- git pull origin $VERSION
# Update and push build prod
- npm install
- npm run build-prod
- git status
- git add -f dist/
- git status
- git commit -m "Build prod for tag ${CI_COMMIT_TAG}"
- git show-ref
- git push origin HEAD:$VERSION
- git status
# Do the tag on the private repo
- git tag $CI_COMMIT_TAG
- git status
- git push origin --tags
- chmod +x ./ci/end_mr.sh
- ./ci/end_mr.sh
logs:
check_branch_releases:
image: debian:10-slim
stage: logs
except:
- schedules
- tags
- master
stage: after_deploy
rules:
- if: '$CI_PIPELINE_SOURCE == "schedule" && $TAG_MODE == "minor"'
before_script:
# Skip the logging if in pro (=> sync disabled)
- if [ $SYNC_ENABLED = "true" ]; then echo "Sync enabled"; else echo "Sync disabled, stopping the job" && exit 0; fi
- apt-get update -y
- apt-get update -yqq > /dev/null
- apt install -y curl
- apt install -y jq
- apt install -y git
script:
- |
if [[ $CI_COMMIT_MESSAGE == "FEAT"* ]]; then \
ISSUE_ID=`echo $CI_COMMIT_MESSAGE | grep -o 'FEAT \#[0-9]*' | grep -o '[0-9]*'`; \
echo "found FEAT !"; \
else \
if [[ $CI_COMMIT_MESSAGE == "FIX"* ]]; then \
ISSUE_ID=`echo $CI_COMMIT_MESSAGE | grep -o 'FIX \#[0-9]*' | grep -o '[0-9]*'`; \
echo "found FIX !"; \
else \
echo "no FEAT or FIX found :("; \
exit 0; \
fi; \
fi
- echo $ISSUE_ID
- NOTE_MESSAGE="Commit ajouté sur la branche **$CI_COMMIT_REF_NAME** de **$CI_PROJECT_NAME**"
- COMMIT_URL="$CI_PROJECT_URL/commit/$CI_COMMIT_SHA"
- echo $NOTE_MESSAGE
- echo "$CI_COMMIT_MESSAGE"
- CI_COMMIT_MESSAGE=$(echo $CI_COMMIT_MESSAGE) # Remove the line returns
- echo "$CI_COMMIT_MESSAGE"
- echo $COMMIT_URL
- NOTE="$NOTE_MESSAGE \n $CI_COMMIT_MESSAGE \n $COMMIT_URL"
- echo "$NOTE"
- BODY="{\"issue\":{\"notes\":\"$NOTE\",\"private_notes\":false}}"
- echo "$BODY"
- curl -v -H 'Content-Type:application/json' -H "X-Redmine-API-Key:$REDMINE_API_KEY" -d "$BODY" -X PUT https://forge.maarch.org/issues/$ISSUE_ID.json
- chmod +x ./ci/check_releases.sh
- ./ci/check_releases.sh
new_branch:
image: debian:10-slim
stage: new_branch
only:
- branches
create_minor_tag:
image: php:8.1.14-cli
stage: deploy
rules:
- if: '$CI_PIPELINE_SOURCE == "schedule" && $TAG_MODE == "minor"'
before_script:
# Install git and curl command
- apt-get update -yqq > /dev/null
- apt install -y git
- apt install -y curl
- apt install -y jq
- chmod +x ./ci/generate_app_dependencies.sh
- ./ci/generate_app_dependencies.sh
script:
- chmod +x ./ci/create_mr.sh
- ./ci/create_mr.sh
- chmod +x ./ci/new_minor_tag.sh
- ./ci/new_minor_tag.sh
new_tag:
image: debian:10-slim
stage: new_tag
only:
- tags
create_major_tag:
image: php:8.1.14-cli
stage: deploy
rules:
- if: '$CI_PIPELINE_SOURCE == "schedule" && $TAG_MODE == "major"'
before_script:
# Install git and curl command
- apt-get update -yqq > /dev/null
- 'which ssh-agent || ( apt-get install openssh-client -y )'
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY_2" | tr -d '\r' | ssh-add -
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- ssh-keyscan "$GITLAB_URL" >> ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" >> ~/.ssh/config'
- apt install -y git
- apt install -y curl
- apt install -y jq
- chmod +x ./ci/generate_app_dependencies.sh
- ./ci/generate_app_dependencies.sh
script:
- chmod +x ./ci/new_tag.sh
- ./ci/new_tag.sh
- chmod +x ./ci/new_major_tag.sh
- ./ci/new_major_tag.sh
#!/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
#!/bin/bash
# Synchronize commits to the private repository by merging commits in the public repository to the private one
echo "Synchronizing changes in branch $CI_COMMIT_REF_NAME"
git status
git remote set-url origin $PRIVATE_REPOSITORY_URL_SSH
git config --global user.email "$CI_EMAIL" && git config --global user.name "$CI_USER"
exists=$(git show-ref refs/heads/$CI_COMMIT_REF_NAME)
if [ -n "$exists" ]; then
git branch -D $CI_COMMIT_REF_NAME
echo "Created branch $CI_COMMIT_REF_NAME"
fi
if [ -d ".git/rebase-apply" ]; then
rm -fr .git/rebase-apply
echo "Removed rebase lock file .git/rebase-apply"
fi
echo "Attempt 1 with rebase"
if ! git pull --rebase origin $CI_COMMIT_REF_NAME; then
echo "Rebase FAILED !"
echo "Attempt 2 by keeping changes from normal repository"
echo "/!\ This will override the changes in the private repository !"
# /!\ theirs will keep the changes in the Pro repository ! ours will keep the changes in the normal one
if ! git pull -s recursive -X ours --no-edit origin $CI_COMMIT_REF_NAME; then
echo "Pull FAILED !"
echo "Attempt 3 by overriding the changes to the private repository"
echo "/!\ This will create a merge commit"
echo "/!\ Only overriding dist/, if another directory/file needs to be overridden, it should be added in this script"
git fetch origin
git merge --no-commit --no-ff origin/$CI_COMMIT_REF_NAME
git reset -- dist/
git status
git commit -m "Reset dist folder + merge commits"
fi
fi
# Use this pull command if there are merge conflicts during rebase
# git pull -s recursive -X ours --no-edit origin $CI_COMMIT_REF_NAME
git checkout -b $CI_COMMIT_REF_NAME
echo "Pushing changes to private repository..."
if ! git push --set-upstream origin $CI_COMMIT_REF_NAME; then
echo "FAILED to push changes"
exit 1
fi
echo "Changes pushed"
......@@ -27,14 +27,24 @@ do
done
if [[ -z $TRACKER ]] || [[ -z $US ]] || [[ -z $BRANCH ]]
if [[ -z $TRACKER ]] || [[ -z $US ]]
then
echo "Bad structure to find US ! => [TRACKER]/[US_ID]/[TARGET_BRANCH]"
echo "Bad structure to find US ! => [TRACKER]/[US_ID]"
else
echo $TRACKER
echo $US
echo $BRANCH
if [[ $TRACKER == "feat" ]]; then
TARGET_BRANCH="main";
else
if [[ $TRACKER == "fix" ]]; then
TARGET_BRANCH="2301_releases";
else
echo "no feat or fix found :(";
exit 0;
fi;
fi
echo "GET https://forge.maarch.org/issues/$US.json"
......@@ -42,11 +52,17 @@ else
SUBJECT=`cat issue_$US.json | jq -r '.issue.subject'`
BODY="{\"id\":\"$CI_PROJECT_ID\",\"source_branch\":\"$CI_COMMIT_REF_NAME\",\"target_branch\":\"$BRANCH\",\"title\":\"Draft: [$US] $SUBJECT\",\"description\":\"$SUBJECT\n=> https://forge.maarch.org/issues/$US\",\"remove_source_branch\":\"true\"}"
BODY="{\"id\":\"$CI_PROJECT_ID\",\"source_branch\":\"$CI_COMMIT_REF_NAME\",\"target_branch\":\"$TARGET_BRANCH\",\"title\":\"Draft: [$US] $SUBJECT\",\"description\":\"$SUBJECT\n=> https://forge.maarch.org/issues/$US\",\"remove_source_branch\":\"true\",\"squash\":\"false\"}"
echo $BODY
echo "POST https://labs.maarch.org/api/v4/projects/$CI_PROJECT_ID/merge_requests"
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"
fi
curl -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"
# Create comment on forge
COMMIT_URL="$CI_PROJECT_URL/commit/$CI_COMMIT_SHA"
NOTE="[**CREATION**] MR sur **$TARGET_BRANCH** (**$CI_COMMIT_REF_NAME**) par $CI_COMMIT_AUTHOR\n\n$COMMIT_URL"
BODY="{\"issue\":{\"notes\":\"$NOTE\",\"private_notes\":false}}"
curl -H 'Content-Type:application/json' -H "X-Redmine-API-Key:$REDMINE_API_KEY" -d "$BODY" -X PUT https://forge.maarch.org/issues/$US.json
fi
\ No newline at end of file
#!/bin/bash
BRANCH=`echo $CI_COMMIT_MESSAGE | grep -oP "'(.*?)'" | head -1 | tr -d "'"`
ISSUE_ID=`echo $BRANCH | grep -oP "[0-9]*" | head -1`
IT=0
if [[ ! -z $ISSUE_ID ]]
then
for row in $(curl --header "PRIVATE-TOKEN: $TOKEN_GITLAB" "https://labs.maarch.org/api/v4/projects/$CI_PROJECT_ID/merge_requests?state=merged&in=source_branch&search=$ISSUE_ID" | jq -r '.[] | @base64'); do
_jq() {
echo ${row} | base64 --decode | jq -r ${1}
}
if [ $IT = 0 ]; then
URL=$(_jq '.web_url')
AUTHOR=$(_jq '.merge_user.name')
SOURCE_BRANCH=$(_jq '.source_branch')
TARGET_BRANCH=$(_jq '.target_branch')
NOTE="[**CLOTURE**] MR sur **$TARGET_BRANCH** (**$SOURCE_BRANCH**) par $AUTHOR\n\n$URL"
fi
IT=$((IT+1))
done
BODY="{\"issue\":{\"notes\":\"$NOTE\",\"private_notes\":false}}"
echo $BODY
curl -H 'Content-Type:application/json' -H "X-Redmine-API-Key:$REDMINE_API_KEY" -d "$BODY" -X PUT https://forge.maarch.org/issues/$ISSUE_ID.json
else
echo "NO US FOUND !"
fi
#!/bin/bash
# We need to install dependencies only for Docker
[[ ! -e /.dockerenv ]] && exit 0
set -xe
apt-get install -y libpq-dev libxml2-dev libxslt1-dev libpng-dev unoconv xpdf-utils imagemagick ghostscript wkhtmltopdf libzip-dev zip \
&& docker-php-ext-configure pgsql -with-pgsql=/usr/local/pgsql \
&& docker-php-ext-configure pdo_pgsql --with-pdo-pgsql \
&& docker-php-ext-install pdo_pgsql pgsql \
&& docker-php-ext-install xsl soap zip \
&& docker-php-ext-install gd
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"
mv composer.phar /usr/local/bin/composer
curl -sL https://deb.nodesource.com/setup_18.x | bash - > /dev/null
apt-get install -y nodejs
npm install -g n
n 18
node -v
npm -v
\ No newline at end of file
#!/bin/bash
FIRST_TAG=0
TAGS=()
RESPONSE=$(curl --write-out '%{url_effective} [%{response_code}]' --silent --output /dev/null --header "PRIVATE-TOKEN: $TOKEN_GITLAB" "https://labs.maarch.org/api/v4/projects/$CI_PROJECT_ID/repository/tags?search=^$TAG_BASE")
RESPONSE_CODE=$(echo $RESPONSE | grep -o '\[[0-9]*\]$')
if [ $RESPONSE_CODE != '[200]' ]; then
echo "Error ! $RESPONSE"
exit 1
fi
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
echo "No Tags available, create de first tag !"
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_MILESTONE="$BRANCH_TAG_VERSION.1.x"
else
SORTED_TAGS=($(echo ${TAGS[*]} | tr " " "\n" | sort -Vr))
LATEST_TAG=$(echo ${SORTED_TAGS[0]})
echo "Latest tag : $LATEST_TAG"
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
echo "BRANCH : $BRANCH_TAG_VERSION"
echo "MAJOR TAG : $MAJOR_TAG_VERSION"
echo "MINOR TAG : $MINOR_TAG_VERSION"
if [[ -z $BRANCH_TAG_VERSION ]] || [[ -z $MAJOR_TAG_VERSION ]] || [[ -z $MINOR_TAG_VERSION ]]; then
echo "Bad tag structure ! $LATEST_TAG"
exit 1
fi
if [ $FIRST_TAG == 0 ]; then
VERSION=$((MAJOR_TAG_VERSION + 1))
VERSION_NEXT=$((MAJOR_TAG_VERSION + 2))
NEXT_TAG="$BRANCH_TAG_VERSION.$VERSION.0"
NEXT_TAG_MILESTONE="$BRANCH_TAG_VERSION.$VERSION.x"
NEXT_NEXT_TAG="$BRANCH_TAG_VERSION.$VERSION_NEXT.0"
NEXT_NEXT_TAG_MILESTONE="$BRANCH_TAG_VERSION.$VERSION_NEXT.x"
NEXT_MINOR_TAG="$BRANCH_TAG_VERSION.$VERSION.1"
echo "NEXT TAG : $NEXT_TAG"
fi
if [ $FIRST_TAG == 1 ]; then
BODY="{\"id\":\"$CI_PROJECT_ID\",\"title\":\"$BRANCH_TAG_VERSION.0.1\"}"
# CREATE FIRST MINOR MILESTONE
curl -H 'Content-Type:application/json' -H "PRIVATE-TOKEN:$TOKEN_GITLAB" -d "$BODY" -X POST https://labs.maarch.org/api/v4/projects/$CI_PROJECT_ID/milestones
chmod +x ./ci/check_releases.sh
./ci/check_releases.sh
fi
curl --request POST --header "PRIVATE-TOKEN: $TOKEN_GITLAB" "https://labs.maarch.org/api/v4/projects/$CI_PROJECT_ID/repository/branches?branch=tmp_$RELEASE_BRANCH&ref=$RELEASE_BRANCH"
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 tmp_$RELEASE_BRANCH
git pull origin tmp_$RELEASE_BRANCH
git checkout tmp_$RELEASE_BRANCH
composer install
npm run reload-packages
npm run build-prod
npm run reload-packages-prod
git add -f dist/
git add -f node_modules/
git add -f vendor/
git commit -m "Add packages dependencies"
git push
## CREATE TAG
curl -w " => %{url_effective} [%{response_code}]" -H 'Content-Type:application/json' -H "PRIVATE-TOKEN:$TOKEN_GITLAB" -X POST "https://labs.maarch.org/api/v4/projects/$CI_PROJECT_ID/repository/tags?tag_name=$NEXT_TAG&ref=tmp_$RELEASE_BRANCH"
curl --request DELETE --header "PRIVATE-TOKEN: $TOKEN_GITLAB" "https://labs.maarch.org/api/v4/projects/$CI_PROJECT_ID/repository/branches/tmp_$RELEASE_BRANCH"
## CREATE TAG MP PRO SIDE
curl --request POST --header "PRIVATE-TOKEN: $TOKEN_GITLAB" "https://labs.maarch.org/api/v4/projects/215/pipeline_schedules/18/play"
if [ $FIRST_TAG == 0 ]; then
## CLOSE MILESTONE
for row in $(curl --header "PRIVATE-TOKEN: $TOKEN_GITLAB" "https://labs.maarch.org/api/v4/projects/$CI_PROJECT_ID/milestones?search=$NEXT_TAG_MILESTONE" | jq -r '.[] | @base64'); do
_jq() {
echo ${row} | base64 --decode | jq -r ${1}
}
ID=$(_jq '.id')
echo $ID
BODY="{\"id\":\"$ID\",\"state_event\":\"close\"}"
curl -H 'Content-Type:application/json' -H "PRIVATE-TOKEN:$TOKEN_GITLAB" -d "$BODY" -X PUT https://labs.maarch.org/api/v4/projects/$CI_PROJECT_ID/milestones/$ID
done
fi
BODY="{\"id\":\"$CI_PROJECT_ID\",\"title\":\"$NEXT_NEXT_TAG_MILESTONE\"}"
# CREATE NEXT TAG MILESTONE
curl -H 'Content-Type:application/json' -H "PRIVATE-TOKEN:$TOKEN_GITLAB" -d "$BODY" -X POST https://labs.maarch.org/api/v4/projects/$CI_PROJECT_ID/milestones
if [ $FIRST_TAG == 0 ]; then
# GENERATE RAW CHANGELOG
COMMIT_LOG_FILE="tmp.txt"
ISSUES_IDS_FILE="tmp2.txt"
SORTED_UNIQUE_ISSUES_IDS="tmp3.txt"
FINAL_LOG="tmp4.txt"
CONTENT=""
echo "Set user git : $GITLAB_USER_NAME <$GITLAB_USER_EMAIL>"
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 $RELEASE_BRANCH
git pull origin $RELEASE_BRANCH
git checkout $RELEASE_BRANCH
TAGS_COMP="$BRANCH_TAG_VERSION.$MAJOR_TAG_VERSION.0..$NEXT_TAG"
REF_UPDATED=$(git log $TAGS_COMP --pretty=format:'%s' --grep='Update referential' --all-match)
git log $TAGS_COMP --pretty=format:'%s' --grep='feat' --grep='Merge' --all-match >$COMMIT_LOG_FILE
echo '' >>$COMMIT_LOG_FILE
while IFS= read -r line; do
ISSUE_ID=$(echo $line | grep -o 'feat/[0-9]*' | grep -o '[0-9]*')
echo "$ISSUE_ID" >>$ISSUES_IDS_FILE
done <"$COMMIT_LOG_FILE"
git log $TAGS_COMP --pretty=format:'%s' --grep='fix' --grep='Merge' --all-match >$COMMIT_LOG_FILE
echo '' >>$COMMIT_LOG_FILE
while IFS= read -r line; do
ISSUE_ID=$(echo $line | grep -o 'fix/[0-9]*' | grep -o '[0-9]*')
echo "$ISSUE_ID" >>$ISSUES_IDS_FILE
done <"$COMMIT_LOG_FILE"
sort -u $ISSUES_IDS_FILE >$SORTED_UNIQUE_ISSUES_IDS
while IFS= read -r line; do
echo "=================="
echo $line
curl -H "X-Redmine-API-Key: ${REDMINE_API_KEY}" -H 'Content-Type: application/json' -X GET https://forge.maarch.org/issues/$line.json >issue_$line.json
# echo `cat issue_$line.json`
SUBJECT=$(cat issue_$line.json | jq -r '.issue.subject')
TRACKER=$(cat issue_$line.json | jq -r '.issue.tracker.name')
ID=$(cat issue_$line.json | jq -r '.issue.id')
echo ""
echo "ID : $ID"
echo "TRACKER : $TRACKER"
echo "SUBJECT : $SUBJECT"
echo "=================="
if [ ! -z $ID ]; then
echo "* **$TRACKER [#$ID](https://forge.maarch.org/issues/$ID)** - $SUBJECT" >>$FINAL_LOG
fi
done <"$SORTED_UNIQUE_ISSUES_IDS"
if [[ ! -z $REF_UPDATED ]]; then
echo "* **Fonctionnalité** - Mise à jour de la BAN 75" >>$FINAL_LOG
fi
sort -u $FINAL_LOG >>changelog.txt
while IFS= read -r line; do
CONTENT="$CONTENT\n$line"
done <"changelog.txt"
echo $CONTENT
# Update tag release
BODY="{\"description\":\"$CONTENT\",\"tag_name\":\"$NEXT_TAG\", \"milestones\": [\"$NEXT_TAG_MILESTONE\"]}"
curl -H 'Content-Type:application/json' -H "PRIVATE-TOKEN:$TOKEN_GITLAB" -d "$BODY" -X POST https://labs.maarch.org/api/v4/projects/$CI_PROJECT_ID/releases
mkdir -p ci/build/
mv $COMMIT_LOG_FILE ci/build/
mv $ISSUES_IDS_FILE ci/build/
mv $SORTED_UNIQUE_ISSUES_IDS ci/build/
mv $FINAL_LOG ci/build/
# Update files version from branche releases
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_MINOR_TAG\"" tmp_package.json >package.json
rm tmp_package.json
git add -f package.json
git commit -m "Update next tag version files (major tag released) : $NEXT_MINOR_TAG"
git push
BODY="{\"id\":\"$CI_PROJECT_ID\",\"title\":\"$NEXT_NEXT_TAG_MILESTONE\"}"
# EDIT NEXT MINOR TAG MILESTONE
for row in $(curl --header "PRIVATE-TOKEN: $TOKEN_GITLAB" "https://labs.maarch.org/api/v4/projects/$CI_PROJECT_ID/milestones?search=$BRANCH_TAG_VERSION.$MAJOR_TAG_VERSION&state=active" | jq -r '.[] | @base64'); do
_jq() {
echo ${row} | base64 --decode | jq -r ${1}
}
ID=$(_jq '.id')
echo $ID
BODY="{\"id\":\"$ID\",\"title\":\"$NEXT_MINOR_TAG\"}"
curl -H 'Content-Type:application/json' -H "PRIVATE-TOKEN:$TOKEN_GITLAB" -d "$BODY" -X PUT https://labs.maarch.org/api/v4/projects/$CI_PROJECT_ID/milestones/$ID
done
fi
#!/bin/bash
FIRST_TAG=0
TAGS=()
RESPONSE=$(curl --write-out '%{url_effective} [%{response_code}]' --silent --output /dev/null --header "PRIVATE-TOKEN: $TOKEN_GITLAB" "https://labs.maarch.org/api/v4/projects/$CI_PROJECT_ID/repository/tags?search=^$TAG_BASE")
RESPONSE_CODE=$(echo $RESPONSE | grep -o '\[[0-9]*\]$')
if [ $RESPONSE_CODE != '[200]' ]; then
echo "Error ! $RESPONSE"
exit 1
fi
MR_ID=`echo $CI_OPEN_MERGE_REQUESTS | grep -oP "!(.)*" | tr -d "!"`
content=$(curl --header "PRIVATE-TOKEN: $TOKEN_GITLAB" "https://labs.maarch.org/api/v4/projects/$CI_PROJECT_ID/merge_requests/$MR_ID")
STATUS=$(jq -r '.detailed_merge_status' <<<"$content")
echo $STATUS
if [ $STATUS != 'mergeable' ]; then
echo "2301_releases cannot be merge ! Tag Abort"
exit 1
fi
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
echo "No Tags available, create de first tag !"
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"
else
SORTED_TAGS=($(echo ${TAGS[*]} | tr " " "\n" | sort -Vr))
LATEST_TAG=$(echo ${SORTED_TAGS[0]})
echo "Latest tag : $LATEST_TAG"
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
echo "BRANCH : $BRANCH_TAG_VERSION"
echo "MAJOR TAG : $MAJOR_TAG_VERSION"
echo "MINOR TAG : $MINOR_TAG_VERSION"
if [[ -z $BRANCH_TAG_VERSION ]] || [[ -z $MAJOR_TAG_VERSION ]] || [[ -z $MINOR_TAG_VERSION ]]; then
echo "Bad tag structure ! $LATEST_TAG"
exit 1
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_NEXT"
echo "NEXT TAG : $NEXT_TAG"
fi
curl --request POST --header "PRIVATE-TOKEN: $TOKEN_GITLAB" "https://labs.maarch.org/api/v4/projects/$CI_PROJECT_ID/repository/branches?branch=tmp_$RELEASE_BRANCH&ref=$RELEASE_BRANCH"
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 tmp_$RELEASE_BRANCH
git pull origin tmp_$RELEASE_BRANCH
git checkout tmp_$RELEASE_BRANCH
composer install
npm run reload-packages
npm run build-prod
npm run reload-packages-prod
git add -f dist/
git add -f node_modules/
git add -f vendor/
git commit -m "Add packages dependencies"
git push
## CREATE TAG
curl -w " => %{url_effective} [%{response_code}]" -H 'Content-Type:application/json' -H "PRIVATE-TOKEN:$TOKEN_GITLAB" -X POST "https://labs.maarch.org/api/v4/projects/$CI_PROJECT_ID/repository/tags?tag_name=$NEXT_TAG&ref=tmp_$RELEASE_BRANCH"
curl --request DELETE --header "PRIVATE-TOKEN: $TOKEN_GITLAB" "https://labs.maarch.org/api/v4/projects/$CI_PROJECT_ID/repository/branches/tmp_$RELEASE_BRANCH"
## CREATE TAG MP PRO SIDE
curl --request POST --header "PRIVATE-TOKEN: $TOKEN_GITLAB" "https://labs.maarch.org/api/v4/projects/215/pipeline_schedules/18/play"
if [ $FIRST_TAG == 0 ]; then
## CLOSE MILESTONE
for row in $(curl --header "PRIVATE-TOKEN: $TOKEN_GITLAB" "https://labs.maarch.org/api/v4/projects/$CI_PROJECT_ID/milestones?search=$NEXT_TAG" | jq -r '.[] | @base64'); do
_jq() {
echo ${row} | base64 --decode | jq -r ${1}
}
ID=$(_jq '.id')
echo $ID
BODY="{\"id\":\"$ID\",\"state_event\":\"close\"}"
curl -H 'Content-Type:application/json' -H "PRIVATE-TOKEN:$TOKEN_GITLAB" -d "$BODY" -X PUT https://labs.maarch.org/api/v4/projects/$CI_PROJECT_ID/milestones/$ID
done
fi
BODY="{\"id\":\"$CI_PROJECT_ID\",\"title\":\"$NEXT_NEXT_TAG\"}"
# CREATE NEXT TAG MILESTONE
curl -H 'Content-Type:application/json' -H "PRIVATE-TOKEN:$TOKEN_GITLAB" -d "$BODY" -X POST https://labs.maarch.org/api/v4/projects/$CI_PROJECT_ID/milestones
if [ $FIRST_TAG == 0 ]; then
# GENERATE RAW CHANGELOG
COMMIT_LOG_FILE="tmp.txt"
ISSUES_IDS_FILE="tmp2.txt"
SORTED_UNIQUE_ISSUES_IDS="tmp3.txt"
FINAL_LOG="tmp4.txt"
CONTENT=""
git branch -D $RELEASE_BRANCH
git pull origin $RELEASE_BRANCH
git checkout $RELEASE_BRANCH
TAGS_COMP="$LATEST_TAG..$NEXT_TAG"
REF_UPDATED=$(git log $TAGS_COMP --pretty=format:'%s' --grep='Update referential' --all-match)
git log $TAGS_COMP --pretty=format:'%s' --grep='feat' --grep='Merge' --all-match >$COMMIT_LOG_FILE
echo '' >>$COMMIT_LOG_FILE
while IFS= read -r line; do
ISSUE_ID=$(echo $line | grep -o 'feat/[0-9]*' | grep -o '[0-9]*')
echo "$ISSUE_ID" >>$ISSUES_IDS_FILE
done <"$COMMIT_LOG_FILE"
git log $TAGS_COMP --pretty=format:'%s' --grep='fix' --grep='Merge' --all-match >$COMMIT_LOG_FILE
echo '' >>$COMMIT_LOG_FILE
while IFS= read -r line; do
ISSUE_ID=$(echo $line | grep -o 'fix/[0-9]*' | grep -o '[0-9]*')
echo "$ISSUE_ID" >>$ISSUES_IDS_FILE
done <"$COMMIT_LOG_FILE"
sort -u $ISSUES_IDS_FILE >$SORTED_UNIQUE_ISSUES_IDS
while IFS= read -r line; do
echo "=================="
echo $line
curl -H "X-Redmine-API-Key: ${REDMINE_API_KEY}" -H 'Content-Type: application/json' -X GET https://forge.maarch.org/issues/$line.json >issue_$line.json
# echo `cat issue_$line.json`
SUBJECT=$(cat issue_$line.json | jq -r '.issue.subject')
TRACKER=$(cat issue_$line.json | jq -r '.issue.tracker.name')
ID=$(cat issue_$line.json | jq -r '.issue.id')
echo ""
echo "ID : $ID"
echo "TRACKER : $TRACKER"
echo "SUBJECT : $SUBJECT"
echo "=================="
if [ ! -z $ID ]; then
echo "* **$TRACKER [#$ID](https://forge.maarch.org/issues/$ID)** - $SUBJECT" >>$FINAL_LOG
fi
done <"$SORTED_UNIQUE_ISSUES_IDS"
if [[ ! -z $REF_UPDATED ]]; then
echo "* **Fonctionnalité** - Mise à jour de la BAN 75" >>$FINAL_LOG
fi
sort -u $FINAL_LOG >>changelog.txt
while IFS= read -r line; do
CONTENT="$CONTENT\n$line"
done <"changelog.txt"
echo $CONTENT
# Update tag release
BODY="{\"description\":\"$CONTENT\",\"tag_name\":\"$NEXT_TAG\", \"milestones\": [\"$NEXT_TAG\"]}"
curl -H 'Content-Type:application/json' -H "PRIVATE-TOKEN:$TOKEN_GITLAB" -d "$BODY" -X POST https://labs.maarch.org/api/v4/projects/$CI_PROJECT_ID/releases
mkdir -p ci/build/
mv $COMMIT_LOG_FILE ci/build/
mv $ISSUES_IDS_FILE ci/build/
mv $SORTED_UNIQUE_ISSUES_IDS ci/build/
mv $FINAL_LOG ci/build/
fi
RESPONSE=$(curl --write-out '%{url_effective} [%{response_code}]' --silent --output /dev/null --header "PRIVATE-TOKEN: $TOKEN_GITLAB" -X PUT "https://labs.maarch.org/api/v4/projects/$CI_PROJECT_ID/merge_requests/$MR_ID/merge?squash=false")
RESPONSE_CODE=$(echo $RESPONSE | grep -o '\[[0-9]*\]$')
if [ $RESPONSE_CODE != '[200]' ]; then
echo "Error ! $RESPONSE"
exit 1
fi
#!/bin/bash
# EXCLUDE TMA BRANCH
IS_TMA=`echo $CI_COMMIT_TAG | grep -o '[.]*_TMA[.]*'`
if [ -z $IS_TMA ]; then
tag=$CI_COMMIT_TAG
echo "tag:$tag"
structures=$(echo $CI_COMMIT_TAG | tr "." "\n")
IT=1
for item in $structures
do
if [ $IT = 1 ]; then
major_version=$item
fi
if [ $IT = 2 ]; then
major_version="$major_version.$item"
fi
if [ $IT = 3 ]; then
current_num_tag=$item
fi
IT=$((IT+1))
done
previous_num_tag=$((current_num_tag-1))
next_num_tag=$((current_num_tag+1))
previous_tag="$major_version.$previous_num_tag"
next_tag="$major_version.$next_num_tag"
echo "previoustag:$previous_tag"
for row in $(curl --header "PRIVATE-TOKEN: $TOKEN_GITLAB" "https://labs.maarch.org/api/v4/projects/$CI_PROJECT_ID/milestones?search=$previous_tag" | jq -r '.[] | @base64'); do
_jq() {
echo ${row} | base64 --decode | jq -r ${1}
}
ID=$(_jq '.id')
echo $ID
BODY="{\"id\":\"$ID\",\"state_event\":\"close\"}"
curl -v -H 'Content-Type:application/json' -H "PRIVATE-TOKEN:$TOKEN_GITLAB" -d "$BODY" -X PUT https://labs.maarch.org/api/v4/projects/$CI_PROJECT_ID/milestones/$ID
done
BODY="{\"id\":\"$CI_PROJECT_ID\",\"title\":\"$next_tag\"}"
# CREATE NEXT TAG MILESTONE
curl -v -H 'Content-Type:application/json' -H "PRIVATE-TOKEN:$TOKEN_GITLAB" -d "$BODY" -X POST https://labs.maarch.org/api/v4/projects/$CI_PROJECT_ID/milestones
# GENERATE RAW CHANGELOG
file="tmp.txt"
file2="tmp2.txt"
file3="tmp3.txt"
file4="tmp4.txt"
CONTENT=""
cd ci
mkdir tmp
cd tmp
echo "Set user git : $GITLAB_USER_NAME <$GITLAB_USER_EMAIL>"
git config --global user.email "$GITLAB_USER_EMAIL" && git config --global user.name "$GITLAB_USER_NAME"
git clone $REPOSITORY_URL_SSH -b $major_version .
git fetch
echo "git log $previous_tag..$CI_COMMIT_TAG --pretty=format:'%s' --grep='Update referential' --all-match";
REFUPDATED=`git log $previous_tag..$CI_COMMIT_TAG --pretty=format:'%s' --grep='Update referential' --all-match`
echo "git log $previous_tag..$CI_COMMIT_TAG --pretty=format:'%s' --grep='FEAT' --all-match";
git log $previous_tag..$CI_COMMIT_TAG --pretty=format:'%s' --grep='FEAT' --all-match > tmp.txt
echo '' >> tmp.txt
while IFS= read -r line
do
ISSUE_ID=`echo $line | grep -o 'FEAT #[0-9]*' | grep -o '[0-9]*'`
echo "$ISSUE_ID" >> tmp2.txt
done <"$file"
echo "git log $previous_tag..$CI_COMMIT_TAG --pretty=format:'%s' --grep='FIX' --all-match";
git log $previous_tag..$CI_COMMIT_TAG --pretty=format:'%s' --grep='FIX' --all-match > tmp.txt
echo '' >> tmp.txt
while IFS= read -r line
do
ISSUE_ID=`echo $line | grep -o 'FIX #[0-9]*' | grep -o '[0-9]*'`
echo "$ISSUE_ID" >> tmp2.txt
done <"$file"
sort -u $file2 > tmp3.txt
while IFS= read -r line
do
echo "=================="
echo $line
curl -H "X-Redmine-API-Key: ${REDMINE_API_KEY}" -H 'Content-Type: application/json' -X GET https://forge.maarch.org/issues/$line.json > issue_$line.json
# echo `cat issue_$line.json`
SUBJECT=`cat issue_$line.json | jq -r '.issue.subject'`
TRACKER=`cat issue_$line.json | jq -r '.issue.tracker.name'`
ID=`cat issue_$line.json | jq -r '.issue.id'`
echo ""
echo "ID : $ID"
echo "TRACKER : $TRACKER"
echo "SUBJECT : $SUBJECT"
echo "=================="
if [ ! -z $ID ]
then
echo "* **$TRACKER [#$ID](https://forge.maarch.org/issues/$ID)** - $SUBJECT" >> tmp4.txt
fi
done <"$file3"
if [[ ! -z $REFUPDATED ]]; then
echo "* **Fonctionnalité** - Mise à jour de la BAN 75" >> tmp4.txt
fi
sort -u $file4 >> changelog.txt
while IFS= read -r line
do
CONTENT="$CONTENT\n$line"
done <"changelog.txt"
echo $CONTENT
# Update tag release
BODY="{\"description\":\"$CONTENT\"}"
curl -v -H 'Content-Type:application/json' -H "PRIVATE-TOKEN:$TOKEN_GITLAB" -d "$BODY" -X POST https://labs.maarch.org/api/v4/projects/$CI_PROJECT_ID/repository/tags/$CI_COMMIT_TAG/release
# NOTIFY TAG IN SLACK
curl -X POST --data-urlencode "payload={\"channel\": \"$CHANNEL_SLACK_NOTIFICATION\", \"username\": \"$USERNAME_SLACK_NOTIFICATION\", \"text\": \"Jalon mis à jour à la version $tag!\nVeuillez rédiger le <$CI_PROJECT_URL/tags/$tag/release/edit|changelog> et définir une date de sortie.\", \"icon_emoji\": \":cop:\"}" $URL_SLACK_NOTIFICATION
# Update files version
cp package.json tmp_package.json
jq -r ".version |= \"$next_tag\"" tmp_package.json > package.json
rm tmp_package.json
git add -f package.json
# sed -i -e "s/$CI_COMMIT_TAG/$next_tag/g" sql/test.sql
# git add -f sql/test.sql
git commit -m "Update next tag version files : $next_tag"
git push
fi
\ No newline at end of file
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