remote remota rama origin example comandos cambiar git jenkins jenkins-pipeline

remota - git push example



Usando una tuberĂ­a de Jenkins para verificar mĂșltiples repositorios git en el mismo trabajo (4)

Aquí está el mío

stage(''CheckoutModule1'') { steps { sh ''mkdir -p Module1'' dir("Module1") { git branch: "develop", credentialsId: ''aaa'', url: ''[email protected]:b/module1.git'' } } } stage(''CheckoutModule2'') { steps { sh ''mkdir -p Module2'' dir("Module2") { git branch: "develop", credentialsId: ''aaa'', url: ''[email protected]:b/module2.git'' } } }

Estoy usando el complemento Jenkins Multiple SCM para ver tres repositorios git en tres subdirectorios en mi trabajo Jenkins. Luego ejecuto un conjunto de comandos para construir un único conjunto de artefactos con información y código extraído de los tres repositorios.

Múltiple SCM ahora se deprecia, y el texto recomienda pasar a las tuberías. Lo intenté, pero no puedo entender cómo hacerlo funcionar.

Aquí está la estructura de directorios que me interesa ver desde el nivel superior de mi directorio de trabajo de Jenkins:

$ ls Combination CombinationBuilder CombinationResults

Cada uno de esos tres subdirectorios tiene un único repositorio git desprotegido. Con Multiple SCM, utilicé git, y luego agregué el comportamiento "pagar a un subdirectorio". Aquí estaba mi intento con un script de canalización:

node(''ATLAS && Linux'') { sh(''[ -e CalibrationResults ] || mkdir CalibrationResults'') sh(''cd CalibrationResults'') git url: ''https://github.com/AtlasBID/CalibrationResults.git'' sh(''cd ..'') sh(''[ -e Combination ] || mkdir Combination'') sh(''cd Combination'') git url: ''https://github.com/AtlasBID/Combination.git'' sh(''cd ..'') sh(''[ -e CombinationBuilder ] || mkdir CombinationBuilder'') sh(''cd CombinationBuilder'') git url: ''https://github.com/AtlasBID/CombinationBuilder.git'' sh ''cd ..'' sh(''ls'') sh(''. CombinationBuilder/build.sh'') }

Sin embargo, el comando git parece ejecutarse en el directorio de nivel superior del espacio de trabajo (lo que tiene sentido), y de acuerdo con la sintaxis también, no parece haber un comportamiento de pago a subdirectorio.


Puede pagar esos tres repositorios git en tres subdirectorios utilizando el paso de pago SCM tres veces de esta manera:

stage(''Checkout'') { // Get CalibrationResults from GitHub checkout([ $class: ''GitSCM'', branches: [[name: ''refs/heads/master'']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: ''RelativeTargetDirectory'', relativeTargetDir: ''CalibrationResults'']], submoduleCfg: [], userRemoteConfigs: [[credentialsId: ''6463627-ab54-4e42-bc29-123458'', url: ''https://github.com/AtlasBID/CalibrationResults.git'']] ]) // Get Combination from GitHub checkout([ $class: ''GitSCM'', branches: [[name: ''refs/heads/master'']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: ''RelativeTargetDirectory'', relativeTargetDir: ''Combination'']], submoduleCfg: [], userRemoteConfigs: [[credentialsId: ''6463627-ab54-4e42-bc29-123458'', url: ''https://github.com/AtlasBID/Combination.git'']] ]) // Get CombinationBuilder from GitHub checkout([ $class: ''GitSCM'', branches: [[name: ''refs/heads/master'']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: ''RelativeTargetDirectory'', relativeTargetDir: ''CombinationBuilder'']], submoduleCfg: [], userRemoteConfigs: [[credentialsId: ''6463627-ab54-4e42-bc29-123458'', url: ''https://github.com/AtlasBID/CombinationBuilder.git'']] ]) }


Puede usar el comando dir para ejecutar un paso de canalización en un subdirectorio:

node(''ATLAS && Linux'') { dir(''CalibrationResults'') { git url: ''https://github.com/AtlasBID/CalibrationResults.git'' } dir(''Combination'') { git url: ''https://github.com/AtlasBID/Combination.git'' } dir(''CombinationBuilder'') { git url: ''https://github.com/AtlasBID/CombinationBuilder.git'' } sh(''ls'') sh(''. CombinationBuilder/build.sh'') }


Si su repositorio tiene submódulos, use git checkout

pipeline { agent {label ''master''} stages{ stage("Demo"){ steps{ echo ''Hello World'' } } stage("Source"){ parallel{ stage(''CalibrationResults''){ steps{ echo ''Checking out CalibrationResults'' checkout([$class: ''GitSCM'', branches: [[name: ''*/CI-CD-Demo'']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: ''CloneOption'', depth: 0, noTags: true, reference: '''', shallow: false, timeout: 60], [$class: ''SubmoduleOption'', disableSubmodules: false, parentCredentials: false, recursiveSubmodules: true, reference: '''', timeout: 60, trackingSubmodules: true], [$class: ''RelativeTargetDirectory'', relativeTargetDir: ''server-core''],[$class: ''CheckoutOption'', timeout: 60]], submoduleCfg: [], userRemoteConfigs: [[url: ''https://github.com/AtlasBID/CalibrationResults.git'']]]) } } stage(''Combination''){ steps{ echo ''Checking out server spoke'' checkout([$class: ''GitSCM'', branches: [[name: ''*/master'']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: ''CloneOption'', depth: 0, noTags: true, reference: '''', shallow: false, timeout: 60], [$class: ''SubmoduleOption'', disableSubmodules: false, parentCredentials: false, recursiveSubmodules: true, reference: '''', timeout: 60, trackingSubmodules: true], [$class: ''RelativeTargetDirectory'', relativeTargetDir: ''server-spoke''], [$class: ''CheckoutOption'', timeout: 60]], submoduleCfg: [], userRemoteConfigs: [[url: ''https://github.com/AtlasBID/CombinationBuilder.git'']]]) } } } } } }

Generado usando el generador de fragmentos de git de Checkout