Extrahieren ID version aus POM in einem Jenkins-pipeline
Habe ich angelegt, eine pipeline und über die eingebetteten groovy-pipeline Skript-definition und kann nicht scheinen, um die version, die ID des Projekts von der POM. Ich habe versucht, die Werke in einem groovy-Konsole, aber auf dem Jenkins build-pipeline Skript:
def project = new XmlSlurper().parse(new File("pom.xml"))
def pomv = project.version.toString()
Gemäß der Dokumentation Jenkins hat eine $POM_VERSION
aber der Wert nicht in es nichts, wenn ich es einer Variablen zuweisen und echo aus.
def pomv = "$POM_VERSION"
ODER
def pomv = '$POM_VERSION"
- Möglich, Duplikat der Erste Projekt-Version aus dem Maven-POM in Jenkins
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
readMavenPom
wie diese:Sehen Modell Referenz für die Eigenschaften (wie die obige version).
Damit dies funktioniert, muss man installieren Pipeline-Dienstprogramm Schritte plugin
In Jenkins 2.138.3 es gibt zwei verschiedene Arten von Rohrleitungen.
Deklarative und Scripted-pipelines.
"Deklarative Rohrleitungen ist eine neue Erweiterung der pipeline-DSL (es ist im Grunde ein pipeline-Skript mit nur einem Schritt, ein pipeline-Schritt mit Argumenten (sogenannte Richtlinien) diese Richtlinien sollten Folgen einer bestimmten syntax. Der Punkt dieses neuen formats ist, dass es mehr strenge, und deshalb sollte es einfacher sein für diejenigen, die neu in die Rohrleitungen ermöglichen für die grafische Bearbeitung und vieles mehr.
scripted-pipelines ist der fallback für erweiterte Anforderungen."
jenkins pipeline: agent vs-Knoten?
Hier ist ein Beispiel für eine Deklarative Pipeline:
Beispiel von Scripted-Pipeline
Hier sind einige gute links:
Deklarative
https://github.com/jenkinsci/pipeline-examples/blob/master/declarative-examples/jenkinsfile-examples/mavenDocker.groovy
Scripted
https://bulldogjob.com/articles/726-exploring-jenkins-pipelines-a-simple-delivery-flow
Den Erste Schritte mit Pipeline Seite zeigte sich noch eine andere option. Es funktioniert ohne zusätzliche plugins.
Eine etwas stabilere version kann gefunden werden in der gemeinsamen Bibliothek ces-bauen-lib (es hat auch einige grundlegende unit-tests):
Diese immer mit der ersten
<version>
tag finden Sie in derpom.xml
. Diese sollte die version des maven-Modul oder seine Eltern in den meisten Fällen.Können Sie versuchen
readMavenPom
Funktion, die verfügbar ist.Mehr info ist hier: https://jenkins.io/doc/pipeline/steps/pipeline-utility-steps/#readmavenpom-read-a-maven-project-file
Scheint, wie
readMavenPom
ist die straight-forward beantworten, aber da es erforderlich ist die installation eines zusätzlichen pipeline-plugin, hier ist eine andere, verwendet die native maven-Ansatz statt laden von xml-Daten (basierend auf diese Antwort)Wegen der Verwendung von
grep
dieser Befehl funktioniert vielleicht nicht auf einigen Plattformen, die nicht posix-kompatibel, aber man kann immer wird der output in Groovy statt Rohrleitungen durchgrep
.Ich habe gerade die verstärkte @haridsv Lösung ohne Verwendung von grep:
Solltest du besser nicht verwenden readMavenPom, da es veraltet ist ( siehe PR https://github.com/jenkinsci/pipeline-utility-steps-plugin/pull/47/commits/eeebaa891a006c083ce10f883b7c1264533bb692 ). Sie können kopieren und fügen Sie diesen in eine Datei wie evaluateMavenPomVersion.groovy 🙂
Ich in der Regel verwenden Sie die Karte, um dies zu tun.
Ich bin gerade erst mit
Jenkisfile
und ich hatte das gleiche problem wie du. DaXmlSlurper
undXmlParser
verboten sind Standard-Konfiguration, die ich haben crated unten-Funktion zum extrahieren von maven version:Habe ich getestet, diese Lösung gegen die Dateien, in denen Eltern erklärt wurde, die version war die erste Anweisung, die version war die Letzte Anweisung und bei Anwesenheit der version in verschachtelten tags wie
dependency
,plugin
etc.