Назад | Перейти на главную страницу

Как изменить плагин Jenkins Git с использования GIT_ASKPASS на .gitcredentials

Я уже разместил этот вопрос:

Дженкинс не может прочитать пароль Github после обновления до клиентского плагина Git 2.1.0

Короче говоря, я клонировал свой производственный экземпляр Jenkins 1.650 и обновил клонированный экземпляр до 2.25 в Windows 2012.

В рамках этого плагин Git Client был обновлен с 1.19.6 до 2.1.0, и теперь он не может аутентифицироваться.

У меня есть задания, которые отлично выполняются, если я снова отключаю этот плагин, но при запуске их с использованием обновленного плагина задания не выполняются.

Теперь я заметил, что единственное различие, которое я вижу, заключается в том, что в выводе задания в экземпляре, где оно работает, есть сообщение using .gitcredentials to set credentials и на клонированном экземпляре using GIT_ASKPASS to set credentials.

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

08:18:40 Cloning the remote Git repository
08:18:40 Cloning repository https://github.com/mycompany/myrepo.git
08:18:40  > C:\Program Files\Git\cmd\git.exe init C:\Program Files (x86)\Jenkins\workspace\project # timeout=10
08:18:40 Fetching upstream changes from https://github.com/mycompany/myrepo.git
08:18:40  > C:\Program Files\Git\cmd\git.exe --version # timeout=10
08:18:40 using GIT_ASKPASS to set credentials 
08:18:40  > C:\Program Files\Git\cmd\git.exe fetch --tags --progress https://github.com/mycompany/myrepo.git +refs/heads/*:refs/remotes/origin/*
08:18:41 ERROR: Error cloning remote repo 'origin'
08:18:41 hudson.plugins.git.GitException: Command "C:\Program Files\Git\cmd\git.exe fetch --tags --progress https://github.com/mycompany/myrepo.git +refs/heads/*:refs/remotes/origin/*" returned status code 128:
08:18:41 stdout: 
08:18:41 stderr: '*dds23' is not recognized as an internal or external command,
08:18:41 operable program or batch file.
08:18:41 error: unable to read askpass response from 'C:\Windows\TEMP\pass6274847349411211542.bat'
08:18:41 bash: /dev/tty: No such device or address
08:18:41 error: failed to execute prompt script (exit code 1)
08:18:41 fatal: could not read Password for 'https://user@github.com': No error
08:18:41 
08:18:41    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1745)
08:18:41    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1489)
08:18:41    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.access$300(CliGitAPIImpl.java:64)
08:18:41    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$1.execute(CliGitAPIImpl.java:315)
08:18:41    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$2.execute(CliGitAPIImpl.java:512)
08:18:41    at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1054)
08:18:41    at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1094)
08:18:41    at hudson.scm.SCM.checkout(SCM.java:495)
08:18:41    at hudson.model.AbstractProject.checkout(AbstractProject.java:1278)
08:18:41    at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:604)
08:18:41    at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
08:18:41    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:529)
08:18:41    at hudson.model.Run.execute(Run.java:1720)
08:18:41    at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:531)
08:18:41    at hudson.model.ResourceController.execute(ResourceController.java:98)
08:18:41    at hudson.model.Executor.run(Executor.java:401)
08:18:41 ERROR: null
08:18:41 Archiving artifacts
08:18:41 [htmlpublisher] Archiving HTML reports...
08:18:41 [htmlpublisher] Archiving at PROJECT level C:\Program Files (x86)\Jenkins\workspace\project\server.project\server.distribution\target\htmldocs\documentation to C:\Program Files (x86)\Jenkins\jobs\project\htmlreports\documentation
08:18:41 ERROR: Specified HTML directory 'C:\Program Files (x86)\Jenkins\workspace\project\server.project\server.distribution\target\htmldocs\documentation' does not exist.
08:18:41 [BFA] Scanning build for known causes...
08:18:41 [BFA] No failure causes found
08:18:41 [BFA] Done. 0s
08:18:41 Started calculate disk usage of build
08:18:41 Finished Calculation of disk usage of build in 0 seconds
08:18:41 Started calculate disk usage of workspace
08:18:41 Finished Calculation of disk usage of workspace in 0 seconds
08:18:42 Sending e-mails to: bob@yeah
08:18:43 Finished: FAILURE

РЕДАКТИРОВАТЬ

Согласно предложениям bobs, я успешно выполнил эти команды.

del c:\users\user-name\.gitconfig
git config --global credential.helper manager
git fetch --tags --progress https://stash/myproj/proj.git +refs/heads/*:refs/remotes/origin/*

Однако результат при выполнении моей работы был точно таким же. Все еще использую GIT_ASKPASS. Должен быть способ вернуться к .gitcredentials.

Вы не можете изменить клиентский плагин Jenkins git с ASKPASS на использование .gitcredentials. В плагине нет выбираемых методов запроса пароля.

Он использовал .gitcredentials в выпусках до 2.0 и переключился на ASKPASS в выпусках 2.0 и новее. Это изменение было внесено, чтобы можно было добавить аутентификацию подмодуля в плагин git client 2.0.

Существуют открытые отчеты об ошибках, в которых описываются некоторые сценарии, когда настройки имени пользователя и пароля на основе Windows больше не работают с доступом на основе https к репозиторию git. Некоторые из этих сценариев включают:

  • Пароль содержит символ, требующий экранирования Windows, но плагин неправильно экранирует пароль (ДЖЕНКИНС-40166, JENKINS-38194 и JENKINS-38179)
  • Неизвестный режим отказа с TFS 2015 ДЖЕНКИНС-38138

Некоторые временные альтернативы, предшествующие исправлению этих открытых ошибок, включают:

  • Оставайтесь с текущими версиями (клиентский плагин git 1.19.6 и плагин git 2.x)
  • Загрузите и установите клиентский плагин git 1.21.0 и плагин git 2.6.1, чтобы вы могли использовать клиентский плагин git до изменения учетных данных. Вам нужно будет загрузить с URL-адреса updates.jenkins-ci.org/download/plugins/git и updates.jenkins-ca.org/download/plugins/git-client, а затем использовать вкладку «Дополнительно» диспетчера плагинов Jenkins для загрузки эти новые (но не новейшие) версии плагина клиента git и плагина git
  • Помощь с оценкой ожидающего запроса на извлечение клиентского плагина git, который регулирует экранирование паролей в плагине Windows. Запрос на вытягивание - PR231 на github

То же самое случилось со мной после клиентского плагина Git 2.1.0 -> 2.2.0 и плагин Git 2.5.2 -> 3.0.1. После возврата, которые не помогли, я удалил все записи [учетные данные] из этого файла: c:\users\user\.gitconfig (т.е. глобальные переменные: git config --global --list), а затем сбросить (добавить?)

git config --global credential.helper manager

а затем сделал образец git fetch, который теперь выскакивает окно для ввода ID / PW, которое кэширует его с менеджером. Последующие звонки работают.

Я думаю, что учетные данные были испорчены одним из обновлений плагина, поэтому я в основном очистил все предыдущие настройки и сбросил их. Вот что я сделал, команда за командой:

del c:\users\user-name\.gitconfig
git config --global credential.helper manager
git fetch --tags --progress https://stash/myproj/proj.git +refs/heads/*:refs/remotes/origin/*

введите ID / PW во всплывающем диалоговом окне

Готово. Теперь, когда я запускаю любую команду git (в том числе в сборках jenkins с этим идентификатором), она больше не запрашивает пароль, как это было до того, как я обновил плагин (-ы).

Это то, что у меня сработало.

Кажется, что когда вы пытаетесь подключиться к репозиторию, он не принимает предоставленные учетные данные, вместо этого он берет учетные данные Windows, хранящиеся для предоставленного URL-адреса репозитория.

Итак, способ, которым я следовал, чтобы выполнить эту работу:

  1. Войдите на подчиненный сервер, используя того же пользователя, который запускает узел jenkins (в моем случае тот, кто запускает службу)

  2. Используйте клиент git, чтобы создать репозиторий git, где хотите, и сделать клон git. Там вам будет предложено ввести учетные данные. Введите правильные учетные данные и убедитесь, что вы получили файлы из репозитория в выбранное место.

  3. Проверьте учетные данные, хранящиеся в Панели управления \ Учетные записи пользователей \ Диспетчер учетных данных -> Учетные данные Windows. (В общем, это должно быть связано с вашим URL)

  4. Настроить задачу на загрузку из GIT. Поместите URL-адрес, и красного цвета не должно быть предупреждающего сообщения. Я проверил, что эта работа БЕЗ предоставления учетных данных в jenkins.

  5. вы сделали!