다음을 포함합니다:
팀이 클라이언트를 사용하여 통합할 수 있는 GOV.UK Notify용 공개 REST API
서비스, 사용자, 템플릿 등을 관리하기 위해 Flask를 사용하여 구축된 내부 전용 REST API(관리 앱이 이에 대해 대화함)
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가 필요합니다.
알림 로컬을 사용하는 경우 올바른 Postgres 버전이 docker-compose 파일에 의해 자동으로 제공됩니다.
이 앱을 수동으로 실행하는 경우 Postgres를 직접 관리해야 합니다. Postgres.app을 설치합니다. 사용할 올바른 Postgres 버전을 찾으려면 위의 docker-compose 파일을 확인하세요.
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
종속성 중 하나인 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>
추가 정보가 필요한 경우 모든 플라스크 명령과 명령 옵션에는 --help 명령이 있습니다.
공개 API 작성
종속성 업데이트