- Use
/app/.cacheas the cache folder by default, falling back to the previous/root/.cacheif necessary. For this, the Dhall cache is copied to both folders and then theXDG_CACHE_HOMEenv variable in the image is set explicitly to/app/.cache. If this env variable is unset, then it will fall back to using$HOME/.cache(/root/.cache) as it did previously. This change allows the cache to still be used even if the home folder is overwritten by a volume mount, for example. - Retry Slack requests when hitting rate limits. All requests will be tried
again (up to a handful of times) after the duration specificied in the
Retry-Afterheader. This can make the bot slower in case it starts hitting rate limits but it avoids unnecessary failures. The amount of requests is already kept to a minimum with different caching and deduplication mechanisms, but multiple invocations can still trigger rate limits.
- Add deduplication. If deduplication is enabled, the bot "remembers" the
configurations it has already applied and will not apply the same
configuration again unless something changes. The feature is disabled by
default. Set the
PERSISTENT_FOLDER_PATHenvironment variable to a folder for storing the DB to enable this feature. - Add a
OpsgenieScheduleIDrotation. The new rotation pulls from Opsgenie the list of emails of whoever is on call currently for the specified schedule. RequiresOPSGENIE_API_TOKENenv variable. - Rename
API_TOKENenv variable toSLACK_API_TOKEN.
- Fix caching in Docker builds.
- Freeze and cache in the Docker image the dependencies used in the type zoo
(e.g.
types/zoo/teams.dhall). This way the Dhall prelude functions used within those files don't need to be downloaded when the files are used during runtime.
- Redesign configuration interface to be more flexible. Previously the configuration had specific constraints on Slack channel naming patterns etc. This is no longer the case. The old behavior is still expressable with the new interface, but the new interface allows doing many things which weren't possible previously. For a simple example, it's now possible to call the role "on-duty", or anything else, instead of the previously enforced "caretaker".
- Added logging. The program now outputs logs to stderr. Users who were previously using the programs entire output (stdout + stderr), should now distinguish between stdout and stderr.
- The configuration now uses emails instead of Slack IDs for identifying users. This allows referring to the same user across different systems.
- The Dhall types that make up the new, flexible configuration interface (API)
of the application are now available in the
./types/coreof the repository and the available Docker images. - There's also a folder
./types/zoofor reusable Dhall functions that build on top of the main, flexible API. For example, the previous interface is still usable through theteamsDhall function provided by./types/zoo/teams.dhall(with the small change of theteamkey being renamed toname).
- Change
list-caretakerscommand to beensure --dry-runinstead. Also update the output to show everything that theensurecommand would ensure. - Remove global caretaker group, consisting of caretakers from all teams. If you were using take-care previously, then you will have to disable the existing "caretakers" user group manually on Slack.