Идея для конвейера миграции данных в Jenkins и Java - PullRequest
0 голосов
/ 10 декабря 2018

Я пытаюсь найти решение, чтобы иметь какой-то конвейер миграции данных в моей среде непрерывного развертывания.Пример того, как хранятся данные, будет выглядеть следующим образом для следующего интерфейса:

public interface IEntity
{
  String getName();

  List<ISubEntity> getSubEntities();  
}

public interface ISubEntity
{
  String getSomething();

}

Значение полезной нагрузки в моей базе данных для этого объекта:

{"name":"SomeName","subEntities":[{"something":"SomeSomething"}]}

Так что, если кто-то удалитили переименовать метод, я также хотел бы обновить данные в базе данных.

То, что мы имеем сейчас в плане развертывания (вкратце), выглядит примерно так:

Сборка проекта -> Запустите 2-ю сборку, чтобы запустить несколько тестов, и поместить приложение в образ докера. -> Воссоздать модули k8s для запуска последнего образа.

Я подумал, что мог бы создать другой репозиторий для обработки миграции данных и включить егов процессе развертывания так же, как мы помещаем приложение в образ докера.Здесь я бы использовал JGit, чтобы найти изменения в моих сущностях и создать какое-то отображение, например:

{
  "changedEntity": "IEntity",
  "deletedProperties": [
    "subEntities"
  ],
  "addedProperties": [
    {
      "name": "exoticName",
      "type": "String",
      "defaultValue": null
    }
  ],
  "changedProperties": [
    {
      "name": "name",
      "type": "SomeEnum",
      "defaultValue": "DEFAULT"
    }
  ]
}

Тогда я подумал, что могу получить записи в базе данных, использовать отображение для создания новых данных и обновленияЭто.Оберните это в образ докера, чтобы его могли использовать другие пользователи, использующие те же данные, и запустите его на моей установке K8s.

Моя главная задача - как создать собственное отображение, сработает ли JGit?Будет ли лучший способ применения сопоставления в базе данных?Любые материалы или ссылки будут оценены.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...