Обеззараживание версии для управления версиями образа докера. nebula.release - PullRequest
3 голосов
/ 30 апреля 2019

У меня есть конвейер для создания образа 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 Ответ

1 голос
/ 30 апреля 2019

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

image = "registry.gitlab.com.uy:5005/project/app:${version.toString().replace('+', '_')}"
...