ProteGO-app / backend
- понедельник, 6 апреля 2020 г. в 00:19:30
Python
Backend do uruchomienia na GCP
Korzystamy z Google Cloud Platform (GCP) udostępnionego przez Operatora Chmury Krajowej.
Stworzenie nowego projektu GCP składa się z następnujących kroków:
Stworzenie projektu na platformie Google Cloud
Na stronie projektu console.cloud.google.com należy wykonać następujące ustawienia:
Instalacja oprogramowania serwera wymaga narzędzi Terraform oraz gcloud. Przed przystąpieniem do instalacji należy wykonać następujące kroki:
Zainstalować narzędzie gcloud zgodnie z instrukcją na cloud.google.com/sdk/install
Zainstalować narzędzie terraform zgodnie z instrukcją na learn.hashicorp.com/terraform/getting-started/install
Dodatkowo możesz lokalnie zainstalować pre-commit przez pip install pre-commit && pre-commit install.
Pomoże on upewnić się o poprawności składniowej, formatowaniu kodu i tym podobnych przed zachowaniem zmian w repozytorium.
Używając narzędzia gcloud Należy zalogować się do GCP przy użyciu strony logowana lub Service Account z odpowiednimi uprawnieniami:
# strona logowania
gcloud auth application-default login
# service account
gcloud auth activate-service-account --key-file=<credentials.json>Ustawienie odpowiedniego projektu jako aktywnego:
gcloud config set project <project_id># wylistowanie wszystkich projektów
gcloud projects list
# wyświetlenie aktywnego projektu
gcloud config list projectPobranie źródeł ProteGO:
git clone git@github.com:ProteGO-app/backend.git
Ustawienie zmiennych środowiskowych.
STAGE - DEVELOPMENT lub PRODUCTION to jedyne dopuszczalne wartości. Zmienna ta mówi czy jest do środowisko produkcyjne (wysyłanie SMSów jest aktywne) czy deweloperskie.SMS_API_TOKEN - Token do bramki SMS. Zmienna ta jest wymagana zawsze wymagana (dla środowiska deweloperskiego wartość ta nie musi być poprawna).export STAGE=DEVELOPMENT
export SMS_API_TOKEN=1234Uruchomienie skryptu tworzącego środowisko:
bash scripts/create.shNa Google Cloud Store będzie dodaktowo stworzony (jeśli nie istnieje) bucket do przechowywania konfiguracji narzędzia terraform. Nazwa bucketu skłąda się z ID projektu i końcówki "-tfstate" ("PROJECT_ID-tfstate"). Przechowywanie konfiguracji w bucket jest wygodne ze względu na możliwość bezkonfliktowego używania narzędzia przez większą ilość osób.
Aby wyczyścić środowisko należy wyskonać następącujące komendy:
terraform:bash scripts/teardown.shterraformbash scripts/teardown_tfstate_bucket.shIn order to run test you need to set environment variables:
STAGE - DEVELOPMENT or PRODUCTION
SEND_SMS_NUMBER - 9 digit - requiered only in case of PRODUCTION
GOOGLE_APPLICATION_CREDENTIALS - path to account credentials file
Install requirements from tests/requirements.txt
Run:
python -m unittestIn case of PRODUCTION you should receive SMS on number given