Организовать схему CI/CD на Postgres

Кратко

Есть несколько проектов на Laravel + MySQL + автотесты на PHPUnit. Теперь все это нужно перевезти на Postres, и я не понимаю как правильно раздать гранты CI-пользователю в этой РСУБД.

Развернуто

Сейчас есть автоматическое тестирование на MySQL, для чего используется отдельный пользователь ci-test, которому разрешено практически все на базах данных ci-test-*. Базы заводятся вручную, но выдавать каждый раз права этому пользователю не нужно - работает "звездочка".

Теперь я хочу сделать похожую систему авто-тестирования на Postgres. Вот список требований, пожеланий и понимания как это сделать наилучшим образом:

  • один пользователь ci-test
  • одна схема ci_test на которую выдать по-максимуму гранты для ci-test
  • несколько сервисов, который могут гонять тесты одновременно, то есть нужна куча БД
  • и как следствие, такое пожелание: грант на создание баз данных вида ci-test-*, например ci-test-shop-1, ci-test-shop-2

Должно получиться так:

  1. Запускается тест, который создает базу данных ci-test-.... Скрипт это уже умеет делать, тут больше вопрос - как ограничить его возможности через гранты.

  2. Запускает миграция, которая создает необходимую структуру таблиц в БД, причем search_path=ci_test

  3. Собственно, тест

Что я делал, но не получилось

CREATE USER "ci-test" WITH PASSWORD 'ci-test';
CREATE SCHEMA "ci_test" AUTHORIZATION "ci-test";
CREATE DATABASE "ci-test-shop-1"; -- тут я на всякий случай сам создал БД

ALTER DEFAULT PRIVILEGES IN SCHEMA "ci_test" GRANT ALL ON TABLES TO "ci-test";
ALTER DEFAULT PRIVILEGES IN SCHEMA "ci_test" GRANT ALL PRIVILEGES ON TABLES TO "ci-test";
ALTER DEFAULT PRIVILEGES IN SCHEMA "ci_test" GRANT ALL ON SEQUENCES TO "ci-test";
ALTER DEFAULT PRIVILEGES IN SCHEMA "ci_test" GRANT ALL ON FUNCTIONS TO "ci-test";
ALTER DEFAULT PRIVILEGES IN SCHEMA "ci_test" GRANT ALL ON ROUTINES TO "ci-test";
ALTER DEFAULT PRIVILEGES IN SCHEMA "ci_test" GRANT ALL ON TYPES TO "ci-test";

Сейчас тест не работает: password authentication failed for user "ci-test". Я догадываюсь, что нужно навесить гранты на ci-test-shop-1, но вот хочется сделать это каким-то шаблонным способом через "звездочку".


Ответы (0 шт):