ajoberstar / gradle-git

Git plugin for Gradle
Apache License 2.0
561 stars 89 forks source link

How to enable Git authentication through credentials passed as environment GRGIT_USER and GRGIT_PASS #250

Closed SoftwareCraftsman closed 7 years ago

SoftwareCraftsman commented 7 years ago

Using the latest release-opinion plugin

plugins {
    id 'org.ajoberstar.grgit' version '1.7.0'
    id 'org.ajoberstar.release-opinion' version '1.7.0'

A Jenkins pipeline build sets the GRGIT_USER and GRGIT_PASS variables and invokes the release task.

./gradlew -Prelease.scope=patch -Prelease.stage=milestone -Dorg.ajoberstar.grgit.auth.force=hardcoded --debug --stacktrace release

However the authentication code takes the decision to try using system properties and fails.

18:01:17.532 [INFO] [org.ajoberstar.grgit.auth.TransportOpUtil] The following authentication options are allowed (though they may not be available): [HARDCODED]
18:01:17.540 [INFO] [org.ajoberstar.grgit.auth.TransportOpUtil] using hardcoded credentials from system properties
18:01:17.547 [DEBUG] [org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter] Removed task artifact state for {} from context.
18:01:17.547 [DEBUG] [org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter] Finished executing task ':prepare'
18:01:17.547 [LIFECYCLE] [class org.gradle.internal.buildevents.TaskExecutionLogger] :prepare FAILED
18:01:17.548 [INFO] [org.gradle.execution.taskgraph.AbstractTaskPlanExecutor] :prepare (Thread[main,5,main]) completed. Took 0.067 secs.
18:01:17.551 [DEBUG] [org.gradle.internal.operations.DefaultBuildOperationWorkerRegistry] Worker root.1 completed (0 in use)
18:01:17.551 [DEBUG] [org.gradle.execution.taskgraph.AbstractTaskPlanExecutor] Task worker [Thread[main,5,main]] finished, busy: 0.067 secs, idle: 0.004 secs
18:01:17.562 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 
18:01:17.565 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] FAILURE: Build failed with an exception.
18:01:17.566 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 
18:01:17.567 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * What went wrong:
18:01:17.568 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Execution failed for task ':prepare'.
18:01:17.572 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] > Ambiguous method overloading for method org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider#<init>.
18:01:17.573 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   Cannot resolve which method to invoke for [class java.lang.String, null] due to overlapping prototypes between:
18:01:17.574 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]       [class java.lang.String, class java.lang.String]
18:01:17.574 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]       [class java.lang.String, class [C]

Only by adding -Dorg.ajoberstar.grgit.auth.username=$GRGIT_USER -Dorg.ajoberstar.grgit.auth.password=$GRGIT_PASS to the gradle invocation Git authentication is working.

According to http://ajoberstar.org/grgit/docs/groovydoc/org/ajoberstar/grgit/auth/AuthConfig.html environment variables should count toward hardcoded authentication?

ajoberstar commented 7 years ago

I think you might be hitting ajoberstar/grgit#153. That looks like the same exception I got.