TeamCity ကိုအသုံးပြု၍ Maven ပရောဂျက်များတွင် HotFix ၏အလိုအလျောက်လုပ်ဆောင်ခြင်း။

Teamcity ကို အသုံးပြု၍ Maven ပရောဂျက်များတွင် HotFix အလိုအလျောက်စနစ်ထည့်သွင်းခြင်းကို ဤပို့စ်တွင် ဖော်ပြပါမည်။

HotFix ပြုလုပ်ရန်၊ manual အဆင့်များစွာကို အများအားဖြင့် လုပ်ဆောင်သည်-

  1. သင် HotFix ကို ဖြန့်ချိလိုသော ထုတ်ဝေမှုအတွက် နေ့လယ်စာ ဖန်တီးပါ။
  2. ထုတ်ဝေမှုတွင် ချို့ယွင်းချက်တစ်ခုကို ပြင်ပါ။
  3. ထုတ်ဝေမှုဌာနခွဲရှိ bugfix ဗားရှင်းကိုပြောင်းပါ။
  4. bugfix ဗားရှင်းတက်ဂ်ကို ထုတ်လိုက်ပါ။

အမှတ် 1,3,4 ကို အလိုအလျောက်လုပ်နိုင်ပါသည်။

ခေါင်းစဉ်ကို မဆက်ခင်မှာ အရေးကြီးပြီး ရှုပ်ထွေးတဲ့ ခေါင်းစဉ်တစ်ခုကို ပြောပြချင်ပါတယ်။ မူကွဲ ဆော့ဖ်ဝဲ။ ဤစခရင်ရှော့တွင် Semver ကို အတိုချုံးနားလည်နိုင်သည်။ TeamCity ကိုအသုံးပြု၍ Maven ပရောဂျက်များတွင် HotFix ၏အလိုအလျောက်လုပ်ဆောင်ခြင်း။

လင့်ခ်တွင် ဆက်လက်ဖတ်ရှုနိုင်ပါသည်- 1.

ဤပို့စ်တွင်ဖော်ပြထားသော ဆက်တင်များအားလုံးကို အခြေခံထားသည်။ Semver и ပင်စည်အခြေခံ ဖွံ့ဖြိုးတိုးတက်မှု.

Trunk-Based Development တွင်၊ ထုတ်ဝေမှုတစ်ခုစီအတွက် သင်၏ကိုယ်ပိုင်ဌာနခွဲကို ဖန်တီးရန် လိုအပ်သည်။ ဤထုတ်ဝေမှုအတွင်း အပြောင်းအလဲများ (ပြင်ဆင်ချက်) အားလုံးကို ဤဌာနခွဲတွင် ကတိပြုပါသည်။

ဤပို့စ်၏ တစ်စိတ်တစ်ပိုင်းအနေဖြင့်၊ ကျွန်ုပ်တို့သည် အောက်ပါအရာများကို အလိုအလျောက်လုပ်ဆောင်ပေးပါမည်။

  • CI တည်ဆောက်ခြင်း။

  • အသစ်ထွက်ရှိမှုကို ဖန်တီးခြင်း။

  • ဖြန့်ချိရေးဌာနခွဲတစ်ခုဖန်တီးခြင်း။

  • bugfix ဗားရှင်းကိုပြောင်းခြင်း။

TeamCity ကိုအသုံးပြု၍ Maven ပရောဂျက်များတွင် HotFix ၏အလိုအလျောက်လုပ်ဆောင်ခြင်း။

လိုအပ်ချက်များကို:

  • သင့်ကုဒ်ကို သိမ်းဆည်းရန်အတွက် Git repository post သည် repository ကိုအသုံးပြုပါမည်။ https://gitlab.com/anton_patsev/automation-maven-hotfix.
  • Teamcity ဆာဗာနှင့် အေးဂျင့်။ သင်၏ ဒေသတွင်း Teamcity ဆာဗာနှင့် အေးဂျင့်ကို အသုံးပြု၍ မြှင့်တင်နိုင်သည်။ docker-compose
  • သင့်တွင် Teamcity အေးဂျင့်၊ java၊ maven၊ git ကို ထည့်သွင်းရပါမည်။

Teamcity တွင် "အလိုအလျောက် Maven Hotfix" ပရောဂျက်ကို ဖန်တီးပြီး အလုပ် 4 ခု ဖန်တီးကြပါစို့။

  • CI တည်ဆောက်ခြင်း။

  • ထုတ်ဝေရန်အတွက် ဌာနခွဲကို ဖန်တီးပါ။

  • Maven increment bugfix (bugfix ဗားရှင်းကိုပြောင်းပါ))

  • Maven ထုတ်ဝေမှု (ထုတ်ဝေမှုအသစ်ဖန်တီးခြင်း)

ပရောဂျက် ဖန်သားပြင်ဓာတ်ပုံ-

TeamCity ကိုအသုံးပြု၍ Maven ပရောဂျက်များတွင် HotFix ၏အလိုအလျောက်လုပ်ဆောင်ခြင်း။

အထွေထွေ settings ကို

အလုပ်အားလုံးတွင် ဘောက်စ်ကို အမှန်ခြစ်ရမည်၊တည်ဆောက်မှုကို သန့်ရှင်းပါ- တည်ဆောက်မှုမပြုလုပ်မီ ငွေရှင်းသည့်လမ်းညွှန်ရှိ ဖိုင်အားလုံးကို ဖျက်ပါ။"ဘာလို့လဲဆိုတော့ ဒီ checkbox မပါဘဲ ကျွန်တော့်မှာ errors တွေရထားတယ်။

ကျွန်ုပ်တို့သည် VCS တစ်ခုတည်းကို ဖန်တီးသည်။ VCS အင်္ဂါရပ်များကို အနီရောင်ဖြင့် ဝိုင်းထားသည်။

TeamCity ကိုအသုံးပြု၍ Maven ပရောဂျက်များတွင် HotFix ၏အလိုအလျောက်လုပ်ဆောင်ခြင်း။

ပုံမှန်အားဖြင့် VCS များသည် HTTPS အစီအစဉ်ကို အသုံးပြုသည်။ IN ဘဏ်ခွဲသတ်မှတ်ချက်- ညစာစားပွဲအားလုံးနှင့် တဂ်အားလုံးကို ကြည့်ရှုရန် ညွှန်ပြထားသည်-

+:refs/heads/*
+:refs/tags/*

Configuration Parameters 4 ခု ဖန်တီးရန် လိုအပ်ပါသည်။

  • BRANCH_FOR_INCREMENT
  • TAG_FROM_VERSION
  • TEAM_USER
  • TEAM_USER_EMAIL

BRANCH_FOR_INCREMENT နှင့် TAG_FROM_VERSION ရှိ တန်ဖိုးအကွက်သည် ဗလာဖြစ်ရပါမည်။

TeamCity ကိုအသုံးပြု၍ Maven ပရောဂျက်များတွင် HotFix ၏အလိုအလျောက်လုပ်ဆောင်ခြင်း။

သီးသန့်သော့ကို အပ်လုဒ်လုပ်ရန်/ထည့်ရန် လိုအပ်သည်။ CI Build မှလွဲ၍ အလုပ်အားလုံးသည် သီးသန့်သော့တစ်ခု လိုအပ်ပါသည်။

TeamCity ကိုအသုံးပြု၍ Maven ပရောဂျက်များတွင် HotFix ၏အလိုအလျောက်လုပ်ဆောင်ခြင်း။

CI Build မှလွဲ၍ အလုပ်တစ်ခုစီတွင် Build Features ကဏ္ဍတွင် သီးသန့်သော့တစ်ခုကို သင်ချိတ်ဆက်ရန်လိုအပ်သည်။

ဥပမာ Maven လွတ်မြောက်ခြင်း။

TeamCity ကိုအသုံးပြု၍ Maven ပရောဂျက်များတွင် HotFix ၏အလိုအလျောက်လုပ်ဆောင်ခြင်း။

CI တည်ဆောက်ခြင်း**။

အလုပ်တစ်ခုတွင် CI တည်ဆောက်ခြင်း။ ခြေတစ်လှမ်းသာ mvn သန့်​ရှင်း​အောင်​စမ်း

TeamCity ကိုအသုံးပြု၍ Maven ပရောဂျက်များတွင် HotFix ၏အလိုအလျောက်လုပ်ဆောင်ခြင်း။

Maven လွတ်မြောက်ခြင်း။

အလုပ်တစ်ခုတွင် Maven လွတ်မြောက်ခြင်း။ အဆင့် ၂။ ပထမအဆင့်အနေနဲ့ မနက်စာစားတယ်ဆိုတာ စစ်ကြည့်ပါ။ မာစတာ. နေ့လည်စာ မဟုတ်ရင် မာစတာဒါဆိုရင် အလုပ်က ကျသွားတယ်။

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 ထုတ်ဝေမှု- ပြင်ဆင်ပါ။ option နှင့်အတူ --batch-မုဒ်

TeamCity ကိုအသုံးပြု၍ Maven ပရောဂျက်များတွင် HotFix ၏အလိုအလျောက်လုပ်ဆောင်ခြင်း။

ထုတ်ဝေရန်အတွက် ဌာနခွဲကို ဖန်တီးပါ။

ထုတ်ဝေမှုအတွက် hotfix ဖန်တီးရန် သင်အကိုင်းအခက်တစ်ခုကို ဖန်တီးရန် လိုအပ်သည်။ ဤသည်မှာ အလုပ်တာဝန်ဖြစ်သည်။ ထုတ်ဝေရန်အတွက် ဌာနခွဲကို ဖန်တီးပါ။. သူမတွင် အဆင့် ၂ ဆင့်ရှိသည်။

ပထမအဆင့်က မနက်စာမစားဘူးဆိုတာ စစ်ဆေးတယ်။ မာစတာနှင့် ဒုတိယသည် ဖိုင်တွင် ဗားရှင်းရှိမရှိ စစ်ဆေးသည်။ 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 ၏အလိုအလျောက်လုပ်ဆောင်ခြင်း။

ဒုတိယအဆင့်တွင် developerConnection တွင် 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 ၏အလိုအလျောက်လုပ်ဆောင်ခြင်း။

Maven တိုးမြှင် bugfix

လုပ်ငန်းတာဝန်တွင် အပိုင်း ၆ ပိုင်းပါဝင်သည်။ ပြန်လည်ပြုပြင်နိုင်သော်လည်း ၎င်းသည် အလုပ်လုပ်ဆဲဖြစ်သည်။

ပထမအဆင့်မှာ နေ့လည်စာမဟုတ်ကြောင်း စစ်ဆေးရန်ဖြစ်သည်။ မာစတာ. နေ့လယ်စာစားလျှင် မာစတာ တာဝန်ကျတယ်။

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 ဖိုင်ရှိ bugfix ဗားရှင်းကို ပြောင်းလဲနေသည်။

ရည်မှန်းချက်များ: Maven သည် တစ်ကြောင်းတည်းတွင် အရာအားလုံးရှိသည်။

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 ၏အလိုအလျောက်လုပ်ဆောင်ခြင်း။

စတုတ္ထအဆင့်သည် developerConnection ရှိ ချိတ်ဆက်မှုအစီအစဉ်ကို HTTPS မှ GIT သို့ ပြောင်းလဲသည်။

နှင့် %BRANCH_FOR_INCREMENT% ပြောင်းလဲနိုင်သော Teamcity တွင် သတ်မှတ်ထားသည့် ဌာနခွဲသို့ အပြောင်းအလဲများကို တွန်းပို့သည်

# Здесь получаем 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 စာလုံးမပါပါ။ ပြီးတော့ ဒီဗားရှင်းကို အခြေခံထားတဲ့ tag မှာ အစမှာ စာလုံး 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 ၏အလိုအလျောက်လုပ်ဆောင်ခြင်း။

ဆဌမအဆင့် - tagging အမှားအယွင်း ဗားရှင်းများ ဒါကိုသုံးပြီး ပြီးသွားတယ်။ ကျွမ်းကျင်သူ လိုအပ်သော option နှင့်အတူ ရည်မှန်းချက်.

ရွေးချယ်စရာ ပန်းတိုင်:

-Dtag=%TAG_FROM_VERSION% scm:tag

TeamCity ကိုအသုံးပြု၍ Maven ပရောဂျက်များတွင် HotFix ၏အလိုအလျောက်လုပ်ဆောင်ခြင်း။

source: www.habr.com

မှတ်ချက် Add