使用 docker 插件 JIB 按环境进行 gradle 任务

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

我在 build.gradle 文件中设置了 2 个 gradle 任务,每个任务针对一个环境(例如 DEV 和 PROD)。

plugins {
   id "com.google.cloud.tools.jib" version "2.4.0"
}

version = 0.1
group = my.company

jib {
    from {
        image = "openjdk:14-slim"
    }
    to {
        image = "my-registry.some-provider.com/my-app"
        tags = [version, 'latest']
    }
    container {
        mainClass = "${group}.Application"
        jvmFlags = ["-Xms${findProperty('MEMORY')?:'256'}m", '-Xdebug']
        ports = ['80']
        volumes = ['/data']
        environment = [
            'VERSION': version
            'DATA_DIR': '/data',
            'APPLICATION_PORT' : '80',
            'DEVELOPMENT_MODE' : 'false'
        ]
    }
}

task prodtask(type: sometask!) { } 

task devtask(type: sometask2) { } 

我使用 gradlew 命令在命令行中运行这些任务,

./gradlew i devtask (in DEV) and 
./gradlew i prodtask (in PROD) 

如何使用使用 JIB 插件构建的 docker 镜像在开发和生产环境中分别运行这两个任务?

docker gradle gradle-plugin gradlew jib
1个回答
0
投票

我不太明白

jib
dev
/
prod
环境之间的区别,但您可以简单地添加一个 gradle
env
属性,并根据该值动态选择要执行的操作,例如在 gradle kts 脚本中:

...
val env: String by project
when (env) {
  "dev" -> tasks.register<Task>("sometask") {
      doLast { println("hello") }
      dependsOn("jib")
    }
  "prod" -> tasks.register<Task>("sometask2") {
      doLast { println("world") }
      dependsOn("jib")
    }
  else -> throw RuntimeException("Unknown env")
} 
...
© www.soinside.com 2019 - 2024. All rights reserved.