scm node example git jenkins ssh jenkins-pipeline

node - ¿Verifica Jenkins Pipeline Git SCM con credenciales?



jenkins pipeline sh command (5)

Agregándole un ejemplo rápido usando el complemento git GitSCM :

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

en tu tubería

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

Estaba siguiendo este tutorial :

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

Sin embargo, no dice cómo agregar credenciales. Jenkins tiene una sección específica de "Credenciales" donde define usuario usuario y pase, y luego obtiene una identificación para usar en trabajos, pero ¿cómo lo uso en las instrucciones de Pipeline?

Lo intenté con:

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

sin suerte:

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.

¿Hay alguna forma de configurar los créditos en la tubería, o tengo que poner claves SSH en el archivo .ssh / Authorizedkeys del usuario Linux de Jenkin?

En el mundo ideal, me gustaría tener un repositorio para trabajos de canalización y claves de repositorio, luego iniciar Docker Jenkins y agregar dinámicamente estos trabajos y claves allí sin tener que configurar nada en la Consola Jenkins.


Para pagar explícitamente usando credenciales específicas

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

Para finalizar la compra según las credenciales configuradas en el trabajo actual de Jenkins

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

Puede usar ambas etapas dentro de un solo archivo Jenkins.


Por lo que vale la pena agregar a la discusión ... lo que hice eso terminó ayudándome ... Ya que la tubería se ejecuta dentro de un espacio de trabajo dentro de una imagen acoplable que se limpia cada vez que se ejecuta. Tomé las credenciales necesarias para realizar las operaciones necesarias en el repositorio dentro de mi cartera y las almacené en un archivo .netrc. esto me permitió autorizar las operaciones de repositorio de git con éxito.

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


Puede usar lo siguiente en una tubería:

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

Si está utilizando la URL ssh, sus credenciales deben ser nombre de usuario + clave privada. Si está utilizando la URL de clonación https en lugar de la ssh, entonces sus credenciales deben ser nombre de usuario + contraseña.


Si desea usar credenciales ssh,

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

si desea usar credenciales de nombre de usuario y contraseña, debe usar el clon http como se menciona en @Serban.

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