GitHub をポーリングする例はたくさんあるようですが、Docker Hub をポーリングしてそれに基づいてビルドをトリガーするにはどうすればよいですか?
自動ビルド用に Docker Hub に Webhook をセットアップしましたが、Jenkins でそれをポーリングする方法がわかりません。
この Jenkins プラグインがあるようです: https://wiki.jenkins-ci.org/display/JENKINS/DockerHub+Plugin
しかし、私が理解しているように、Docker Hub の API が変更されて以来、プラグインは壊れています。
アップデート:
答えは Build Triggers の下の Trigger Builds Remotely オプションを使用することですが、匿名がビルド権限を持っていないために失敗します。次に、このプラグインの使用に切り替えました: https://wiki.jenkins-ci.org/display/JENKINS/Build+Token+Root+Plugin
したがって、URL は次のようになります: https://jenkinsserver.com/buildByToken/build?job=test&token=test
ブラウザを介して(シークレットでも)そのURLにPOSTすると機能しますが、cURLでは機能しません。私は得る:
$ curl -X POST https://jenkinsserver.com/buildByToken/build?job=test&token=test
<html><head><meta http-equiv='refresh' content='1;url=/securityRealm/commenceLogin?from=%2FbuildByToken%2Fbuild%3Fjob%3Dtest'/><script>window.location.replace('/securityRealm/commenceLogin?from=%2FbuildByToken%2Fbuild%3Fjob%3Dtest');</script></head><body style='background-color:white; color:white;'>
Authentication required
<!--
You are authenticated as: anonymous
Groups that you are in:
Permission you need to have (but didn't): hudson.model.Hudson.Read
... which is implied by: hudson.security.Permission.GenericRead
... which is implied by: hudson.model.Hudson.Administer
-->
</body></html>
ただし、これを行うと、cURL 経由で動作させることができます。
curl -X POST https://user:token@jenkinsserver.com/buildByToken/build?job=test&token=test
しかし、Docker Hub はその URL を好みません...
ここで何が欠けていますか?私は正しい軌道に乗っていますか?Docker Hub Webhook から Jenkins タスクをトリガーする場合、どのようにしますか?