Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SSH Git access using Gradle Release Plugin

Using Jenkins Pipeline I changed the Repository URL from http to ssh git access. After doing that the job is not working anymore (before that all worked correctly).

Down below the logs:

:xxxxxx:checkUpdateNeeded
Running [git, remote, update] produced an error: [Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
error: Could not fetch origin]
:xxxxxx:checkUpdateNeeded FAILED
:release FAILED
Release process failed, reverting back any changes made by Release Plugin.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':checkUpdateNeeded'.
> Failed to run [git remote update] - [Fetching origin
  ][Permission denied (publickey).
  fatal: Could not read from remote repository.

  Please make sure you have the correct access rights
  and the repository exists.
  error: Could not fetch origin
  ]

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

The SSH RSA Key is correctly working because: - I configured correctly on our Bitbucket server in order to Read/Write on that repo - I added the key into ssh-agent - I can clone and commit directly from the server where the jenkins job is executed.

This is the gradle build file section:

....
release {
    versionPropertyFile="${rootDir}/gradle.properties"
    failOnCommitNeeded=false
    git{
        requireBranch="releases/.*|master"
    }
    tagTemplate = 'T-'+new Date().format('yy.MM')+'-${version}'
}


task publishRelease(type: GradleBuild) {
    tasks = ['publishMavenJavaPublicationToReleaseRepository']
    startParameter.projectProperties = [nexusUser: nexusUser, nexusPassword: nexusPassword]
}
....
like image 513
Andrea Matera Avatar asked Nov 08 '22 09:11

Andrea Matera


1 Answers

I can clone and commit directly from the server where the jenkins job is executed.

Then Jenkins should too, provided:

  • it is executed with the same user
  • and the SSH key is the default one ~/.ssh/id_rsa.

If any of those two conditions is not met, you need to specify the exact path of the private key, using the Jenkins SSH Credentials Plugin.

like image 184
VonC Avatar answered Nov 15 '22 06:11

VonC