Commit Graph

145 Commits (887569f4534952ce5441f29a0c5b0af592bd85ab)

Author SHA1 Message Date
nils måsén 697397f289
feat(log): add context fields to lifecycle events (#1007) 3 years ago
nils måsén cd0ec88764
fix(notifications): default templates and logic (#1010)
* fix(notifications): default templates and logic
* fix multi-entry report notifs and add test
* add tests for log queueing
3 years ago
nils måsén fc31c6eb26
feat(shoutrrr): update to v0.5 (#1055)
* feat(shoutrrr): update to v0.5
* fix slack URL and tests
* add tests for slack icon override
* bump shoutrrr to v0.5.1
3 years ago
nils måsén 9bb8991a76
fix(digest): check container image info for nil (#1027) 3 years ago
nils måsén e3dd8d688a
Session report collection and report templates (#981)
* wip: notification stats

* make report notifications optional

* linting/documentation fixes

* linting/documentation fixes

* merge types.Container and container.Interface

* smaller naming/format fixes

* use typed image/container IDs

* simplify notifier and update tests

* add missed doc comments

* lint fixes

* remove unused constructors

* rename old/new current/latest
3 years ago
yrien30 145fe6dbcb
Pre-update lifecycle hook (#793)
* Make watchtower skip update if pre-update lifecycle hook exits with a non-zero exit code
#649

* Make watchtower skip update if pre-update lifecycle hook exits with a non-zero exit code
#649

* Make watchtower skip update if pre-update lifecycle hook exits with a non-zero exit code
#649

* Make watchtower skip update if pre-update lifecycle hook exits with a non-zero exit code
#649

* Make watchtower skip update if pre-update lifecycle hook exits with a non-zero exit code #649

* Make watchtower skip update if pre-update lifecycle hook exits with a non-zero exit code #649

* Make watchtower skip update if pre-update lifecycle hook exits with a non-zero exit code #649

* Prevent starting new container if old one is not stopped because of lifecycle hook.

* Add null check for c.containerInfo.State in IsRunning

* Fixed that the container would not start

* Added test for preupdate

* EX_TEMPFAIL -> ExTempFail

* Added missing fuction ouput names

* Skip preupdate when container is restarting.
3 years ago
Amir Zarrinkafsh dc12a1ac7f
feat: allow hostname override for notifiers (#994)
* feat: allow hostname override for email notifier

As it currently stands all notifiers utilise `os.Hostname` to populate their titles/subjects.

When utilising Docker with a bridged network if you set the hostname for a container to an external DNS hostname Docker's internal DNS resolver will override said hostname for all containers within the bridged network.

This change allows a user to specify what hostname should be represented in the email notifications without having to change the `os.Hostname`.

* feat: allow custom hostname for all notifiers

* docs: adjust notification hostname flag
3 years ago
nils måsén f508c92ae0
* feat: custom user agent (#990)
* fix: move build meta to own package
  this allows it to be referenced from other packages without causing a cyclic dependency
* feat: custom user agent
4 years ago
nils måsén dec6f84a70
test: fix metrics api test stability (#930)
* use httptest instead of host port binding
* restore matrix and remove artificial delay
* fix metrics api test expect calls
4 years ago
DasSkelett 6b155a111a
Allow running periodic updates with enabled HTTP API (#916)
* Allow running periodic updates with enabled HTTP API

* Add --http-api-periodic-polls to docs
4 years ago
nils måsén 12467712a1
feat: check container config before update (#925)
* feat: check container config before restart
* fix: only skip when hostconfig and config differ
* fix: update test mocks to not fail tests
* test: add verify config tests
4 years ago
nils måsén fdf6e46e7b
fix: use default http transport for head (#926)
note: still disables TLS verification to enable use with local regisitries
4 years ago
nils måsén d38e52b5c6
fix: merge artifacts and broken shoutrrr tests (#929)
* test: add missing container test suite
* fix broken tests
* fix: remove duplicate merge artifact

Co-authored-by: Simon Aronsson <simme@arcticbit.se>
4 years ago
Simon Aronsson dff8378778
Feat/head failure toggle (#928)
* feat: make head pull failure warning toggleable

* expect prometheus tests to go through EVENTUALLY

* wait for queue to be empty before checking test conditions

* clean up new head failure toggle

* fixup! clean up new head failure toggle

* test: add warn on head failure tests

* fix client interface and make tests hit more lines

* make all tests use NewClient instead of creating a struct pointer

* fix lint issues

* see if moving ubuntu out of the matrix solves test issue

Co-authored-by: nils måsén <nils@piksel.se>
4 years ago
nils måsén 6f281b727a
feat: update shoutrrr to v0.4.4 (#914) 4 years ago
nils måsén b4cf17d33f
feat: make head pull failure warning toggleable (#912)
* feat: make head pull failure warning toggleable

* expect prometheus tests to go through EVENTUALLY

* wait for queue to be empty before checking test conditions

* clean up new head failure toggle

* fixup! clean up new head failure toggle

* test: add registry tests

* test: add warn on head failure tests

* fix client interface and make tests hit more lines

* make all tests use NewClient instead of creating a struct pointer

* fix lint issues

Co-authored-by: Simon Aronsson <simme@arcticbit.se>
4 years ago
Simon Aronsson 028f19ac47
Move token logs to trace 4 years ago
Simon Aronsson 3de202a965
fix depends on behavior and simplify some of its logic (#908)
* fix depends on behavior and simplify some of its logic

* fix comments
4 years ago
nils måsén 4142f7966a
fix: move notify URL to trace log (#907) 4 years ago
nils måsén 6a9d985ce7
feat(log): use short image/container IDs in logs (#888) 4 years ago
nils måsén b644ec6829
fix(notifier): don't panic on unconfigured notifier (#869) 4 years ago
nils måsén 9fa2fd82a6
feat: include additional info in startup (#809) 4 years ago
nils måsén 738215a1f7
Update Shoutrrr to v0.4 (#810) 4 years ago
Zois Pagoulatos d04d71508f
fix: Disallow log level 'trace' (#765)
Co-authored-by: Simon Aronsson <simme@arcticbit.se>
4 years ago
Zois Pagoulatos 4689853493
fix: Set log level to debug for message about API token (#757) 4 years ago
nils måsén 40ab6fd5ba
Fix notifications and old instance cleanup (#748)
Co-authored-by: Simon Aronsson <simme@arcticbit.se>
4 years ago
Simon Aronsson d7d5b25882
Prometheus support (#450)
Co-authored-by: nils måsén <nils@piksel.se>
Co-authored-by: MihailITPlace <ya.halo-halo@yandex.ru>
Co-authored-by: Sebastiaan Tammer <sebastiaantammer@gmail.com>
4 years ago
Simon Aronsson 35490c853d
cherrypick notification changes from #450 (#745) 4 years ago
nils måsén 3bbe1bd109
fix manifest tag index in manifest.go (#731)
Co-authored-by: Simon Aronsson <simme@arcticbit.se>
4 years ago
Turtle Kalus 5983d58d7c
Log based on registry known-support - reduce noise on notifications (#716)
Log based on registry known-poor support of HEAD in checking container
manifest.

Some private registries do not support HEAD (E.G. GitLab Container Registry).
With the current config, this log message is causing a notification to be
sent for each container hosted in a registry lacking HEAD support.

log.Debug or log.Warning for failed HTTP HEAD-check based on registry hostname
where HEAD-check is known to fail.

For Docker Hub, a failed HEAD leading to a "regular pull" may count against a
user's call-quota whereas other registry implementations do not support HEAD,
or whose container manifest may be in a different location.
4 years ago
Simon Aronsson 8b81fbd48d
Revert "feat(config): swap viper and cobra for config (#684)"
This reverts commit ff8cb884a0.
4 years ago
Simon Aronsson 89119515af
clean up scope builder and remove fmt print 4 years ago
Simon Aronsson cf6a71de81
fix linting issues 4 years ago
Simon Aronsson eb8580f7f2
make sure all different ref formats are supported 4 years ago
nils måsén ff8cb884a0
feat(config): swap viper and cobra for config (#684) 4 years ago
nils måsén cbe9ab87fa
move secret value "credentials" to trace log (#707) 4 years ago
Simon Aronsson ea16683c46
add defered closer calls for the http clients (#705) 4 years ago
rg9400 9ac1bf6ca2
fix typo (#702) 4 years ago
Simon Aronsson cb62b16369
add http head based digest comparison to avoid dockerhub rate limits 4 years ago
yrien30 2842b97df3
Allow watchtower to update rebooting containers (#651)
Co-authored-by: nils måsén <nils@piksel.se>
Co-authored-by: Simon Aronsson <simme@arcticbit.se>
4 years ago
nils måsén 64d48b70c2
fix: return nil imageinfo when retrieve fails (#680) 4 years ago
Simon Aronsson a7a28ec984
fix fmt and vetting issues 4 years ago
David H bde421be0d
Monitor-only for individual containers (#652)
* Add monitor-only label

* Add tests for monitor-only

* Treat missing monitor-only label as if the option was set to false

* Add docs for container-based monitor-only

* Add function doc

* Fix monitor-only logic
4 years ago
Ben Osheroff c56e0a95a7
Rolling restart (#619)
* implement rolling restart functionality

bouncing each image individually can ensure that a group of docker
containers launched with docker-compose can stay 100% up during deploy.

* move rolling restart into a function

* honor params.Cleanup

Co-authored-by: Simon Aronsson <simme@arcticbit.se>
4 years ago
Victor Moura 6a18ee911e
Adds scopeUID config to enable multiple instances of Watchtower (#511)
* Adds scopeUID config to enable multiple instances of Watchtower

* Adds tests for multiple instance support with scopeuid

* Adds docs on scope monitoring and multiple instance support

* Adds multiple instances docs to mkdocs config file

* Changes multiple instances check and refactors naming for scope feature

* Applies linter suggestions

* Fixes documentation on Watchtower monitoring scope
4 years ago
nils måsén 5efb249a86
Skip updating containers where no local image info can be retrieved (#612)
* Revert "Image of running container no longer needed locally (#571)"

This reverts commit 6da66fb312.

* Update client.go

* fix: skip updating when no image info can be retrieved

This will allow watchtower to continue even though the image info for a
container cannot be retrieved. If this happens one warning will be emitted
and the container will be skipped, unless NoRestart or OnlyMonitor is supplied
4 years ago
Cédric Finance fdecd40189
Make sure all shoutrrr notifications are sent (#564) 4 years ago
Michael f6c19896a2
lifecycle logs as Debug instead of Info (#610)
The life-cycle messages should not have the same level as the update messages.

Why?
I receive a (mail-) notification for every run even if no image is changed: 
```
2020-07-31 06:44:33 (info): Executing pre-check command.
```

But I only want to receive a notification if something changed:
```
2020-07-20 06:44:44 (info): Found new traefik:v2.2 image (sha256:7c992081f52423e325bd12debf0edcb4f7cfa398683c26f99c00112ec14e1ab9)
```
4 years ago
Possible Triangle f76c48a95e
Add string functions for lowercase, uppercase and capitalize to shoutrrr templates (#593)
* Added string functions for lowercase, uppercase and capitalize to shoutrrr templates

* Update pkg/notifications/shoutrrr.go

Co-authored-by: nils måsén <nils@piksel.se>

* Update pkg/notifications/shoutrrr.go

Co-authored-by: nils måsén <nils@piksel.se>

* Update pkg/notifications/shoutrrr.go

Co-authored-by: nils måsén <nils@piksel.se>

* Update pkg/notifications/shoutrrr_test.go

Co-authored-by: nils måsén <nils@piksel.se>

* escape quotation marks in test

Co-authored-by: nils måsén <nils@piksel.se>
4 years ago
Sebastiaan Tammer 6da66fb312
Image of running container no longer needed locally (#571) 5 years ago
nils måsén 1081f3c24c
fix(shoutrrr): make shoutrrr init failure a fatal error (#561)
also writes out any (unlikely) errors from template.Execute instead of ignoring
5 years ago
nils måsén 70bd4e2c8b
fix(shoutrrr): display errors on init failure (#558) 5 years ago
Sebastiaan Tammer dccdf708a9
Adds the option to skip TLS verification for a Gotify instance (#544) 5 years ago
Arne Jørgensen 10fd81a2c1
feat: add template support for shoutrrr notifications (#515) 5 years ago
Sebastiaan Tammer 7052346570
Added --trace flag and new log.Trace() lines for sensitive information (#541) 5 years ago
Sebastiaan Tammer b34a2f968d
Removed all potential debug password prints, both plaintext and encoded (#537) 5 years ago
nils måsén 46f43764d2
fix(email): always use configured delay for notifications (#536) 5 years ago
Simon Aronsson 4672811983 fix linting and formatting 5 years ago
Valentine Zavadsky b32cb5d35d
Add ability to overrider depending containers with special label (#489)
* Add ability to overrider depending containers with special label

* Add documentation of how to override container dependencies with special label
5 years ago
Victor Moura 0217e116c4
Watchtower HTTP API based updates (#432)
* Added HTTP API trigger to update running images

* Adds HTTP API authentication token parameter and handling

* Exposes port 8080 in Dockerfile to allow inter-container update triggering via HTTP API

* Fixes codacy issue

* Adds API usage doc

* Fix grammar

* Moves api logic to a package of its own

* Makes WT exit if token has not been set in HTTP API mode

* Adds lock to prevent concurrent updates when in HTTP API mode

Co-authored-by: Simon Aronsson <simme@arcticbit.se>
5 years ago
Simon Aronsson cb4c58f714
Merge pull request #470 from mbrandau/add-shoutrrr
WIP: add shoutrrr support
5 years ago
Simon Aronsson 98c60d7441 fix some errors and clean up 5 years ago
Simon Aronsson fac26dfc72 fix: improve logging 5 years ago
Simon Aronsson 1d1c630f7a feat: add timeout override for pre-update lifecycle hook 5 years ago
Maximilian Brandau 480f4c8ccb
reuse router 5 years ago
Maximilian Brandau 5869bc52aa
Use CreateSender instead of calling Send multiple times 5 years ago
Maximilian Brandau 59ce378a35
Adjust flags 5 years ago
Maximilian Brandau 2b21bd46be
add shoutrrr.go 5 years ago
Maximilian Brandau be2376a4e1
add shoutrrr 5 years ago
Simon Aronsson 7a188237a1
Merge pull request #455 from pagdot/patch-1
Return on error after http.Post to gotify instance
5 years ago
Simon Aronsson e1239b2cdb
Merge branch 'master' into fix/retain-cmd 5 years ago
Paul Götzinger ecc96d6ce0
return on error after http.Post to gotify instance
Should fix #454
5 years ago
Raymon de Looff fde6e73077 Unset Hostname when NetworkMode is container
The hostname can not be set on containers using a container network stack
5 years ago
Simon Aronsson d1abce889a refactor: extract code from the container package 5 years ago
Simon Aronsson 7b8b8e8ad9 #387 fix: switch to image id map and add additional tests 5 years ago
Simon Aronsson 15a9281624 feat: add support for multiple email recipients 5 years ago
John Clayton 4f120ef037 Don’t delete cmd when runtime entrypoint is different 5 years ago
Simon Aronsson ea596ea747 fix some var ref errors 5 years ago
Simon Aronsson 2a6e296838
Added Mail Subject Tag to email.go (#389)
* Update email.go

Added SubjectTag as variable

* Update email.go

* Update email.go

* Update email.go

* Update flags.go

* Update flags.go
5 years ago
Zois Pagoulatos 2d8507ca31 Add --revive-stopped flag to start stopped containers after an update (#403)
* Add --revive-stopped flag to start stopped containers after an update

* Update arguments.md
5 years ago
Max H fd2a006c6b
Update email.go 5 years ago
Gina Häußge 1954520447 Fix a small typo (#384) 5 years ago
Max H 505a5ec715
Update email.go 5 years ago
Max H 220dc5add4
Update email.go 5 years ago
Max H 5246d1a20e
Update email.go
Added SubjectTag as variable
5 years ago
Niklas Wigertz Danielsson 135467dcf6 add pre/post update check lifecycle hooks (#373)
* add pre/post update check lifecycle hooks

* update docs for lifecycle hooks

* Fix phrasing
5 years ago
Simon Aronsson ce6ba0801f feature: add optional email delay
resolves #256
5 years ago
Simon Aronsson bfae38dbf8
Feat/lifecycle hooks (#351)
* feat(update): add lifecycle hooks to the update action

* fix(ci): add bash tests for lifecycle-hooks to the ci workflow

* fix(ci): move integration tests to an isolated step

* fix(ci): fix malformed all-contributors json

* fix(ci): disable automatic bash test until we figure out a reasonable way to run it in circleci
5 years ago
Simon Aronsson 874180a518 fix: resolve merge issues 5 years ago
Luka Peschke dff16dc639 Add support for Gotify notifications (#346)
This adds support for Gotify (https://gotify.net) notifications.

Work items:

* Two flags have been added to internal/flags/flags.go:
  "notification-gotify-url" and "notification-gotify-token".

* A Gotify notification driver has been added in
  notifications/gotify.go.

* "gotify" has been added to notification driver choices in
  notifications/notifier.go.

* Docs have been updated
5 years ago
Simon Aronsson e4e1127f8e fix: remove linting issues 5 years ago
Simon Aronsson a425bf1024 refactor: move actions into internal 5 years ago
Simon Aronsson 62f603bb25 refactor: move actions into pkg 5 years ago
Simon Aronsson 74ce92760c refactor: move container into pkg 5 years ago
Simon Aronsson e109a7a6ce refactor: extract types and pkgs to new files 5 years ago