2016-11-15 2 views
7

젠킨스에 항목이 있습니다. 내 저장소의 루트에서 내 Jenkinsfile 다음과 같은 :github 조직에서 ssh remote를 체크 아웃하는 법 Jenkins 워크 플로우 및 Jenkinsfile에서 ssh 자격 증명 사용

fatal: could not read Username for ' https://github.com ': No such device or address

: 그것은 현재 다음과 같은 오류로 git fetch 부분에 실패한 것 몇 여기에 테스트 저장소에 액세스 라인과 있다

node { 

    def jenkinsCredsId = 'xxxxxxxx-yyyy-zzzz-aaaa-bbbbbbbbbbbb' 

    stage 'Checkout' 
    checkout scm 
    // I also tried the following: 
    // checkout scm: [$class: 'GitSCM', source: 'ssh://[email protected]:MY_ORGANISATION/jenkins-testing-temp.git', clean: true, credentialsId: jenkinsCredsId] 

    stage 'Build' 
    // generate some artefact (dist.zip) 

    stage 'Release' 

    sshagent([jenkinsCredsId]) { 
    sh ''' 
    git remote -v // show remotes 
    ssh-add -l // show currently loaded ssh keys fingerprints 

    git fetch --all --tags // IT FAILS HERE 

    CURRENT_BUILD_TAG="some_build/${BUILD_NUMBER}" 
    git tag ${CURRENT_BUILD_TAG} 

    git push --tags 

    github-release release \ 
    --security-token ${GITHUB_RELEASE_TOKEN} \ 
    --user MY_ORGANIZATION \ 
    --repo MY_REPO \ 
    --tag ${CURRENT_BUILD_TAG} \ 
    --name ${CURRENT_BUILD_TAG} 

    github-release upload \ 
    --security-token ${GITHUB_RELEASE_TOKEN} \ 
    --user MY_ORGANIZATION \ 
    --repo MY_REPO \ 
    --tag ${CURRENT_BUILD_TAG} \ 
    --name ${CURRENT_BUILD_TAG} \ 
    --file dist.zip 
    ''' 
    } 

Jenkinsfilegit remote -v 명령은 origin https://github.com/MY_ORGANIZATION/MY_REPO과 같은 결과를 출력합니다.

Github Organization 자식의 구성은 다음과 같습니다 repository-sources-github-organization-jenkins-config

내가 몇 가지 관련 질문에 발견

답변

8

그것은 밝혀 그를 Github Organization 항목 만 https 자격 증명을 사용합니다. f 또는 Scan credentials (위 그림과 같습니다).

해결 방법은 Advanced 버튼을 누르고 대신 Checkout credentials 드롭 다운에서 실제로 ssh 자격증 명을 선택하는 것이 었습니다.

별 자격 증명을 사용자/암호 항목 것을

advanced-view-checkout-credentials

참고, 그게 내가 문제를 발견하는 방법입니다.

이렇게하면 checkout scm이 ssh를 대신 사용하고 sshagent([jenkinsCredsId]) { 블록이 예상대로 작동하여 사용자의 권한에 따라 태그를 만들고 가져오고 푸시 할 수 있습니다. :)