Я интегрирую 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:
Вот чтоЯ хочу для определенного шага сборки: checkout scm
, но с мелким "непроверенным" в коде.
Как мне сделать git fetch --unshallow в Jenkins?