У меня есть задание Jenkins Pipeline, которое опрашивает Git SCM на главном / подчиненном компьютере Windows.
Когда запускается сборка, задание сборки не выполняется из-за неверного числа аргументов, переданных Git.
Я работаю в команде, которая уже несколько лет использует SVN в качестве системы контроля версий кода и проекты Jenkins Freestyle для своей системы автоматической сборки.На работах по фристайлу они были настроены опрашивать SCM каждые 15 минут.
На этапе модернизации нашей системы сборки я решил перейти на использование Git и Jenkins Pipelines (не Multibranch).
Я установил Git 2.21.0.windows.1 на всех участвующих машинах (главные и подчиненные узлы, которые имеют соответствующие метки).Главный компьютер работает под управлением Windows Server 2008 R2 Standard, а подчиненные узлы работают под управлением Windows 10 Pro.Дженкинс мастер работает Дженкинс вер.2.164.2.В «Глобальной конфигурации инструментов» путь к Git - «C: \ Program Files \ Git \ mingw64 \ bin \ git.exe».Кавычки предназначены для пробела в «Программных файлах».Версии плагина:
- Конвейер: API - 2,33
- Конвейер: Groovy - 2,67
- Плагин Git client - 2.7.7
- Gitплагин - 3.10.0
- сервер GIT Плагин - 1.7
- конвейер - 2.6
- плагин SCM API - 2.4.1
Я установилвыполнить мои задания Jenkins Pipeline, чтобы каждые 15 минут опрашивать главную ветку Git-сервера на предмет изменений.Когда изменения обнаруживаются, сборка запускается на подчиненном компьютере.
Однако я замечаю, что когда сборка запускается, я получаю эту ошибку, и сборка завершается неудачей еще до того, как мой Jenkinsfile будет даже выполнен.
Это вывод консоли с отредактированными реальными ссылками на мое git-репо.Любая редакция окружена <>.
Started by an SCM change
Checking out git <LINK_TO_GIT_SCM> into d:\jenkins\workspace@script to read <PROJECT_NAME>/Jenkinsfile
using credential 8f54635c-fe91-43d8-a400-57e9d1e7fa4c
Cloning the remote Git repository
Honoring refspec on initial clone
Cloning repository <LINK_TO_GIT_SCM>
> "C:\Program Files\Git\mingw64\bin\git.exe" init d:\jenkins\workspace@script\<PROJECT_NAME> # timeout=10
Fetching upstream changes from <LINK_TO_GIT_SCM>
> "C:\Program Files\Git\mingw64\bin\git.exe" --version # timeout=10
using GIT_ASKPASS to set credentials (Git server)
> "C:\Program Files\Git\mingw64\bin\git.exe" fetch --tags --force --progress <LINK_TO_GIT_SCM> +refs/heads/master:refs/remotes/origin/master # timeout=60
> "C:\Program Files\Git\mingw64\bin\git.exe" config remote.origin.url <LINK_TO_GIT_SCM> # timeout=10
> "C:\Program Files\Git\mingw64\bin\git.exe" config --add remote.origin.fetch # timeout=10
ERROR: Error cloning remote repo 'origin'
hudson.plugins.git.GitException: Command ""C:\Program Files\Git\mingw64\bin\git.exe" config --add remote.origin.fetch " returned status code 129:
stdout:
stderr: error: wrong number of arguments, should be 2
usage: git config [<options>]
Config file location
--global use global config file
--system use system config file
--local use repository config file
--worktree use per-worktree config file
-f, --file <file> use given config file
--blob <blob-id> read config from given blob object
Action
--get get value: name [value-regex]
--get-all get all values: key [value-regex]
--get-regexp get values for regexp: name-regex [value-regex]
--get-urlmatch get value specific for the URL: section[.var] URL
--replace-all replace all matching variables: name value [value_regex]
--add add a new variable: name value
--unset remove a variable: name [value-regex]
--unset-all remove all matches: name [value-regex]
--rename-section rename section: old-name new-name
--remove-section remove a section: name
-l, --list list all
-e, --edit open an editor
--get-color find the color configured: slot [default]
--get-colorbool find the color setting: slot [stdout-is-tty]
Type
-t, --type <> value is given this type
--bool value is "true" or "false"
--int value is decimal number
--bool-or-int value is --bool or --int
--path value is a path (file or directory name)
--expiry-date value is an expiry date
Other
-z, --null terminate values with NUL byte
--name-only show variable names only
--includes respect include directives on lookup
--show-origin show origin of config (file, standard input, blob, command line)
--default <value> with --get, use default value when missing entry
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:2042)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:2010)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:2006)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1638)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1650)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$2.execute(CliGitAPIImpl.java:658)
at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1152)
at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1192)
at org.jenkinsci.plugins.workflow.steps.scm.SCMStep.checkout(SCMStep.java:120)
at org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition.create(CpsScmFlowDefinition.java:144)
at org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition.create(CpsScmFlowDefinition.java:67)
at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:293)
at hudson.model.ResourceController.execute(ResourceController.java:97)
at hudson.model.Executor.run(Executor.java:429)
ERROR: Error cloning remote repo 'origin'
ERROR: Maximum checkout retry attempts reached, aborting
Finished: FAILURE
Вот как мой конвейер получает файл Jenkinsfile.
.
Я ожидаю, что сборка будет запущена иGit SCM для успешного извлечения последних наборов изменений с правильным количеством аргументов.Когда я запускаю строку виновника в командной строке на ведомом компьютере:
"C:\Program Files\Git\mingw64\bin\git.exe" config --add remote.origin.fetch # timeout=10
я получаю ту же ошибку.Я не могу сказать, установил ли я несовместимые версии Git или мои настройки неверны.