wie man repo-Namen in Jenkins pipeline
Ich bin mit Jenkins Scripted-Pipeline, nutzt die Groovy-style-Skripts und erstellt eine Jenkinsfile zu beschreiben, die pipeline. Ich brauche zum erstellen des Arbeitsbereichs mit dem Namen des Ordners identisch git repo-name, und dann Kasse den code in das workspace-Ordner.
Meine Frage ist, bevor Sie die checkout scm
gibt es eine Möglichkeit zu wissen, das git-repo Namen oder das git-repo url?
- Nur eine kurze Klarstellung, von Jenkins scripted-pipeline du meinst die Jenkinsfile codiert in Jenkins pipeline definition oder Jenkinsfile aus dem SCM?
- Es gibt die
scm
Variablen, die möglicherweise einige Informationen über, die. Sie müssen erstellen Sie den workspace-Ordner fühlt sich ein bisschen seltsam für mich. - Ich habe die Jenkinsfile gespeichert in der repo.
- Ich brauche den workspace-Ordner in einer bestimmten Reihenfolge, da Go (golang) hat spezifische Konvention, die ich brauche, um zu Folgen, inorder für die Abhängigkeiten richtig zu arbeiten.
- Möglich, Duplikat der Wie man scm url im build-Skript für jenkins Zweigstellen der workflow-Projekt
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese relativ hässlichen code ist, was ich verwenden, um die repoName. Der Schlüssel ist, dass die URL des repo ist gespeichert in:
von dort aus müssen Sie zu tun, einige string-ops zu bekommen, was Sie wollen.
Update:
Dies funktioniert auch für Repositorys, die mit einem tieferen Hierarchie (https://domain/project/subproject/repo oder ssh git-repo, die nicht enthalten die zwei //am Anfang.
org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Scripts not permitted to use method hudson.plugins.git.GitSCM getUserRemoteConfigs
.tokenize('/.')[-2]
scheint das gleiche Ergebnis zu erhalten prägnanter.String determineRepoName() { return scm.getUserRemoteConfigs()[0].getUrl().tokenize('/').last().split("\\.git")[0] }
im Fall, dass Ihre repository-name enthält Punkte