All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Replace dependent class library github.com/struCoder/pidusage with github.com/shirou/gopsutil/v3/process
- pkg import only once distribworks#1406
- Bump deps
- Use Go 1.21
- add TLS options for kafka executor plugin distribworks#1384
- Resource usage from child processes spawned by the task startup process.
- Introduce two new metrics, dkron_job_execution_time_seconds and dkron_job_execution_done_count, for improved monitoring and alerting capabilities.
- cmd.Process.Kill() does not clean up the started process, causing the job to remain running. distribworks#1385
- The metric dkron_job_mem_usage_kb now exclusively calculates the memory usage of the task startup process, excluding
- Should output.TotalWritten be judged after cmd.Wait() is executed? distribworks#1319
- The metrics exposed by dkron are only of summary type and cannot cover related analysis for specific jobs. distribworks#1310
- Bump deps & update docs
- Bump deps
- Do not retry job when unknown status #1335
- Prometheus metrics for shell executor #1330
- Bump deps
- Fix linting issues #1336
- Fix non existing dependent job (distribworks#1297)
- Bump deps
- Bump deps
- Update docusaurus
- Optionally set an alternative raftStore
- Re-add arm-v7 docker build
- Minor fixes
- Add golintci config
- More variety to testing infra
- Bump deps
- Refactor cron lifecycle (distribworks#1119)
- Leadership transfer (distribworks#1109)
- Add prewebhook and cronitor telemetry integration (distribworks#1099)
- Implement GRPC executor (distribworks#1049)
- Use golang/cross to build multiarch docker (distribworks#1105)
- Implement some suggestions to the UI (distribworks#1120)
- New web site (distribworks#1072)
- Bump deps
- Try to fix scheduler not starting #1053
- look for plugins in the config path used (as documented) instead of hardcoded /etc/dkron #1024
- Do not exit on failed leadership #1082
- Allow multiple brokers in kafka executor #1037
- Allow passing through a message key for Kafka executor #1021
- Bump dependencies
- Create codeql-analysis.yml
- refresh current page after toggle/run job is used #1026
- supported terraform provider link #1029
- Update metrics docs for Prometheus config file #1058
- truncate execution output in default view #1025
- Add execution endpoint #1085
- Nats executor consume all available connections #1020
- Update assets with latest changes
- Update node status text #1012
- Add 'next' field to swagger definition #991
- Fix comment typo #1000
- Fix typos #1005
- Fix notification bug #993
- fd-leak when RPC client communication fail #1009
- Panic or network errors #1008
- Wait all jobs done #1010
- Wait for scheduler stop first #1016
- urls were not working well in documentation #979
- Improve upgrade doc #980
- Update agent tags on config reload #983
- Fix intermittent test false negative #982
- Fix TLSRaftLayer init #987
- DataGrid UI fixes for long fields #965
- Fix race conditions #967
- Fix shell executor crashing on missing command #948
- Overhaul logging to avoid package level var #963
- Improve tests for http executor #936
- Refactor processFilteredNodes for testing #968
- Add a filter on disabled state #923 @educlos
- Provide filter query by job displayName, add pristine jobs reports #897 @MGSousa
- Fix XSS vulnerability #922 @yvanoers
- Correct title of NATS executor page #929 @yvanoers
- UI fixes #926 @yvanoers
- Use go embed for assets embedding #931
- Bump some deps
- Add the ui/public dir #919
- Bump some deps
- UI fixes
- Add timezone back to UI
- Show execution status
- Several UI Improvements #891
- Visual status for jobs
- Bulk actions for toggle and run
- Flexible jobs datagrid layout
- Fix clock style
- Fix date rendering on non finished executions
- Fix panic on recovering cluster (with peers.json) #882 @fopina
- Use correct wrapping and monospace font for execution's output #879 @sc0rp10
- React admin web UI #864
- Use newer gRPC library version #855
- Bump deps
- Clean up log message #860 @yvanoers
- Remove duplicate lines from Recovery documentation #861 @vishalsngl
- How errors are handled in the AgentRun call #858
- Fix uneven balancing #865 @yvanoers
- Represent execution times in the job's timezone #615 @yvanoers
- avoid nil pointer if job was deleted on ExecutionDone #851
- Bump deps
- Server crash when adding new job #840
- Fix method of busy endpoint in swagger.yaml #843 @yvanoers
- Fix multitag cardinality bug #842 @yvanoers
- Revert "feat: Include scheduler entries in status API" #829
- Bump some deps
- Github Action for release (binary and docker) #770
- Include scheduler entries in status API #813
- Bump deps #814
- free s.Cron on proper opportunity to avoid unexpected crash #779
- processFilteredNodes do not return nodes when specified tag has no nodes #785
- Log start job and logging prefix in grpc agent #776
- Bump several dependencies
- Fix binding to Advertise address #763
- New Processor that sends job output to fluent destination #759 @andreygolev
- Configurable serf reconnect timeout #757 @andreygolev
- Fix Alerts JS #762
- Add prometheus endpoint for metrics #740
- Ignored RaftMultiplier config param [#753] (distribworks#753)
- Increase serf events buffer size #732
- Resetting the status and next params #730
- Upgrade deps and add codename to version #751
- Better alerts with growl like notifications #750
- Refactor Run jobs #749
- Add job name tags to log events to improve debugging #739
- Bump protobuf to 1.4.0 #729
- Bump dependencies
- Change Execution output type from []byte -> string, this works as we need with Go's JSON Marshal
- Streaming executions: Implement persistent gRPC connections from agents to server during executions, refactored plugins interface to provide ability to stream output to the server and implement the new
/busy
endpoint to display running executions. Also refactored the Job status compute, to simplify it by removing therunning
status, this could be computed by the user using the/busy
endpoint. (#716, #719, #720, #721, #723)
- Graceful shutdown #690 @andreygolev
- Fixes crash when plugin configuration is not defined in a job #689 @andreygolev
- Defer panic fix in ExecutionDone gRPC call #691 @andreygolev
- Default config will start and bootstrap a server
- isLeader handler added #695
- Compile with go 1.14
- Execution load balancing #692 @andreygolev
- Update Bootstrap and JQuery #700
- Upgrade all dependencies #703
- Decrease plugin size by 75%, refactored plugin coding interface could affect new plugins development and require adaptations for existing plugin. #696
- Use BuntDB for local storage, fixes #687, require rolling upgrade. #702 @andreygolev
- Memory consumption on startup #682
- Remove dependency of the agent in store and reduce usage in Job #669
- Upgrade gin #669
- Add helper methods #669
- Move directory creation to the Store instantiation #669
- Accept middlewares for API routes #669
- ACL docs
- Fix modal indexing in UI #666
- Search all jobs in dashboards with the search box #653
- Validate empty job names #659
- Die on plugin communication error #658
- Revert GetStatus with concurrency forbid #655
- Upgrade Angular to latest #641
- Child jobs not being executed due to running Job status #651
- Remove copied cron lib and add as dependency #646
- This file will be based on Keep a Changelog guidelines
- TBD
- Fix: dependent job updates (@yvanoers)
- Fix: Job reschedule on every page refresh
- Fix: paginator gap and add First and Last button
- Fix: new jobs counting as failed in dashboard (@yvanoers)
- Feature: backend TLS support (@fopina)
- Feature: support for authentication with etcd backend (@fopina)
- Fix: sample dkron.yml for slack configuration (@kakakikikeke-fork)
- Update swagger spec: fix executor_config, add status
- New site design
- Testing: Parameterize test suite to use any backend
- Refactor: GetLastExecutionGroup to simplify code
- Fix: Bump valkeyrie with redis watches fix
- Implement server selection using consistent hash
- Upgrade serf to 0.8.2
- refactor: Store should implement the interface
- Fix: Use branched valkeyrie fixing DynamoDB return all items
- Fix: scheduler_started expvar fix
- Fix: Update executor support error log instead of fail only (@tengattack)
- Feature: Return next execution field in API and dashboard.
- Feature: Add backend redis password flag (@lisuo3389)
- Feature: Add backend consul token
- Improvement: Main graph showing running jobs
NOTE: Breaking change for 3rd party plugins, executors plugins interface signature changed, should be recompiled and adapted.
- Add RPC leave command
- Fix: Missing tzdata in release image
- Add DynamoDB support
- Breaking: Remove support and deprecation message for old command, environment_variables and shell parameters
- Change scheduler_started expvar to int to be parseable
- Several docs improvements
- Fixed swagger.yaml syntax error
- Add new line before END OUTPUT for log processor
- Allow sending mail without credentials
- Fix docker tagging
- Log plugin fix and improvements
- More specific processor plugin usage logging
- Don't dockerignore dist folder, it is needed by gorelease docker builder
- fa323c2 Ignore node modules
- 2475b37 Move static assets to it's own directory inside static folder
- 987dd5d Remove hash from url on modal close
- 455495c Remove node_modules
- 0c02ce0 Reorg asset generation in subpackages
- c91852b Cookie consent in website
- 9865012 Do not install build tools
- e280d31 Docker login
- 3229dc2 Ensure building static binaries
- 01e62b6 Error on test
- 69380f5 Ignore system files
- a02a1ab Release with docker
- e795210 Remove old dockerignore entries
- c9c692c Remove unmarshalTags from dkron.go
- c5f5de0 Report errors on unmarshal config
- 62e1e15 Sums for release
- 1cf235a UnmarshalTags belongs to the agent and should be public
- 36f9318 Update readme
- 80b2ab1 mail-port flag is uint
- 913ee87 Bump mapstructure
- 5bd120f Remove legacy config loading
- f20fbe5 Update mods
- 4811e48 Fix UI run and delete
- 8695242 Redirect to dashboard
- d6dbb1a Add toggle to swagger
- ffa4feb Deep linking to job views
- fdc5344 Don't fury on make
- 236b5f4 Don't query jobs on interval in Dashboard
- ea5e60b Fixes rescheduling on boltdb store
- f55e2e3 Gardening and anchor links open modal
- b22b362 Gen
- 6887c36 Logging info
- d21cf16 Logging info and use store.Backend type instead of strings in config
- 28c130b Open modal with anchor links and gardening
- 1afb3df Several ui fixes introduced when migrating to glyphicons
- ef86e13 Bump go-plugin
- d09b942 Bump several dependencies
- f96d622 GRPC
- 8e3b4b9 Ignore dist folder
- 1b7d4bc Issue template
- caf4711 Logrus
- 5821c8c Mainly etcd
- 33a12c5 Revert "Bump several dependencies"
- fb9460d Update cron-spec.md
- 706e65d Upgrade pflag
- 723326f Add logging for pending executions response
- df76e9c Add real examples to swagger spec
- d1318a1 Add tags param to swagger spec
- 4da0b3b Big docs refactor
- 2d91a5e Break on errors
- 8fac831 Command to generate cli docs from cobra
- bdcd09c Don't use swagger2markup
- 253fe57 ECS and email pro docs
- e89b353 Expvar dep
- 187190e Fix indentation
- c8320b5 Fix testing
- 9037d65 Fix typo in getting started
- 9c60fe8 Formatting
- f11ed84 Formatting
- 20be8e5 Integrate swagger-ui for a bit better API visualization
- 2cede00 Merge branch 'master' into boltdb
- 53d8464 Only query for pending executions when there is some
- 712be35 Remove extra useless locking introduced in 88c072c
- dacb379 This should be TrimSuffix
- dec6701 Update contacts
- c21e565 Update getting-started.md
- 3fdba5f Use boltdb as default storage
- 70d9229 Wrong dash in example config file
- 9653bbc expvars are back and simple health endpoint
- 7d88742 Add code of conduct
- aed2f44 Proper serf debug logging
- 1226c93 Publish docker
- a0b6f59 Publish docker
- f1aaecc Reorg imports
- 8758bac Tests should use etcdv3
- fa3aaa4 Tests should use v3 client
- 5bcea4c Update create or update job api endpoint
- 39728d0 refactor: Methond name
- 1c64da4 refactor: Proper gin logging and mode
- Add support for passing payload to command STDIN (@gustavosbarreto)
- add support for etcdv3 (@kevynhale)
- Use etcdv3 by default
- Jobs static URLs fixed
- 1.11 stable not in docker hub yet
- Add builtin http plugin
- Add executor shell su option (@tengattack)
- Better dockerfile for testing
- Better flag help
- Don't depend on michellh/cli
- Filter jobs by tags (@digitalcrab)
- Fix cluster panic bug (@tengattack)
- Release with goreleaser
- Use cobra for flags
- Use go modules
- add create & update job features (@wd1900)
- Replace RPC with gRPC
- Fix compose files (@kevynhale)
- Replace goxc with makefile
- Pro docs
- Fix status check
- Remove unnecessary updates of job finish times (@sysadmind)
- Reflect store status in API
- Fix windows plugins (@sysadmind)
- Stop Job update on JSON parse error in API (@gromo)
- Fix dashboard job view/delete modals
- Fix RPCconfig query missing address (#336 and related)
- Fix concurrency issue due to race condition on lock jobs #299
- Fix execution done missing on restart blocking concurrency forbid jobs #349
- Fix plugin load paths #275
- Fix RPC address lost on reload config #262
- Slightly improve processing of last execution group (@sysadmind)
- Improve job dependencies handling (@sysadmind)
- Move dkron command to it's own package
- Milliseconds range API job create or update
- Refactor scheduler restart
- Replace bower with npm
- Executor plugins based on GRPC
- Toggle job from UI
- Search Job by name and pagination in the UI
- Add redis as storage backend (@digitalcrab)
- UI refactor with new bootstrap version and replace fontawesome with glyphicons
- Compute job status and return the value from the API providing the user with more info
- Timezone aware scheduling (@didiercrunch)
- Fix broken release 0.9.7
- Less verbose plugin logging
- Update broken osext dep (@ti)
- Switch from libkv to valkeyrie
- Refactor for usable core code
- Fix unsorted execution groups (@firstway)
- Fix GetLastExecutionGroup (@firstway)
- Migrate from glide to dep
- Fix params precedence, cli params on top
- More robust test suite
- Gin logging to common logger
- Better systemd script
- Don't panic or fatal when sending notification
- Serf upgrade
- Fix templating breaking change on Go 1.9 upgrade
Features
- New docs website using hugo
Bug fixes:
- Clean up clients upon an exit signal (@danielhan)
- Fix #280 (@didiecrunch)
- Upgrade several dependencies
- Fix static assets relative path
- Fix mistakes in API docs
- Using "jobs", "1am" or "1pm" in the name of job leads to a dashboard bug
- Fix crash on non existent plugin name
- Embed all assets in binary, removed -ui-dir config param
This is a breaking change; ui-dir
configuration param has been removed, all scripting using this param should be updated.
- Fix RPC server listen address (@firstway)
- Basic implementation of the testing infrastructure using swarm
- Basic Telemetry implementation for sending metrics to statsd and datadog
- Fix crash on backend failure
- Reverse sort executions in UI (@Eyjafjallajokull)
Features:
- Implement concurrency policy
- Improved UI: allow delete jobs from UI, highlight JSON
- Execution Processor plugins, allows flexible routing of execution results
- Template variables for customization of notification emails (@oldmantaiter)
- Go 1.7
- Test with docker-compose, this will allow to test multiple stores easily
Bug fixes:
- Fix tests randomly failing (@oldmantaiter)
- Return empty list when no jobs instead of null
- Allow POST usage on /leave method, deprecate GET
Bug fixes:
- Fix job stats not being updated #180
- Fix zookeeper get list of executions #184
- Fix crash when deleting a job that doesn't exists #182
- Fix Travis in forks
Features:
- Support any size jobs
- Support chained jobs
- Schedule and other job properties validation
- New site, logo and dashboard design
Bug fixes:
- Fix execution retries
- Fix executions merge by same prefix
- Fix correct HTTP status on create/update
- One off jobs
- Added cron spec to docs
- Execution retry on failure
- Switch JSON schema spec for it's corresponding Open API spec
- Reload config
- Fix scheduling bug
- New job Status gives more info on the job execution
- Add some helpers and bugfixes
- Add shell property to job, reintroduced the shell execution method but now it's a choice
- Add reporting node to execution reports
- Replace server tag for dkron_server and add dkron_version
Due to the change in the internal tags server
to dkron_server
, you'll need to adjust job tags if they where using that tag.
- Don't use shell call when executing commands, exploding the command line.
- Add advertise, add
advertise
option that solves joining between hosts when running docker - Validate job size, limit to serf maximum size
- Job overwrite, now sending existing jobs doesn't overwrite non existing fields in request
- Fix for dashboard crash on non existent leader
- Refactor leader election, the old method could lead to cases where 2 or more nodes could have the scheduler running without noticing the other master.
- Get rid of
keys
, in a serf cluster node names are unique so using it for leader keys now. - Fix #85 Restart scheduler on job deletion
- Refactor logging, replace
debug
withlog-level
- Order nodes in UI #81 (kudos @whizz)
- Add exposed vars to easy debugging
- Go 1.6
- Add @minutely as predefined schedule (kudos @mlafeldt)
To upgrade an existing installation you must first delete the pre-exiting leader key from the store. The leader key is in the form of: [keyspace]/leader
- Use expvars to expose metrics
- fix distribworks#71
- Better example config in package and docs
- UI: Better job view
- Logic to store only the last 100 executions
- Fixed #62
- Some other improvements and bug fixing
- Vendoring now using Go vendor experiment + glide
- Fix: Remove executions on job delete
- Show full execution output in UI modal
- New executions results internals using RPC
- Standarized logging
- Show job tooltips with info
- Accept just "pretty" for formatting api requests
- Change how execution groups work to not use the directory concept.
- More backend compatibility
- Accept just pretty for formatting api requests
- Show executions grouped in web UI
- Show job tooltips with all job JSON info in web UI
- Better alerts
- Fix to web UI paths
- Web UI works behind http proxy
- Fix bug in join config parameter that rendered it unusable from config file.
- Deb package
- Upgraded libkv to latest
- New config options (log level, web UI path)
- Email and Webhook configurable notifications for job executions.
- Ability to encrypt serf network traffic between nodes.
- Pretty formating API responses
- UI now shows the execution status with color coding and partial execution.
- More API stability and predictability
- Provided API JSON schema, generated API docs based in the schema
- Tested on Travis
- Using Libkv allows to use different storage backends (etcd, consul, zookeeper)
- Add v1 versioning to the API routes
- Compiled with Go 1.5
- Includes cluster nodes view in the UI
- Initial release