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.
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.
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}"
)
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.
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
}
}
}
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"
}
}
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...
'''
}