8

I'm using jenkins pipeline (declarative synthax) and I want to push a commit to my remote repository.

Is there any way to accomplish this using the git plugin? Here is what I'm currently trying:

withCredentials([usernamePassword(credentialsId: "${GIT_CREDENTIAL_ID}", passwordVariable: 'GIT_PASSWORD', usernameVariable: 'GIT_USERNAME')]) {
                        sh "git add ${BRANCH_RENAME}.bundle"
                        sh "echo ${GIT_USERNAME}|||||||${GIT_PASSWORD}"
                        sh "git tag -a backup -m 'Backup branch ${BRANCH} from vega-salesforce to vega-salesforce-backup' "
                        sh('git push https://${GIT_USERNAME}:${GIT_PASSWORD}@${GIT_URL_WITHOUT_HTTPS} --tags')
                    }

But it does'nt works. I got the following error:`

fatal: unable to access 'https://****:****@myrepositoryurl/mygitgroup/salesforce-backup/': Could not resolve host: ****:clear_password_here; Name or service not known

Could anyone help please? I though the issue comes from the special characters present in my password but I'm not sure.

Géraud Willing B-S
  • 203
  • 1
  • 2
  • 13

2 Answers2

6

We finally figure it out. The problem was simply that we have special characters in our password which break out the url.

Here is the working code:

withCredentials([usernamePassword(credentialsId: env.GIT_CREDENTIAL_ID, usernameVariable: 'USER', passwordVariable: 'PASS')]) {
                    script {
                        env.encodedPass=URLEncoder.encode(PASS, "UTF-8")
                    }
                    sh 'git clone https://${USER}:${encodedPass}@${GIT_URL} ${DIR} -b ${BRANCH}'
                    sh 'git add .'
                    sh 'git commit -m "foobar" '
                    sh 'git push'
                } 
Géraud Willing B-S
  • 203
  • 1
  • 2
  • 13
  • I think there is just one problem with this solution. After you have encoded the password jenkins will output its value without the mask (****). One possible solution to this problem is to [disable the command echoing](https://stackoverflow.com/a/51607994/1252947). Another solution that I have seen is to [use the MaskPasswords plugin](https://stackoverflow.com/a/59680266/1252947), but I don't know it that works because I wasn't able to test it. – Pedro Pinheiro Apr 08 '20 at 13:58
  • @PedroPinheiro , thanks you to point that out! – Géraud Willing B-S May 24 '21 at 14:38
1

You can't use username:password for connecting to git repo in script.

You should use ssh key. Please see this answer for more information

ozlevka
  • 1,550
  • 12
  • 23