我正在使用位于我的 git 存储库中的 Jenkins 文件。 我已经使用 SCM 中指向我的
jenkinsfile
的管道脚本配置了新作业。我正在尝试在 Jenkins 文件管道脚本中使用 git 模块,以便从 git 存储库中提取数据,而无需配置预静态变量,而只是使用已配置的 SCM 管道脚本下的存储库 URL 的变量在我的工作中。
有一种方法可以以某种方式获取变量 Repository URL
来自此插件,而不在我的 Jenkins 管道脚本中使用参数。
我已经尝试过环境变量
GIT_URL
以及来自here的其他与git相关的东西,但这不起作用。
从这个post我找到了一种方法,你可以使用checkout scm来获取git repo url,如下所示:
checkout scm
def url = sh(returnStdout: true, script: 'git config remote.origin.url').trim()
但是 checkout scm 会提取代码,我想避免这种情况。
所以我找到了另一种方法(不是漂亮的方法):
node('master'){
try{
GIT_REPO_URL = null
command = "grep -oP '(?<=url>)[^<]+' /var/lib/jenkins/jobs/${JOB_NAME}/config.xml"
GIT_REPO_URL = sh(returnStdout: true, script: command).trim();
echo "Detected Git Repo URL: ${GIT_REPO_URL}"
}
catch(err){
throw err
error "Colud not find any Git repository for the job ${JOB_NAME}"
}
}
这对我有用。
可能不是直接适合您特定情况的解决方案,因为您正在使用 git。
SubversionSCM
使用 SVN 的人来说,可以使用 获取存储库 URL
def repositoryUrl = scm.locations[0].remote
env.GIT_URL
可用于访问用于获取 Jenkinsfile 的 git url。分行位于env.GIT_BRANCH
。
在这里工作:
checkout(
[
$class: 'GitSCM',
branches: [[name: env.GIT_BRANCH]],
doGenerateSubmoduleConfigurations: false,
submoduleCfg: [],
userRemoteConfigs: [[
credentialsId: 'XXX',
url: env.GIT_URL
]]
]
)