자격 증명으로 Jenkins Pipeline Git SCM을 확인 하시겠습니까?


104

나는 다음과 같은 한 이 자습서를 :

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

그러나 자격 증명을 추가하는 방법을 알려주지 않습니다. Jenkins에는 사용자 user & pass를 정의한 다음 작업에서 사용할 ID를 얻는 특정 "Credentials"섹션이 있습니다.하지만 Pipeline 지침에서 어떻게 사용합니까?

나는 시도했다 :

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

불운:

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.

파이프 라인에서 자격 증명을 구성하는 방법이 있습니까, 아니면 Jenkin의 Linux 사용자의 .ssh / authorized_keys 파일에 SSH 키를 넣어야합니까?

이상적인 세계에서는 파이프 라인 작업 및 리포지토리 키에 대한 리포지토리를 확보 한 다음 Docker Jenkins를 시작하고 Jenkins 콘솔에서 아무것도 구성하지 않고도 이러한 작업과 키를 동적으로 추가하고 싶습니다.

답변:


162

파이프 라인에서 다음을 사용할 수 있습니다.

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

ssh URL을 사용하는 경우 자격 증명은 사용자 이름 + 개인 키 여야합니다. ssh 대신 https 복제 URL을 사용하는 경우 자격 증명은 사용자 이름 + 비밀번호 여야합니다.


1
문제가 해결되었습니다. 감사합니다. SSH-url과 HTTPS-url이 작동하려면 다른 자격 증명이 필요하다는 것을 몰랐습니다!
Render

3
도움이 되긴했지만 credentialsId이드가 /var/lib/jenkins/credentials.xml들어 와서 알아 내야했기 때문이다.
prayagupd

17
@prayagupd, 자격 증명 페이지 ( http://yourjenkinsinstall/credentials) 에서 자격 증명 ID를 가져올 수 있어야합니다 . 구성 파일을 트롤링 할 필요가 없습니다.
Serban Constantin

4
"How to Generate a credentialsId"를 묻는 사람들을 위해. 여기에서 그것을 찾는 방법. [1. Jenkins 홈페이지에서 Credentials를 클릭합니다. 2. 생성 한 모든 자격 증명이 포함 된 테이블이 표시됩니다. 3. ID는이 표에 있습니다]
vincedjango

1
나를 위해 시작하도록 설정하면 URL을 확인할 수 없습니다 ssh://. 그것을 제거하고 수정했습니다.
Moshisho

30

특정 자격 증명을 사용하여 명시 적으로 체크 아웃하려면

    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"
        }
    }

현재 Jenkins 작업에서 구성된 자격 증명을 기반으로 체크 아웃하려면

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

단일 Jenkins 파일 내에서 두 단계를 모두 사용할 수 있습니다.


2
이 credentialsId를 생성하는 방법?
undefined


자격 증명 파일을 어디에 저장해야합니까? jenkins sais : 경고 : CredentialId "jenkins_key"를 찾을 수 없습니다.
Dinu Nicolae

@Dinu 자격 증명은 Jenkins에서 생성되며 플러그인이 설치된 경우 기본 메뉴에 표시됩니다. support.cloudbees.com/hc/en-us/articles/...
Upul Doluweera에게

1
감사합니다! 여기와 여기에 조금만 게시하는 것이 아니라 전체 내용을 게시하고 사람들이 나머지를 위해 무엇을 넣을지 마술처럼 알고 있기를 바라는 사람.

25

ssh 자격 증명을 사용하려면

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

사용자 이름과 암호 자격 증명을 사용하려면 @Serban이 언급 한대로 http clone을 사용해야합니다.

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

10
이 credentialsId를 생성하는 방법?
undefined

다음과 같은 자격 증명을 생성했습니다. help.github.com/en/articles/… , 공개 키를 내 자식에 추가했지만이 파일을 어디에 저장해야합니까? Jenkins 메시지 : 경고 : CredentialId "jenkins_key"를 찾을 수 없습니다.
Dinu Nicolae

@DinuNicolae Adding new global credentials -> 7.는 다음 링크 를 참조하십시오 . jenkins.io/doc/book/using/using-credentials
F-사회

14

git 플러그인 GitSCM을 사용하여 빠른 예제 추가 :

    checkout([
        $class: 'GitSCM', 
        branches: [[name: '*/master']], 
        doGenerateSubmoduleConfigurations: false, 
        extensions: [[$class: 'CleanCheckout']], 
        submoduleCfg: [], 
        userRemoteConfigs: [[credentialsId: '<gitCredentials>', url: '<gitRepoURL>']]
    ])

파이프 라인에서

stage('checkout'){
    steps{
        script{
            checkout
        }
    }
}

전체 팀에 대해 글로벌 자격 증명을 사용하는 방법을 알고 있습니까? 아니면 개발자가 github에 푸시하는 경우 Jenkinsfile에 공개하지 않고도 자격 증명을 제공 할 수있는 방법이 있습니까?
henhen

개발 팀에서 자체 로직과 관련된 메커니즘을 관리하고 각 그룹에 다른 자격 증명 키를 사용할 수 있습니다. 예 : Github 사용자가 'backend_developers'목록에있는 경우 <gitCredentialsGroupA>를 사용하고, 'frontend_developers'목록에있는 Github 사용자가 <gitCredentialsGroupB>를 사용하는 경우 자신의 사용 사례와 관련된 메커니즘을 설계합니다.
avivamg

이 자격 증명을 어디에 보관 하시겠습니까? Jenkins Credentials 플러그인을 사용합니까?
henhen

Jenkins 자격 증명 문서 사용 -jenkins.io/doc/book/using/using-credentials
avivamg

1
저는 checkout이와 같은 간단한 예를 광범위하게 검색했습니다 . 감사합니다.
301_Moved_Permanently

1

토론에 추가 할 가치가있는 것은 ... 내가 한 일이 결국 도움이되었습니다 ... 파이프 라인이 실행될 때마다 정리되는 도커 이미지 내의 작업 공간 내에서 실행되기 때문입니다. 파이프 라인 내의 리포지토리에서 필요한 작업을 수행하는 데 필요한 자격 증명을 가져와 .netrc 파일에 저장했습니다. 이를 통해 git repo 작업을 성공적으로 승인 할 수있었습니다.

withCredentials([usernamePassword(credentialsId: '<credentials-id>', passwordVariable: 'GIT_PASSWORD', usernameVariable: 'GIT_USERNAME')]) {
    sh '''
        printf "machine github.com\nlogin $GIT_USERNAME\n password $GIT_PASSWORD" >> ~/.netrc
        // continue script as necessary working with git repo...
    '''
}

1

그것은 나를 위해 해결되었습니다.

checkout scm: ([
                    $class: 'GitSCM',
                    userRemoteConfigs: [[credentialsId: '******',url: ${project_url}]],
                    branches: [[name: 'refs/tags/${project_tag}']]
            ])
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.