Maven + Mercurial لأرقام البناء
-
30-09-2019 - |
سؤال
لا يمكنني معرفة كيفية وضع معرف مراجعة الزئبق في بناء Maven الخاص بي (من الناحية المثالية ، أود ذلك في ظهور الجرار والحرب).
أقرب حل يمكن أن أجده هو:
mvn -DbuildNumber=`hg id -i`
الذي لن يعمل حقًا مع Windows أو خادم Hudson الخاص بي. لحسن الحظ ، يقوم Hudson بتصميماتي ، لكنني أرغب في مزيد من التأكيد إذا تم وضع علامة على التصميم أيضًا بمعرف Changset الزئبقي.
المحلول
القي نظرة على هذا السؤال السابق والرابط من الإجابة المقبولة. في الأساس ، تريد أن تفعل الشيء نفسه إلا أنك ستحتاج إلى استخدام buildnumber:hgchangeset
الهدف مع الزئبق للحصول على ملف changeset
خاصية مع محتوى hg id -i
.
نصائح أخرى
للأسف، hg id -i
طويل جدا للاستخدام. لقد قمت بإنشاء برنامج نصي يحسب رقم بناء دقيق. ومع ذلك ، هناك استثناءان. إذا لم يكن هناك إصدار سابق على الفرع ، فلا يمكن أن يكون صالحًا. إذا كانت هناك تغييرات في الريبو المحلي ، فلا يمكن أن تكون صالحة. في برنامج Build Script الخاص بي ، حددت البناء على أنه "XXUNSTable" كلما حدث ذلك.
أستخدم Rel_pattern لالتقاط العلامة الأخيرة في الفرع الحالي الذي تم تمييزه كإصدار فعلي. ثم أقوم بحساب رقم الإنشاء عن طريق تتبع عدد سجل الالتزام من هذا الإصدار + جميع الالتزام إلى الفرع منذ هذا الإصدار.
#!/bin/bash
REL_PATTERN="release-[0-9]*\.[0-9]*\.[0-9]*"
BRANCH=$( hg branch )
CURR_REV=$( hg id -n )
if [ "${CURR_REV: -1}" = "+" ] ; then
echo "ERROR: This workspace contains uncommitted code. Cannot calculate build number" >&2
echo "UNSTABLE"
exit 1
fi
RELEASE=$( hg log --rev="branch($BRANCH) and tag() and 1:$CURR_REV" -T "{tags} {rev}\n"|grep "${REL_PATTERN} "|tail -1 )
if [ "$RELEASE" = "" ] ; then
echo "ERROR: Unable to locate version tag" >&2
echo "UNSTABLE"
exit 1
fi
RELEASE_REV=$( echo $RELEASE|cut -f 2 -d ' ' )
RELEASE_TAG=$( echo $RELEASE|cut -f 1 -d ' ' )
REVS=$( hg log -P $RELEASE_REV -b $BRANCH -T "{rev}\n"|wc -l )
BUILD=$( hg log -r1:$CURR_REV -P $RELEASE_REV -b $BRANCH -T "{rev}\n"|wc -l )
echo "BRANCH=$BRANCH" >&2
echo "CURR_REV=$CURR_REV" >&2
echo "RELEASE_REV=$RELEASE_REV" >&2
echo "RELEASE_TAG=$RELEASE_TAG" >&2
echo "BUILD=$BUILD" >&2
echo $BUILD