Вы можете включить мелкий клон (без истории и только самая последняя фиксация) в объекте scm
перед извлечением:
node(nodeName) {
try {
deleteDir()
scm.extensions << [$class: 'CloneOption', shallow: true]
checkout(scm)
....
....
}
catch(Exception ex) {
throw ex
}
}
Однако я бы посоветовал вам настроить иподдерживать репозиторий ссылок, который работает на порядок быстрее:
В окне терминала клонируйте свой репозиторий в зеркало. Этот репозиторий будет содержать только объекты git:
$ git clone --mirror https://gitlab.com/../../supportforpc.git
Cloning into bare repository 'supportforpc.git'...
remote: Enumerating objects: 6578, done.
remote: Counting objects: 100% (6578/6578), done.
remote: Compressing objects: 100% (1561/1561), done.
remote: Total 739260 (delta 5791), reused 5046 (delta 5013), pack-reused 732682
Receiving objects: 100% (739260/739260), 3.49 GiB | 3.78 MiB/s, done.
Resolving deltas: 100% (562236/562236), done.
Создать новое задание в Jenkins для периодического обновления зеркального репозитория. При обновлении зеркала используйте только команду fetch
:
sh "git fetch --all --prune"
Скажите объекту scm
использовать репозиторий зеркала в качестве ссылки. Удаленный репозиторий запрашивает новые коммиты после прочтения ссылки, поэтому вам не нужно постоянно обновлять зеркало:
node(nodeName) {
try {
deleteDir()
scm.extensions << [$class: 'CloneOption', reference: "<your-server>:git/<where-you-put-the-mirror-repo>"]
checkout(scm)
....
....
}
catch(Exception ex) {
throw ex
}
}
После этогоПри установке вы увидите, что весь ваш репозиторий клонируется за считанные секунды, плюс вы можете сохранить всю историю репозитория. Вы можете протестировать клон для себя, если вы вручную клонировали из зеркального репозитория, созданного на шаге 1:
$ git clone <mirror-repository-directory> <some-dir>`
Cloning into '<some-dir>'...
done.
Checking out files: 100% (15055/15055), done.
Примечание относительно изменения объекта scm
по умолчанию: если вы предпочитаете не изменять егоВы можете создать новый объект для оформления заказа, как показано в этот ответ :
checkout([
$class: 'GitSCM',
branches: scm.branches,
doGenerateSubmoduleConfigurations: scm.doGenerateSubmoduleConfigurations,
extensions: scm.extensions + [$class: 'CloneOption', reference: "<your-server>:git/<where-you-put-the-mirror-repo>"],
userRemoteConfigs: scm.userRemoteConfigs
])