Reputation: 532
I am attempting to configure a Jenkins/Maven/Git release build job as described by Axel Fontaine (http://axelfontaine.com/blog/final-nail.html). I made the additions to my POM as he described, and configured my Jenkins job accordingly.
In the Source Code Management section I entered the Repository URL for our internally hosted instance of Stash (which requires a username and password - SSH keys are not an option): https://stash.mycompany.com/scm/st_proj/my_repo.git
I provided the username/password credentials.
As in the blog post I created a Maven pre-step that has the goals versions:set -DnewVersion=$BUILD_NUMBER
.
And also as in the blog post I set the goals for the build to deploy scm:tag
.
When the job executes I get the following error.
[ERROR] Provider message:
[ERROR] The git-push command failed.
[ERROR] Command output:
[ERROR]
(gnome-ssh-askpass:32706): Gtk-WARNING **: cannot open display:
error: unable to read askpass response from '/usr/libexec/openssh/gnome-ssh-askpass'
fatal: could not read Username for 'https://stash.mycompany.com': No such device or address
I realize this is because the Git command is attempting to prompt me for a username and password, but since this is run as a Jenkins' job there is no display for it to send the prompt to.
Why am I being prompted for a username and password when I have them set earlier in the job configuration? I know they are correct because they were required to clone the repository.
Upvotes: 6
Views: 4851
Reputation: 812
You need to configure your git credentials in maven too.
First declare a server in maven settings.xml under <settings> <servers>
<server>
<id>gitserver</id>
<username>git-user</username>
<password>**************</password>
</server>
then reference your server in your project pom.xml properties
<project.scm.id>gitserver</project.scm.id>
See http://maven.apache.org/maven-release/maven-release-plugin/faq.html#credentials
Upvotes: 0
Reputation: 532
Another (and much better) solution:
In Jenkins instead of using the scm:tag goal, use the Git Publisher post-build action. Here you can set and push a tag to the repository and the plugin uses the credentials stored in Jenkins!
Upvotes: 5
Reputation: 532
After pounding on this for a while I've found a workaround - if not a solution. (Solutions are still welcome)
git config --global credential.helper 'cache --timeout 600'
Now when the credentials are used to clone the repository they are cached by Git for the subsequent push command.
Upvotes: 3