Skip to content

fil-it/gradle-dwh-plugin

Repository files navigation

Плагин наката DWH

pipeline status Quality Gate Status Reliability Rating Security Rating Technical Debt Vulnerabilities

Как пользоваться

Подключение к проекту

В settings.gradle проекта добавляем источник библиотек с плагином

pluginManagement {
     repositories { 
          maven { //Для релизных библиотек
               url = REPO_RESOLVE_RELEASE
               credentials {
                    username PHOENIX_USER
                    password PHOENIX_PASSWORD
               }
          }
          maven { //Для снэпшотных библиотек
               url = REPO_RESOLVE_SNAPSHOT
               credentials {
                    username PHOENIX_USER
                    password PHOENIX_PASSWORD
               }
          }
     }
}

После этого в build.gradle добавляем идентификатор в секцию подключения плагинов

plugins {
    //...
    id 'liquibase.dwh.changelog'
    //...
}

Конфигурирование активностей

changelog { //Блок конфигурации плагина
    p1 { //Конфигурация предметной области p1, имя может быть произвольным, количество активностей произвольное
        sources { //Блок конфигурации кода, относящегося к данной предметной области, см Gradle CopySpec 
            exclude '**/file1*'

            from('src/main/gp/dir1') {
                exclude '**/file1*'
            }
            from('src/main/gp/p1.yaml')
        }
        activity { //Блок конфигурации активности liquibase, смотри официальный плагин Liquibase
            if (project.hasProperty('contexts')) { //Пример того, что можно писать произвольный код groovy в конфигурационном блоке
                contexts contexts //вызов любого метода кроме changeLogParameters превращается в аргумент ликвибейза, где ключ - имя метода, значение - аргументы метода
            }
            changeLogFile 'src/main/gp/p1.yaml'
            url "$GP_JDBC_BASE_URL/gpadmin" //Можно интерполировать строки из переменных проекта (передаются ключиком -З)
            username(GP_ADMIN_USERNAME) //Для понимания синтаксиса - аргументы можно окружать скобками, а можно скобки опускать
            password GP_ADMIN_PASSWORD // тут скобки оппущены
            logLevel 'warning' //Откуда брать аргументы - из документации ликвибейза!
            includeSchema true // Добавление имени схемы в master.yaml. Необходимо для работы некоторых задач плагина.
            schemas 'schema1,schema2' // Список всех схем. Необходим только при генерации изначального master.yaml с помощью команды generateChangelog.
        }
    }
}

Выбор предметной области при запуске задач Liquibase

Чтобы определять требуемую предметную область требуется задавать ее имя через переменную runList. Для этого требуется добавить блок конфигурации вида:

liquibase {
    runList = project.ext.runList
}

и при выхове Gradle добавлять переменную -PrunList=AP_NAME с указанием интересующей предметной области или набора областей через запятую. Отсутствие явно заданной переменной интерпретируется как все предметные области сразу.

Какие задачи Liquibase можно использовать

Список задач Gradle доступен в секции liquibase Ознакомится с их назначением можно по ссылке. Например, для наката предметной области p1, описанной выше, требуется выполнить команду%

./gradlew update -PrunList=p1

Как разрабатывать

Monkey testing

Для ручного тестирование можно использовать тестовый проект test-project. Он подключает к себе данный плагин через композитный билд, пожтому откры именно этот проект в среде разработки вы получите удобное окружение. В остальном ориентируйтесь на официальные документы Gradle.

CI

Настройки

Для корректной работы CI требуется задать следующие переменные в настройках проекта `Settings - CI/CD - Variables.

Для Gradle:

  • PHOENIX_USER - Имя пользователя для чтения и публикации зависимостей в репозитории
  • PHOENIX_PASSWORD - Пароль для пользователя PHOENIX_USER
  • REPO_RESOLVE_RELEASE, REPO_RESOLVE_SNAPSHOT - Адрес со всеми зависимостями проекта и используемых при билде плагинами
  • REPO_PUBLISH_RELEASE, REPO_PUBLISH_SNAPSHOT - Адрес для публикации плагинов из проекта

Для CI:

  • SONAR_HOST_URL - Адрес SonarQube
  • SONAR_TOKEN - токен для взаимодействия с SonarQube
  • GITLAB_API_TOKEN - токен для взаимодействия с API Gitlab для данного проекта
  • MOUNT_BASE - адрес базовой директории, которую можно использовать как кэш. Не должен оканчиваться на слэш.

Релиз

Для создания релиза требуется обновить baseVersion в build.gradle и заполнить CHANGELOG.md, после чего пометить комит тэгом, соответствущим baseVersion. Помечать тэгом для релиза допускается только комиты в мастере или релизных ветках.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published