Check digest from HEAD request (#217)

* Check digest from HEAD request
* Add FAQ note about Docker Hub rate limits
* Compare digest as watch setting

Co-authored-by: CrazyMax <crazy-max@users.noreply.github.com>
This commit is contained in:
CrazyMax
2020-11-13 00:00:01 +01:00
committed by GitHub
parent 2fa4696f3a
commit b1953afdae
15 changed files with 244 additions and 72 deletions

View File

@@ -80,14 +80,15 @@ func (di *Diun) createJob(job model.Job) {
}
job.Registry, err = registry.New(registry.Options{
Username: regUser,
Password: regPassword,
Timeout: *reg.Timeout,
InsecureTLS: *reg.InsecureTLS,
UserAgent: di.meta.UserAgent,
ImageOs: job.Image.Platform.Os,
ImageArch: job.Image.Platform.Arch,
ImageVariant: job.Image.Platform.Variant,
Username: regUser,
Password: regPassword,
Timeout: *reg.Timeout,
InsecureTLS: *reg.InsecureTLS,
UserAgent: di.meta.UserAgent,
CompareDigest: *di.cfg.Watch.CompareDigest,
ImageOs: job.Image.Platform.Os,
ImageArch: job.Image.Platform.Arch,
ImageVariant: job.Image.Platform.Variant,
})
if err != nil {
sublog.Error().Err(err).Msg("Cannot create registry client")
@@ -162,18 +163,18 @@ func (di *Diun) runJob(job model.Job) (entry model.NotifEntry) {
return
}
entry.Manifest, err = job.Registry.Manifest(job.RegImage)
if err != nil {
sublog.Warn().Err(err).Msg("Cannot get remote manifest")
return
}
dbManifest, err := di.db.GetManifest(job.RegImage)
if err != nil {
sublog.Error().Err(err).Msg("Cannot get manifest from db")
return
}
entry.Manifest, err = job.Registry.Manifest(job.RegImage, dbManifest)
if err != nil {
sublog.Warn().Err(err).Msg("Cannot get remote manifest")
return
}
if len(dbManifest.Name) == 0 {
entry.Status = model.ImageStatusNew
sublog.Info().Msg("New image found")