Получить сборку git commit для другой работы - PullRequest
0 голосов
/ 01 июня 2018

Как можно получить хэш git commit некоторых других сборок заданий из другого задания, используя конвейер?Я ищу что-то вроде:

Jenkins.instance.getAllItems(hudson.model.Job)
     .filter { it.fullName.equals(params.theOtherJobNameSpecifiedViaParamByTheUser)[0]
     .getBuild(params.buildNoSpecifiedViaParamByTheUser)
     .getGitCommitHashOfTheSelectedBuild()

1 Ответ

0 голосов
/ 01 июня 2018

Вы можете использовать API для Jenkins либо через XML, либо через JSON.

Сначала получите нужный URL:

XML: https://JENKINS-HOST / jenkins / job / ИМЯ РАБОТЫ / job / JOB-ФИЛИАЛ / BUILD-NUMBER / api / xml

JSON: https://JENKINS -HOST /jenkins / job / NOB-NAME / job / JOB-BRANCH / BUILD-NUMBER / api / json

Затем проанализируйте вывод.Я склонен использовать XPATH для xml, а также использовать shell.

def generate_xpath_url (URL, BRANCH) {
  branch = params.BRANCH_NAME
  jenkins_job_url = params.OTHER_JENKINS_JOB_URL
  remote_name = parse_git_remote_name(URL);
  url = other_jenkins_job_url + 'lastSuccessfulBuild/api/xml?xpath=//refsremotes' + remote_name + branch + '/marked/SHA1'
  return url
}

...

lastBuildCommitUrl = generate_xpath_url(env.GIT_URL, env.GIT_BRANCH)
lastBuildNumberUrl = env.JOB_URL + 'lastSuccessfulBuild/buildNumber'
withCredentials([[$class: 'UsernamePasswordMultiBinding',
    credentialsId: 'SomeJenkinsNonUser',
    usernameVariable: 'JENKINS_API_USER',
    passwordVariable: 'JENKINS_API_PSW']])
{
    lastBuildCommit = sh " curl -sLu ${JENKINS_API_USER}:${JENKINS_API_PSW} \"${lastBuildCommitUrl}\" | sed -e 's/<[^>]*>//g' """)
    lastBuildNumber = sh([script:"curl -sLu ${JENKINS_API_USER}:${JENKINS_API_PSW} \"${lastBuildNumberUrl}\"", returnStdout: true]).trim();
}

Приведенный выше код предполагает, что вы можете получить git url для репозитория, git-ветку нужного вам репозитория, URL-адрес заданиядля "другой работы jenkins", которую вы хотите, а также что у вас есть неиспользуемый идентификатор с маркером API, который вы можете использовать для доступа к API jenkins изнутри jenkins.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...