我正在使用使用Groovy样式脚本编写的Jenkins脚本化管道,并创建了一个Jenkinsfile来描述管道。我需要使用与git repo name相同的文件夹名称创建工作区,然后在工作区文件夹中签出代码。我的问题是,在执行之前checkout scm,是否有办法知道git repo名称或git repo url?
checkout scm
String determineRepoName() { return scm.getUserRemoteConfigs()[0].getUrl().tokenize('/')[3].split("\\.")[0] }
这个相对丑陋的代码是我用来获取repoName的代码。关键是存储库的URL存储在:
scm.getUserRemoteConfigs()[0] .getUrl()
从那里,您需要执行一些字符串操作以获取所需的内容。
更新:
String determineRepoName() { return scm.getUserRemoteConfigs()[0].getUrl().tokenize('/').last().split("\\.")[0] }
这也适用于具有更深层次结构的存储库(https:// domain / project / subproject / repo或ssh git repo,它在开始时不包含两个//。