github netresearch/ofelia v0.20.0

latest releases: v0.25.0, v0.24.0, v0.23.1...
3 months ago

Highlights

Webhook notifications from Docker labels (#481)

Docker labels like ofelia.webhook.slack-alerts.preset=slack are now fully functional. Define named webhooks, global webhook settings, and per-job webhook assignments entirely via container labels — no INI file required. INI-defined webhooks take precedence over labels for security, and webhook configs are dynamically synced on container changes. Reported by @julian-heng in #467.

Allow job-run on stopped containers (#461)

The job-run type can now be defined on stopped containers via --docker-include-stopped. Running container definitions take precedence over stopped ones. Other job types (exec, local, service-run, compose) from stopped containers are ignored. Contributed by @nekrich.

Replace logrus with stdlib log/slog (#480)

Replaced the logrus dependency with Go's standard library log/slog package. This reduces external dependencies, improves structured logging, and aligns with the Go ecosystem's direction.

Go 1.26 modernization (#475, #477)

Upgraded to Go 1.26 with modern features: errors.AsType[T], reflect.Type.Fields() iterators, t.TempDir() in tests, and go-cron v0.11.0 scheduler enhancements (JobWithContext, WaitForJobByName, UpsertJob).

Mutation testing at 85%+ efficacy (#479)

Added mutation tests across all packages to validate test suite quality, reaching 85%+ test efficacy.

Changes

Features

  • feat: allow job-run on non-service and stopped containers (#461) — @nekrich
  • feat: modernize scheduler to leverage go-cron v0.11.0 features (#476)
  • feat(api): expose job running status via IsJobRunningByName
  • feat: implement JobWithContext on jobWrapper for per-entry context
  • feat: wait for running jobs before removal with WaitForJobByName
  • feat(hooks): add YAML and actionlint pre-commit checks (#474)

Bug Fixes

  • fix: parse webhook config from Docker labels (#481, #467) — reported by @julian-heng
  • fix: protect INI webhooks from label overwrite during sync
  • fix: propagate context.Context through RunJob and workflow APIs
  • fix(ci): update golangci-lint to v2.9.0 for Go 1.26 support
  • fix(ci): skip auto-approve for external contributors (#464)
  • fix(ci): fix dependency review YAML and increase smoke test timeout

Refactoring

  • refactor: replace logrus with stdlib log/slog (#480)
  • refactor: modernize dependencies and adopt newer API features (#478)
  • refactor: remove go-dockerclient dependency
  • refactor: adopt Go 1.26 features and clean up test temp files (#477)
  • refactor: use errors.AsType[T] from Go 1.26
  • refactor: replace hand-rolled cron validation with cron.ValidateSpec
  • refactor: use UpdateEntryJobByName for atomic job updates in web API
  • refactor: unify Docker label decoding with INI config path

Testing

  • test: add mutation tests to reach 85%+ test efficacy (#479)
  • test: add comprehensive webhook label tests and documentation (#482)
  • test: add IPv6 URL coverage for Go 1.26 stricter parsing

Performance

  • perf: add WithCapacity to cron scheduler initialization

CI/CD

  • chore(deps): upgrade Go to 1.26 and all dependencies (#475)
  • chore(ci): update CodeQL Action from v3 to v4
  • chore(ci): add codecov config, make project coverage informational (#465)
  • chore: limit the number of Docker events (#466) — @nekrich

Full Changelog: v0.19.2...v0.20.0

Contributors

Thanks to the contributors who made this release possible:

Don't miss a new ofelia release

NewReleases is sending notifications on new releases.