diff --git a/vars/git.groovy b/vars/git.groovy new file mode 100644 index 0000000..461cd15 --- /dev/null +++ b/vars/git.groovy @@ -0,0 +1,30 @@ +def withHTTPCredentials(String credentialsId, Closure fn) { + withCredentials([ + usernamePassword( + credentialsId: credentialsId, + usernameVariable: 'GIT_USERNAME', + passwordVariable: 'GIT_PASSWORD' + ) + ]) { + def randomUUID = UUID.randomUUID().toString() + def tmpAskPassScript = pwd(tmp:true) + "/${randomUUID}" + try { + writeFile( + file: tmpAskPassScript, + text: ''' + #!/bin/sh + case "$1" in + Username*) echo $GIT_USERNAME ;; + Password*) echo $GIT_PASSWORD ;; + esac + ''' + ) + sh(script: "chmod +x '${tmpAskPassScript}'") + withEnv(["GIT_ASKPASS=${tmpAskPassScript}"]) { + fn.call() + } + } finally { + sh(script: "rm -f '${tmpAskPassScript}'") + } + } +} \ No newline at end of file