Checkout Jenkins Pipeline Git SCM with credentials?

匿名 (未验证) 提交于 2019-12-03 02:45:02

问题:

I was following this tutorial:

node {   git url: 'https://github.com/joe_user/simple-maven-project-with-tests.git'   ... } 

However it doesn't tell how to add credentials. Jenkins does have specific "Credentials" section where you define user user&pass, and then get ID for that to use in jobs, but how do I use that in Pipeline instructions?

I tried with:

git([url: 'git@bitbucket.org:company/repo.git', branch: 'master', credentialsId: '12345-1234-4696-af25-123455']) 

no luck:

stderr: Host key verification failed. fatal: Could not read from remote repository.  Please make sure you have the correct access rights and the repository exists. 

Is there a way configure the creds in pipeline, or do I have to put SSH-keys to Jenkin's Linux user's .ssh/authorized_keys file?

In ideal world I'd like to have a repository for pipeline jobs and repo-keys, then launch Docker Jenkins, and dynamically add these jobs and keys there without having to configure anything in Jenkins Console.

回答1:

You can use the following in a pipeline:

git branch: 'master',     credentialsId: '12345-1234-4696-af25-123455',     url: 'ssh://git@bitbucket.org:company/repo.git' 

If you're using the ssh url then your credentials must be username + private key. If you're using the https clone url instead of the ssh one, then your credentials should be username + password.



回答2:

If you want to use ssh credentials,

  git(        url: 'git@github.com<repo_name>.git',        credentialsId: 'xpc',        branch: "${branch}"     ) 

if you want to use username and password credentials, you need to use http clone as @Serban mentioned.

    git(        url: 'https://github.com/<repo_name>.git',        credentialsId: 'xpc',        branch: "${branch}"     ) 


回答3:

To explicitly checkout using a specific credentials

    stage('Checkout external proj') {         steps {             git branch: 'my_specific_branch',                 credentialsId: 'my_cred_id',                 url: 'ssh://git@test.com/proj/test_proj.git'              sh "ls -lat"         }     } 

To checkout based on the configred credentials in the current Jenkins Job

    stage('Checkout code') {         steps {             checkout scm         }     } 

You can use both of the stages within a single Jenkins file.



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!