This plugin provides integration between
- Jenkins and Docker Hub
- Jenkins and Docker Registry 2.0
It does so by utilizing webhooks to trigger one (or more) Jenkins job(s). This allows you to implement continuous delivery pipelines based on Docker in Jenkins.
When Jenkins receives a notification of an updated image that is a web-hook from Docker Hub, it triggers all jobs that have the Docker Hub trigger enabled and use the Docker image as part of the build. A Docker Hub Pull build step is provided to retrieve the latest image from Hub.
On the Jenkins Configure Global Security page add an api key.
Configure your Docker Hub repository with a webhook to your public jenkins instance http://JENKINS/dockerhub-webhook/{api-key}/notify
In your hub.docker.com repository, you can find the "webhooks" section and point it to your jenkins instance:
Follow Docker Registry 2.0 documentation on how to configure registry so that it would send notifications to http://JENKINS/dockerregistry-webhook/{api-key}/notify
The simplest viable configuration looks like this:
notifications:
endpoints:
- name: jenkinslistener
url: http://JENKINS/dockerregistry-webhook/{api-key}/notify
timeout: 500ms
threshold: 5
backoff: 1s
You can find a detailed guide on how to configure webhooks on ACR on docs.microsoft.com. Use http://JENKINS/acr-webhook/{api-key}/notify
as a "Service URI".
Payloads submitted by the hub:
Payloads submitted by the registry:
The plugin can be tested with
curl -X POST -H "Content-Type: application/json" http://localhost:8080/jenkins/dockerhub-webhook/{api-key}/notify -d @src/test/resources/public-repository-payload.json