diff options
author | 2023-03-09 07:34:54 +0100 | |
---|---|---|
committer | 2023-03-09 09:34:54 +0300 | |
commit | 12fe15baa5f3ea5d35d43d27ff671dca5fe58334 (patch) | |
tree | b8c3b61f6a0ee959c8d6e2748e2d8a04c97e1321 /docker-compose.yml | |
parent | Merge pull request #2449 from python-discord/update-deps (diff) |
Merge #2408: Scaffold server config via a bootstrapping script
Refactor configuration into a pydantic-based python constants file,
and add a utility to auto-populate guild data.
Squashed commits:
* use basic config for demo purposes
* fix guiding comments
* update var names for proper context reflection
* fix wront iteration var
* add all roles, & channels
* load categories
* separate sections in env file
* ignore .env.server
* rename change_log to changelog
This also adds a default env file to look for
* remove instantiation of webhooks
* add most of the default configs
These will mostly be fetched from the .env.default file, which won't be bootstrapped
* warn when categories/roles/channels are not found
* add env file to keep server defaults
* fix malformatted value in the .env.default
* add default server env variables
* update the sections formatting in default env file
* fallback to server env when loading constants
* add guild basic defaults
* update change_log channel name to changelog
* add the Guid settings prefix
* make _Guild inherit from EnvConfig
* add webhook defaults
* add python_news defaults to the server env
* ad missing webhooks prefix
* update bootstrapper logger name
* update priority of the env loaded files
According to Pydantic's docs: "Later files in the list/tuple will take priority over earlier files."
* warn user that default value from PyDis' config will be used
* add colours default config
* add antispam config
* update antispam references
* add redis default cfg
* add Stats, Cooldowns and CleanMessages consts
This also includes their default values
* add Metabase to constants
This also includes its default values
* add URLS to constants
This also includes its default values
* use the Field class to provide defaults
This avoids overriding & changing the `fields` of the `Config` class "dynamically"
* add keys constant class
* add Guild conf
* replace dash with underscore in script
* appease linter
* transform attributes of AntiSpam to dict when needed
This ensures that the application stays backwards compatible
* add root_validator for the colours class
This enables the conversion from hex to int easily since it's not a supported type by pydantic
* reinstate the role & channels combinations
* rename URLS to URLs
* add emojis & icons constants
* add filter constants & their default values
* remove all useless spaces
* instantiate the keys class
* add bot prefix to default env file
* fetch Bot constants from env vars instead of the prefix ones
* add Miscellaneous config
* instantiate poor forgotten Miscellaneous config
* add final touches to the constants module
This includes removing dups, adding missing channels & fixing type casts
* move all default values to constants.py
This is done by using the `Field` class.
It allows us to
1. Set defaults, in case the variables are not configured
2. Load them from a env variable under a specific name (for backwards comp)
3. load it from any env variable file that contains the right prefix
* ignore all .env files
* load BOT_TOKEN & GUILD_ID from .env
* allow _GUILD to read its id from the `GUILD_ID` env var
* base Webhooks settings off of a Webhook model
* create necessary webhooks if non existent
* appease flake8 docstrings error
* make the script idempotent
* update type hints
* uppercase all consts
* make webhook channel optional
* add httpx to its own dependency group
This group will be optional & only related to the bootstrapper
* replace requests with httpx
* pass client as param
* include raise_for_status as a response hook
* rename get_webhook to webhook_exists
* update docstring of the constants module
* use "." as a separator
* update script to account for already created webhooks
* make ANTI_SPAM_RULES a module level constant
This ensures that flake8 doesn't complain about making a function call in the function's signature
* remove the manual resolving of .env paths
* update usages of AntiSpam constants
* remove forgotten assignment of rule_config
* remove useless assignments of env file names
* delete default config-default.yml
* update docstrings of CodeBlockCog to reference constants.py
* add a poetry task that runs the bootstrapping script
* add python-dotenv to the config-bootstrap group
* update hook name to _raise_for_status
* construct site_api in _URLs
* remove __name__ == '__main__'guard
* Revert "construct site_api in _URLs"
This reverts commit 1c555c4280c6a0bdd452319cbd3ffcd0370f5d48.
* remove usage of the Field class
* update env var keys that the bootstrapping script needs
* use API_KEYS.SITE_API as env var in docker compose instead of BOT_API_KEY
* use basic config for demo purposes
* fix guiding comments
* update var names for proper context reflection
* fix wront iteration var
* add all roles, & channels
* load categories
* separate sections in env file
* ignore .env.server
* rename change_log to changelog
This also adds a default env file to look for
* remove instantiation of webhooks
* add most of the default configs
These will mostly be fetched from the .env.default file, which won't be bootstrapped
* warn when categories/roles/channels are not found
* add env file to keep server defaults
* fix malformatted value in the .env.default
* add default server env variables
* update the sections formatting in default env file
* fallback to server env when loading constants
* add guild basic defaults
* update change_log channel name to changelog
* add the Guid settings prefix
* make _Guild inherit from EnvConfig
* add webhook defaults
* add python_news defaults to the server env
* ad missing webhooks prefix
* update bootstrapper logger name
* update priority of the env loaded files
According to Pydantic's docs: "Later files in the list/tuple will take priority over earlier files."
* warn user that default value from PyDis' config will be used
* add colours default config
* add antispam config
* update antispam references
* add redis default cfg
* add Stats, Cooldowns and CleanMessages consts
This also includes their default values
* add Metabase to constants
This also includes its default values
* add URLS to constants
This also includes its default values
* use the Field class to provide defaults
This avoids overriding & changing the `fields` of the `Config` class "dynamically"
* add keys constant class
* add Guild conf
* replace dash with underscore in script
* appease linter
* transform attributes of AntiSpam to dict when needed
This ensures that the application stays backwards compatible
* add root_validator for the colours class
This enables the conversion from hex to int easily since it's not a supported type by pydantic
* reinstate the role & channels combinations
* rename URLS to URLs
* add emojis & icons constants
* add filter constants & their default values
* remove all useless spaces
* instantiate the keys class
* add bot prefix to default env file
* fetch Bot constants from env vars instead of the prefix ones
* add Miscellaneous config
* instantiate poor forgotten Miscellaneous config
* add final touches to the constants module
This includes removing dups, adding missing channels & fixing type casts
* move all default values to constants.py
This is done by using the `Field` class.
It allows us to
1. Set defaults, in case the variables are not configured
2. Load them from a env variable under a specific name (for backwards comp)
3. load it from any env variable file that contains the right prefix
* ignore all .env files
* load BOT_TOKEN & GUILD_ID from .env
* allow _GUILD to read its id from the `GUILD_ID` env var
* base Webhooks settings off of a Webhook model
* create necessary webhooks if non existent
* appease flake8 docstrings error
* make the script idempotent
* update type hints
* uppercase all consts
* make webhook channel optional
* add httpx to its own dependency group
This group will be optional & only related to the bootstrapper
* replace requests with httpx
* pass client as param
* include raise_for_status as a response hook
* rename get_webhook to webhook_exists
* update docstring of the constants module
* use "." as a separator
* update script to account for already created webhooks
* make ANTI_SPAM_RULES a module level constant
This ensures that flake8 doesn't complain about making a function call in the function's signature
* remove the manual resolving of .env paths
* update usages of AntiSpam constants
* remove forgotten assignment of rule_config
* remove useless assignments of env file names
* delete default config-default.yml
* update docstrings of CodeBlockCog to reference constants.py
* add a poetry task that runs the bootstrapping script
* add python-dotenv to the config-bootstrap group
* update hook name to _raise_for_status
* construct site_api in _URLs
* remove __name__ == '__main__'guard
* Revert "construct site_api in _URLs"
This reverts commit 1c555c4280c6a0bdd452319cbd3ffcd0370f5d48.
* remove usage of the Field class
* update env var keys that the bootstrapping script needs
* use API_KEYS.SITE_API as env var in docker compose instead of BOT_API_KEY
* relock dependencies
* update snekbox's defaults
* add support for ot channels
* rename help_system_forum to python_help
* rename nomination_archive to nomination_voting_archive
* rename appeals2 to appeals_2
* yeet sprinters role out
* rename all big_brother_logs instances to big_brother
The purpose is to adhere to what we have in prod
* rename bootstrap_config.py to botstrap.py
* update module name of the configure poetry task
* update error messages to reflect the new keys needed for env variables
* install dotenv as an extra with pydantic
* update all prefixes to "_" (underscore)
* log tuple of (channel_name, channel_id) in the config verifier
* update needed default values for docker compose env var
* relock dependencies
* update forgotten delimiters & env prefixes
Diffstat (limited to 'docker-compose.yml')
-rw-r--r-- | docker-compose.yml | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/docker-compose.yml b/docker-compose.yml index bc53c482b..694f44507 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -112,4 +112,9 @@ services: env_file: - .env environment: - BOT_API_KEY: badbot13m0n8f570f942013fc818f234916ca531 + API_KEYS_SITE_API: "badbot13m0n8f570f942013fc818f234916ca531" + URLS_SITE_API: "web:8000/api" + URLS_SNEKBOX_EVAL_API: "http://snekbox/eval" + URLS_SNEKBOX_311_EVAL_API: "http://snekbox-311/eval" + REDIS_HOST: "redis" + STATS_STATSD_HOST: "http://localhost" |