programing

Jenkins Pipeline Git SCM 자격 증명 확인?

newstyles 2023. 9. 1. 20:39

Jenkins Pipeline Git SCM 자격 증명 확인?

는 이 튜토리얼을 따르고 있었습니다.

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

그러나 자격 증명을 추가하는 방법은 알려주지 않습니다.Jenkins에는 사용자 사용자를 정의하고 작업에 사용할 ID를 가져오는 특정 "인증 정보" 섹션이 있습니다. 하지만 파이프라인 지침에서 이를 어떻게 사용합니까?

시도한 항목:

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 콘솔에서 아무것도 구성하지 않고 이러한 작업 및 키를 동적으로 추가합니다.

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

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

sshurl을 사용하는 경우 자격 증명은 사용자 이름 + 개인 키여야 합니다.SSH 대신 https clone url을 사용하는 경우 자격 증명은 사용자 이름 + 암호여야 합니다.

특정 인증 정보를 사용하여 명시적으로 체크아웃하려면 다음과 같이 하십시오.

    stage('Checkout external proj') {
        steps {
            git branch: 'my_specific_branch',
                credentialsId: 'my_cred_id',
                url: 'git@test.com/proj/test_proj.git'

            sh "ls -lat"
        }
    }

현재 Jenkins 작업에서 구성된 인증 정보를 기준으로 체크아웃하려면 다음과 같이 하십시오.

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

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

Git 플러그인 GitSCM을 사용하여 간단한 예제 추가:

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

당신의 파이프라인에

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

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

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

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...
    '''
}

를 사용하여 해결했습니다.

checkout scm: ([
                    $class: 'GitSCM',
                    userRemoteConfigs: [[credentialsId: '******',url: ${project_url}]],
                    branches: [[name: 'refs/tags/${project_tag}']]
            ])

언급URL : https://stackoverflow.com/questions/38461705/checkout-jenkins-pipeline-git-scm-with-credentials