Уже несколько дней у моего командного CI-сервера (Jenkins 2.7.72 - неизменяемый) возникают проблемы с выполнением команд git, требующих аутентификации (например, clone
) через сценарий оболочки в конвейере jenkins.
ВклСервер GIT-учетные данные хранятся в файле .git-credential
.Когда я пытаюсь клонировать репозиторий в стандартной командной строке Linux, он работает нормально, и меня не спрашивают учетные данные.Таким образом, учетные данные и конфигурация сервера / сети кажутся нормальными.
Если я запускаю ту же команду в конвейере jenkins, она завершается неудачно с
stage('Clone') {
log.info 'Clone repository..'
sh 'git clone https://org.internal.host.de/scm/git/path/to/Repositoryname'
}
[workspace] Running shell script
+ git clone https://org.internal.host.de/scm/git/path/to/Repositoryname
Cloning into 'Repositoryname'...
fatal: could not read Username for 'https://org.internal.host.de': No such device or address
В соответствии с другими SO-потоками это означает, чтоСценарий не может получить доступ к файлу хранилища.К сожалению, большинство потоков в сочетании с Github, что не так для нас.Мы используем внутренние серверы организации для CI и GIT.
При использовании встроенных учетных данных jenkins (например, с помощью SharedLib или клонирования репозитория с помощью плагина GIT) это работает нормально - еще один совет, который заставляет меня думать, чтоpipleline больше не может получить доступ к файлу git-credentials.
Был ли изменен CI-сервер?Я не знаю.Моя команда и я не изменили конфигурацию.Если сетевые администраторы изменили бы то, что они не говорят, но, поскольку клонирование само по себе работает, я не думаю, что это какая-либо проблема.Единственное «видимое» отличие состоит в том, что ноябрь ушел, а декабрь наступил ... 30 ноября работа все еще работала нормально, но на следующем запуске 3 декабря она провалилась.
Есть предложения?
edit: После ответа Rich Duncan я опубликую второй пример, чтобы прояснить мою проблему
Мой конвейер клонирует репозиторий с помощью git-pipeline-plugin.После этого я хочу выполнять GIT-команды вручную, например fetch
.
stage('Clone') {
log.info 'Clone repository..'
git(
branch: 'master',
credentialsId: 'myGitCredentials',
url: 'https://org.internal.host.de/scm/git/path/to/Repositoryname'
)
// Fetch all Tags
sh 'git fetch --all --tags --prune'
}
Поскольку команда git на шаге оболочки (sh 'git fetch ...'
) требует учетных данных, я сохранил учетные данные в git-credentials-хранить.Еще несколько дней назад это работало нормально.Теперь он разрывается, так как конвейер не может прочитать имя пользователя для хоста.