3

I have my build.gradle setup as follows (listing only plugins for brevity)

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 = '[email protected]' } } scm { connection = 'scm:git:ssh://[email protected]:acme/my-app.git' developerConnection = 'scm:git:ssh://[email protected]:acme/my-app.git' url = 'https://bitbucket.org/acme/my-app' } } } } } signing { sign publishing.publications.mavenJava } 

The gitflowsemver plugin updates the project.version based on the GitFlow branching strategy. The publish task is able to access the version as updated by the gitflowsemver plugin, but when I try to build a docker image using jib, it does not tag the image with the updated version. It is always tagged as unspecified. But if I un-comment the line version = '0.1.0' the jib plugin is able to pick up the version. I am unable to understand why. Any help is highly appreciated.

1 Answer 1

4

Update: Jib 2.6.0 now has support for late evaluation of jib.to.image and jib.to.tags. You can configure these using project.provider and they will only be evaluated when they are used.

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

For older versions of jib you can try the previous answer:

From the solution discussed on gitter.im/google/jib

Looking into the code of the gitsemver plugin you can see that it updates the version after the project is evaluated: https://github.com/OpenLimark/GitFlowSemVerPlugin/blob/develop/src/main/groovy/com/limark/open/gradle/plugins/gitflowsemver/GitFlowSemVerPlugin.groovy#L51

So what you can do is just set your tag version in an afterEvaluate block and you'll correctly pick up the version:

jib { ... to { image = 'rishabh9/jib-demo' project.afterEvaluate { // <-- so we evaluate version after it has been set tags = [version] } } ... } 
Sign up to request clarification or add additional context in comments.

2 Comments

where does version come? Project version?
in case someone like me is wondering version as expected the project version

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.