Обеззараживание версии для управления версиями образа докера. nebula.release

У меня есть конвейер для создания образа Docker при каждом нажатии определенных веток в моем git-репозитории. Проблема заключается в том, что семантическое управление версиями использует символ "+" для указания раздела метаданных в имени версии. Мне нужно заменить этот символ на другой, поддерживаемый Docker в имени изображения. Есть ли способ заменить этот символ или использовать собственное имя версии?

Я использую nebula.release для вывода версии проекта.

id 'nebula.release' version '10.1.1'

jib {
    to {
        image = "registry.gitlab.com.uy:5005/project/app:$version"
        auth {
            username = System.getenv('CI_REGISTRY_USER')
            password = System.getenv('CI_REGISTRY_PASSWORD')
        }
        tags = ['latest']
    }
    container {
        ports = ['8080']
        environment = [
                SPRING_OUTPUT_ANSI_ENABLED: 'ALWAYS',
        ]
        useCurrentTimestamp = true
    }
    allowInsecureRegistries = true
}

jibDockerBuild.dependsOn bootJar

Это ошибка:

  • Что пошло не так: выполнение задачи "jib" не удалось.

    com.google.cloud.tools.jib.image.InvalidImageReferenceException: недействительная ссылка на изображение: registry.gitlab.com.uy:5005/project/app:1.0.0-rc.1.dev.0+108db18

Я создал эту задачу в своем файле build.gradle. Есть ли способ использовать ее повторно?

task cleanVersion {

    ext.sanitizeVersion = { version ->
        return version.toString().replace('+', '_')
    }
    doLast {
        println sanitizeVersion("$version")
    }
} 

Я мог бы использовать некоторую помощь. Спасибо заранее за ваше время.

1 ответ

Решение

Поскольку сценарии сборки представляют собой код и выглядит jib это расширение, project.version является поисковым свойством (по сравнению с выводом задачи или чем-то сгенерированным), вы можете использовать тот же код, что и в текущем cleanVersion Задача настроить расширение.

image = "registry.gitlab.com.uy:5005/project/app:${version.toString().replace('+', '_')}"
Другие вопросы по тегам