يتضمن:
واجهة REST API العامة لـ GOV.UK Notify، والتي يمكن للفرق أن تتكامل معها باستخدام عملائنا
واجهة REST API داخلية فقط تم إنشاؤها باستخدام Flask لإدارة الخدمات والمستخدمين والقوالب وما إلى ذلك (هذا ما يتحدث إليه تطبيق المسؤول)
عمال غير متزامنين تم تصميمهم باستخدام Celery لوضع الأشياء في قوائم الانتظار وقراءتها لتتم معالجتها وإرسالها إلى مقدمي الخدمة وتحديثها وما إلى ذلك
نقوم بتشغيل python 3.11 محليًا وفي الإنتاج.
اتبع هذه التعليمات على أجهزة Mac M1.
لتشغيل واجهة برمجة التطبيقات (API)، ستحتاج إلى بيانات اعتماد AWS المناسبة. راجع ويكي لمزيد من التفاصيل.
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.
إذا كنت تستخدم notifications-local، فسيتم توفير إصدار Postgres الصحيح تلقائيًا بواسطة ملف docker-compose.
إذا كنت تقوم بتشغيل هذا التطبيق يدويًا، فستحتاج إلى إدارة Postgres بنفسك. قم بتثبيت Postgres.app. تحقق من ملف إنشاء عامل الإرساء أعلاه للعثور على إصدار Postgres الصحيح الذي يجب استخدامه.
عندما يتم تشغيل اختبارات وحدتنا في Concourse، يتم وضع Postgres في الحاوية عبر خطوة concourse_tests في docker/Dockerfile.
لتشغيل 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:
# 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
- run flask --help
لمزيد من المعلومات. هناك قسمان نحتاج إلى الاهتمام بهما: يحتوي flask db
على أوامر الترحيل الإنبيكي، ويحتوي 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>
تحتوي جميع أوامر القارورة وخيارات الأوامر على أمر --help إذا كنت بحاجة إلى مزيد من المعلومات.
كتابة واجهات برمجة التطبيقات العامة
تحديث التبعيات