Berisi:
REST API yang dapat dilihat publik untuk GOV.UK Notify, yang dapat diintegrasikan oleh tim menggunakan klien kami
REST API khusus internal yang dibuat menggunakan Flask untuk mengelola layanan, pengguna, templat, dll (inilah yang diajak bicara oleh aplikasi admin)
pekerja asinkron yang dibuat menggunakan Seledri untuk memasukkan sesuatu ke dalam antrian dan membacanya untuk diproses, dikirim ke penyedia, diperbarui, dll
Kami menjalankan python 3.11 baik secara lokal maupun dalam produksi.
Ikuti petunjuk ini pada mesin Mac M1.
Untuk menjalankan API, Anda memerlukan kredensial AWS yang sesuai. Lihat Wiki untuk lebih jelasnya.
environment.sh
Membuat dan mengedit file 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
Hal-hal yang perlu diubah:
Ganti YOUR_OWN_PREFIX
dengan local_dev_<first name>
.
Jalankan perintah berikut di repo kredensial untuk mendapatkan kunci API.
notify-pass credentials/firetext notify-pass credentials/mmg
Aplikasi ini membutuhkan Postgres untuk dijalankan.
Jika Anda menggunakan notifikasi-lokal, versi Postgres yang benar akan disediakan secara otomatis oleh file docker-compose.
Jika Anda menjalankan aplikasi ini secara manual, Anda harus mengelola Postgres sendiri. Instal Postgres.app. Periksa file docker-compose di atas untuk menemukan versi Postgres yang tepat untuk digunakan.
Saat pengujian unit kami dijalankan di Concourse, Postgres dimasukkan ke dalam container melalui langkah concourse_tests dari docker/Dockerfile.
Untuk mengaktifkan redis Anda harus menginstalnya secara lokal. Di Mac Anda dapat melakukan:
# assuming you use Homebrew brew install redis brew services start redis
Untuk menggunakan cache redis, Anda perlu mengaktifkannya dengan variabel lingkungan:
export REDIS_ENABLED=1
Kami menggunakan pra-komitmen untuk memastikan bahwa kode yang dikomit memenuhi standar dasar pemformatan, dan akan melakukan perbaikan dasar bagi Anda untuk menghemat waktu dan kejengkelan.
Instal pra-komit seluruh sistem dengan, misalnya brew install pre-commit
. Kemudian, instal hook di repositori ini dengan 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
Kami mengalami masalah dalam menjalankan Seledri secara lokal karena salah satu ketergantungannya: pycurl. Karena kerumitan masalahnya, kami juga mendukung menjalankan Celery melalui 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
Tugas dijalankan melalui perintah flask
- jalankan flask --help
untuk informasi lebih lanjut. Ada dua bagian yang perlu kita perhatikan: flask db
berisi perintah migrasi alembic, dan flask command
berisi semua perintah khusus kita. Misalnya, untuk menghapus seluruh data pengujian fungsional yang dihasilkan secara dinamis, lakukan hal berikut:
Secara lokal
flask command purge_functional_test_data -u <functional tests user name prefix>
Untuk mengeksekusi di ecs, Anda dapat menggunakan skrip ecs-exec.sh
./scripts/ecs-exec/ecs-exec.sh <select notify-api> flask command purge_functional_test_data -u <functional tests user name prefix>
Semua perintah flask dan opsi perintah memiliki perintah --help jika Anda memerlukan informasi lebih lanjut.
Menulis API publik
Memperbarui dependensi