рд╣реЗ рдкреЛрд╕реНрдЯ рдЯреАрдорд╕рд┐рдЯреА рд╡рд╛рдкрд░реВрди рдорд╛рд╡реЗрди рдкреНрд░рдХрд▓реНрдкрд╛рдВрдордзреНрдпреЗ рд╣реЙрдЯрдлрд┐рдХреНрд╕ рдСрдЯреЛрдореЗрд╢рди рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рдЪреЗ рд╡рд░реНрдгрди рдХрд░реЗрд▓.
рд╣реЙрдЯрдлрд┐рдХреНрд╕ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рд╕рд╣рд╕рд╛ рдмрд░реЗрдЪ рдореЕрдиреНрдпреБрдЕрд▓ рдЪрд░рдг рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд:
- рддреБрдореНрд╣рд╛рд▓рд╛ рд╣реЙрдЯрдлрд┐рдХреНрд╕ рд░реЛрд▓ рдЖрдЙрдЯ рдХрд░рд╛рдпрдЪреЗ рдЖрд╣реЗ рддреНрдпрд╛ рд░рд┐рд▓реАрдЭрд╕рд╛рдареА рдмреНрд░рдВрдЪ рддрдпрд╛рд░ рдХрд░рд╛
- рд░рд┐рд▓реАрдЭрдордзреАрд▓ рдмрдЧрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рд╛
- рд░рд┐рд▓реАрдЭ рд╢рд╛рдЦреЗрдд рдмрдЧрдлрд┐рдХреНрд╕ рдЖрд╡реГрддреНрддреА рдмрджрд▓рд╛
- рдмрдЧрдлрд┐рдХреНрд╕ рдЖрд╡реГрддреНрддреА рдЯреЕрдЧ рд░реЛрд▓ рдЖрдЙрдЯ рдХрд░рд╛
рдЧреБрдг 1,3,4 рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдЕрд╕реВ рд╢рдХрддрд╛рдд.
рд╡рд┐рд╖рдпрд╛рдХрдбреЗ рдЬрд╛рдгреНрдпрд╛рдкреВрд░реНрд╡реА, рдорд▓рд╛ рдПрдХрд╛ рдорд╣рддреНрддреНрд╡рд╛рдЪреНрдпрд╛ рдЖрдгрд┐ рдЧреБрдВрддрд╛рдЧреБрдВрддреАрдЪреНрдпрд╛ рд╡рд┐рд╖рдпрд╛рд╡рд░ рд╕реНрдкрд░реНрд╢ рдХрд░рд╛рдпрдЪрд╛ рдЖрд╣реЗ - рдЖрд╡реГрддреНрддреА рддрдпрд╛рд░ рдХрд░рдгреЗ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░. рдЖрдкрдг рдпрд╛ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯрдордзреНрдпреЗ рд╕реЗрдорд╡реНрд╣рд░ рдереЛрдбрдХреНрдпрд╛рдд рд╕рдордЬреВ рд╢рдХрддрд╛.
рдЖрдкрдг рджреБрд╡реНрдпрд╛рд╡рд░ рдЕрдзрд┐рдХ рд╡рд╛рдЪреВ рд╢рдХрддрд╛:
рдпрд╛ рдкреЛрд╕реНрдЯрдордзреНрдпреЗ рд╡рд░реНрдгрди рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕рд░реНрд╡ рд╕реЗрдЯрд┐рдВрдЧреНрдЬ рдпрд╛рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдЖрд╣реЗрдд
рдЯреНрд░рдВрдХ-рдЖрдзрд╛рд░рд┐рдд рдбреЗрд╡реНрд╣рд▓рдкрдореЗрдВрдЯрдордзреНрдпреЗ, рддреБрдореНрд╣рд╛рд▓рд╛ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд╢рдирд╛рд╕рд╛рдареА рддреБрдордЪреА рд╕реНрд╡рддрдГрдЪреА рд╢рд╛рдЦрд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ. рдпрд╛ рдкреНрд░рдХрд╛рд╢рдирд╛рддреАрд▓ рд╕рд░реНрд╡ рдмрджрд▓ (рд╣реЙрдЯрдлрд┐рдХреНрд╕) рдпрд╛ рд╢рд╛рдЦреЗрд╕рд╛рдареА рд╡рдЪрдирдмрджреНрдз рдЖрд╣реЗрдд.
рдпрд╛ рдкреЛрд╕реНрдЯрдЪрд╛ рднрд╛рдЧ рдореНрд╣рдгреВрди, рдЖрдореНрд╣реА рдЦрд╛рд▓реАрд▓ рдЧреЛрд╖реНрдЯреА рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдХрд░реВ:
-
рд╕реАрдЖрдп рдмрд┐рд▓реНрдб
-
рдирд╡реАрди рдкреНрд░рдХрд╛рд╢рди рддрдпрд╛рд░ рдХрд░рдд рдЖрд╣реЗ
-
рдкреНрд░рдХрд╛рд╢рди рд╢рд╛рдЦрд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ
-
рдмрдЧрдлрд┐рдХреНрд╕ рдЖрд╡реГрддреНрддреА рдмрджрд▓рд╛
рдЖрд╡рд╢реНрдпрдХрддрд╛:
- рддреБрдордЪрд╛ рдХреЛрдб рд╕рдВрдЪрдпрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА Git рднрд╛рдВрдбрд╛рд░. рдкреЛрд╕реНрдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╡рд╛рдкрд░реЗрд▓
https://gitlab.com/anton_patsev/automation-maven-hotfix . - рдЯреАрдорд╕рд┐рдЯреА рд╕рд░реНрд╡реНрд╣рд░ рдЖрдгрд┐ рдПрдЬрдВрдЯ. рддреБрдореНрд╣реА рддреБрдордЪрд╛ рд╕реНрдерд╛рдирд┐рдХ рдЯреАрдорд╕рд┐рдЯреА рд╕рд░реНрд╡реНрд╣рд░ рдЖрдгрд┐ рдПрдЬрдВрдЯ рд╡рд╛рдкрд░реВрди рд╡рд╛рдврд╡реВ рд╢рдХрддрд╛
рдбреЙрдХрд░-рдХрдВрдкреЛрдЬ - рддреБрдордЪреНрдпрд╛рдХрдбреЗ рдЯреАрдорд╕рд┐рдЯреА рдПрдЬрдВрдЯ, рдЬрд╛рд╡рд╛, рдорд╛рд╡реЗрди, рдЧрд┐рдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ
рдЯреАрдорд╕рд┐рдЯреАрдордзреНрдпреЗ "рдСрдЯреЛрдореЗрд╢рди рдореЕрд╡реЗрди рд╣реЙрдЯрдлрд┐рдХреНрд╕" рдкреНрд░рдХрд▓реНрдк рддрдпрд╛рд░ рдХрд░реВ рдЖрдгрд┐ рддреЗрдереЗ 4 рдХрд╛рд░реНрдпреЗ рддрдпрд╛рд░ рдХрд░реВ.
-
рд╕реАрдЖрдп рдмрд┐рд▓реНрдб
-
рдкреНрд░рдХрд╛рд╢рдирд╛рд╕рд╛рдареА рд╢рд╛рдЦрд╛ рддрдпрд╛рд░ рдХрд░рд╛
-
Maven increment рдмрдЧрдлрд┐рдХреНрд╕ (рдмрдЧрдлрд┐рдХреНрд╕ рдЖрд╡реГрддреНрддреА рдмрджрд▓рд╛))
-
рдорд╛рд╡реЗрди рд░рд┐рд▓реАрдЭ (рдирд╡реАрди рд░рд┐рд▓реАрдЭ рддрдпрд╛рд░ рдХрд░рдгреЗ)
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ:
рд╕рд╛рдорд╛рдиреНрдп рд╕реЗрдЯрд┐рдВрдЧреНрдЬ
рд╕рд░реНрд╡ рдХрд╛рдорд╛рдВрдордзреНрдпреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдмреЙрдХреНрд╕ рдЪреЗрдХ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ "рдХреНрд▓реАрди рдмрд┐рд▓реНрдб: рдмрд┐рд▓реНрдб рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА рдЪреЗрдХрдЖрдЙрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрддреАрд▓ рд╕рд░реНрд╡ рдлрд╛рдпрд▓реА рд╣рдЯрд╡рд╛", рдХрд╛рд░рдг рдпрд╛ рдЪреЗрдХрдмреЙрдХреНрд╕рд╢рд┐рд╡рд╛рдп рдорд▓рд╛ рддреНрд░реБрдЯреА рдЖрд▓реНрдпрд╛.
рдЖрдореНрд╣реА рдПрдХрдЪ VCS рддрдпрд╛рд░ рдХрд░рддреЛ. VCS рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ рд▓рд╛рд▓ рд╡рд░реНрддреБрд│рд╛рдХрд╛рд░ рдЖрд╣реЗрдд.
рд╕рд╛рдорд╛рдиреНрдпрддрдГ VCSs HTTPS рдпреЛрдЬрдирд╛ рд╡рд╛рдкрд░рддрд╛рдд. IN рд╢рд╛рдЦрд╛ рддрдкрд╢реАрд▓: рд╕рд░реНрд╡ рдмреНрд░рдВрдЪ рдЖрдгрд┐ рд╕рд░реНрд╡ рдЯреЕрдЧ рдкрд╛рд╣рдгреНрдпрд╛рд╕рд╛рдареА рд╕реВрдЪрд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗ:
+:refs/heads/*
+:refs/tags/*
4 рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.
- BRANCH_FOR_INCREMENT
- TAG_FROM_VERSION
- TEAM_USER
- TEAM_USER_EMAIL
BRANCH_FOR_INCREMENT рдЖрдгрд┐ TAG_FROM_VERSION рдордзреАрд▓ рдореВрд▓реНрдп рдлреАрд▓реНрдб рд░рд┐рдХреНрдд рд╕реЛрдбрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ.
рддреБрдореНрд╣рд╛рд▓рд╛ рдЦрд╛рдЬрдЧреА рдХреА рдЕрдкрд▓реЛрдб/рдЬреЛрдбрдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ. CI рдмрд┐рд▓реНрдб рд╡рдЧрд│рддрд╛ рд╕рд░реНрд╡ рдХрд╛рд░реНрдпрд╛рдВрдирд╛ рдЦрд╛рдЬрдЧреА рдХреА рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.
рдкреНрд░рддреНрдпреЗрдХ рдЯрд╛рд╕реНрдХрдордзреНрдпреЗ, CI рдмрд┐рд▓реНрдб рд╡рдЧрд│рддрд╛, рдмрд┐рд▓реНрдб рдлреАрдЪрд░реНрд╕ рд╡рд┐рднрд╛рдЧрд╛рдд рддреБрдореНрд╣рд╛рд▓рд╛ рдЦрд╛рдЬрдЧреА рдХреА рдХрдиреЗрдХреНрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.
рд╕рд╛рдареА рдЙрджрд╛рд╣рд░рдг рдорд╛рд╡реЗрди рд░рд┐рд▓реАрдЬ
CI рдмрд┐рд▓реНрдб**.
рдПрдХрд╛ рдХрд╛рд░реНрдпрд╛рдд рд╕реАрдЖрдп рдмрд┐рд▓реНрдб рдлрдХреНрдд рдПрдХ рдкрд╛рдКрд▓ mvn рд╕реНрд╡рдЪреНрдЫ рдЪрд╛рдЪрдгреА
рдорд╛рд╡реЗрди рд░рд┐рд▓реАрдЬ
рдПрдХрд╛ рдХрд╛рд░реНрдпрд╛рдд рдорд╛рд╡реЗрди рд░рд┐рд▓реАрдЬ 2 рдкрд╛рд╡рд▓реЗ. рдкрд╣рд┐рд▓реА рдкрд╛рдпрд░реА рдореНрд╣рдгрдЬреЗ рдмреНрд░рдВрдЪ рдЖрд╣реЗ рд╣реЗ рддрдкрд╛рд╕рдгреЗ рдорд╛рд╕реНрдЯрд░. рдмреНрд░рдВрдЪ рдирд╕реЗрд▓ рддрд░ рдорд╛рд╕реНрдЯрд░, рдирдВрддрд░ рдХрд╛рд░реНрдп рдкрдбрддреЗ.
BRANCH=$(git branch | grep * | cut -d ' ' -f2)
echo "$BRANCH"
if [[ "$BRANCH" != "master" ]]; then
echo 'Branch is not master';
echo 'Aborting';
exit 1;
fi
рджреБрд╕рд░реА рдкрд╛рдпрд░реА рдорд╛рдирдХ рдЖрд╣реЗ mvn рдкреНрд░рдХрд╛рд╢рди: рддрдпрд╛рд░ рдХрд░рд╛ рдкрд░реНрдпрд╛рдпрд╛рд╕рд╣ --рдмреЕрдЪ рдореЛрдб
рдкреНрд░рдХрд╛рд╢рдирд╛рд╕рд╛рдареА рд╢рд╛рдЦрд╛ рддрдпрд╛рд░ рдХрд░рд╛
рд░рд┐рд▓реАрдЭрд╕рд╛рдареА рд╣реЙрдЯрдлрд┐рдХреНрд╕ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣рд╛рд▓рд╛ рдПрдХ рд╢рд╛рдЦрд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЯрд╛рд╕реНрдХ рд╣реЗрдЪ рдХрд░рддреЛ рдкреНрд░рдХрд╛рд╢рдирд╛рд╕рд╛рдареА рд╢рд╛рдЦрд╛ рддрдпрд╛рд░ рдХрд░рд╛. рддрд┐рдЪреНрдпрд╛рдХрдбреЗ 2 рдкрд╛рдпрд▒реНрдпрд╛ рдЖрд╣реЗрдд.
рдкрд╣рд┐рд▓реА рдкрд╛рдпрд░реА рддрдкрд╛рд╕рддреЗ рдХреА рдмреНрд░рдВрдЪ рдирд╛рд╣реА рдорд╛рд╕реНрдЯрд░, рдЖрдгрд┐ рджреБрд╕рд░реА рдЖрд╡реГрддреНрддреА рдлрд╛рдЗрд▓рдордзреНрдпреЗ рдЖрд╣реЗ рдХреА рдирд╛рд╣реА рд╣реЗ рддрдкрд╛рд╕рддреЗ pom.xML рд╢рдмреНрдж рдирд╡реНрд╣рддрд╛ рд╕реНрдиреЕрдкрд╢реЙрдЯ
BRANCH=$(git branch | grep * | cut -d ' ' -f2)
echo "$BRANCH"
if [[ "$BRANCH" == "master" ]]; then
echo 'Branch is master';
echo 'Aborting';
exit 1;
fi
echo "Get version package from pom.xml"
version=`python -c "import xml.etree.ElementTree as ET; print(ET.parse(open('pom.xml')).getroot().find('{http://maven.apache.org/POM/4.0.0}version').text)"`
echo "Check SNAPSHOT"
if [[ $version == "*SNAPSHOT*" ]]; then
echo "******************* W A R N I N G *************************"
echo "************ You are create branch for SNAPSHOTS ******************"
echo "***********************************************************"
exit 1
fi
рджреБрд╕рд░реА рдкрд╛рдпрд░реА рдбреЗрд╡реНрд╣рд▓рдкрд░ рдХрдиреЗрдХреНрд╢рдирдордзреАрд▓ рдХрдиреЗрдХреНрд╢рди рдпреЛрдЬрдирд╛ HTTPS рд╡рд░реВрди GIT рдордзреНрдпреЗ рдмрджрд▓рддреЗ.
# ╨Ч╨┤╨╡╤Б╤М ╨┐╨╛╨╗╤Г╤З╨░╨╡╨╝ developerConnection ╨╕╨╖ ╤Д╨░╨╣╨╗╨░ pom.xml
developerConnection=$(xmllint -xpath "/*[local-name() = 'project' ]//*[local-name() = 'developerConnection']/text()" pom.xml | sed 's|scm:git:ssh://||')
echo developerConnection
echo $developerConnection
# ╨Ч╨┤╨╡╤Б╤М ╨╝╨╡╨╜╤П╨╡╨╝ / ╨╜╨░ : ╨▓ URL ╨┤╨╗╤П git_remote_url
git_remote_url=$(echo $developerConnection| sed 's/gitlab.com//gitlab.com:/g')
echo git_remote_url
echo $git_remote_url
git remote set-url origin $git_remote_url
# ╨Х╤Б╨╗╨╕ ╨▓╤Л ╨╜╨╡ ╨╕╤Б╨┐╨╛╨╗╤М╨╖╤Г╨╡╤В╨╡ ╨▓╨▓╤Б╤В╤А╨╛╨╡╨╜╨╜╤Г╤О ╨▓╨╛╨╖╨╝╨╛╨╢╨╜╨╛╤Б╤В╤М Teamcity ╨┐╨╛╨╗╤Г╤З╨╡╨╜╨╕╤П user ╨╕ email ╨╕╨╖ ~/.gitconfig, ╤В╨╛ ╨╝╨╛╨╢╨╜╨╛ ╤Г╨║╨░╨╖╨░╤В╤М ╨╕╤Е ╨╖╨┤╨╡╤Б╤М
echo 'git config user.name %TEAM_USER%'
git config user.name %TEAM_USER%
echo 'git config user.email %TEAM_USER_EMAIL%'
git config user.email %TEAM_USER_EMAIL%
# ╨Ч╨┤╨╡╤Б╤М ╨┐╨╛╨╗╤Г╤З╨░╨╡╨╝ ╨▓╨╡╤А╤Б╨╕╤О ╨╕╨╖ ╤Д╨░╨╣╨╗╨░ pom.xml
echo "Get version package from pom.xml"
version=`python -c "import xml.etree.ElementTree as ET; print(ET.parse(open('pom.xml')).getroot().find('{http://maven.apache.org/POM/4.0.0}version').text)"`
echo $version
# ╨Я╨╛╤З╨╡╨╝╤Г-╤В╨╛ ╨▒╨╡╨╖ fetch ╨▓╤Л╨┤╨░╨▓╨░╨╗╨╛ ╨╛╤И╨╕╨▒╨║╤Г.
git fetch
if [ `git branch -a | egrep "${version}$"` ]
then
echo "Branch exists"
exit 1
fi
# ╨б╨╛╨╖╨┤╨░╨╡╨╝ ╨▒╤А╨░╨╜╤З ╤В╨╛╨╣ ╨▓╨╡╤А╤Б╨╕╨╕, ╨║╨╛╤В╨╛╤А╤Л╨╣ ╨▒╤Л╨╗ ╨▓ ╤Д╨░╨╣╨╗╨╡ pom.xml
echo "Create branch"
git checkout -b $version
# ╨з╨╕╤Б╤В╤Л╨╣ git ╨▓╤Б╨╡╨│╨┤╨░ ╨┐╤А╨╡╨┤╨╗╨░╨│╨░╨╡╤В ╨╜╨░╤Б╤В╤А╨╛╨╕╤В╤М ╨┐╨╛╨╗╨╕╤В╨╕╨║╤Г ╨╛╤В╨┐╤А╨░╨▓╨║╨╕.
git config --global push.default simple
# ╨Я╤Г╤И╨╕╨╝ ╨▓ ╨▓╨╡╤В╨║╤Г ╤Б╨╛╨▓╨┐╨░╨┤╨░╤О╤Й╤Г╤О ╤Б ╨▓╨╡╤А╤Б╨╕╨╡╨╣ ╨▓ pom.xml
echo "Push release branch"
git push --set-upstream origin $version
рдорд╛рд╡реЗрди рдЗрдВрдХреНрд░реАрдореЗрдВрдЯ рдмрдЧрдлрд┐рдХреНрд╕
рдХрд╛рд░реНрдпрд╛рдордзреНрдпреЗ 6 рднрд╛рдЧ рдЕрд╕рддрд╛рдд. рд╣реЗ рд░рд┐рдлреЕрдХреНрдЯрд░ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ, рдкрд░рдВрддреБ рддреЗ рдЕрджреНрдпрд╛рдк рдХрд╛рд░реНрдп рдХрд░рддреЗ.
рдкрд╣рд┐рд▓реА рдкрд╛рдпрд░реА рдореНрд╣рдгрдЬреЗ рдмреНрд░рдВрдЪ рдирд╛рд╣реА рд╣реЗ рддрдкрд╛рд╕рдгреЗ рдорд╛рд╕реНрдЯрд░. рдмреНрд░рдВрдЪ рддрд░ рдорд╛рд╕реНрдЯрд░ рдХрд╛рд░реНрдп рдкрдбрддреЗ.
BRANCH=$(git branch | grep * | cut -d ' ' -f2)
echo "$BRANCH"
if [[ "$BRANCH" == "master" ]]; then
echo 'Branch is master';
echo 'Aborting';
exit 1;
fi
# ╨Ч╨┤╨╡╤Б╤М ╨┐╨╛╨╗╤Г╤З╨░╨╡╨╝ ╨▓╨╡╤А╤Б╨╕╤О ╨╕╨╖ ╤Д╨░╨╣╨╗╨░ pom.xml
echo "Get version package from pom.xml"
BRANCH=`python -c "import xml.etree.ElementTree as ET; print(ET.parse(open('pom.xml')).getroot().find('{http://maven.apache.org/POM/4.0.0}version').text)"`
# ╨Я╤А╨╕╤Е╨╛╨┤╨╕╤В╤Б╤П ╨┤╨╡╨╗╨░╤В╤М checkout ╨╜╨░ ╨╜╤Г╨╢╨╜╤Л╨╣ ╨▒╤А╨░╨╜╤З.
# ╨Ш╨╜╨░╤З╨╡ git status ╨┐╨╛╨║╨░╨╖╤Л╨▓╨░╨╡╤В detached ╨║ ╨╜╤Г╨╢╨╜╨╛╨╝╤Г ╨▒╤А╨░╨╜╤З╤Г.
# ╨Э╤Г╨╢╨╜╨╛ ╤З╤В╨╛╨▒╤Л git status ╨┐╨╛╨║╨░╨╖╤Л╨▓╨░╨╗ ╨┐╤А╨╛╤Б╤В╨╛ ╨▒╤А╨░╨╜╤З
git checkout $BRANCH
# ╨н╨║╤Б╨┐╨╛╤А╤В╨╕╤А╤Г╨╡╨╝ ╨┐╨╡╤А╨╡╨╝╨╡╨╜╨╜╤Г╤О bash ╨▓ ╨┐╨╡╤А╨╡╨╝╨╡╨╜╨╜╤Г╤О Teamcity ╨┤╨╗╤П ╨┤╨░╨╗╤М╨╜╨╡╨╣╤И╨╡╨│╨╛ ╨╕╤Б╨┐╨╛╨╗╤М╨╖╨╛╨▓╨░╨╜╨╕╤П.
echo "##teamcity[setParameter name='BRANCH_FOR_INCREMENT' value='$BRANCH']"
рджреБрд╕рд░реА Maven рдкрд╛рдпрд░реА pom.xml рдлрд╛рдЗрд▓рдордзреАрд▓ рдмрдЧрдлрд┐рдХреНрд╕ рдЖрд╡реГрддреНрддреА рдмрджрд▓рдд рдЖрд╣реЗ.
рдЧреЛрд▓: рдорд╛рд╡реЗрдирдХрдбреЗ рд╕рд░реНрд╡ рдХрд╛рд╣реА рдПрдХрд╛ рдУрд│реАрдд рдЖрд╣реЗ
build-helper:parse-version versions:set -DnewVersion=${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.nextIncrementalVersion} versions:commit
рддрд┐рд╕рд░реА рдкрд╛рдпрд░реА рдореНрд╣рдгрдЬреЗ Git рд╕реНрдерд┐рддреА рдорд╛рд╣рд┐рддреА рдЖрдгрд┐ рдЗрддрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдгреЗ:
echo 'cat pom.xml'
cat pom.xml
echo 'git status'
git status
echo 'git remote -v'
git remote -v
echo 'git branch'
git branch
рдЪреМрдереА рдкрд╛рдпрд░реА рдбреЗрд╡реНрд╣рд▓рдкрд░ рдХрдиреЗрдХреНрд╢рдирдордзреАрд▓ рдХрдиреЗрдХреНрд╢рди рдпреЛрдЬрдирд╛ HTTPS рд╡рд░реВрди GIT рдордзреНрдпреЗ рдмрджрд▓рддреЗ.
рдЖрдгрд┐ %BRANCH_FOR_INCREMENT% рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рджреНрд╡рд╛рд░реЗ рдЯреАрдорд╕рд┐рдЯреАрдордзреНрдпреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╢рд╛рдЦреЗрдд рдмрджрд▓ рдкреБрд╢ рдХрд░рддреЗ
# ╨Ч╨┤╨╡╤Б╤М ╨┐╨╛╨╗╤Г╤З╨░╨╡╨╝ developerConnection ╨╕╨╖ ╤Д╨░╨╣╨╗╨░ pom.xml
developerConnection=$(xmllint -xpath "/*[local-name() = 'project' ]//*[local-name() = 'developerConnection']/text()" pom.xml | sed 's|scm:git:ssh://||')
echo developerConnection
# ╨Ч╨┤╨╡╤Б╤М ╨╝╨╡╨╜╤П╨╡╨╝ / ╨╜╨░ : ╨▓ URL ╨┤╨╗╤П git_remote_url
git_remote_url=$(echo $developerConnection| sed 's/gitlab.com//gitlab.com:/g')
echo git_remote_url
echo $git_remote_url
git remote set-url origin $git_remote_url
# ╨Х╤Б╨╗╨╕ ╨▓╤Л ╨╜╨╡ ╨╕╤Б╨┐╨╛╨╗╤М╨╖╤Г╨╡╤В╨╡ ╨▓╨▓╤Б╤В╤А╨╛╨╡╨╜╨╜╤Г╤О ╨▓╨╛╨╖╨╝╨╛╨╢╨╜╨╛╤Б╤В╤М Teamcity ╨┐╨╛╨╗╤Г╤З╨╡╨╜╨╕╤П user ╨╕ email ╨╕╨╖ ~/.gitconfig, ╤В╨╛ ╨╝╨╛╨╢╨╜╨╛ ╤Г╨║╨░╨╖╨░╤В╤М ╨╕╤Е ╨╖╨┤╨╡╤Б╤М
echo 'git config user.name %TEAM_USER%'
git config user.name %TEAM_USER%
echo 'git config user.email %TEAM_USER_EMAIL%'
git config user.email %TEAM_USER_EMAIL%
echo 'git add .'
git add .
echo 'git commit -m "Increment bugfix"'
git commit -m "Increment bugfix"
git push --set-upstream origin %BRANCH_FOR_INCREMENT%
рдкрд╛рдЪрд╡реА рдкрд╛рдпрд░реА рдлрд╛рдЗрд▓рдордзреВрди рдорд┐рд│рдд рдЖрд╣реЗ pom.xML рдЖрд╡реГрддреНрддреА рдЖрдгрд┐ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рдЯреАрдорд╕рд┐рдЯреА рдЪрд▓ TAG_FROM_VERSION. рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛ рдХреА рдлрд╛рдЗрд▓рдордзреАрд▓ рдЖрд╡реГрддреНрддреА pom.xML рд╕рдореЛрд░ v рдЕрдХреНрд╖рд░рд╛рд╢рд┐рд╡рд╛рдп. рдЖрдгрд┐ рдпрд╛ рдЖрд╡реГрддреНрддреАрд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдЯреЕрдЧрдордзреНрдпреЗ рдЖрдзреАрдкрд╛рд╕реВрди рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ v рд╣реЗ рдЕрдХреНрд╖рд░ рдЖрд╣реЗ.
echo "Get version package from pom.xml"
VERSION_AFTER_CHANGE=`python -c "import xml.etree.ElementTree as ET; print(ET.parse(open('pom.xml')).getroot().find('{http://maven.apache.org/POM/4.0.0}version').text)"`
echo $VERSION_AFTER_CHANGE
echo "##teamcity[setParameter name='TAG_FROM_VERSION' value='v$VERSION_AFTER_CHANGE']"
рд╕рд╣рд╛рд╡реА рдкрд╛рдпрд░реА - рдЯреЕрдЧрд┐рдВрдЧ рдЪреВрдХ рджреБрд░реБрд╕реНрддреА рдЖрд╡реГрддреНрддреНрдпрд╛ рд╣реЗ рд╡рд╛рдкрд░реВрди рдХреЗрд▓реЗ рдЬрд╛рддреЗ рдорд╛рд╡реЗрди рдордзреНрдпреЗ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдпрд╛рдпрд╛рд╕рд╣ рдзреНрдпреЗрдп.
рдкрд░реНрдпрд╛рдп рдЧреЛрд▓:
-Dtag=%TAG_FROM_VERSION% scm:tag
рд╕реНрддреНрд░реЛрдд: www.habr.com