2

プロモーテッド ビルド プラグインと Mercurial プラグインを備えた Jenkins CI サーバーを使用しています。ビルドがプロモートされたときにやりたいことは、そのビルドに対応する Mercurial のリビジョンにタグを付けることです。

Mercurial プラグインは MERCURIAL_REVISION_NUMBER と呼ばれる環境変数を公開します。これはビルドの実行時に設定されますが、プロモーションの実行時には設定されません。したがって、プロモーションの「Windowsバッチコマンドを実行する」ステップで次のことを実行しようとすると:

hg tag --rev %MERCURIAL_REVISION_NUMBER% "Promoted-%PROMOTED_NUMBER%-%PROMOTED_ID%"

%MERCURIAL_REVISION_NUMBER% が空の文字列に評価されるため失敗し、 --rev 引数に値が指定されません。

Mercurial リビジョンが各ビルドの build.xml ファイルに保存されていることに気付きました。昇進の段階で簡単にアクセスできる方法はないかと考えています。

4

2 に答える 2

2

その build.xml は、Jenkins スクリプトが作成するものでなければなりませんが、Mercurial は作成しません。

Mercurial コマンドは正常に見えます。

1 つのオプションは、ビルド情報を jenkins スクリプトの一部としてファイルに入れることです。

hg id > $WORKSPACE/built-version

次にbuilt-version、ビルドのアーティファクトの 1 つとして含めます。次に、プロモーション スクリプトで次のことができます。

hg tag --rev $(< built-version) "Promoted-${PROMOTED_NUMBER}-${PROMOTED_ID}"

またはそれに相当するウィンドウが何であれ。

于 2013-03-01T01:53:19.253 に答える
0

私はPowershellスクリプトでそれをやった。これは私の最初の PS スクリプトなので、提案された改善点はすべて受け入れます。

# Read the appropriate Hg revision from build.xml and tag it
$filename = "..\builds\" + $env:PROMOTED_ID  + "\build.xml"
[xml]$build = Get-content $filename
$hg = $build.SelectSingleNode("/build/actions/hudson.plugins.mercurial.MercurialTagAction")
write-host "Tagging revision: " + $hg.rev
hg tag --force --rev $hg.rev "Promoted-$env:PROMOTED_NUMBER-$env:PROMOTED_ID"
hg push --force
于 2013-03-04T18:29:07.820 に答える