含まれるもの:
GOV.UK Notify の公開 REST API。チームはクライアントを使用して統合できます。
サービス、ユーザー、テンプレートなどを管理するために Flask を使用して構築された内部専用の REST API (これは管理アプリが通信するものです)
Celery を使用して構築された非同期ワーカーは、処理、プロバイダーへの送信、更新などのためにキューに内容を置き、読み取っていきます。
私たちはローカルと本番環境の両方で Python 3.11 を実行しています。
Mac M1 マシンでは次の手順に従ってください。
API を実行するには、適切な AWS 認証情報が必要です。詳細については Wiki を参照してください。
environment.sh
環境.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 を使用している場合は、正しい Postgres バージョンが docker-compose ファイルによって自動的に提供されます。
このアプリを手動で実行している場合は、Postgres を自分で管理する必要があります。 Postgres.appをインストールします。上記の docker-compose ファイルを確認して、使用する正しい Postgres バージョンを見つけてください。
単体テストが Concourse で実行される場合、Postgres は docker/Dockerfile のconconstruct_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 の依存関係の 1 つである 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
を実行してください。注意する必要があるセクションが 2 つあります。flask 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 の作成
依存関係の更新