web-dev-qa-db-ja.com

Jenkins:パラメーター化されたトリガープラグインを使用してSubversionリビジョンを渡すにはどうすればよいですか?

IMO、この使用例は、プラグインのウェブページ/ドキュメントに具体的に記載する必要があります。

上流にU、下流にDというプロジェクトがあるとします。 Uがビルドを終えたら、Uがビルドしたのと同じリビジョンをDにチェックアウトさせます。 Uは常にHEADをチェックアウトします。

これが私がやったことです:

  1. Uでは、「他のプロジェクトでのトリガーパラメーター化ビルド」の「ビルド後のアクション」を追加しました。
  2. 「ビルドするプロジェクト」の場合、Dと入力し、「安定」の場合にのみビルドします。
  3. 「Subversionリビジョン」のトリガーを追加しました。
  4. この構成を保存しました

今私は次に何をすべきかわからないが、これが機能していることを示すfeedbackを取得しません。実際、 プラグインソースにコミットされているこのテストケースでも は、これが私がしなければならないことのすべてであることを示唆しています。

しかし、私が推測した場合、私はUをパラメーター化されたビルドとしてマークし、それにパラメーターを追加することになっていると思います。このパラメーターは、UがDに送信するものに名前を付ける必要があります。しかし、私が正しい考えを持っている場合は、このパラメーターに何を付けるべきかわかりません。 DのコンソールログにもUのコンソールログにも、新しいパラメータについての記述はありません。

私は推測してUで「SVN_REVISION」という名前の文字列パラメーターを作成し、デフォルトで-1に設定しましたが、効果がありませんでした。 Dがビルドをトリガーするたびに、SVN_REVISIONはデフォルトで-1になります。


これは、Dプロジェクトでのexportの実行結果です。

+ export
export BUILD_ID="2013-03-20_09-48-32"
export BUILD_NUMBER="4522"
export BUILD_TAG="jenkins-D-4522"
export BUILD_URL="http://my.jenkins.server.com:8081/job/D/4522/"
export EXECUTOR_NUMBER="2"
export HUDSON_COOKIE="8ec52f7a-d60d-4640-83a9-dbed7351b32a"
export HUDSON_HOME="/opt/hudson"
export HUDSON_SERVER_COOKIE="633967fcd1d6f7b38a85042ada5c3949"
export HUDSON_URL="http://my.jenkins.server.com:8081/"
export Java_HOME="/opt/Java"
export JENKINS_HOME="/opt/hudson"
export JENKINS_SERVER_COOKIE="633967fcd1d6f7b38a85042ada5c3949"
export JENKINS_URL="http://my.jenkins.server.com:8081/"
export JOB_NAME="D"
export JOB_URL="http://my.jenkins.server.com:8081/job/D/"
export LANG="en_US.UTF-8"
export LD_LIBRARY_PATH="/opt/jdk1.6.0_30/jre/lib/i386/server:/opt/jdk1.6.0_30/jre/lib/i386:/opt/jdk1.6.0_30/jre/../lib/i386"
export M2="/opt/maven/bin"
export M2_HOME="/opt/maven"
export MAVEN_OPTS="-Xms256m -Xmx512m"
export NHINC_PROPERTIES_DIR="/opt/nhinc/Properties"
export NLSPATH="/usr/dt/lib/nls/msg/%L/%N.cat"
export NODE_LABELS="master"
export NODE_NAME="master"
export OLDPWD
export PATH="/sbin:/usr/sbin:/bin:/usr/bin:/opt/Java/bin:/opt/Apache-ant-1.8.1/bin:/usr/local/bin:/opt/maven/bin"
export PWD="/opt/hudson/jobs/D/workspace"
export SHLVL="2"
export SVN_REVISION="24186"
export SVN_URL="https://a/url/trunk"
export TERM="xterm"
export WORKSPACE="/opt/hudson/jobs/D/workspace"
export XFILESEARCHPATH="/usr/dt/app-defaults/%L/Dt"
export _="/opt/Java/bin/Java"

したがって、SVN_REVISION環境変数があるようです。しかし、それは必ずしもプラグインから来ているとは思いません。私の証拠はジェンキンスの「リポジトリURL」の説明から来ています:

ビルド中、チェックアウトされたモジュールのリビジョン番号は、1つのモジュールのみをチェックアウトしている場合、環境変数SVN_REVISIONを介して利用できます。複数のモジュールをチェックアウトしている場合は、svnversionコマンドを使用してください。複数のモジュールをチェックアウトしている場合は、svnversionコマンドを使用してリビジョン情報を取得するか、SVN_REVISION_環境変数を使用できます。ここで、は、構成された場所と一致する1ベースのインデックスです。 URLは、同様のSVN_URL_環境変数を介して利用できます。

しかし、これがDではなくUから設定されていると仮定します。Dにそれを使用させるにはどうすればよいですか?


次に尋ねる必要があると思われる質問をさせてください。使用する必要があるパラメーターの名前がわかったら、そのリビジョンをチェックアウトできるようにDの構成を変更するにはどうすればよいですか? 「リポジトリURL」を変更して@${PARAMETER_NAME}最後か何かで?

19
Daniel Kaplan

結局、 テストケースのように 、これが私がしなければならなかったすべてでした。私はUにコミットすることによってこれをテストし、それが構築されている間に再度コミットしました。 Dがビルドを開始すると、最新ではなく最初のコミットを取得しました。それは私がそれが機能していたことをテストした方法です。

より良いフィードバックをいただければ幸いですが、少なくとも私はそれが機能していることを知っています。

3
Daniel Kaplan

「Subversionリビジョン」パラメーターが機能しない理由はわかりませんが(以下のトラブルシューティングのヒントを参照)、「パラメーターの追加」ドロップダウンを使用して、「他のプロジェクトのトリガーパラメーター化ビルド」の下に手動でパラメーターを追加してみてください。最も簡単なのは、「現在のビルドパラメータ」を追加することです。

また、次のように、必要なパラメータを「定義済みパラメータ」で必要な値だけで指定することもできます。

SVN_REVISION=${SVN_REVISION}

Dをパラメーター化されたものとしてマークする必要はありません。つまり、パラメーターをデフォルト値で指定し、ビルドが手動でトリガーされたときにJenkinsにパラメーターを要求させることができます。ただし、新しいビルドをスケジュールするもの(パラメーター化トリガープラグインのように)では、ジョブの構成方法に関係なく、常にそのビルドにパラメーターを追加できます。


トラブルシューティングのヒント:トリガーされたビルドに環境変数(すべてのビルドパラメーターも必要)をダンプするビルドステップを追加します。最も簡単なのは、環境をダンプするコマンドで「シェルの実行」/「Windowsバッチコマンドの実行」を追加することです(UNIXシェルではexport、Windowsではset)。

次に、ビルドコンソールの出力から、パラメーターが適切であるかどうかを確認します(存在し、正しい値を持っている)。

5
hyde