ٽيم سٽي استعمال ڪندي Maven منصوبن ۾ HotFix جو خودڪار

هي پوسٽ ٽيم سٽي استعمال ڪندي Maven منصوبن ۾ HotFix آٽوميشن قائم ڪرڻ جي وضاحت ڪندي.

HotFix ڪرڻ لاء، ڪيترائي دستي قدم عام طور تي ڪيا ويندا آهن:

  1. رليز لاءِ هڪ برانچ ٺاهيو جيڪو توهان چاهيو ٿا HotFix ڏانهن
  2. ڇڏڻ ۾ هڪ بگ کي درست ڪريو
  3. رليز برانچ ۾ بگ فڪس ورزن کي تبديل ڪريو
  4. رول آئوٽ بگ فڪس ورزن ٽيگ

پوائنٽس 1,3,4 خودڪار ٿي سگهن ٿا.

ان کان اڳ جو اسان موضوع تي هلون، مان هڪ اهم ۽ پيچيده موضوع تي رابطو ڪرڻ چاهيان ٿو. ورجن ڪرڻ سافٽ ويئر. توھان مختصر طور سمجھي سگھوٿا سمور کي ھن اسڪرين شاٽ ۾. ٽيم سٽي استعمال ڪندي Maven منصوبن ۾ HotFix جو خودڪار

توھان وڌيڪ پڙھي سگھوٿا لنڪ تي: 1.

ھن پوسٽ ۾ بيان ڪيل سڀ سيٽنگون ٻڌل آھن سمور и ٽرڪن جي بنياد تي ترقي.

ٽرڪن تي ٻڌل ترقي ۾، توهان کي هر رليز لاءِ پنهنجي برانچ ٺاهڻ جي ضرورت آهي. هن رليز ۾ سڀ تبديليون (هاٽ فڪسس) هن برانچ لاءِ پرعزم آهن.

هن پوسٽ جي حصي جي طور تي، اسان هيٺ ڏنل شيون خودڪار ڪنداسين:

  • سي آئي تعمير

  • نئين رليز ٺاهڻ

  • رليز برانچ ٺاهڻ

  • بگ فڪس ورزن کي تبديل ڪرڻ

ٽيم سٽي استعمال ڪندي Maven منصوبن ۾ HotFix جو خودڪار

گهربل

  • توهان جي ڪوڊ کي محفوظ ڪرڻ لاءِ Git مخزن. پوسٽ مخزن کي استعمال ڪندي https://gitlab.com/anton_patsev/automation-maven-hotfix.
  • ٽيم سٽي سرور ۽ ايجنٽ. توھان بلند ڪري سگھو ٿا پنھنجي مقامي ٽيم سٽي سرور ۽ ايجنٽ استعمال ڪندي ڊڪر ٺاهيندڙ
  • جتي توهان وٽ ٽيم سٽي ايجنٽ آهي، جاوا، ميون، گٽ کي نصب ڪيو وڃي

اچو ته ٽيم سٽي ۾ ”آٽوميشن Maven Hotfix“ پروجيڪٽ ٺاهيو ۽ اتي 4 ڪم ٺاهيون.

  • CI تعمير

  • ڇڏڻ لاء برانچ ٺاهيو

  • Maven increment bugfix (بگ فڪس ورزن تبديل ڪريو))

  • Maven ڇڏڻ (نئين رليز ٺاهڻ)

پروجيڪٽ اسڪرين شاٽ:

ٽيم سٽي استعمال ڪندي Maven منصوبن ۾ HotFix جو خودڪار

عام سيٽنگون

سڀني ڪمن ۾ توهان کي باڪس چيڪ ڪرڻ گهرجي "صاف تعمير: تعمير کان پهريان چيڪ آئوٽ ڊاريڪٽري ۾ سڀ فائلون حذف ڪريو"، ڇاڪاڻ ته بغير هن چيڪ بڪس جي مون کي غلطيون مليون آهن.

اسان هڪ واحد VCS ٺاهيندا آهيون. VCS خاصيتون ڳاڙهي رنگ ۾ گول آهن.

ٽيم سٽي استعمال ڪندي 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 ۾ ويل ويل فيلڊ کي خالي ڇڏڻ گھرجي.

ٽيم سٽي استعمال ڪندي Maven منصوبن ۾ HotFix جو خودڪار

توھان کي اپلوڊ ڪرڻ جي ضرورت آھي / ھڪڙي خانگي چاٻي شامل ڪريو. CI Build کان سواءِ سڀ ڪم ھڪ پرائيويٽ ڪنجي جي ضرورت آھي.

ٽيم سٽي استعمال ڪندي Maven منصوبن ۾ HotFix جو خودڪار

هر ڪم ۾، سواءِ CI Build، Build Features سيڪشن ۾ توهان کي هڪ خانگي ڪيچ ڳنڍڻ جي ضرورت آهي.

لاءِ مثال مايون ڇڏڻ

ٽيم سٽي استعمال ڪندي Maven منصوبن ۾ HotFix جو خودڪار

CI تعمير**.

هڪ ڪم ۾ CI تعمير صرف هڪ قدم mvn صاف ٽيسٽ

ٽيم سٽي استعمال ڪندي 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

ٽيم سٽي استعمال ڪندي Maven منصوبن ۾ HotFix جو خودڪار

ٻيو قدم معياري آهي mvn ڇڏڻ: تيار ڪريو اختيار سان بيچ موڊ

ٽيم سٽي استعمال ڪندي Maven منصوبن ۾ HotFix جو خودڪار

ڇڏڻ لاء برانچ ٺاهيو

رليز لاءِ هاٽ فڪس ٺاهڻ لاءِ توهان کي برانچ ٺاهڻ جي ضرورت آهي. اهو ئي آهي جيڪو ٽاسڪ ڪري ٿو ڇڏڻ لاء برانچ ٺاهيو. هن وٽ 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 "******************* W A R N I N G *************************"
    echo "************ You are create branch for SNAPSHOTS ******************"
    echo "***********************************************************"
    exit 1
fi

ٽيم سٽي استعمال ڪندي 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

ٽيم سٽي استعمال ڪندي Maven منصوبن ۾ HotFix جو خودڪار

Maven increment bugfix

ڪم 6 حصن تي مشتمل آهي. اهو ٿي سگهي ٿو refactored، پر اهو اڃا تائين ڪم ڪري ٿو.

پهريون قدم چيڪ ڪرڻ آهي ته برنچ نه آهي رکن ٿا. جيڪڏهن برنچ رکن ٿا ڪم پوي ٿو.

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 منصوبن ۾ HotFix جو خودڪار

ٻيو Maven قدم pom.xml فائل ۾ بگ فڪس ورزن کي تبديل ڪري رهيو آهي.

ھدايتون Maven هڪ لڪير ۾ سڀ ڪجهه آهي

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

ٽيم سٽي استعمال ڪندي 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

ٽيم سٽي استعمال ڪندي 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%

ٽيم سٽي استعمال ڪندي Maven منصوبن ۾ HotFix جو خودڪار

پنجون قدم فائل مان حاصل ڪري رهيو آهي pom.xml نسخو ۽ ان ۾ انسٽال ٽيم شهر متغير TAG_FROM_VERSION. نوٽ ڪريو ته فائل مان ورجن 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']"

ٽيم سٽي استعمال ڪندي Maven منصوبن ۾ HotFix جو خودڪار

ڇهين قدم - ٽيگنگ bugfix نسخو. اهو استعمال ڪيو ويندو آهي ماٿي ۾ گهربل اختيار سان مقصد.

اختيار مقصد:

-Dtag=%TAG_FROM_VERSION% scm:tag

ٽيم سٽي استعمال ڪندي Maven منصوبن ۾ HotFix جو خودڪار

جو ذريعو: www.habr.com

تبصرو شامل ڪريو