Как установить учетные данные для внесения изменений с Eclipse JGit? - PullRequest
0 голосов
/ 27 апреля 2018

Я использую BitBucket, и я создал плагин для автоматической пометки ветви на основе некоторой информации. На моем локальном компьютере все работает хорошо, и передача в удаленный репозиторий работает нормально, однако, когда мы помещаем изменения в Bitbucket Pipeline (который строит проект с использованием maven), он завершается неудачно со следующей ошибкой:

org.eclipse.jgit.api.errors.TransportException: git@bitbucket.org:testrepo/test-tagging.git: Auth fail
    at org.eclipse.jgit.api.PushCommand.call(PushCommand.java:165)
    at com.mytest.semver.utils.GitUtils.push(GitUtils.java:150)
    at com.mytest.semver.utils.GitUtils.commitAndPush(GitUtils.java:232)
    at com.mytest.semver.maven.plugin.TagMojo.execute(TagMojo.java:231)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.eclipse.jgit.errors.TransportException: git@bitbucket.org:testrepo/test-tagging.git: Auth fail
    at org.eclipse.jgit.transport.JschConfigSessionFactory.getSession(JschConfigSessionFactory.java:159)
    at org.eclipse.jgit.transport.SshTransport.getSession(SshTransport.java:137)
    at org.eclipse.jgit.transport.TransportGitSsh$SshPushConnection.<init>(TransportGitSsh.java:322)
    at org.eclipse.jgit.transport.TransportGitSsh.openPush(TransportGitSsh.java:167)
    at org.eclipse.jgit.transport.PushProcess.execute(PushProcess.java:155)
    at org.eclipse.jgit.transport.Transport.push(Transport.java:1250)
    at org.eclipse.jgit.api.PushCommand.call(PushCommand.java:157)
    ... 25 more
Caused by: com.jcraft.jsch.JSchException: Auth fail
    at com.jcraft.jsch.Session.connect(Session.java:512)
    at org.eclipse.jgit.transport.JschConfigSessionFactory.getSession(JschConfigSessionFactory.java:116)
    ... 31 more

Насколько я понимаю, имя пользователя, которое вы видите в журнале ошибок, выбирается из локальных файлов git на сервере, когда процесс сборки проверяет ветку для его компиляции:

git@bitbucket.org

И, похоже, он игнорирует мои настроенные учетные данные. Это код, который я использую для отправки изменений (код в GitUtil в журнале ошибок):

Git git = Git.open(Paths.get("")); // This will select the current directory
CredentialsProvider cr = new UsernamePasswordCredentialsProvider("my_username", "my_pass");
RefSpec spec = new RefSpec("refs/remotes/origin/develop"); //we only tag this branch
Iterable<PushResult> rev = git.push()
                .setPushTags()
                .setRefSpecs(spec)
                .setCredentialsProvider(cr)
                .call();

Я что-то здесь пропустил? Почему он игнорирует учетные данные? Если мне нужно установить удаленную ветку и URL, как мне получить его с помощью JGit, должно быть где-то в конфигурации?

...