«java.lang.Exception: нет или несколько репо» с BitBucket Notifier в многоотраслевом конвейере Jenkins - PullRequest
0 голосов
/ 27 сентября 2018

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

Мой Jenkinsfile выглядит следующим образом:

pipeline {
    agent any
    stages {
        stage('Prepare Env') {
            steps {
                bitbucketStatusNotify(buildState: 'INPROGRESS')
                sh "npm i"
            }
            post {
                success {
                    bitbucketStatusNotify(buildState: 'SUCCESSFUL')
                }
                failure {
                    bitbucketStatusNotify(buildState: 'FAILED')
                }
            }
        }
    }
}

Я обнаружил, что вторая и все последующие фиксации запроса на получение вызывают условие, когда сборка Jenkins завершается неудачно при уведомлении Bitbucket о результате сборки с помощьюсообщение: java.lang.Exception: None or multiple repos.

Это как-то согласуется с одной из первых строк в журнале, гласящей: Fetching changes from 2 remote Git repositories.

Однако у меня есть только один репозиторий, и я не знаю, почему Дженкинс распознает его как множественный.

Как сделать так, чтобы моя сборка перестала видеть несколько репозиториев и преуспела?

Полный журнал следует:

Branch event
Checking out git https://bitbucket.org/mycompany/myproject.git https://bitbucket.org/mycompany/myproject.git into /var/lib/jenkins/workspace/myproject_PR-48-TV7ILAHCKATC6ZK26DHNTXI6KKLEGO3RSNDKAL2363W5GU5TABFQ@script to read Jenkinsfile
 > /usr/bin/git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from 2 remote Git repositories
 > /usr/bin/git config remote.origin.url https://bitbucket.org/mycompany/myproject.git # timeout=10
Fetching without tags
Fetching upstream changes from https://bitbucket.org/mycompany/myproject.git
 > /usr/bin/git --version # timeout=10
using GIT_ASKPASS to set credentials Migrated by JIRA Plugin
 > /usr/bin/git fetch --no-tags --progress https://bitbucket.org/mycompany/myproject.git +refs/heads/VE-3869-dodawanie-edycja-i-usuwanie-aktu:refs/remotes/origin/PR-48
 > /usr/bin/git config remote.upstream.url https://bitbucket.org/mycompany/myproject.git # timeout=10
Fetching without tags
Fetching upstream changes from https://bitbucket.org/mycompany/myproject.git
using GIT_ASKPASS to set credentials Migrated by JIRA Plugin
 > /usr/bin/git fetch --no-tags --progress https://bitbucket.org/mycompany/myproject.git +refs/heads/master:refs/remotes/upstream/master
Merging remotes/upstream/master commit 98a73e74fed491c44dcb1b361a1eedb737e8960c into PR head commit bd199dfbe53f7a9cb0b71b45e048b98f4f173835
 > /usr/bin/git config core.sparsecheckout # timeout=10
 > /usr/bin/git checkout -f bd199dfbe53f7a9cb0b71b45e048b98f4f173835
 > /usr/bin/git merge 98a73e74fed491c44dcb1b361a1eedb737e8960c # timeout=10
 > /usr/bin/git rev-parse HEAD^{commit} # timeout=10
Merge succeeded, producing e402581b4779a8ce8e4d0b3af0a543ae99c1dbd4
Checking out Revision e402581b4779a8ce8e4d0b3af0a543ae99c1dbd4 (PR-48)
 > /usr/bin/git config core.sparsecheckout # timeout=10
 > /usr/bin/git checkout -f e402581b4779a8ce8e4d0b3af0a543ae99c1dbd4
Commit message: "Merge commit '98a73e74fed491c44dcb1b361a1eedb737e8960c' into HEAD"
 > /usr/bin/git rev-list --no-walk 760dbaed862dfc7416eb5d2e158499cb6ad941cb # timeout=10
[Bitbucket] Notifying pull request build result
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] node
Running on Jenkins in /var/lib/jenkins/workspace/myproject_PR-48-TV7ILAHCKATC6ZK26DHNTXI6KKLEGO3RSNDKAL2363W5GU5TABFQ
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Declarative: Checkout SCM)
[Pipeline] checkout
 > /usr/bin/git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from 2 remote Git repositories
 > /usr/bin/git config remote.origin.url https://bitbucket.org/mycompany/myproject.git # timeout=10
Fetching without tags
Fetching upstream changes from https://bitbucket.org/mycompany/myproject.git
 > /usr/bin/git --version # timeout=10
using GIT_ASKPASS to set credentials Migrated by JIRA Plugin
 > /usr/bin/git fetch --no-tags --progress https://bitbucket.org/mycompany/myproject.git +refs/heads/VE-3869-dodawanie-edycja-i-usuwanie-aktu:refs/remotes/origin/PR-48
 > /usr/bin/git config remote.upstream.url https://bitbucket.org/mycompany/myproject.git # timeout=10
Fetching without tags
Fetching upstream changes from https://bitbucket.org/mycompany/myproject.git
using GIT_ASKPASS to set credentials Migrated by JIRA Plugin
 > /usr/bin/git fetch --no-tags --progress https://bitbucket.org/mycompany/myproject.git +refs/heads/master:refs/remotes/upstream/master
Merging remotes/upstream/master commit 98a73e74fed491c44dcb1b361a1eedb737e8960c into PR head commit bd199dfbe53f7a9cb0b71b45e048b98f4f173835
 > /usr/bin/git config core.sparsecheckout # timeout=10
 > /usr/bin/git checkout -f bd199dfbe53f7a9cb0b71b45e048b98f4f173835
 > /usr/bin/git merge 98a73e74fed491c44dcb1b361a1eedb737e8960c # timeout=10
 > /usr/bin/git rev-parse HEAD^{commit} # timeout=10
Merge succeeded, producing e74140b80595d0bf0ee1da066a6b34dab9797f2a
Checking out Revision e74140b80595d0bf0ee1da066a6b34dab9797f2a (PR-48)
 > /usr/bin/git config core.sparsecheckout # timeout=10
 > /usr/bin/git checkout -f e74140b80595d0bf0ee1da066a6b34dab9797f2a
Commit message: "Merge commit '98a73e74fed491c44dcb1b361a1eedb737e8960c' into HEAD"
 > /usr/bin/git rev-list --no-walk 760dbaed862dfc7416eb5d2e158499cb6ad941cb # timeout=10
First time build. Skipping changelog.
[Bitbucket] Notifying pull request build result
[Pipeline] }
[Pipeline] // stage
[Pipeline] withEnv
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Prepare Env)
[Pipeline] bitbucketStatusNotify
Post stage
[Pipeline] bitbucketStatusNotify
Error when executing failure post condition:
java.lang.Exception: None or multiple repos
    at org.jenkinsci.plugins.bitbucket.scm.GitScmAdapter.getCommitRepoMap(GitScmAdapter.java:53)
    at org.jenkinsci.plugins.bitbucket.BitbucketBuildStatusHelper.createBuildStatusResources(BitbucketBuildStatusHelper.java:87)
    at org.jenkinsci.plugins.bitbucket.BitbucketBuildStatusHelper.createBuildStatusResources(BitbucketBuildStatusHelper.java:140)
    at org.jenkinsci.plugins.bitbucket.BitbucketBuildStatusHelper.notifyBuildStatus(BitbucketBuildStatusHelper.java:231)
    at org.jenkinsci.plugins.bitbucket.BitbucketBuildStatusNotifierStep$Execution.run(BitbucketBuildStatusNotifierStep.java:206)
    at org.jenkinsci.plugins.bitbucket.BitbucketBuildStatusNotifierStep$Execution.run(BitbucketBuildStatusNotifierStep.java:152)
    at org.jenkinsci.plugins.workflow.steps.AbstractSynchronousNonBlockingStepExecution$1$1.call(AbstractSynchronousNonBlockingStepExecution.java:47)
    at hudson.security.ACL.impersonate(ACL.java:290)
    at org.jenkinsci.plugins.workflow.steps.AbstractSynchronousNonBlockingStepExecution$1.run(AbstractSynchronousNonBlockingStepExecution.java:44)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Build)
Stage "Build" skipped due to earlier failure(s)

1 Ответ

0 голосов
/ 08 октября 2018

Краткий ответ: Удалить все bitbucketStatusNotify вызовы.Уведомления являются неявными, так как это работа с битовой корзиной.

Длинный ответ: После того, как мы провели 3 часа с той же ошибкой, мы обнаружили, что проблема связана с плагином bitbucketStatusNotify.

Указанная вами ошибка « Извлечение изменений из 2 удаленных репозиториев Git », похоже, связана с тем, как jenkins управляет заданиями PR, и это приводит к сбою плагина bitbucketStatusNotify .

Поскольку это плагин bitbucket, уведомления для bitbucket выполняются автоматически, поэтому, если вы удалите вызовы bitbucketStatusNotify, он должен работать как положено

...