Hi Christian,
I'm doing it in a pipeline that runs various git commands to check out, 
push and open PRs automatically for some DevOps.

This is how I did:

I've created a bash script git_password_helper.sh with the following 
content:

#!/bin/sh

exec echo "$GITHUB_PSW"



The in the pipeline, I set the environment to use the GitHub credentials I 
need:

environment {
GITHUB = credentials('user_github_token')
}

I use the personal access token instead of user password because it works 
and it's more secure than storing password on Jenkins credentials.

Then, I have a bash script containing all the git commands I have to run 
and the trick is to set GIT_ASKPASS to the bash script above:

export GIT_ASKPASS=./scripts/git_password_helper.sh

git ... 
git ...
git ...


How does it works?

The pipeline injects into environment variable GITHUB_USR/PWD the user and 
access token and they are available to the bash script running the git 
command, then the GIT_ASKPASS instructs git to call the 
git_password_helper.sh when it needs the user's password instead of 
prompting ... and the git_password_helper.sh echo the GITHUB_PWD containing 
the access token stored into Jenkins credentials.

That works for me.

Cheers,
Gianluca.



On Friday, 29 May 2020 10:50:29 UTC+1, Christian Baumann wrote:
>
> Hi all,
>
> I know this topic is rather old, but I´m facing the very same issue and 
> was not able to find a proper solution.
> Has anything changed since this question has been raised and someone could 
> provide an answer?
>
> Many thanks,
> Christian
>
> Am Mittwoch, 30. November 2016 12:20:22 UTC+1 schrieb Torsten Reinhard:
>>
>> Hi all,
>>
>> I have a Multi Branch Project, using a *.git Repository. All branches are 
>> detected and the checkout is working. 
>> In my JenkinsFile I need to execute some "git" commands, like:
>>
>> ...
>> sh "git tag -d FOR_INTEGRATION_TESTING"                     // removes 
>> the tag in local env.
>> sh "git push origin :refs/tags/FOR_INTEGRATION_TESTING"        // 
>> removes the tag in remote env.
>> sh "git tag -a FOR_INTEGRATION_TESTING"                        // adds 
>> the tag to different commit
>> sh "git push origin FOR_INTEGRATION_TESTING"                // pushes 
>> the change to the remote
>> ...
>>
>> How can I apply the credentials here ? 
>> When trying 
>>
>> withCredentials [$class: 'UsernamePasswordMultiBinding', credentialsId: 
>> git_creds, usernameVariable: 'G_USER', passwordVariable: 'G_PASS'] {
>>   ...
>> }
>>
>>
>> I see this exception:
>>
>> org.jenkinsci.plugins.credentialsbinding.impl.CredentialNotFoundException: 
>> Credentials 'a378e16a-3d20-4465-aef1-b2bd233f15b6' is of type 'SSH Username 
>> with private key' 
>> where 
>> 'com.cloudbees.plugins.credentials.common.StandardUsernamePasswordCredentials'
>>  was expected
>>
>>
>> Is there another class instead of "UsernamePasswordMultiBinding" I have 
>> to use? 
>>
>> Thanx for pointing me in the right direction, 
>>
>> Torsten
>>
>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to jenkinsci-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-users/ecd2911c-235c-4ddb-80d8-b2adb1a21d46%40googlegroups.com.

Reply via email to