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