包含:
GOV.UK Notify 面向公众的 REST API,团队可以使用我们的客户进行集成
使用 Flask 构建的仅供内部使用的 REST API,用于管理服务、用户、模板等(这是管理应用程序与之对话的内容)
使用 Celery 构建的异步工作线程将事物放入队列中并读取它们以进行处理、发送给提供者、更新等
我们在本地和生产中运行 python 3.11。
请在 Mac M1 机器上遵循这些说明。
要运行 API,您将需要适当的 AWS 凭证。请参阅 Wiki 了解更多详细信息。
environment.sh
创建并编辑environment.sh 文件。
echo " export NOTIFY_ENVIRONMENT='development' export MMG_API_KEY='MMG_API_KEY' export FIRETEXT_API_KEY='FIRETEXT_ACTUAL_KEY' export NOTIFICATION_QUEUE_PREFIX='YOUR_OWN_PREFIX' export FLASK_APP=application.py export FLASK_DEBUG=1 export WERKZEUG_DEBUG_PIN=off "> environment.sh
需要改变的事情:
将YOUR_OWN_PREFIX
替换为local_dev_<first name>
。
在凭证存储库中运行以下命令以获取 API 密钥。
notify-pass credentials/firetext notify-pass credentials/mmg
此应用程序需要 Postgres 才能运行。
如果您使用的是 notification-local,则 docker-compose 文件将自动提供正确的 Postgres 版本。
如果您手动运行此应用程序,则需要自己管理 Postgres。安装 Postgres.app。检查上面的 docker-compose 文件以找到要使用的正确 Postgres 版本。
当我们的单元测试在 Concourse 中运行时,Postgres 通过 docker/Dockerfile 的 concourse_tests 步骤嵌入到容器中。
要打开 redis,您需要在本地安装它。在 Mac 上您可以执行以下操作:
# assuming you use Homebrew brew install redis brew services start redis
要使用 redis 缓存,您需要使用环境变量将其打开:
export REDIS_ENABLED=1
我们使用预提交来确保提交的代码符合基本的格式标准,并将为您进行基本修复,以节省时间并减少麻烦。
使用例如brew install pre-commit
在系统范围内安装预提交。然后,使用pre-commit install --install-hooks
在此存储库中安装挂钩。
# install dependencies, etc. make bootstrap # run the web app make run-flask # run the background tasks make run-celery # run scheduled tasks (optional) make run-celery-beat
由于 Celery 的依赖项之一:pycurl,我们在本地运行 Celery 时遇到了问题。由于问题的复杂性,我们还支持通过 Docker 运行 Celery:
# install dependencies, etc. make bootstrap-with-docker # run the background tasks make run-celery-with-docker # run scheduled tasks make run-celery-beat-with-docker
# install dependencies, etc. make bootstrap make test
任务通过flask
命令运行-运行flask --help
以获取更多信息。我们需要关心两个部分: flask db
包含 alembic 迁移命令, flask command
包含我们所有的自定义命令。例如,要清除所有动态生成的功能测试数据,请执行以下操作:
本地
flask command purge_functional_test_data -u <functional tests user name prefix>
要在ecs中执行,可以使用ecs-exec.sh脚本
./scripts/ecs-exec/ecs-exec.sh <select notify-api> flask command purge_functional_test_data -u <functional tests user name prefix>
如果您需要更多信息,所有 Flask 命令和命令选项都有一个 --help 命令。
编写公共 API
更新依赖项