GithubHelp home page GithubHelp logo

romanow / backend-todo-list Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 9.0 92.6 MB

Simple TODO list backend application

Home Page: https://todo-list.romanowalex.ru

Dockerfile 1.53% Kotlin 80.00% Shell 1.08% JavaScript 5.91% HCL 11.49%
kotlin docker openid-connect

backend-todo-list's Introduction

TODO list backed

Build project pre-commit

Создание авторизации в Google

Зайти в Google Cloud Platform:

  1. Select a project -> New Project: TODO List.
  2. APIs & Services -> Credentials -> Create Credentials -> Create OAuth client ID -> Web Application -> name: TODO list OAuth Provider.
  3. Authorized redirect URIs -> http://localhost:8080/login/oauth2/code/google.
  4. Берем Client ID и Client Secret и добавляем их в secret.

Сборка

$ ./graldew clean build
$ docker compose up postgres -d --wait
$ ./gradlew bootRun --args='--spring.profiles.active=local'

Запуск в локальном кластере k8s

Запуск Kind:

$ kind create cluster --config kind.yml
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/kind/deploy.yaml
$ echo "127.0.0.1    todo-list.ru" | sudo tee -a /etc/hosts

Запуск Minikube:

$ minikube start --vm-driver=hyperkit --memory=8G --cpus=3
$ minikube addons enable ingress
$ echo "$(minikube ip)    todo-list.ru" | sudo tee -a /etc/hosts
$ helm repo add romanow https://romanow.github.io/helm-charts/
$ helm search repo romanow

$ kubectl create secret generic credentials \
    --from-literal=google-client-id=<client-id> \
    --from-literal=google-client-secret=<client-secret>

$ helm install postgres -f postgres/values.yaml romanow/postgres
$ helm install backend-todo-list -f todo-list/backend.yaml romanow/java-service
$ helm install frontend-todo-list -f todo-list/frontend.yaml romanow/frontend --set ingres.domain=local

Тестирование

Локальный запуск UI тестов

$ brew install --cast chromedriver

$ docker compose \
  -f docker-compose.yml \
  -f docker-compose.frontend.yml \
  up -d --wait

$ ./gradlew selenide

Запуск UI тестов в k8s

$ minikube start --cpus=4 --memory=8G --driver=hyperkit
$ minikube addons enable ingress

$ helm repo add aerokube https://charts.aerokube.com/
$ helm search repo romanow
$ helm upgrade --install moon aerokube/moon2 --values moon/values.yaml --set ingress.host=moon.local

$ echo "$(minikube ip)    moon.local" | sudo tee -a /etc/hosts

Интеграционное тестирование

$ newman run -e kind-environment.json collection.json

Нагрузочное тестирование

$ helm install prometheus-stack prometheus-community/kube-prometheus-stack -f prometheus-stack/backend.yaml
$ kubectl apply -f prometheus-stack/todo-list.yml
$ echo "$(minikube ip)    grafana.local" | sudo tee -a /etc/hosts

$ brew install k6
$ K6_WEB_DASHBOARD=true K6_WEB_DASHBOARD_EXPORT=report.html  k6 run \
    -e HOSTNAME=todo-list.ru \
    -e [email protected] \
    -e PASSWORD=Qwerty123 \
    -e CLIENT_ID=7uHBa1xYenYPjX7UhOonuGhOWvxLUwYM \
    -e CLIENT_SECRET=TbNIL8SJx38sDDweRqWsRaqWKU7Q6UrWr0f6DzKwlLh48892GE4KfoKR1cfIe87e \
    k6-load.js

TODO

  1. Слайд про GitHub Actions.
  2. Добавить скриншоты.

backend-todo-list's People

Contributors

romanow avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.