Правильный способ обработки ключей SSH для клонирования частных репозиториев - PullRequest
0 голосов
/ 12 октября 2018

Поскольку в настоящее время наши сборки требуют клонирования зависимостей из частных репозиториев, как я могу добиться правильного клонирования частных репозиториев с использованием декларативного / сценариев конвейера?

def test_cloning() {
    sshagent(["${SSH_KEY}"]) {
        sh """
            GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
            git clone -b dev git@github.com:/org/repo_eg.git repo_eg/
        """

    }    
}

pipeline {
    agent none

    environment {
        SSH_KEY='sshkey'
    }        
    stages {
        stage('Build') {
            parallel {
                stage('static_agent') {
                    agent { label 'agent-1 }
                    steps {
                        test_cloning()
                    }
                }
                stage('static_agent') {
                    agent { label 'agent-2' }
                    steps {
                        test_cloning()
                    }
                }
                stage('swarm') {
                    agent { label 'swarm' }
                    steps {
                        sh 'mkdir ~/.ssh || true && ssh-keyscan github.com > ~/.ssh/known_hosts'
                        test_cloning()
                    }
                }                
            }
        }
    }
    post {
        always {
            node('agent-1') {
                deleteDir()
            }
            node('agent-2') {
                deleteDir()
            }
        }
    }
}

1 Ответ

0 голосов
/ 12 октября 2018

Надеясь, это то, что вы ищете.Создайте пару закрытых / открытых ключей, вошедших в систему как пользователь 'jenkins' на сервере Jenkins.Настройте профиль пользователя Git (у которого есть доступ к закрытым репозиториям) с открытым ключом.Добавьте закрытый ключ в ssh-agent на сервере Jenkins.

Используйте проверку SCM в конвейерном скрипте для клонирования репозитория с использованием SSH url

https://jenkins.io/doc/pipeline/steps/workflow-scm-step/

Пример репозитория Bitbucket:

checkout poll: false, scm: [$class: 'GitSCM', branches: [[name: 
"refs/heads/${branchName}"]], doGenerateSubmoduleConfigurations: false, extensions: 
[], submoduleCfg: [], userRemoteConfigs: [[url:"git@bitbucket.org:${repoName}.git"]]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...