ビルド番号のMaven + Mercurial
-
30-09-2019 - |
質問
Mercurial Revision IDをMavenビルドに入れる方法を理解できません(理想的には、瓶と戦争のマニフェストでそれを望みます)。
私が見つけることができる最も近い解決策は次のとおりです。
mvn -DbuildNumber=`hg id -i`
WindowsやHudsonサーバーでは実際には機能しません。幸いなことに、ハドソンはビルドにタグを付けますが、ビルドにも慈悲のチャンセットIDがタグ付けされている場合は、さらに保証したいと思います。
解決
見て この前の質問 そして、受け入れられた答えからのリンク。基本的に、あなたが使用したいことを除いて、あなたは同じことをしたいです buildnumber:hgchangeset
Mercurialとの目標を取得します changeset
のコンテンツがあるプロパティ hg id -i
.
他のヒント
不運にも、 hg id -i
使用するには長すぎます。正確なビルド番号を計算するスクリプトを作成しました。ただし、2つの例外があります。ブランチに以前にリリースがなかった場合、有効にすることはできません。ローカルリポジトリに変更がある場合、有効にすることはできません。私のビルドスクリプトでは、それが起こるたびにビルドを「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
所属していません StackOverflow