Teamcity sunucusu ve temsilcisi. Yerel Teamcity sunucunuzu ve temsilcinizi kullanarak yükseltebilirsiniz. liman işçisi-oluşturma
Teamcity temsilcinizin olduğu yerde java, maven, git kurulu olmalıdır
Teamcity'de “Automation Maven Hotfix” projesini oluşturalım ve orada 4 adet görev oluşturalım.
CI Yapısı
Sürüm için şube oluştur
Maven artış hatası düzeltmesi (Hata düzeltme sürümünü değiştir))
Maven sürümü (Yeni bir sürüm oluşturma)
Proje ekran görüntüsü:
Genel ayarlar
Tüm görevlerde "kutucuğunu işaretlemelisiniz"Derlemeyi temizle: Derlemeden önce ödeme dizinindeki tüm dosyaları silin“çünkü bu onay kutusu olmadan hatalar alıyorum.
Tek bir VCS oluşturuyoruz. VCS özellikleri kırmızı daire içine alınmıştır.
Tipik olarak VCS'ler HTTPS şemasını kullanır. İÇİNDE Şube özellikleri: tüm brunch'ları ve tüm etiketleri izlemek için belirtildi:
BRANCH_FOR_INCREMENT ve TAG_FROM_VERSION içindeki değer alanı boş bırakılmalıdır.
Özel bir anahtar yüklemeniz/eklemeniz gerekir. CI Build dışındaki tüm görevler özel anahtar gerektirir.
CI Build dışındaki her görevde, Yapı Özellikleri bölümünde özel bir anahtar bağlamanız gerekir.
Örnek: Maven sürümü
CI Derlemesi**.
Bir görevde CI Yapısı sadece bir adım mvn temiz testi
Maven sürümü
Bir görevde Maven sürümü 2 adım. İlk adım brunch'ın olup olmadığını kontrol etmektir. usta. Brunch değilse ustao zaman görev düşüyor.
BRANCH=$(git branch | grep * | cut -d ' ' -f2)
echo "$BRANCH"
if [[ "$BRANCH" != "master" ]]; then
echo 'Branch is not master';
echo 'Aborting';
exit 1;
fi
İkinci adım standarttır mvn sürümü:hazırla seçeneği ile --toplu modu
Sürüm için şube oluştur
Bir sürüme yönelik düzeltme oluşturmak için bir dal oluşturmanız gerekir. Taska'nın yaptığı budur Sürüm için şube oluştur. 2 adımı var.
İlk adım, brunch'ın uygun olup olmadığını kontrol eder. ustave ikincisi sürümün dosyada olup olmadığını kontrol eder pom.xml kelimeyi içermiyordu ENSTANTANE FOTOĞRAF
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
İkinci adım, DeveloperConnection'daki bağlantı şemasını HTTPS'den GIT'e değiştirir.
# Здесь получаем 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 artış hatası düzeltmesi
Görev 6 bölümden oluşmaktadır. Yeniden düzenlenebilirdi ama hala çalışıyor.
İlk adım, brunch'ın uygun olup olmadığını kontrol etmektir. usta. Brunch ise usta görev düşüyor.
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']"
İkinci Maven adımı pom.xml dosyasındaki hata düzeltme sürümünü değiştirmektir.
Dördüncü adım, DeveloperConnection'daki bağlantı şemasını HTTPS'den GIT'e değiştirir.
Ve değişiklikleri %BRANCH_FOR_INCREMENT% değişkeni tarafından Teamcity'de belirtilen şubeye aktarır
# Здесь получаем 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%
Beşinci adım dosyadan almak pom.xml sürümü ve onu yükler takım şehri değişken TAG_FROM_VERSION. Dosyadaki sürümün pom.xml önünde v harfi olmadan. Ve bu versiyona göre etiketin başında zaten v harfi var.
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']"
Altıncı adım - etiketleme bugfix versiyonları. Bu kullanılarak yapılır Maven gerekli seçenek ile Gol.