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): https://stash.mycompany.com/scm/st_proj/my_repo.git

  • Enabling other github users to only fork my private repository and send me pull requests
  • Why “git push helloworld +master:master” instead of just “git push helloworld”?
  • How to clone git repository with specific revision/changeset?
  • Git through digest proxy authentication
  • How to tag multiple commits in git
  • how do you push only some of your local git commits?
  • 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.

  • JGit : How to get Branch when traversing repos
  • Is the Git staging area just an index?
  • Why does git keep deleting my folder?
  • Jenkins delete jobs when branch deleted via branch-indexing
  • Deploy path doesn't work for Git Deploy Method in middleman-deploy
  • GitHub “Failed connect to github” No Error
  • 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!

    Screen capture of Git Publisher section

    After pounding on this for a while I’ve found a workaround – if not a solution. (Solutions are still welcome)

    1. Log into the Jenkins build slave (as the user that runs the build jobs)
    2. 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 <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

    Git Baby is a git and github fan, let's start git clone.