Attempting to use scm:tag in a Jenkins job for a Git repository that requires a username/password
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):
I provided the username/password credentials.
As in the blog post I created a Maven pre-step that has the goals
And also as in the blog post I set the goals for the build to
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.
3 Solutions collect form web for “Attempting to use scm:tag in a Jenkins job for a Git repository that requires a username/password”
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!
After pounding on this for a while I’ve found a workaround – if not a solution. (Solutions are still welcome)
- Log into the Jenkins build slave (as the user that runs the build jobs)
- Set the credential cache
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.
You need to configure your git credentials in maven too.
First declare a server in maven settings.xml under
<server> <id>gitserver</id> <username>git-user</username> <password>**************</password> </server>
then reference your server in your project pom.xml properties