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}'") } } } def withSSHCredentials(String credentialsId, Closure fn) { def randomUUID = UUID.randomUUID().toString() withCredentials([ sshUserPrivateKey( credentialsId: credentialsId, keyFileVariable: 'GIT_SSH_IDENTITY_FILE', ) ]) { withEnv(['GIT_SSH_VARIANT=ssh', 'GIT_SSH_COMMAND=ssh -i $GIT_SSH_IDENTITY_FILE -o IdentitiesOnly=yes -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null']) { fn.call() } } }