Как сделать редкие проверки и обновления из SVN на Jenkins? - PullRequest
0 голосов
/ 06 мая 2019

У нас большой репозиторий SVN, и я хотел бы сделать небольшую проверку Дженкинса. Я понимаю концепцию редких проверок и, имея ее на месте, я могу заставить вещи работать так, как мне хотелось бы. Однако, когда я что-то делаю на Дженкинсе и выполняю его постоянно, я не могу приступить к работе.

У меня есть структура репо следующим образом

trunk\file.txt
trunk\FolderA
trunk\FolderB
trunk\FolderC
trunk\FolderD

Я бы хотел оформить заказ и обновить

trunk\file.txt
trunk\FolderA
trunk\FolderB

но НЕ

trunk\FolderC
trunk\FolderD

Мой код конвейера выглядит следующим образом

checkout([$class: 'SubversionSCM', 
    additionalCredentials: [[credentialsId: strCredentialsId, realm: strRealm]],
    excludedCommitMessages: '', 
    excludedRegions: '', 
    excludedRevprop: '', 
    excludedUsers: '', filterChangelog: false, 
    ignoreDirPropChanges: false, 
    includedRegions: '', 
    locations: [
        [
            remote: "${strRepoPath}/trunk",
            local: "${softwarePath}", 
            depthOption: 'unknown', 
            credentialsId: strCredentialsId,
            cancelProcessOnExternalsFail: true, 
            ignoreExternalsOption: false
        ],
        [
            remote: "${strRepoPath}/trunk/FolderA",
            local: "${softwarePath}/FolderA", 
            depthOption: 'infinity', 
            credentialsId: strCredentialsId, 
            cancelProcessOnExternalsFail: true, 
            ignoreExternalsOption: false
        ],
        [
            remote: "${strRepoPath}/trunk/FolderB",
            local: "${softwarePath}/FolderB", 
            depthOption: 'infinity', 
            credentialsId: strCredentialsId, 
            cancelProcessOnExternalsFail: true, 
            ignoreExternalsOption: false
        ]
    ],
    quietOperation: false, 
    workspaceUpdater: [$class: 'UpdateWithCleanUpdater']])

Всякий раз, когда я запускаю этот код в первый раз, все выглядит так, как ожидалось. Однако, когда Jenkins запускает его в следующий раз, UpdateWithCleanUpdater приводит к тому, что FolderA и FolderB сначала удаляются, а затем извлекаются снова. Результат по-прежнему верен, однако, это займет гораздо больше времени, чем я бы хотел, и дольше, чем необходимо.

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

Есть ли какое-то решение для этого с помощью плагина Jenkins SVN? Как мне сделать это «вручную», то есть выполнить проверку в первый раз, очистить и обновить только в следующий раз, и при этом выполнять автоматические запуски Jenkins на основе обнаружения изменений в репозитории SVN?

Заранее спасибо!

1 Ответ

0 голосов
/ 06 мая 2019

Теперь , что - очень узкая проблема.Я бы сказал, что либо вы замените UpdateWithCleanUpdater на ручной скрипт (вызывая ваш локальный клиент SVN; некоторые примеры здесь );или вы могли бы раскошелиться или внести свой вклад в плагин Jenkins SVN .

...