Automation HotFix ann am pròiseactan Maven a’ cleachdadh TeamCity

Bheir an dreuchd seo cunntas air stèidheachadh fèin-ghluasad HotFix ann am pròiseactan Maven a’ cleachdadh Teamcity.

Gus HotFix a dhèanamh, mar as trice bidh tòrr cheumannan làimhe air an dèanamh:

  1. Cruthaich brunch airson an naidheachd a tha thu airson HotFix a sgaoileadh
  2. Ceartaich bug ann an sgaoileadh
  3. Atharraich an tionndadh bugfix anns a’ mheur fuasglaidh
  4. Luchdaich a-nuas tag tionndadh bugfix

Faodar puingean 1,3,4 a bhith fèin-ghluasadach.

Mus gluais sinn air adhart chun chuspair, bu mhath leam suathadh air cuspair cudromach agus iom-fhillte - dreach bathar-bog. Faodaidh tu Semver a thuigsinn goirid san dealbh seo. Automation HotFix ann am pròiseactan Maven a’ cleachdadh TeamCity

Faodaidh tu barrachd a leughadh aig a’ cheangal: 1.

Tha a h-uile suidheachadh a tha air a mhìneachadh san dreuchd seo stèidhichte air seamhain и Leasachadh stèidhichte air stoc.

Ann an Leasachadh Stèidhichte air Trunk, feumaidh tu do mheur fhèin a chruthachadh airson gach sgaoileadh. Tha a h-uile atharrachadh (hotfixes) taobh a-staigh an naidheachd seo dealasach don mheur seo.

Mar phàirt den phost seo, nì sinn fèin-ghluasad air na rudan a leanas:

  • Togalach CI

  • A 'cruthachadh foillseachadh ùr

  • A 'cruthachadh meur sgaoilidh

  • Ag atharrachadh an tionndadh bugfix

Automation HotFix ann am pròiseactan Maven a’ cleachdadh TeamCity

Riatanasan:

  • Stòr Git airson do chòd a stòradh. Cleachdaidh am post an stòr https://gitlab.com/anton_patsev/automation-maven-hotfix.
  • Teamcity frithealaiche agus àidseantan. Faodaidh tu do fhrithealaiche agus àidseant Teamcity ionadail a thogail a’ cleachdadh docker-compose
  • Far a bheil àidseant Teamcity agad, feumar java, maven, git a chuir a-steach

Cruthaichidh sinn am pròiseact “Automation Maven Hotfix” ann an Teamcity agus cruthaich sinn 4 gnìomhan an sin.

  • Togail CI

  • Cruthaich meur airson a leigeil ma sgaoil

  • Bugfix àrdachadh maven (Atharraich dreach bugfix))

  • Sgaoileadh Maven (A’ cruthachadh brath ùr)

Dealbh-sgrìn pròiseict:

Automation HotFix ann am pròiseactan Maven a’ cleachdadh TeamCity

Suidhichidhean coitcheann

Anns a h-uile gnìomh feumaidh tu sgrùdadh a dhèanamh air a’ bhogsa "Togail glan: Sguab às a h-uile faidhle san eòlaire pàighidh mus tèid a thogail“, oir às aonais a’ bhogsa-seic seo fhuair mi mearachdan.

Bidh sinn a’ cruthachadh aon VCS. Tha feartan VCS air an cuairteachadh ann an dearg.

Automation HotFix ann am pròiseactan Maven a’ cleachdadh TeamCity

Mar as trice bidh VCSn a’ cleachdadh an sgeama HTTPS. ANNS Sònrachadh meur: ainmichte a bhith a’ coimhead a h-uile brunches agus a h-uile tag:

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

Feumar 4 Paramadairean rèiteachaidh a chruthachadh.

  • BRANCH_FOR_INCREMENT
  • TAG_FROM_VERSION
  • TEAM_USER
  • TEAM_USER_EMAIL

Feumaidh an raon luach ann am BRANCH_FOR_INCREMENT agus TAG_FROM_VERSION fhàgail falamh.

Automation HotFix ann am pròiseactan Maven a’ cleachdadh TeamCity

Feumaidh tu iuchair phrìobhaideach a luchdachadh suas / a chur ris. Feumaidh a h-uile gnìomh ach CI Build iuchair phrìobhaideach.

Automation HotFix ann am pròiseactan Maven a’ cleachdadh TeamCity

Anns gach gnìomh, ach a-mhàin CI Build, anns an roinn Feartan Togbhail feumaidh tu iuchair phrìobhaideach a cheangal.

Eisimpleir airson Maven saor an asgaidh

Automation HotFix ann am pròiseactan Maven a’ cleachdadh TeamCity

Togalach CI**.

Ann an obair Togail CI dìreach aon cheum mvn glan deuchainn

Automation HotFix ann am pròiseactan Maven a’ cleachdadh TeamCity

Maven saor an asgaidh

Ann an obair Maven saor an asgaidh 2 cheum. Is e a’ chiad cheum dèanamh cinnteach gu bheil brunch ann mhaighstir. Mura h-eil brunch mhaighstir, an uairsin tha an obair a 'tuiteam.

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

Automation HotFix ann am pròiseactan Maven a’ cleachdadh TeamCity

Tha an dàrna ìre - àbhaisteach mvn release: ullaich le roghainn --batch-modh

Automation HotFix ann am pròiseactan Maven a’ cleachdadh TeamCity

Cruthaich meur airson a leigeil ma sgaoil

Gus hotfix a chruthachadh airson sgaoilidh feumaidh tu meur a chruthachadh. Is e seo a bhios an taska a’ dèanamh Cruthaich meur airson a leigeil ma sgaoil. Tha 2 cheum aice.

Tha a 'chiad cheum a' dèanamh cinnteach nach eil brunch mhaighstir, agus bidh an dàrna sgrùdadh a’ dèanamh cinnteach gu bheil an dreach san fhaidhle pom.xml cha robh am facal ann 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

Automation HotFix ann am pròiseactan Maven a’ cleachdadh TeamCity

Bidh an dàrna ceum ag atharrachadh an sgeama ceangail ann an ceangal leasaiche bho HTTPS gu 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

Automation HotFix ann am pròiseactan Maven a’ cleachdadh TeamCity

Ceartachadh bug àrdachadh Maven

Tha an obair air a dhèanamh suas de 6 pàirtean. Dh’ fhaodadh e bhith air ath-leasachadh, ach tha e fhathast ag obair.

Is e a 'chiad cheum dèanamh cinnteach nach eil am brunch ann mhaighstir. Ma tha brunch mhaighstir tha an obair a 'tuiteam.

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

Automation HotFix ann am pròiseactan Maven a’ cleachdadh TeamCity

Tha an dàrna ceum Maven ag atharrachadh an tionndadh bugfix anns an fhaidhle pom.xml.

Amasan: Tha a h-uile dad aig Maven ann an aon loidhne

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

Automation HotFix ann am pròiseactan Maven a’ cleachdadh TeamCity

Is e an treas ceum fiosrachadh inbhe Git a thaisbeanadh agus feadhainn eile:

echo 'cat pom.xml'
cat pom.xml
echo 'git status'
git status
echo 'git remote -v'
git remote -v
echo 'git branch'
git branch

Automation HotFix ann am pròiseactan Maven a’ cleachdadh TeamCity

Bidh an ceathramh ceum ag atharrachadh an sgeama ceangail ann an ceangal leasaiche bho HTTPS gu GIT.

Agus a' putadh atharraichean dhan mheur a chaidh a shònrachadh ann an Teamcity leis an caochladair %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%

Automation HotFix ann am pròiseactan Maven a’ cleachdadh TeamCity

Tha an còigeamh ceum a 'faighinn bhon fhaidhle pom.xml version agus cuir a-steach e Sgioba caochlaideach TAG_FROM_VERSION. Thoir an aire gu bheil an tionndadh bhon fhaidhle pom.xml sin an litir v air thoiseach. Agus tha an taga, stèidhichte air an dreach seo, mar-thà air an litir v aig an toiseach.

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

Automation HotFix ann am pròiseactan Maven a’ cleachdadh TeamCity

An t-siathamh ceum - tagadh bugfix tionndaidhean. Tha seo air a dhèanamh a 'cleachdadh Maven leis an roghainn a tha a dhìth a-steach Amas.

Roghainn amasan:

-Dtag=%TAG_FROM_VERSION% scm:tag

Automation HotFix ann am pròiseactan Maven a’ cleachdadh TeamCity

Source: www.habr.com

Cuir beachd ann