コードの変更がないにもかかわらず、SCMがビルドをトリガーするという問題があります。 SCMは15分ごとに変更をポーリングし、変更が見つかった場合にのみビルドをトリガーします。
次に、連続したSCMポーリングログの例をいくつか示します。
Started on Nov 15, 2013 11:47:14 AM
Using strategy: Default
[poll] Last Built Revision: Revision 08f48cc5675ae0126256cf24d6ee74c8fc9d7b30 (Origin/develop)
Done. Took 0.23 sec
Changes found
Started on Nov 15, 2013 11:17:14 AM
Using strategy: Default
[poll] Last Built Revision: Revision 08f48cc5675ae0126256cf24d6ee74c8fc9d7b30 (Origin/develop)
Done. Took 0.22 sec
Changes found
Started on Nov 15, 2013 11:02:14 AM
Using strategy: Default
[poll] Last Built Revision: Revision 08f48cc5675ae0126256cf24d6ee74c8fc9d7b30 (Origin/develop)
Done. Took 0.2 sec
Changes found
ご覧のとおり、リビジョンは同じであり、それと一致しています
Git Build Data
Revision: 08f48cc5675ae0126256cf24d6ee74c8fc9d7b30 Origin/develop
これらのジョブは、数日前まで期待どおりに動作しました。これを引き起こすために私たちの環境について変わったことを私たちが知っていることは何もありません。
これを解決するために、昨夜Jenkinsの最新バージョン(1.539)にアップグレードしてプラグインをインストールしましたが、動作は継続します。
SCMの変更が原因で、変更がなく、ポーリングがオンになっていなかった場合でも、Jenkinsが継続的に構築されていました。これはお客様のシナリオとは異なる場合がありますが、私のソリューションを共有するのに役立つ場合があると考えました。
Outプロジェクトは、他のすべての統合ビルドと同様に、ブランチ指定子*/integration
を使用してビルドするように構成されています。ただし、Origin gitリポジトリのすべてのブランチを調べたところ、*/integration
指定子に一致するブランチが2つあることがわかりました。開発者が非常によく似た名前の新しいブランチに誤ってプッシュしたように見えます:
$git branch --remote | grep integration
Origin/integration
Origin/origin/integration
この問題を解決した解決策は、refs/heads/integration
を使用してブランチを完全に指定することでした。重複する問題のブランチを削除するだけでも機能すると思いますが、ブランチを正確に指定することで、将来同じ問題が発生するのを回避できます。
これがあなたの問題の同じ原因であるかどうかはわかりませんが、これは私にとってうまくいきました。うまくいけば、この状況で他の誰かのために働くでしょう。
最新の Jenkins GITプラグイン バージョン2.0で再現できるようです。
バージョン1.xにダウングレードすると問題が解決する場合があります。ただし、GITプラグインバージョン1.xは新しい2.0構成スキームでは機能しないようなので、古いバックアップからJenkins構成を元に戻す必要もあります。
このスレッド は、回避策として「高速リモートポーリング」を有効にすることを提案します。バージョン2.0では「ワークスペースを使用した強制ポーリング」と呼ばれています。
Jenkinsの問題への参照: https://issues.jenkins-ci.org/browse/JENKINS-20767
私も同じ問題に遭遇しました。
私にとってそれを修正したのは、Gitポーリングログが次のようになっていることです。
Started on [date]
Using strategy: Default
[poll] Last Built Revision: Revision [commit#] (Origin/develop)
[...]
Found 12 remote heads on ssh://[...]/repo.git
[poll] Latest remote head revision on refs/heads/feature/foo is: [commit#] - already built by 1414
[poll] Latest remote head revision on refs/heads/feature/bar is: [commit#] - already built by 2365
[poll] Latest remote head revision on refs/heads/feature/baz is: [commit#] - already built by 1489
[poll] Latest remote head revision on refs/heads/feature/qux is: [commit#] - already built by 1413
[poll] Latest remote head revision on refs/heads/develop is: [commit#] - already built by 2368
[poll] Latest remote head revision on refs/heads/master is: [commit#]
Done. Took 0.16 sec
Changes found
master
の行には、「ビルド済み」とは記載されていないことに注意してください。私はmaster
ブランチを構築し、それによって問題が修正されました。
Svnリダイレクトに注意してください。私の場合、svnに変更がなく、常にトリガーされているかどうかをJenkinsが検出できなかったのと同じケースがありました。
問題は、私のjenkins svn設定に次のURLが含まれていたことです。
https://xxxx.yyy.es:443/svn/myproject/trunk およびそのリダイレクト
http://xxxx.yyy.es:8008/svn/myproject/trunk (理由がわかりません)
Jenkinsは、svnの変更を適切に検出するために、最後のURLで構成する必要がありました。
これは私の問題です。
http://antuansoft.blogspot.com.es/2014/10/jenkins-pool-smc-always-detect-changes.html
今日も同じ問題が発生していました。 「ビルドが完了したらワークスペースを削除する」公開タスクを追加したときに、この問題が発生し始めました。そのタスクを削除したところ、問題は解決したようです。