1

継続的統合にジェンキンスを使用しています。

scm で変更をポーリングするジョブを構成しました。遺言執行者が 1 人います。複数の scm-change があるが、executor が既に動作している場合、キューに追加されるジョブは 1 つだけです。ここで、複数のジョブをキューに入れたいと考えています。

回避策として「パラメーター化」されたジョブを既に試しましたが、ポーリングでパラメーター¹が設定されていない限り(デフォルトのものでも²)、これも役に立ちません。

scm-change ごとにジョブ キュー内の新しいビルドを取得する方法はありますか?

[1] https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Build

[2] このシナリオをhttps://wiki.jenkins-ci.org/display/JENKINS/Jenkins+Dynamic+Parameter+Plug-inと組み合わせてみました

4

2 に答える 2

1

SVN によってトリガーされるJenkins Adaptive Pluginを使用してスクリプトを記述し、現在実行中のものに関係なく、新しいビルドを作成できます。

もう 1 つのオプションは、SCM を監視するジョブとビルドを実行するジョブの 2 つのジョブを作成することです。SCM の変更があるたびに、最初のジョブで 2 番目のインスタンスをキューに追加し、すぐに完了してポーリングを続行できるようにします。

于 2012-11-08T19:18:13.440 に答える
0

説明されているシナリオは、次の 2 つの手順を必要とする回避策を使用することで、Jenkins で可能です。

  • [JobA_trigger] curl または jenkins-cli.jar¹ を介して「外部」で別のジョブをトリガーする 1 つのジョブ。

  • [JobA] パラメータ化されたものでなければならない実際のジョブ。

私のセットアップでは、JobA_trigger は定期的に SCM をポーリングします。変更がある場合、JobA は curl を介してトリガーされ、現在の dateTime が送信されます²。この「外部」トリガーは、パラメーターを JobA に送信するために必要です。

# JobA_trigger "execute shell"
curl ${JENKINS_URL}job/JobA/buildWithParameters?SVN_REVISION=`date +"%Y-%m-%d"`%20`date +"%H:%M:%S"`
# SVN_REVISION, example (decoded): "2012-11-07 12:56:50" ("%20" is url-encoded space)

JobA 自体はパラメーター化されており、String-Param "SVN_REVISION" を受け入れます。さらに、SVN-URL を次のように変更する必要がありました

# Outer brackets for usage of SVN revision dates³ - must be avoided if working on a revision-number.
https://svn.someaddress.com/trunk@{${SVN_REVISION}}

この回避策を使用すると、scm-change ごとに、関連する svn-revision/dateTime がパラメータとして添付され、このジョブによってテストされるソフトウェア状態として使用される JobA の新しい実行がキューに入れられます。

¹ https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+CLI

² リビジョンベースで作業する場合、それぞれ HEAD に更新される svn-externals があるため、リビジョンベースではなく dateTime ベースの更新を行うことにしました。

³ http://svnbook.red-bean.com/en/1.7/svn.tour.revs.specifiers.html#svn.tour.revs.dates

于 2012-11-12T16:05:22.160 に答える