TeamCity рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд╛рд╡реЗрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдСрдЯреЛрдореЗрд╢рди рд╣реЙрдЯрдлрд┐рдХреНрд╕

рдпрд╣ рдкреЛрд╕реНрдЯ рдмрддрд╛рдПрдЧреА рдХрд┐ рдЯреАрдорд╕рд┐рдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд╛рд╡реЗрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╣реЙрдЯрдлрд┐рдХреНрд╕ рд╕реНрд╡рдЪрд╛рд▓рди рдХреЛ рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПред


рд╣реЙрдЯрдлрд╝рд┐рдХреНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдорддреМрд░ рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реА рдореИрдиреНрдпреБрдЕрд▓ рдХреНрд░рд┐рдпрд╛рдПрдВ рдХреА рдЬрд╛рддреА рд╣реИрдВ:


  1. HotFix рдХреЛ рд░реЛрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдЪреНрдЫрд┐рдд рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреНрд░рдВрдЪ рдмрдирд╛рдПрдВ
  2. рдлрд┐рдХреНрд╕ рд░рд┐рд▓реАрдЬ рдмрдЧ
  3. рд░рд┐рд▓реАрдЬ рдмреНрд░рдВрдЪ рдореЗрдВ рдмрдЧрдлрд┐рдХреНрд╕ рд╕рдВрд╕реНрдХрд░рдг рдмрджрд▓реЗрдВ
  4. рдЯреИрдЧ рдмрдЧрдлрд┐рдХреНрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд░реЛрд▓ рдЖрдЙрдЯ рдХрд░реЗрдВ

рдЖрдЗрдЯрдо 1,3,4 рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдЖрдЧреЗ рдмрдврд╝реЗрдВ, рдореИрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдФрд░ рдЬрдЯрд┐рд▓ рд╡рд┐рд╖рдп - рд╕рдВрд╕реНрдХрд░рдг рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкрд░ рд╕реНрдкрд░реНрд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЗрд╕ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рд╕реЗрдорд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╕рдордЭрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдЖрдк рд▓рд┐рдВрдХ рдкрд░ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ: 1 ред


рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╕рднреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реЗрдореНрд╡рд░ рдФрд░ рдЯреНрд░рдВрдХ-рдЖрдзрд╛рд░рд┐рдд рд╡рд┐рдХрд╛рд╕ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВ ред


рдЯреНрд░рдВрдХ-рдЖрдзрд╛рд░рд┐рдд рд╡рд┐рдХрд╛рд╕ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЕрдкрдирд╛ рдмреНрд░рдВрдЪ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕ рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рднреАрддрд░ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрди (рд╣реЙрдЯрдлрд┐рдХреНрд╕) рдЗрд╕ рдмреНрд░рдВрдЪ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рд╣реИрдВред


рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪреАрдЬреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:


  • CI рд╡рд┐рдзрд╛рдирд╕рднрд╛


  • рдирдпрд╛ рд░рд┐рд▓реАрдЬрд╝ рдмрдирд╛рдПрдБ


  • рд░рд┐рд╣рд╛рдИ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреНрд░рдВрдЪ рдмрдирд╛рдирд╛


  • рдмрдЧрдлрд┐рдХреНрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдмрджрд▓рдирд╛




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


  • рдЕрдкрдирд╛ рдХреЛрдб рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдЬрдорд╛ рдХрд░реЗрдВред рдкреЛрд╕реНрдЯ рдореЗрдВ https://gitlab.com/anton_patsev/automation-maven-hotfix рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
  • рдЯреАрдорд╕рд┐рдЯреА рд╕рд░реНрд╡рд░ рдФрд░ рдПрдЬреЗрдВрдЯред рдЖрдк рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреАрдп рдЯреАрдорд╕рд┐рдЯреА рд╕рд░реНрд╡рд░ рдФрд░ рдПрдЬреЗрдВрдЯ рдХреЛ рдбреЛрдХрд░-рдХрдореНрдкреЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВ
  • рдЬрд╣рд╛рдБ рдЖрдкрдХреЗ рдкрд╛рд╕ Teamcity Agent рд╣реИ, рдЬрд╛рд╡рд╛, рдорд╛рд╡реЗрди, рдЧрд┐рдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП

рдЖрдЗрдП рдЯреАрдорд╕рд┐рдЯреА рдореЗрдВ "рдСрдЯреЛрдореЗрд╢рди рдорд╛рд╡реЗрди рд╣реЙрдЯрдлрд╝рд┐рдХреНрд╕" рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ рдФрд░ рд╡рд╣рд╛рдВ 4 рдХрд╛рд░реНрдп рдмрдирд╛рдПрдВред


  • CI рдмрд┐рд▓реНрдб (CI рдмрд┐рд▓реНрдб)


  • рд░рд┐рд╣рд╛рдИ рдХреЗ рд▓рд┐рдП рд╢рд╛рдЦрд╛ рдмрдирд╛рдПрдБ


  • рдорд╛рд╡реЗрди рд╡реГрджреНрдзрд┐ рдмрдЧрдлрд┐рдХреНрд╕ (рдмрдЧрдлрд┐рдХреНрд╕ рд╕рдВрд╕реНрдХрд░рдг рдмрджрд▓реЗрдВ)


  • рдорд╛рд╡реЗрди рд░рд┐рд▓реАрдЬрд╝ (рдПрдХ рдирдИ рд░рд┐рд▓реАрдЬрд╝ рдмрдирд╛рдирд╛)



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



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


рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдЪреЗрдХрдмреЙрдХреНрд╕ рдХреЛ " рдХреНрд▓реАрди рдмрд┐рд▓реНрдб: рдмрд┐рд▓реНрдб рд╕реЗ рдкрд╣рд▓реЗ рдЪреЗрдХрдЖрдЙрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рднреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рдЯрд╛рдПрдВ " рд╕реЗрдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рдпрд╣ рдбреЛрд╡ рдЧрд╛рдпрдм рд╣реИ, рддреЛ рдореБрдЭреЗ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓реАрдВред


рдПрдХ рдПрдХрд▓ VCS рдмрдирд╛рдПрдБред VCS рд▓рд╛рд▓ рд░рдВрдЧ рдореЗрдВ рдкрд░рд┐рдХреНрд░рдорд╛ рдХрд░рддрд╛ рд╣реИред



VCS рдЖрдорддреМрд░ рдкрд░ HTTPS рдпреЛрдЬрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╢рд╛рдЦрд╛ рд╡рд┐рдирд┐рд░реНрджреЗрд╢рди рдореЗрдВ: рдпрд╣ рд╕рднреА рдмреНрд░рдВрдЪ рдФрд░ рд╕рднреА рдЯреИрдЧ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:


+: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 рдмрд┐рд▓реНрдб рдЯрд╛рд╕реНрдХ рдореЗрдВ рд╕рд┐рд░реНрдл рдПрдХ рд╕реНрдЯреЗрдк mvan рдХреНрд▓реАрди рдЯреЗрд╕реНрдЯ



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


рдорд╛рд╡реЗрди рд░рд┐рд▓реАрдЬ рдореЗрдВ 2 рдЪрд░рдг рд╣реИрдВред рдкрд╣рд▓рд╛ рдХрджрдо рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдмреНрд░рдВрдЪ рдорд╛рд╕реНрдЯрд░ рд╣реИ ред рдпрджрд┐ рдмреНрд░рдВрдЪ рдорд╛рд╕реНрдЯрд░ рдирд╣реАрдВ рд╣реИ, рддреЛ рдХрд╛рд░реНрдп рдЧрд┐рд░ рдЬрд╛рддрд╛ рд╣реИред


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


рджреВрд╕рд░рд╛ рдЪрд░рдг рдорд╛рдирдХ mvan рд░рд┐рд▓реАрдЬрд╝ рд╣реИ: --batch-mode рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рддреИрдпрд╛рд░ рдХрд░реЗрдВ



рд░рд┐рд╣рд╛рдИ рдХреЗ рд▓рд┐рдП рд╢рд╛рдЦрд╛ рдмрдирд╛рдПрдБ


рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд▓рд┐рдП рд╣реЙрдЯрдлрд┐рдХреНрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рдмреНрд░рдВрдЪ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рд░рд┐рд▓реАрдЬ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдХреНрд░рд┐рдПрдЯ рдмреНрд░рд╛рдВрдЪ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрд╕рдХреЗ 2 рдЪрд░рдг рд╣реИрдВред


рдкрд╣рд▓рд╛ рдЪрд░рдг рдЬрд╛рдБрдЪрддрд╛ рд╣реИ рдХрд┐ рдмреНрд░рдВрдЪ рдорд╛рд╕реНрдЯрд░ рдирд╣реАрдВ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдЬрд╛рдБрдЪрддрд╛ рд╣реИ рдХрд┐ pom.xml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ SNAPSHOT рд╢рдмреНрдж рдирд╣реАрдВ рд╣реИред


 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 "******************* WARNING *************************" 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']" 


рджреВрд╕рд░рд╛ рдорд╛рд╡реЗрди рдХрджрдо 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 


рдЪреМрдереЗ рдЪрд░рдг рдореЗрдВ HTCPS рд╕реЗ 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 рдЪрд░ рдХреЛ рдЯреАрдорд╕рд┐рдЯреА рдореЗрдВ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкрддреНрд░ v рдХреЗ рдмрд┐рдирд╛ pom.xml рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг рд╕рд╛рдордиреЗ рд╣реИред рдФрд░ рдЯреИрдЧ, рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдХреНрд╖рд░ 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 

Source: https://habr.com/ru/post/hi483242/


All Articles