Подтвердить что ты не робот

Оформить заказ Jenkins Pipeline Git SCM с учетными данными?

Я следил за этот учебник:

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

Однако он не говорит, как добавлять учетные данные. У Jenkins есть специальный раздел "Credentials", в котором вы определяете пользователя и пароль, а затем получаете идентификатор для использования в заданиях, но как я могу использовать его в инструкциях Pipeline?

Я пробовал:

git([url: '[email protected]: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.

Есть ли способ настроить creds в конвейере, или мне нужно поставить SSH-ключи в файл Jenkin Linux.ssh/authorized_keys?

В идеальном мире я бы хотел иметь репозиторий для заданий на конвейер и репо-ключей, а затем запустить Docker Jenkins и динамически добавлять эти задания и ключи там без необходимости настраивать что-либо в Jenkins Console.

4b9b3361

Ответ 1

В конвейере можно использовать следующее:

git branch: 'master',
    credentialsId: '12345-1234-4696-af25-123455',
    url: 'ssh://[email protected]:company/repo.git'

Если вы используете URL-адрес ssh, ваши учетные данные должны быть именем пользователя + закрытым. Если вы используете https clone url вместо ssh, то ваши учетные данные должны быть именем пользователя и паролем.

Ответ 2

Если вы хотите использовать учетные данные SSH,

  git(
       url: '[email protected]<repo_name>.git',
       credentialsId: 'xpc',
       branch: "${branch}"
    )

если вы хотите использовать учетные данные для имени пользователя и пароля, вам нужно использовать http clone, как упомянуто @Serban.

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

Ответ 3

Чтобы явно оформить заказ, используя определенные учетные данные

    stage('Checkout external proj') {
        steps {
            git branch: 'my_specific_branch',
                credentialsId: 'my_cred_id',
                url: 'ssh://[email protected]/proj/test_proj.git'

            sh "ls -lat"
        }
    }

Чтобы оформить заказ на основе настроенных учетных данных в текущем задании Jenkins

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

Вы можете использовать оба этапа в одном файле Jenkins.

Ответ 4

За то, что стоит добавить к обсуждению... то, что я сделал, помогло мне... Поскольку конвейер запускается в рабочей области в образе докера, который очищается при каждом запуске. Я собрал учетные данные, необходимые для выполнения необходимых операций с репо в моем конвейере, и сохранил их в файле .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...
    '''
}

Ответ 5

Добавим вам быстрый пример использования git-плагина GitSCM:

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

в вашем трубопроводе

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

Ответ 6

Это работа для меня на 100% с сценарием Дженкинс

stage('Checkout external proj') {
    steps {
        git branch: 'my_specific_branch',
            credentialsId: 'my_cred_id',
            url: 'ssh://[email protected]/proj/test_proj.git'

        sh "ls -lat"
    }
}