清理docker图像版本控制的版本。 nebula.release

问题描述 投票:3回答:1

我有一个管道来在每次推送到我的git存储库中的特定分支时构建一个Docker镜像。问题是语义版本控制使用“+”字符来指定版本名称中的元数据部分。我需要在图像名称中将此char替换为Docker支持的另一个char。有什么方法可以替换该字符或使用自定义版本名称?

我正在使用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 + 108d18

我在build.gradle文件中创建了这个任务,有没有办法重用它?

task cleanVersion {

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

我可以使用一些帮助。在此先感谢您的时间。

java docker gradle jib
1个回答
1
投票

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

image = "registry.gitlab.com.uy:5005/project/app:${version.toString().replace('+', '_')}"
© www.soinside.com 2019 - 2024. All rights reserved.