خادم ووكيل Teamcity. يمكنك رفع خادم ووكيل Teamcity المحلي الخاص بك باستخدام عامل ميناء-يؤلف
عندما يكون لديك وكيل Teamcity، يجب تثبيت java وmaven وgit
لنقم بإنشاء مشروع "Automation Maven Hotfix" في Teamcity وإنشاء 4 مهام هناك.
بناء سي.آي
إنشاء فرع للإفراج عنه
زيادة Maven bugfix (تغيير إصدار bugfix))
إصدار Maven (إنشاء إصدار جديد)
لقطة شاشة للمشروع:
الإعدادات العامة
في جميع المهام يجب عليك تحديد المربع "البناء النظيف: احذف جميع الملفات الموجودة في دليل الخروج قبل الإنشاء"، لأنه بدون مربع الاختيار هذا حصلت على أخطاء.
نقوم بإنشاء VCS واحد. ميزات VCS محاطة بدائرة باللون الأحمر.
عادةً ما تستخدم VCSs نظام HTTPS. في مواصفات الفرع: تمت الإشارة إليه لمشاهدة جميع وجبات الإفطار والغداء وجميع العلامات:
+:refs/heads/*
+:refs/tags/*
من الضروري إنشاء 4 معلمات التكوين.
BRANCH_FOR_INCREMENT
TAG_FROM_VERSION
TEAM_USER
TEAM_USER_EMAIL
يجب ترك حقل القيمة في BRANCH_FOR_INCREMENT وTAG_FROM_VERSION فارغًا.
تحتاج إلى تحميل/إضافة مفتاح خاص. تتطلب كافة المهام باستثناء CI Build مفتاحًا خاصًا.
في كل مهمة، باستثناء CI Build، في قسم Build Features (ميزات البناء)، تحتاج إلى توصيل مفتاح خاص.
مثال ل الافراج عن مافن
بناء CI **.
في مهمة بناء سي.آي خطوة واحدة فقط اختبار mvn النظيف
الافراج عن مافن
في مهمة الافراج عن مافن 2 خطوات. الخطوة الأولى هي التحقق من أن الغداء رئيسي. إذا لم يكن الغداء رئيسي، ثم تقع المهمة.
BRANCH=$(git branch | grep * | cut -d ' ' -f2)
echo "$BRANCH"
if [[ "$BRANCH" != "master" ]]; then
echo 'Branch is not master';
echo 'Aborting';
exit 1;
fi
الخطوة الثانية هي القياسية إصدار mvn: تحضير مع الخيار --دفعة واسطة
إنشاء فرع للإفراج عنه
لإنشاء إصلاح عاجل لإصدار ما، يلزمك إنشاء فرع. وهذا ما تفعله المهمة إنشاء فرع للإفراج عنه. لديها خطوتين.
الخطوة الأولى تتحقق من عدم وجود وجبة فطور وغداء رئيسي، والثاني يتحقق من وجود الإصدار في الملف 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
تقوم الخطوة الثانية بتغيير نظام الاتصال في 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
زيادة مخضرم bugfix
تتكون المهمة من 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']"
الخطوة الثانية لـ Maven هي تغيير إصدار bugfix في ملف pom.xml.
تقوم الخطوة الرابعة بتغيير نظام الاتصال في DeveloperConnection من HTTPS إلى GIT.
ويدفع التغييرات إلى الفرع المحدد في Teamcity بواسطة المتغير %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. لاحظ أن الإصدار من الملف 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']"
الخطوة السادسة - وضع العلامات إصلاح الخلل الإصدارات. يتم ذلك باستخدام مخضرم مع الخيار المطلوب في المبلغ المستهدف.