gpt4 book ai didi

java - Jib 插件无法访问由另一个 Gradle 插件更新的 project.version

转载 作者:行者123 更新时间:2023-12-01 19:04:08 25 4
gpt4 key购买 nike

我的 build.gradle 设置如下(为简洁起见,仅列出插件)

plugins {
id 'java'
id 'maven-publish'
id 'signing'
id 'org.springframework.boot' version '2.2.2.RELEASE'
id 'io.spring.dependency-management' version '1.0.8.RELEASE'
id 'com.limark.gitflowsemver' version '0.3.1'
id 'com.google.cloud.tools.jib' version '1.8.0'
}
...
group = 'com.app.my'
// The below line remains commented
// version = '0.1.0'
...

jib {
from {
image = 'azul/zulu-openjdk-alpine:11-jre'
}
to {
image = 'aws_account_id.dkr.ecr.region.amazonaws.com/my-app'
tags = [version]
}
container {
format = 'OCI'
}
}

publishing {
repositories {
maven {
def releasesRepoUrl = "http://localhost:8081/repository/maven-releases/"
def snapshotsRepoUrl = "http://localhost:8081/repository/maven-snapshots/"
url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
credentials {
username nexusUsername
password nexusPassword
}
}
}
publications {
mavenJava(MavenPublication) {
artifactId = 'my-app'
from components.java
pom {
name = 'My App'
description = 'My App'
url = 'https://my-app.com'
developers {
developer {
id = 'john'
name = 'John Doe'
email = 'an.emaill@address.here'
}
}
scm {
connection = 'scm:git:ssh://git@bitbucket.org:acme/my-app.git'
developerConnection = 'scm:git:ssh://git@bitbucket.org:acme/my-app.git'
url = 'https://bitbucket.org/acme/my-app'
}
}
}
}
}

signing {
sign publishing.publications.mavenJava
}

gitflowsemver plugin根据 GitFlow 分支策略更新 project.versionpublish 任务能够访问由 gitflowsemver 插件更新的版本,但是当我尝试使用 jib 构建 docker 镜像时,它不使用更新版本标记图像。它始终被标记为未指定。但是,如果我取消注释 version = '0.1.0' 行,jib 插件就能够获取该版本。我无法理解为什么。非常感谢任何帮助。

最佳答案

更新:Jib 2.6.0 现在支持 jib.to.imagejib.to.tags 的后期评估。您可以使用 project.provider 配置它们,并且它们仅在使用时才会被评估。

jib {
...
to {
image = 'rishabh9/jib-demo'
tags = project.provider{[version]}
}
...
}
<小时/>

对于旧版本的jib,您可以尝试之前的答案:

来自 gitter.im/google/jib 上讨论的解决方案

查看 gitsemver 插件的代码,您可以看到它在项目评估后更新了版本:https://github.com/OpenLimark/GitFlowSemVerPlugin/blob/develop/src/main/groovy/com/limark/open/gradle/plugins/gitflowsemver/GitFlowSemVerPlugin.groovy#L51

因此,您只需在 afterEvaluate block 中设置标记版本即可正确获取版本:

jib {
...
to {
image = 'rishabh9/jib-demo'
project.afterEvaluate { // <-- so we evaluate version after it has been set
tags = [version]
}
}
...
}

关于java - Jib 插件无法访问由另一个 Gradle 插件更新的 project.version,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59588495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com