无法在 Gradle 扩展中使用自定义变量
Unable to use custom variables in Gradle extension
我正在使用 JIB(不是超级相关)并且我想在我的部署脚本中从命令行传递变量。
我在 gradle 命令中附加了 -PinputTag=${DOCKER_TAG} -PbuildEnv=nonprod
,这很酷。但是当它丢失时,我希望那个三元组起作用。
我遇到错误:
Could not get unknown property 'inputTag' for project ':webserver' of type org.gradle.api.Project.
def inputTag = inputTag ?: 'latest'
def buildEnv = buildEnv ?: 'nonprod'
jib {
container {
mainClass = 'com.example.hi'
}
to {
image = 'image/cool-image'
tags = ['latest', inputTag]
}
container {
creationTime = 'USE_CURRENT_TIMESTAMP'
ports = ['8080']
jvmFlags = ['-Dspring.profiles.active=' + buildEnv]
}
}
找到解决方案
def inputTag = project.hasProperty('inputTag') ? project.property('inputTag') : 'latest'
def buildEnv = project.hasProperty('buildEnv') ? project.property('buildEnv') : 'nonprod'
这似乎行得通,这是最好的方法吗?
这个怎么样?
image = 'image/cool-image:' + (project.findProperty('inputTag') ?: 'latest')
注意 jib.to.tags
是 附加的 标签。 jib.to.image = 'image/cool-image'
已经暗示了 image/cool-image:latest
,因此无需在 jib.to.tags
.
中复制 latest
我正在使用 JIB(不是超级相关)并且我想在我的部署脚本中从命令行传递变量。
我在 gradle 命令中附加了 -PinputTag=${DOCKER_TAG} -PbuildEnv=nonprod
,这很酷。但是当它丢失时,我希望那个三元组起作用。
我遇到错误:
Could not get unknown property 'inputTag' for project ':webserver' of type org.gradle.api.Project.
def inputTag = inputTag ?: 'latest'
def buildEnv = buildEnv ?: 'nonprod'
jib {
container {
mainClass = 'com.example.hi'
}
to {
image = 'image/cool-image'
tags = ['latest', inputTag]
}
container {
creationTime = 'USE_CURRENT_TIMESTAMP'
ports = ['8080']
jvmFlags = ['-Dspring.profiles.active=' + buildEnv]
}
}
找到解决方案
def inputTag = project.hasProperty('inputTag') ? project.property('inputTag') : 'latest'
def buildEnv = project.hasProperty('buildEnv') ? project.property('buildEnv') : 'nonprod'
这似乎行得通,这是最好的方法吗?
这个怎么样?
image = 'image/cool-image:' + (project.findProperty('inputTag') ?: 'latest')
注意 jib.to.tags
是 附加的 标签。 jib.to.image = 'image/cool-image'
已经暗示了 image/cool-image:latest
,因此无需在 jib.to.tags
.
latest