java - 为 docker 图像版本控制清理版本。星云释放

标签 java docker gradle jib

我有一个管道,可以在每次推送到我的 git 存储库中的特定分支时构建一个 Docker 镜像。问题是语义版本控制使用“+”字符来指定版本名称中的元数据部分。我需要将此字符替换为图像名称中 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

这是错误:

  • What went wrong: Execution failed for task ':jib'.

    com.google.cloud.tools.jib.image.InvalidImageReferenceException: Invalid image reference: 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")
    }
} 

我需要一些帮助。提前感谢您的宝贵时间。

最佳答案

由于构建脚本是代码并且看起来 jib 是一个扩展,project.version 是一个检索属性(与任务输出或生成的东西相比),你可以使用当前 cleanVersion 任务中的相同代码来配置扩展。

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

关于java - 为 docker 图像版本控制清理版本。星云释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55911366/

相关文章:

spring - Docker-compose从链接迁移到网络MongoDB数据库问题

android - Gradle 属性的 "USER_HOME"文件夹在哪里?

java - 如何在java中打印i-net Crystel Clear Report ex :(report. rpt)而不打开打印对话框博客

docker - 在Rootless模式下运行Docker时是否可以使用桥接网络?

Java反射: setting a final field isn't working

docker - 如何在 gitlab-ci docker executor 中使用 cuda

java - Mapstruct Annotation Processor 似乎不适用于带有 Gradle 项目的 Intellij

gradle - Gradle:无法获得项目的未知属性 'appName'

java - 从 JAVA 中的字符串(从 url 类型更改)中删除尾部斜杠

java - SimpleDateFormat.parse() 忽略模式中的字符数