Maven + Mercurial для номеров сборки - PullRequest
4 голосов
/ 14 октября 2010

Я не могу понять, как получить идентификатор ревизии Mercurial, вставленный в мою сборку Maven (в идеале, я хотел бы, чтобы это было в МАНИФЕСТЕ моих фляг и войн).:

mvn -DbuildNumber=`hg id -i`

Что на самом деле не будет работать для Windows или моего сервера Hudson.К счастью, Хадсон помечает мои сборки, но я хотел бы получить дополнительную уверенность, если бы сборки были также помечены идентификатором Mercurial changset.

Ответы [ 2 ]

4 голосов
/ 14 октября 2010

Посмотрите на этот предыдущий вопрос и ссылку из принятого ответа. По сути, вы хотите сделать то же самое, за исключением того, что вы захотите использовать цель buildnumber:hgchangeset с Mercurial, чтобы получить свойство changeset с содержанием hg id -i.

1 голос
/ 05 февраля 2018

К сожалению, hg id -i слишком долго для использования.Я создал скрипт, который будет вычислять точный номер сборки.Однако есть два исключения.Если в ветке не было предыдущего выпуска, он не может быть действительным.Если в локальном репо есть изменения, он не может быть действительным.В моем скрипте сборки я отмечаю сборку как "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
...