मेरे पास मेरा 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 प्लगइन GitFlow ब्रांचिंग रणनीति के आधार पर project.version को अपडेट करता है। publish कार्य gitflowsemver प्लगइन द्वारा अपडेट किए गए संस्करण तक पहुंचने में सक्षम है, लेकिन जब मैं jib का उपयोग करके डॉकर छवि बनाने का प्रयास करता हूं, तो यह छवि को अद्यतन संस्करण के साथ टैग नहीं करता है . इसे हमेशा unspecified के रूप में टैग किया जाता है। लेकिन अगर मैं लाइन version = '0.1.0' को अन-टिप्पणी करता हूं jib प्लगइन संस्करण लेने में सक्षम है। मैं समझ नहीं पा रहा हूं कि क्यों। किसी भी सहायताको बहुत सराहा जाएगा।

1
Rishabh 4 जिंदा 2020, 09:32

1 उत्तर

सबसे बढ़िया उत्तर

अपडेट: जिब 2.6.0 के पास अब jib.to.image और jib.to.tags के देर से मूल्यांकन के लिए समर्थन है। आप इन्हें project.provider का उपयोग करके कॉन्फ़िगर कर सकते हैं और इनका मूल्यांकन तभी किया जाएगा जब इनका उपयोग किया जाएगा।

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

जिब के पुराने संस्करणों के लिए आप पिछले उत्तर को आजमा सकते हैं:

Gitter.im/google/jib . पर चर्चा किए गए समाधान से

Gitsemver प्लगइन के कोड को देखते हुए आप देख सकते हैं कि यह प्रोजेक्ट के मूल्यांकन के बाद संस्करण को अपडेट करता है: https://github.com/OpenLimark/GitFlowSemVerPlugin/blob/develop/src/main/groovy/com/limark/ open/gradle/plugins/gitflowsemver/GitFlowSemVerPlugin.groovy#L51

तो आप क्या कर सकते हैं बस अपने टैग संस्करण को बाद के मूल्यांकन ब्लॉक में सेट करें और आप संस्करण को सही ढंग से उठाएंगे:

jib {
  ...
  to {
    image = 'rishabh9/jib-demo'
    project.afterEvaluate { // <-- so we evaluate version after it has been set
      tags = [version]
    }
  }
  ...
}
1
loosebazooka 9 अक्टूबर 2020, 21:12