Как я могу получить у Дженкинса? - PullRequest
0 голосов
/ 28 сентября 2018

Я интегрирую SonarQube в Jenkins.В настоящее время мы используем мелкие клоны, потому что наш репозиторий медленно клонируется, учитывая большие двоичные файлы в истории.SonarQube должен запустить git blame, который, очевидно, не работает на мелких клонах.Мне нужен обходной путь, но я не могу изменить глобальную конфигурацию Jenkins (это замедлит все сборки).

Ситуация:

checkout scm работает без аргументов.

sh 'git fetch --unshallow получает ошибку, поскольку у него нет учетных данных.

Я пробовал это чудовище, чтобы настроить аргументы для извлечения scm:

checkout scm: [
    $class: 'GitSCM', userRemoteConfigs: [
        [url: env.repoURL, credentialsId: 'GitHubEnterprise']
    ], extensions: [
        [$class: 'CheckoutOption', timeout: 60],
        [$class: 'CloneOption', noTags: true,
            reference: '/var/lib/gitchcache/reference.git',
            shallow: false, timeout: 60]
    ], branches: [
        [name: branch]
    ]
], remoteName: "origin", poll: false, clearWorkspace: true

Но я получаю эту ошибку:

> git rev-parse PR-42^{commit} # timeout=10

Couldn't find any revision to build. Verify the repository
and branch configuration for this job.

Похоже, что описанные проблемы связаны с неспособностью предоставить «Имя хранилища»:

Я пытался создать запрос на извлечение, и у него не было refspec для изменения.Я не знаю, почему это не могло быть выведено, но это не так.

Вот что сработало для решения этой первой части:

checkout scm: [$class: 'GitSCM',
               userRemoteConfigs: [
                       [url: env.GIT_URL,
                        refspec: "+refs/pull/${prNumber}/head:refs/remotes/origin/${branch}",
                        credentialsId: 'GitHubEnterprise']
               ],
               extensions: [
                       [$class: 'CloneOption',
                        shallow: false,
                        timeout: 60]
               ],
               branches: [
                       [name: branch]
               ]
]

Оформление заказа работает, сборка работает, но я все еще получаю поверхностный заказ ...

INFO: SCM provider for this project is: git
INFO: 1 files to be analyzed
WARN: Shallow clone detected, no blame information will be provided. You can convert to non-shallow with 'git fetch --unshallow'.
INFO: 0/1 files analyzed
WARN: Missing blame information for the following files:
WARN:   * src/main/java/com/example/Example.java

Вот что у меня есть в Project - GitHub Organization в конфигурации Jenkins: Advanced clone behaviours

Вот чтоЯ хочу для определенного шага сборки: checkout scm, но с мелким "непроверенным" в коде.

Как мне сделать git fetch --unshallow в Jenkins?

1 Ответ

0 голосов
/ 01 октября 2018

Это невозможно с плагином git jenkins начиная с версии git-4.0.0-beta3. Нет никакой поддержки или упоминания в источнике для параметра unshallow для git fetch.

Что вы можете сделать, это оставить опцию вашего плагина git jenkins как: сначала неглубоковыбирайте так, чтобы это было быстрее.

Тогда у вас есть несколько вариантов:

  • В оболочке execute для сборки вы можете запустить процедуру unshallow, используя git напрямую, а не через плагин.
  • Если это замедлит слишком много сборок, сделайте предварительный шаг, прежде чем SonarQube войдет в рабочую область и запустите процедуру unshallow.Это может быть сделано с помощью скрипта Groovy среди прочего.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...