Jenkins Pipeline Git SCM: код состояния 129: ошибка: неверное количество аргументов, должно быть 2 - PullRequest
0 голосов
/ 13 мая 2019

У меня есть задание 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.

Pipeline Definition.

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

"C:\Program Files\Git\mingw64\bin\git.exe" config --add remote.origin.fetch  # timeout=10

я получаю ту же ошибку.Я не могу сказать, установил ли я несовместимые версии Git или мои настройки неверны.

...