Contém:
a API REST pública para GOV.UK Notify, com a qual as equipes podem se integrar usando nossos clientes
uma API REST somente interna construída usando Flask para gerenciar serviços, usuários, modelos, etc. (é com isso que o aplicativo administrativo fala)
trabalhadores assíncronos criados usando Celery para colocar coisas em filas e lê-las para serem processadas, enviadas aos provedores, atualizadas, etc.
Executamos o python 3.11 localmente e em produção.
Siga estas instruções em máquinas Mac M1.
Para executar a API, você precisará de credenciais apropriadas da AWS. Veja o Wiki para mais detalhes.
environment.sh
Criando e editando um arquivo 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
Coisas para mudar:
Substitua YOUR_OWN_PREFIX
por local_dev_<first name>
.
Execute o seguinte no repositório de credenciais para obter as chaves de API.
notify-pass credentials/firetext notify-pass credentials/mmg
Este aplicativo requer Postgres para ser executado.
Se você estiver usando notificações-local, a versão correta do Postgres será fornecida automaticamente pelo arquivo docker-compose.
Se estiver executando este aplicativo manualmente, você mesmo precisará gerenciar o Postgres. Instale Postgres.app. Verifique o arquivo docker-compose acima para encontrar a versão correta do Postgres para usar.
Quando nossos testes de unidade são executados no Concourse, o Postgres é baseado no contêiner por meio da etapa concourse_tests do docker/Dockerfile.
Para ativar o redis, você precisará instalá-lo localmente. Em um Mac você pode fazer:
# assuming you use Homebrew brew install redis brew services start redis
Para usar o cache redis, você precisa ativá-lo com uma variável de ambiente:
export REDIS_ENABLED=1
Usamos pré-confirmação para garantir que o código confirmado atenda aos padrões básicos de formatação e faremos correções básicas para você economizar tempo e aborrecimentos.
Instale o pré-commit em todo o sistema com, por exemplo, brew install pre-commit
. Em seguida, instale os ganchos neste repositório com 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
Tivemos problemas ao executar o Celery localmente devido a uma de suas dependências: pycurl. Devido à complexidade do problema, também oferecemos suporte à execução do Celery via Docker:
# 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
As tarefas são executadas por meio do comando flask
- execute flask --help
para obter mais informações. Há duas seções com as quais precisamos nos preocupar: flask db
contém comandos de migração de alambique e flask command
contém todos os nossos comandos personalizados. Por exemplo, para limpar todos os dados de testes funcionais gerados dinamicamente, faça o seguinte:
Localmente
flask command purge_functional_test_data -u <functional tests user name prefix>
Para executar em ecs, você pode usar o script ecs-exec.sh
./scripts/ecs-exec/ecs-exec.sh <select notify-api> flask command purge_functional_test_data -u <functional tests user name prefix>
Todos os comandos e opções de comando do flask possuem um comando --help se você precisar de mais informações.
Escrevendo APIs públicas
Atualizando dependências