TeamCity рд╡рд╛рдкрд░реВрди Maven рдкреНрд░рдХрд▓реНрдкрд╛рдВрдордзреНрдпреЗ HotFix рдЪреЗ рдСрдЯреЛрдореЗрд╢рди

рд╣реЗ рдкреЛрд╕реНрдЯ рдЯреАрдорд╕рд┐рдЯреА рд╡рд╛рдкрд░реВрди рдорд╛рд╡реЗрди рдкреНрд░рдХрд▓реНрдкрд╛рдВрдордзреНрдпреЗ рд╣реЙрдЯрдлрд┐рдХреНрд╕ рдСрдЯреЛрдореЗрд╢рди рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рдЪреЗ рд╡рд░реНрдгрди рдХрд░реЗрд▓.

рд╣реЙрдЯрдлрд┐рдХреНрд╕ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рд╕рд╣рд╕рд╛ рдмрд░реЗрдЪ рдореЕрдиреНрдпреБрдЕрд▓ рдЪрд░рдг рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд:

  1. рддреБрдореНрд╣рд╛рд▓рд╛ рд╣реЙрдЯрдлрд┐рдХреНрд╕ рд░реЛрд▓ рдЖрдЙрдЯ рдХрд░рд╛рдпрдЪреЗ рдЖрд╣реЗ рддреНрдпрд╛ рд░рд┐рд▓реАрдЭрд╕рд╛рдареА рдмреНрд░рдВрдЪ рддрдпрд╛рд░ рдХрд░рд╛
  2. рд░рд┐рд▓реАрдЭрдордзреАрд▓ рдмрдЧрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рд╛
  3. рд░рд┐рд▓реАрдЭ рд╢рд╛рдЦреЗрдд рдмрдЧрдлрд┐рдХреНрд╕ рдЖрд╡реГрддреНрддреА рдмрджрд▓рд╛
  4. рдмрдЧрдлрд┐рдХреНрд╕ рдЖрд╡реГрддреНрддреА рдЯреЕрдЧ рд░реЛрд▓ рдЖрдЙрдЯ рдХрд░рд╛

рдЧреБрдг 1,3,4 рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдЕрд╕реВ рд╢рдХрддрд╛рдд.

рд╡рд┐рд╖рдпрд╛рдХрдбреЗ рдЬрд╛рдгреНрдпрд╛рдкреВрд░реНрд╡реА, рдорд▓рд╛ рдПрдХрд╛ рдорд╣рддреНрддреНрд╡рд╛рдЪреНрдпрд╛ рдЖрдгрд┐ рдЧреБрдВрддрд╛рдЧреБрдВрддреАрдЪреНрдпрд╛ рд╡рд┐рд╖рдпрд╛рд╡рд░ рд╕реНрдкрд░реНрд╢ рдХрд░рд╛рдпрдЪрд╛ рдЖрд╣реЗ - рдЖрд╡реГрддреНрддреА рддрдпрд╛рд░ рдХрд░рдгреЗ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░. рдЖрдкрдг рдпрд╛ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯрдордзреНрдпреЗ рд╕реЗрдорд╡реНрд╣рд░ рдереЛрдбрдХреНрдпрд╛рдд рд╕рдордЬреВ рд╢рдХрддрд╛. TeamCity рд╡рд╛рдкрд░реВрди Maven рдкреНрд░рдХрд▓реНрдкрд╛рдВрдордзреНрдпреЗ HotFix рдЪреЗ рдСрдЯреЛрдореЗрд╢рди

рдЖрдкрдг рджреБрд╡реНрдпрд╛рд╡рд░ рдЕрдзрд┐рдХ рд╡рд╛рдЪреВ рд╢рдХрддрд╛: 1.

рдпрд╛ рдкреЛрд╕реНрдЯрдордзреНрдпреЗ рд╡рд░реНрдгрди рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕рд░реНрд╡ рд╕реЗрдЯрд┐рдВрдЧреНрдЬ рдпрд╛рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдЖрд╣реЗрдд рд╕реЗрдорд╡реНрд╣рд░ ╨╕ рдЯреНрд░рдВрдХ-рдЖрдзрд╛рд░рд┐рдд рд╡рд┐рдХрд╛рд╕.

рдЯреНрд░рдВрдХ-рдЖрдзрд╛рд░рд┐рдд рдбреЗрд╡реНрд╣рд▓рдкрдореЗрдВрдЯрдордзреНрдпреЗ, рддреБрдореНрд╣рд╛рд▓рд╛ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд╢рдирд╛рд╕рд╛рдареА рддреБрдордЪреА рд╕реНрд╡рддрдГрдЪреА рд╢рд╛рдЦрд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ. рдпрд╛ рдкреНрд░рдХрд╛рд╢рдирд╛рддреАрд▓ рд╕рд░реНрд╡ рдмрджрд▓ (рд╣реЙрдЯрдлрд┐рдХреНрд╕) рдпрд╛ рд╢рд╛рдЦреЗрд╕рд╛рдареА рд╡рдЪрдирдмрджреНрдз рдЖрд╣реЗрдд.

рдпрд╛ рдкреЛрд╕реНрдЯрдЪрд╛ рднрд╛рдЧ рдореНрд╣рдгреВрди, рдЖрдореНрд╣реА рдЦрд╛рд▓реАрд▓ рдЧреЛрд╖реНрдЯреА рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдХрд░реВ:

  • рд╕реАрдЖрдп рдмрд┐рд▓реНрдб

  • рдирд╡реАрди рдкреНрд░рдХрд╛рд╢рди рддрдпрд╛рд░ рдХрд░рдд рдЖрд╣реЗ

  • рдкреНрд░рдХрд╛рд╢рди рд╢рд╛рдЦрд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ

  • рдмрдЧрдлрд┐рдХреНрд╕ рдЖрд╡реГрддреНрддреА рдмрджрд▓рд╛

TeamCity рд╡рд╛рдкрд░реВрди Maven рдкреНрд░рдХрд▓реНрдкрд╛рдВрдордзреНрдпреЗ HotFix рдЪреЗ рдСрдЯреЛрдореЗрд╢рди

рдЖрд╡рд╢реНрдпрдХрддрд╛:

  • рддреБрдордЪрд╛ рдХреЛрдб рд╕рдВрдЪрдпрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА Git рднрд╛рдВрдбрд╛рд░. рдкреЛрд╕реНрдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╡рд╛рдкрд░реЗрд▓ https://gitlab.com/anton_patsev/automation-maven-hotfix.
  • рдЯреАрдорд╕рд┐рдЯреА рд╕рд░реНрд╡реНрд╣рд░ рдЖрдгрд┐ рдПрдЬрдВрдЯ. рддреБрдореНрд╣реА рддреБрдордЪрд╛ рд╕реНрдерд╛рдирд┐рдХ рдЯреАрдорд╕рд┐рдЯреА рд╕рд░реНрд╡реНрд╣рд░ рдЖрдгрд┐ рдПрдЬрдВрдЯ рд╡рд╛рдкрд░реВрди рд╡рд╛рдврд╡реВ рд╢рдХрддрд╛ рдбреЙрдХрд░-рдХрдВрдкреЛрдЬ
  • рддреБрдордЪреНрдпрд╛рдХрдбреЗ рдЯреАрдорд╕рд┐рдЯреА рдПрдЬрдВрдЯ, рдЬрд╛рд╡рд╛, рдорд╛рд╡реЗрди, рдЧрд┐рдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ

рдЯреАрдорд╕рд┐рдЯреАрдордзреНрдпреЗ "рдСрдЯреЛрдореЗрд╢рди рдореЕрд╡реЗрди рд╣реЙрдЯрдлрд┐рдХреНрд╕" рдкреНрд░рдХрд▓реНрдк рддрдпрд╛рд░ рдХрд░реВ рдЖрдгрд┐ рддреЗрдереЗ 4 рдХрд╛рд░реНрдпреЗ рддрдпрд╛рд░ рдХрд░реВ.

  • рд╕реАрдЖрдп рдмрд┐рд▓реНрдб

  • рдкреНрд░рдХрд╛рд╢рдирд╛рд╕рд╛рдареА рд╢рд╛рдЦрд╛ рддрдпрд╛рд░ рдХрд░рд╛

  • Maven increment рдмрдЧрдлрд┐рдХреНрд╕ (рдмрдЧрдлрд┐рдХреНрд╕ рдЖрд╡реГрддреНрддреА рдмрджрд▓рд╛))

  • рдорд╛рд╡реЗрди рд░рд┐рд▓реАрдЭ (рдирд╡реАрди рд░рд┐рд▓реАрдЭ рддрдпрд╛рд░ рдХрд░рдгреЗ)

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ:

TeamCity рд╡рд╛рдкрд░реВрди Maven рдкреНрд░рдХрд▓реНрдкрд╛рдВрдордзреНрдпреЗ HotFix рдЪреЗ рдСрдЯреЛрдореЗрд╢рди

рд╕рд╛рдорд╛рдиреНрдп рд╕реЗрдЯрд┐рдВрдЧреНрдЬ

рд╕рд░реНрд╡ рдХрд╛рдорд╛рдВрдордзреНрдпреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдмреЙрдХреНрд╕ рдЪреЗрдХ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ "рдХреНрд▓реАрди рдмрд┐рд▓реНрдб: рдмрд┐рд▓реНрдб рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА рдЪреЗрдХрдЖрдЙрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрддреАрд▓ рд╕рд░реНрд╡ рдлрд╛рдпрд▓реА рд╣рдЯрд╡рд╛", рдХрд╛рд░рдг рдпрд╛ рдЪреЗрдХрдмреЙрдХреНрд╕рд╢рд┐рд╡рд╛рдп рдорд▓рд╛ рддреНрд░реБрдЯреА рдЖрд▓реНрдпрд╛.

рдЖрдореНрд╣реА рдПрдХрдЪ VCS рддрдпрд╛рд░ рдХрд░рддреЛ. VCS рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ рд▓рд╛рд▓ рд╡рд░реНрддреБрд│рд╛рдХрд╛рд░ рдЖрд╣реЗрдд.

TeamCity рд╡рд╛рдкрд░реВрди Maven рдкреНрд░рдХрд▓реНрдкрд╛рдВрдордзреНрдпреЗ HotFix рдЪреЗ рдСрдЯреЛрдореЗрд╢рди

рд╕рд╛рдорд╛рдиреНрдпрддрдГ 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 рдордзреАрд▓ рдореВрд▓реНрдп рдлреАрд▓реНрдб рд░рд┐рдХреНрдд рд╕реЛрдбрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ.

TeamCity рд╡рд╛рдкрд░реВрди Maven рдкреНрд░рдХрд▓реНрдкрд╛рдВрдордзреНрдпреЗ HotFix рдЪреЗ рдСрдЯреЛрдореЗрд╢рди

рддреБрдореНрд╣рд╛рд▓рд╛ рдЦрд╛рдЬрдЧреА рдХреА рдЕрдкрд▓реЛрдб/рдЬреЛрдбрдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ. CI рдмрд┐рд▓реНрдб рд╡рдЧрд│рддрд╛ рд╕рд░реНрд╡ рдХрд╛рд░реНрдпрд╛рдВрдирд╛ рдЦрд╛рдЬрдЧреА рдХреА рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

TeamCity рд╡рд╛рдкрд░реВрди Maven рдкреНрд░рдХрд▓реНрдкрд╛рдВрдордзреНрдпреЗ HotFix рдЪреЗ рдСрдЯреЛрдореЗрд╢рди

рдкреНрд░рддреНрдпреЗрдХ рдЯрд╛рд╕реНрдХрдордзреНрдпреЗ, CI рдмрд┐рд▓реНрдб рд╡рдЧрд│рддрд╛, рдмрд┐рд▓реНрдб рдлреАрдЪрд░реНрд╕ рд╡рд┐рднрд╛рдЧрд╛рдд рддреБрдореНрд╣рд╛рд▓рд╛ рдЦрд╛рдЬрдЧреА рдХреА рдХрдиреЗрдХреНрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

рд╕рд╛рдареА рдЙрджрд╛рд╣рд░рдг рдорд╛рд╡реЗрди рд░рд┐рд▓реАрдЬ

TeamCity рд╡рд╛рдкрд░реВрди Maven рдкреНрд░рдХрд▓реНрдкрд╛рдВрдордзреНрдпреЗ HotFix рдЪреЗ рдСрдЯреЛрдореЗрд╢рди

CI рдмрд┐рд▓реНрдб**.

рдПрдХрд╛ рдХрд╛рд░реНрдпрд╛рдд рд╕реАрдЖрдп рдмрд┐рд▓реНрдб рдлрдХреНрдд рдПрдХ рдкрд╛рдКрд▓ mvn рд╕реНрд╡рдЪреНрдЫ рдЪрд╛рдЪрдгреА

TeamCity рд╡рд╛рдкрд░реВрди Maven рдкреНрд░рдХрд▓реНрдкрд╛рдВрдордзреНрдпреЗ HotFix рдЪреЗ рдСрдЯреЛрдореЗрд╢рди

рдорд╛рд╡реЗрди рд░рд┐рд▓реАрдЬ

рдПрдХрд╛ рдХрд╛рд░реНрдпрд╛рдд рдорд╛рд╡реЗрди рд░рд┐рд▓реАрдЬ 2 рдкрд╛рд╡рд▓реЗ. рдкрд╣рд┐рд▓реА рдкрд╛рдпрд░реА рдореНрд╣рдгрдЬреЗ рдмреНрд░рдВрдЪ рдЖрд╣реЗ рд╣реЗ рддрдкрд╛рд╕рдгреЗ рдорд╛рд╕реНрдЯрд░. рдмреНрд░рдВрдЪ рдирд╕реЗрд▓ рддрд░ рдорд╛рд╕реНрдЯрд░, рдирдВрддрд░ рдХрд╛рд░реНрдп рдкрдбрддреЗ.

BRANCH=$(git branch | grep * | cut -d ' ' -f2)
echo "$BRANCH"
if [[ "$BRANCH" != "master" ]]; then
  echo 'Branch is not master';
  echo 'Aborting';
  exit 1;
fi

TeamCity рд╡рд╛рдкрд░реВрди Maven рдкреНрд░рдХрд▓реНрдкрд╛рдВрдордзреНрдпреЗ HotFix рдЪреЗ рдСрдЯреЛрдореЗрд╢рди

рджреБрд╕рд░реА рдкрд╛рдпрд░реА рдорд╛рдирдХ рдЖрд╣реЗ mvn рдкреНрд░рдХрд╛рд╢рди: рддрдпрд╛рд░ рдХрд░рд╛ рдкрд░реНрдпрд╛рдпрд╛рд╕рд╣ --рдмреЕрдЪ рдореЛрдб

TeamCity рд╡рд╛рдкрд░реВрди Maven рдкреНрд░рдХрд▓реНрдкрд╛рдВрдордзреНрдпреЗ HotFix рдЪреЗ рдСрдЯреЛрдореЗрд╢рди

рдкреНрд░рдХрд╛рд╢рдирд╛рд╕рд╛рдареА рд╢рд╛рдЦрд╛ рддрдпрд╛рд░ рдХрд░рд╛

рд░рд┐рд▓реАрдЭрд╕рд╛рдареА рд╣реЙрдЯрдлрд┐рдХреНрд╕ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣рд╛рд▓рд╛ рдПрдХ рд╢рд╛рдЦрд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЯрд╛рд╕реНрдХ рд╣реЗрдЪ рдХрд░рддреЛ рдкреНрд░рдХрд╛рд╢рдирд╛рд╕рд╛рдареА рд╢рд╛рдЦрд╛ рддрдпрд╛рд░ рдХрд░рд╛. рддрд┐рдЪреНрдпрд╛рдХрдбреЗ 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

TeamCity рд╡рд╛рдкрд░реВрди Maven рдкреНрд░рдХрд▓реНрдкрд╛рдВрдордзреНрдпреЗ HotFix рдЪреЗ рдСрдЯреЛрдореЗрд╢рди

рджреБрд╕рд░реА рдкрд╛рдпрд░реА рдбреЗрд╡реНрд╣рд▓рдкрд░ рдХрдиреЗрдХреНрд╢рдирдордзреАрд▓ рдХрдиреЗрдХреНрд╢рди рдпреЛрдЬрдирд╛ 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

TeamCity рд╡рд╛рдкрд░реВрди Maven рдкреНрд░рдХрд▓реНрдкрд╛рдВрдордзреНрдпреЗ HotFix рдЪреЗ рдСрдЯреЛрдореЗрд╢рди

рдорд╛рд╡реЗрди рдЗрдВрдХреНрд░реАрдореЗрдВрдЯ рдмрдЧрдлрд┐рдХреНрд╕

рдХрд╛рд░реНрдпрд╛рдордзреНрдпреЗ 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']"

TeamCity рд╡рд╛рдкрд░реВрди Maven рдкреНрд░рдХрд▓реНрдкрд╛рдВрдордзреНрдпреЗ HotFix рдЪреЗ рдСрдЯреЛрдореЗрд╢рди

рджреБрд╕рд░реА Maven рдкрд╛рдпрд░реА pom.xml рдлрд╛рдЗрд▓рдордзреАрд▓ рдмрдЧрдлрд┐рдХреНрд╕ рдЖрд╡реГрддреНрддреА рдмрджрд▓рдд рдЖрд╣реЗ.

рдЧреЛрд▓: рдорд╛рд╡реЗрдирдХрдбреЗ рд╕рд░реНрд╡ рдХрд╛рд╣реА рдПрдХрд╛ рдУрд│реАрдд рдЖрд╣реЗ

build-helper:parse-version versions:set -DnewVersion=${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.nextIncrementalVersion} versions:commit

TeamCity рд╡рд╛рдкрд░реВрди Maven рдкреНрд░рдХрд▓реНрдкрд╛рдВрдордзреНрдпреЗ HotFix рдЪреЗ рдСрдЯреЛрдореЗрд╢рди

рддрд┐рд╕рд░реА рдкрд╛рдпрд░реА рдореНрд╣рдгрдЬреЗ 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

TeamCity рд╡рд╛рдкрд░реВрди Maven рдкреНрд░рдХрд▓реНрдкрд╛рдВрдордзреНрдпреЗ HotFix рдЪреЗ рдСрдЯреЛрдореЗрд╢рди

рдЪреМрдереА рдкрд╛рдпрд░реА рдбреЗрд╡реНрд╣рд▓рдкрд░ рдХрдиреЗрдХреНрд╢рдирдордзреАрд▓ рдХрдиреЗрдХреНрд╢рди рдпреЛрдЬрдирд╛ 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%

TeamCity рд╡рд╛рдкрд░реВрди Maven рдкреНрд░рдХрд▓реНрдкрд╛рдВрдордзреНрдпреЗ HotFix рдЪреЗ рдСрдЯреЛрдореЗрд╢рди

рдкрд╛рдЪрд╡реА рдкрд╛рдпрд░реА рдлрд╛рдЗрд▓рдордзреВрди рдорд┐рд│рдд рдЖрд╣реЗ 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']"

TeamCity рд╡рд╛рдкрд░реВрди Maven рдкреНрд░рдХрд▓реНрдкрд╛рдВрдордзреНрдпреЗ HotFix рдЪреЗ рдСрдЯреЛрдореЗрд╢рди

рд╕рд╣рд╛рд╡реА рдкрд╛рдпрд░реА - рдЯреЕрдЧрд┐рдВрдЧ рдЪреВрдХ рджреБрд░реБрд╕реНрддреА рдЖрд╡реГрддреНрддреНрдпрд╛ рд╣реЗ рд╡рд╛рдкрд░реВрди рдХреЗрд▓реЗ рдЬрд╛рддреЗ рдорд╛рд╡реЗрди рдордзреНрдпреЗ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдпрд╛рдпрд╛рд╕рд╣ рдзреНрдпреЗрдп.

рдкрд░реНрдпрд╛рдп рдЧреЛрд▓:

-Dtag=%TAG_FROM_VERSION% scm:tag

TeamCity рд╡рд╛рдкрд░реВрди Maven рдкреНрд░рдХрд▓реНрдкрд╛рдВрдордзреНрдпреЗ HotFix рдЪреЗ рдСрдЯреЛрдореЗрд╢рди

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛