Параметризованная сборка Jenkins: сборка завершается неудачно, поскольку параметр git включает в себя {^ commit} - PullRequest
0 голосов
/ 30 ноября 2018

Я хотел бы настроить параметризованную сборку, чтобы пользователь мог выбрать ветвь и затем нажать «build», чтобы построить эту ветвь.

В конфигурации я добавил параметр git «branch», например:enter image description here

Затем я добавил параметр "ветвь" в качестве спецификатора ветвления в определении конвейера следующим образом: enter image description here

КогдаЗапускаю сборку, могу без проблем выбрать ветку.В этом примере / origin / feature / kvarntorp-test1.Но сборка завершится неудачно со следующим выводом консоли:

Запущено пользователем. Xxxx Поддержка облегченного извлечения недоступна, возвращаясь к полной проверке.Извлечение git ssh: //gitolite@tuleap.ermms.se/ermms/acm.git в скрипт / var / lib / jenkins / workspace / 6smCustomBuild @ для чтения ci / jenkins / 6msBuildAndTest.groovy

> gitrev-parse --is-inside-work-tree # timeout = 10 Извлечение изменений из удаленного репозитория Git> git config remote.origin.url ssh: //gitolite@tuleap.ermms.se/ermms/acm.git # timeout = 10 Извлечение исходных изменений из ssh: //gitolite@tuleap.ermms.se/ermms/acm.git> git --version # timeout = 10, используя GIT_SSH для установки учетных данных> git fetch --tags --progress ssh: //gitolite@tuleap.ermms.se/ermms/acm.git + refs /heads / : refs / remotes / origin / > git rev-parse / origin / feature / kvarntorp-test1 ^ {commit} # timeout = 10> git rev-parse refs / remotes / origin // origin / feature / kvarntorp-test1 ^ {commit} # timeout = 10> git rev-parse / origin / feature / kvarntorp-test1 ^ {commit} # timeout = 10

ОШИБКА: не удалось найти ни одной ревизии для сборки.Проверьте конфигурацию репозитория и филиала для этого задания.ОШИБКА: достигнуто максимальное количество попыток повторной проверки, завершение завершено: ОТКАЗ

Таким образом, Дженкинс не может найти ветку / origin / feature / kvarntorp-test1, потому что он ищет / origin / feature / kvarntorp-test1 ^{commit}

Откуда взялся ^ {commit}?Можно ли как-то удалить ^ {commit} в конфигурации сборки?Я неправильно настроил сборку?

Я пробовал разные имена вместо "ответвления". Задание Git PullRequest не выполнено.Не удалось найти ревизию для сборки.Проверьте конфигурацию хранилища и ветви для этого задания. предлагает мне использовать sha1 со значением по умолчанию "master".Я пробовал sha1 в качестве имени параметра Git и $ {sha1} в качестве спецификатора ветви.Сбой сборки со следующим выводом консоли:

hudson.plugins.git.GitException: Command "git fetch --tags --progress origin +refs/heads/${sha1}:refs/remotes/origin/${sha1} --prune" returned status code 128:
stdout: 
stderr: fatal: Couldn't find remote ref refs/heads/${sha1}
fatal: The remote end hung up unexpectedly

    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:2002)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1721)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.access$300(CliGitAPIImpl.java:72)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$1.execute(CliGitAPIImpl.java:405)
    at jenkins.plugins.git.GitSCMFileSystem$BuilderImpl.build(GitSCMFileSystem.java:351)
    at jenkins.scm.api.SCMFileSystem.of(SCMFileSystem.java:196)
    at jenkins.scm.api.SCMFileSystem.of(SCMFileSystem.java:172)
    at org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition.create(CpsScmFlowDefinition.java:108)
    at org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition.create(CpsScmFlowDefinition.java:67)
    at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:298)
    at hudson.model.ResourceController.execute(ResourceController.java:97)
    at hudson.model.Executor.run(Executor.java:429)
Finished: FAILURE

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Я получил это работает.Это была комбинация двух вещей.Во-первых, я хочу снять галочку с Lightweight checkout, как описано в Jenkins Git Branch, не работающем с переменными среды .

Но это само по себе не решило проблему.Мне также пришлось установить имя параметра sha1 и спецификатор ветви $ {sha1}.

0 голосов
/ 30 ноября 2018

С SCM/Branches to build's manual:

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

Самый безопасный способ - использовать синтаксис refs /heads /.Таким образом, ожидаемая ветвь однозначна.

Если в названии вашей ветки есть / /, убедитесь, что вы используете полную ссылку выше.Когда не указан полный путь, плагин будет использовать только часть строки справа от последней косой черты.Значение foo / bar на самом деле будет совпадать с bar. Если вы используете спецификатор ветвления с подстановочными знаками, с косой чертой (например, release /), вам необходимо указать репозиторий origin в именах веток, чтобы убедиться, что изменения подобраны.Так, например, origin / release /

Возможные опции:

Отслеживает / проверяет указанную ветку.Если неоднозначно, берется первый результат, который не обязательно является ожидаемым.Лучше использовать ссылки / головы /.Например, master, feature1, ...

Так что попробуйте refs /heads / $ {branch}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...