В прошлой статье был предложен вариант для создания docker образов БД для последующего использования в разработке и тестирования приложений в пайплайнах гитлаба.
Из-за перехода на новую инфрастуктуру k8s 1.30 (restricted psp) и новый гитлаб 17.3 все это ломается. Поэтому придется исправлять ситуацию!
Почему от buildah придется отказаться
Собирать надо от пользователя build , но по каким-то причинам в новом gitlab-runner все будет заканчиваться ошибкой remount / failed. Исправить это оказалось нереально, выдавать привилегированные права нельзя. Учитывая, что создаваемый образ для БД простой — не нужно выполнять никаких сложных операций, то проще выкинуть зависимость и искать другое решение.
Jib-core
Скорее всего в вашей команде уже используют для контейнеризации java приложений плагин для maven или gradle под названием jib. Данный плагин настолько преисполнился в познании вселенной, что предоставляет свое апи для написания собственных плагинов.
Для генерации нужно только создать простую таску для gradle:
getLogger().info("Generating image {} from {}", getTargetImageName().get(), getBaseImage().get()); var image = Jib.from(getBaseImage().get()) .addLayer(getSqlFiles().get(), AbsoluteUnixPath.get("/docker-entrypoint-initdb.d/")) .containerize(Containerizer.to(RegistryImage.named(getTargetImageName().get()) .addCredential(getRegistryUsername().get(), getRegistryPassword().get()))) .getTargetImage(); if (Boolean.TRUE.equals(getTargetImageIsLatest().get())) { Jib.from(image) .containerize(Containerizer.to(RegistryImage.named(replaceWithLatestVersion(getTargetImageName().get())) .addCredential(getRegistryUsername().get(), getRegistryPassword().get()))); }
А так как в проекте mireapay используется liquibase, то весь функционал по конфигурированию был выведен в плагин для gradle.
Теперь, что бы использовать все необходимое нужно только выполнить 3 пункта:
-
Создать файл changelog.xml в корне проекта;
-
Добавить .gitlab-ci.yml:
include: - project: 'mireapay/devops/pipeline' ref: 'v1.1' file: - 'gradle/liquibase/validate/default.yaml' - 'gradle/liquibase/image/default.yaml' - 'gradle/liquibase/release/default.yaml' - 'gradle/liquibase/deploy/local-dev/clearing.yaml' stages: - validate - release - image - deploy
-
Настроить работу плагина для градла:
plugins { id 'com.lastrix.mps.database.liquibase' version "0.0.9" } group 'com.lastrix.mps.clearing.core' databaseLiquibase { defaultSchema = System.getProperty('db.schema') ?: "clearing_core" }
Пример использования тут.
Пайплайны можно найти тут . Рекомендую собрать агента для начала, для вашего проекта нужно будет заменить gitlab.local в файлах на ваш хост.
Для работодателей
Работодатель, поспеши завести себе Java-кота в команду! Мышей не ловит, но зато пишет Java-код, а еще проектирует немножко.
https://hh.ru/resume/b33504daff020c31070039ed1f77794a774336
И не забываем:
ссылка на оригинал статьи https://habr.com/ru/articles/846172/
Добавить комментарий