Оформить заказ 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.
Ответы
Ответ 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"
}
}