Обеззараживание версии для управления версиями образа докера. 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('+', '_')}"