Jenkinsfile: разреженная проверка не оставляет записи в рабочем каталоге
Я пишу конвейер Jenkins. Сначала он проверяется из репозитория A, а затем должен создавать и тестировать код. Но для этого мне нужен определенный каталог из другого репозитория (репо B). Итак, у меня есть первый этап проверки конвейера ([$class: 'GitSCM'] и так далее), который клонирует из репо A, а затем второй, который клонирует из репо B. Потому что мне нужна только текущая версия этого конкретного каталога репо. B, я думал, что комбинация мелкого клона и разреженной проверки - это то, что мне нужно.
В моем файле Jenkins у меня есть следующие варианты проверки из репо B:
extensions: [[$class: 'CleanBeforeCheckout'], [$class: 'CloneOption', shallow: true], [$class: 'SparseCheckoutPaths', sparseCheckoutPaths: [[ path: '<directory>/*']]]
Задание отлично работает без опции разреженной проверки.
Используя эту опцию, я получаю два сбивающих с толку сообщения об ошибке, оба с одинаковым номером:
Command "git read-tree -mu HEAD" returned status code 128:
stdout:
stderr: error: Sparse checkout leaves no entry on working directory
hudson.plugins.git.GitException: Command "git checkout -f 89ab1797242776520bc708122bbf948ab8887c16" returned status code 128:
stdout:
stderr: error: Entry 'Jenkinsfile' not uptodate. Cannot update sparse checkout.
В чем проблема? Какая ошибка "правильная"? Что-то не современное? Может ли sparse checkout не проверить последнюю версию, даже если ей около 100 лет?
ОБНОВЛЕНИЕ 1: Я просто попробовал следующее: Добавил новую работу в Jenkins на основе неудачной. Прогнал. Я подумал, что если это ошибка из-за более ранних проверок, она не должна возникать в чистой рабочей области. Но это не удалось с теми же сообщениями об ошибках.
ОБНОВЛЕНИЕ: изменив имена файлов, я подтвердил, что файл, который не должен быть обновленным, действительно является файлом, содержащим мой работающий конвейер. Мне кажется, что этот файл был изменен после проверки Дженкинсом. Это помешает Jenkins git проверять больше, потому что вы можете войти только в чистое рабочее пространство.
Если это так, что могло вызвать фантомное обновление? Я использую Windows, поэтому я просто обвинил это в раздражающей проблеме \r\n. Но я заставил свой локальный git зафиксировать \ n окончания строки (установив core.autocrlf на input), изменил окончания строк в этом файле, зафиксировал его и запустил задание. Результат все тот же.