in jenkins-pipeline-shared-libraries/vars/githubscm.groovy [428:455]
def getForkedProjectName(String group, String repository, String owner, String credentialsId = 'kie-ci1-token', int page = 1, int perPage = 100, replays = 3) {
if (group == owner) {
return repository
}
def result = null
withCredentials([string(credentialsId: credentialsId, variable: 'OAUTHTOKEN')]) {
def forkedProjects = null
def curlResult = sh(returnStdout: true, script: "curl -H \"Authorization: token ${OAUTHTOKEN}\" 'https://api.github.com/repos/${group}/${repository}/forks?per_page=${perPage}&page=${page}'")?.trim()
if (curlResult) {
forkedProjects = readJSON text: curlResult
}
if (result == null && forkedProjects != null && forkedProjects.size() > 0) {
try {
def forkedProject = forkedProjects.find { it.owner.login == owner }
result = forkedProject ? forkedProject.name : getForkedProjectName(group, repository, owner, credentialsId, ++page, perPage)
} catch (MissingPropertyException e) {
if (--replays <= 0) {
throw new Exception("Error getting forked project name for ${group}/${repository}/forks?per_page=${perPage}&page=${page}. Communication error, please relaunch job.")
} else {
println("[ERROR] Getting forked project name for ${group}/${repository}/forks?per_page=${perPage}&page=${page}. Replaying... [${replays}]")
result = getForkedProjectName(group, repository, owner, credentialsId, page, perPage, replays)
}
}
}
}
return result
}