web-dev-qa-db-fra.com

Commander Jenkins Pipeline Git SCM avec informations d'identification?

Je suivais ce tutoriel :

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

Cependant, il ne dit pas comment ajouter des informations d'identification. Jenkins a une section "Credentials" spécifique dans laquelle vous définissez l'utilisateur et le mot de passe, puis vous obtenez l'ID à utiliser dans les travaux, mais comment puis-je l'utiliser dans les instructions Pipeline?

J'ai essayé avec:

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

pas de chance:

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.

Existe-t-il un moyen de configurer les crédits dans le pipeline ou dois-je mettre des clés SSH dans le fichier .ssh/registered_keys de l'utilisateur Linux de Jenkin?

Dans un monde idéal, j'aimerais disposer d'un référentiel pour les travaux en pipeline et les clés de stockage, puis lancer Docker Jenkins et y ajouter dynamiquement ces travaux et clés sans avoir à configurer quoi que ce soit dans la console Jenkins.

50
Render

Vous pouvez utiliser les éléments suivants dans un pipeline:

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

Si vous utilisez l'URL ssh, vos informations d'identification doivent être nom d'utilisateur + clé privée. Si vous utilisez l'URL de clone https au lieu de celle ssh, vos informations d'identification doivent être nom d'utilisateur + mot de passe.

92
Serban Constantin

Si vous souhaitez utiliser les informations d'identification ssh,

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

si vous souhaitez utiliser les informations d'identification du nom d'utilisateur et du mot de passe, vous devez utiliser le clone http comme indiqué par @Serban.

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

Pour effectuer une extraction explicite à l'aide d'informations d'identification spécifiques

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

Pour passer à la caisse en fonction des informations d'identification configurées dans le travail Jenkins actuel

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

Vous pouvez utiliser les deux étapes dans un seul fichier Jenkins.

6
Upul Doluweera

Vous ajouter un exemple rapide en utilisant le plugin git GitSCM :

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

dans votre pipeline

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

C'est un travail pour moi à 100% avec le script Jenkins 

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"
    }
}
0
Dulip Chandana

Pour ce qu'il vaut la peine d'ajouter à la discussion… ce que j'ai fait a fini par m'aider… Le pipeline étant exécuté dans un espace de travail au sein d'une image de menu fixe nettoyée à chaque fois qu'il est exécuté. J'ai saisi les informations d'identification nécessaires pour effectuer les opérations nécessaires sur le référentiel dans mon pipeline et les ai stockées dans un fichier .netrc. Cela m'a permis d'autoriser les opérations git repo avec succès.

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