156 votes

Vérifiez la Checkout Jenkins Pipeline Git SCM avec des informations d'identification?

Je suivais ce tutoriel :

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

Cependant, il ne précise pas comment ajouter des informations d'identification. Jenkins possède une section spécifique "Credentials" où vous définissez un utilisateur et un mot de passe, puis obtenez un ID à utiliser dans les jobs, mais comment l'utiliser dans les instructions de pipeline ?

J'ai essayé avec :

git([url: 'git@bitbucket.org: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.

Y a-t-il un moyen de configurer les informations d'identification dans le pipeline, ou dois-je ajouter des clés SSH au fichier .ssh/authorized_keys de l'utilisateur Linux de Jenkin ?

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

226voto

Serban Constantin Points 1565

Vous pouvez utiliser ce qui suit dans un pipeline :

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

Si vous utilisez l'URL ssh, alors vos identifiants doivent être un nom d'utilisateur + une clé privée. Si vous utilisez l'URL de clonage https au lieu de l'URL ssh, alors vos identifiants doivent être un nom d'utilisateur + un mot de passe.

2 votes

Cela a été résolu, merci. Je ne savais pas que les URL SSH et HTTPS nécessitent des identifiants différents pour fonctionner !

7 votes

C'était utile, mais credentialsId vient de l'id dans /var/lib/jenkins/credentials.xml car j'ai dû me battre pour le comprendre.

27 votes

@prayagupd, vous devriez pouvoir obtenir l'identifiant de l'authentification depuis la page des identifiants (http://yourjenkinsinstall/credentials). Inutile de fouiller dans les fichiers de configuration.

62voto

Upul Doluweera Points 66

Pour vérifier explicitement en utilisant des identifiants spécifiques

    stage('Vérifier le projet externe') {
        steps {
            git branch: 'my_specific_branch',
                credentialsId: 'my_cred_id',
                url: 'git@test.com/proj/test_proj.git'

            sh "ls -lat"
        }
    }

Pour vérifier en fonction des identifiants configurés dans le Job Jenkins actuel

    stage('Vérifier le code') {
        steps {
            checkout scm
        }
    }

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

2 votes

Comment générer ce credentialsId ?

2 votes

0 votes

Où dois-je stocker le fichier d'identifiants. Jenkins dit : Avertissement : l'identifiant de crédential "jenkins_key" n'a pas pu être trouvé.

42voto

avivamg Points 507

Ajout d'un exemple rapide en utilisant le plugin git GitSCM:

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

dans votre pipeline

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

0 votes

Est-ce que vous savez comment utiliser des identifiants globaux pour toute l'équipe? Ou y a-t-il un moyen pour que chaque développeur qui pousse du code sur Github puisse fournir ses identifiants sans les exposer dans le Jenkinsfile ?

0 votes

Vous pouvez gérer votre mécanisme lié à votre propre logique dans votre équipe de développement, et utiliser des clés d'authentification différentes pour chaque groupe. Par exemple : Si un utilisateur Github est dans la liste des « développeurs backend » utiliser , Si l'utilisateur Github est dans la liste des « développeurs frontend » utiliser , concevez votre mécanisme en fonction de votre cas d'utilisation.

0 votes

Où garderiez-vous ces informations d'identification? Est-ce avec le plugin Jenkins Credentials?

31voto

f-society Points 1324

Si vous souhaitez utiliser des identifiants ssh,

  git(
       url: 'git@github.com.git',
       credentialsId: 'xpc',
       branch: "${branch}"
    )

Si vous souhaitez utiliser des identifiants nom d'utilisateur et mot de passe, vous devez utiliser le clone http comme l'a mentionné @Serban.

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

11 votes

Comment générer ce credentialsId?

0 votes

J'ai généré les identifiants comme ceci : help.github.com/en/articles/…, j'ai ajouté la clé publique à mon git, mais où dois-je stocker ce fichier ? Jenkins dit : Attention : L'identifiant de l'authentification "jenkins_key" n'a pas pu être trouvé.

0 votes

@DinuNicolae veuillez vous référer Ajout de nouvelles informations d'identification globales -> 7. à l'adresse suivante.jenkins.io/doc/book/using/using-credentials

6voto

madeyejm Points 186

Pour ce que ça vaut en ajoutant à la discussion... ce que j'ai fait qui m'a finalement aidé... Comme le pipeline est exécuté dans un espace de travail à l'intérieur d'une image docker qui est nettoyée à chaque exécution. J'ai récupéré les identifiants nécessaires pour effectuer les opérations nécessaires sur le référentiel au sein de mon pipeline et les ai stockés dans un fichier .netrc. Cela m'a permis d'autoriser avec succès les opérations sur le référentiel git.

withCredentials([usernamePassword(credentialsId: '', passwordVariable: 'GIT_PASSWORD', usernameVariable: 'GIT_USERNAME')]) {
    sh '''
        printf "machine github.com\nlogin $GIT_USERNAME\n password $GIT_PASSWORD" >> ~/.netrc
        // continuer le script comme nécessaire en travaillant avec le référentiel git...
    '''
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X