SVN checkout не получает последнюю версию - PullRequest
0 голосов
/ 23 мая 2019

У нас есть многоотраслевое конвейерное задание Jenkins.
Задание было ограничено, так что только один экземпляр (включая branches, tags, trunk) может быть запущен одновременно, так как им нужно обновитьконкретный файл revisions.db в определенном хранилище, которым они все делятся.

Проблема в том, что когда несколько экземпляров задания ставятся в очередь, они не извлекают последнюю версию revisions.db

Я нашел обходной путь, сначала извлеките хранилище.Затем вручную перейдите в папку и позвоните svn up.Тогда я получаю последнюю версию.

Я также попытался добавить таймер сна в конце Jenkinsfile (до снятия блокировки), чтобы убедиться, что это не так, потому что сервер SVN работал слишком медленно.Но это не помогло.

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

Мы специально не очищаем рабочее пространство.

Вот фрагмент кода Jenkinsfile:

lock(resource: 'Entire_Build'){
          checkoutSVN(false, 'paramdb', "https://someserver/svn/param/${BRANCH_NAME}", 'UpdateWithCleanUpdater')
          checkoutSVN(false, 'revision', "https://someserver/svn/revisions/test/trunk", 'CheckoutUpdater')          
          sh '''
          cd revision
          svn up
          cd .. '''
          // ...
        }

Функция извлечения - это просто оболочка, которую мы используем:


def checkoutSVN(Boolean ignoreExternalsOption, String local, String remote, String updater) {
    checkout([$class: 'SubversionSCM', 
        additionalCredentials: 
        [[credentialsId: 'someID', 
        realm: '<https://someserver/> CollabNet Subversion Repository']],
        excludedCommitMessages: '', 
        excludedRegions: '', 
        excludedRevprop: '', 
        excludedUsers: '', 
        filterChangelog: false, 
        ignoreDirPropChanges: false, 
        includedRegions: '', 
        locations: [[credentialsId: 'someID', 
        depthOption: 'infinity', 
        ignoreExternalsOption: ignoreExternalsOption, 
        local: local, 
        remote: remote]], 
        quietOperation: false,
        workspaceUpdater: [$class: updater]])
}

При запуске Jenkinsfile выдает следующий вывод:

15:13:58  Checking out https://someserver/svn/revisions/test/trunk at revision '2019-05-23T15:13:49.973 +0200'
15:13:59  A         revisions.db
15:13:59  At revision 8511

15:14:04  + cd revision
15:14:04  + svn up
15:14:04  Updating '.':
15:14:04  At revision 8512.

Как вы ясно видите, извлечение относится к ревизии 8511, но при вызове svn upмы получаем ревизию 8512

Почему это происходит?Я ожидаю, что касса будет последней ревизии.Особенно когда вызывается с CheckoutUpdater

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