Code Monkey home page Code Monkey logo

rollun-service-skeleton's Introduction

rollun-service-skeleton

rollun-service-skeleton - скелет для построения сервисов на базе zend-expressive. В rollun-service-skeleton изначально подключены такие модули:

rollun-service-skeleton имеет несколько роутов по умолчанию:

  • / - тестовый хендлер
  • /oauth/redirect - редирект на гугл аутентификацию

Использовать /oauth/redirect?action=login для аутентификации на логин, /oauth/redirect?action=register для аутентификации на регистрацию.

  • /oauth/login - роутинг на который google редиректит пользователя (при его успешной аутентификации) для логина
  • /oauth/register - роутинг на который google редиректит пользователя (при его успешной аутентификации) для регистрации
  • /logout - логаут пользователя
  • /api/datastore/{resourceName}[/{id}] роутинг для доступу к абстрактному хранилищу, где resourceName название сервиса, а id - идентификатор записи.

Установка

  1. Установите зависимости.

    composer install
  2. Для работы rollun-com/rollun-datastore и rollun-com/rollun-permission нужны таблицы в базе данных:

    Так же могут пригодиться настройки ACL по умолчанию: acl_default.sql.

  3. Обязательные переменные окружения:

    • Для работы сервиса:

      • APP_ENV - возможные значения: prod, test, dev
      • APP_DEBUG - возможные значения: true, false
      • SERVICE_NAME - название сервиса
      • POD_NAME - уникальное имя сервиса

      (более детально тут)

    • Для БД:

      • DB_DRIVER (Pdo_Mysql - по умолчанию)
      • DB_NAME
      • DB_USER
      • DB_PASS
      • DB_HOST
      • DB_PORT (3306 - по умолчанию)
    • Для аутентификации:

      • GOOGLE_CLIENT_SECRET - client_secret в личном кабинете google
      • GOOGLE_CLIENT_ID - client_id в личном кабинете google
      • GOOGLE_PROJECT_ID - project_id в личном кабинете google
      • HOST - домен сайт где происходит авторизация
      • EMAIL_FROM - от кого отправить email для подтверждения регистрации
      • EMAIL_TO - кому отправить email для подтверждения регистрации
  4. Та же сразу с скелетоном поставляется php.ini и php-fpm.conf.

Метрика

При обращении на /api/webhook/cron срабатывает механизм отправки метрики на health-cheker, если такой метрики нету, она будет создана автоматически. Документация API метрик. Для собюытий типа php рантайм метрики и тд лучше использховать прометеус, с открытием ендпоинта /metrics Во всех остальных случаях лучше использовать health-checker

CI/CD

С скелетоном поставляется Dockerfile и настроеный CI/CD используя Github Actions и D2C WebHooks

CI/CD по умолчанию запускается по пушу в master ветку, это легко можно кастомизировать поменяв секцию on в deploy.yaml Так же нужно подбравить шаг build в deploy.yaml, там в коментах все указано

Для того, что бы CI/CD работал, необходимо добавить так называемые секреты в github репозиторий:

  • D2C_DEPLOY_WEBHOOK - url для обновления Вашего контейнера в D2C doc
  • DOCKER_USER - Ваше имя аккаунта в github.
  • DOCKER_PASS - github token с правами на запись в packages doc

Для того, что бы использовать другой docker registry вместо github packages, нужно заменить ghcr.io на Ваш registry а DOCKER_USER и DOCKER_PASS поменять на ваш логин и пароль от registry

Схема названия докер образа:

  1. prod - ghcr.io/rollun-com/repo-name/repo-name/prod:latest
  2. stage - ghcr.io/rollun-com/repo-name/repo-name/stage:latest

Перед пуллом, нужно залогинится с помошью docker login.

Зависает установка зависимостей

Если у вас зависла установка зависимостей, то попробуйте поменять версии пакетов в composer.json на

"rollun-com/rollun-callback": "^5.0",
"rollun-com/rollun-logger": "^4.2",

а после установки вернуть прежние версии и запустить

composer update "rollun-com/*" --with-dependencies

Сумісність з rollun бібліотеками

Бібліотеки сумісні включно до наступних версій:

{
   "rollun-com/rollun-callback": "^6.0.0",
   "rollun-com/rollun-datastore": "^7.0.0",
   "rollun-com/rollun-logger": "^6.0.0",
   "rollun-com/rollun-utils": "^6.0.0",
   "rollun-com/rollun-openapi": "^9.0.0"
}

rollun-service-skeleton's People

Contributors

rollun-com avatar misha-rollun avatar rratsun avatar vict0rynox avatar artemka-debug avatar rrollun avatar victorynox avatar

Watchers

James Cloos avatar  avatar  avatar

rollun-service-skeleton's Issues

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.