J'utilise le plugin du pipeline Jenkins avec un fichier Jenkins.
Dans un référentiel, appelé vms.git, j'ai le fichier Jenkins et une application qu'il construit.
J'ai un autre référentiel appelé deploy.git, qui contient des scripts que je veux utiliser pour déployer l'application dans vms.git.
En ce moment, mon fichier Jenkins ressemble à ceci
node {
stage 'build'
checkout scm
et je définis le référentiel vms.git dans la configuration du travail.
Donc, ce que je voudrais faire, c'est vérifier les deux référentiels, puis utiliser le fichier Jenkins dans vms.git pour définir le reste de la construction. Je veux réutiliser les scripts deploy.git dans d'autres pipelines, donc je ne veux pas y mettre un fichier Jenkins.
Vous pouvez extraire plusieurs répertoires à l'aide de checkout
, mais vous devez spécifier le répertoire dans lequel vous souhaitez extraire ceci. Vous pouvez générer des extraits à l'aide de jenkins (champ de script ci-dessous pour le générateur d'extraits). Choisissez checkout, prochain dépôt git et dans Comportements supplémentaires, choisissez: checkout dans le sous-répertoire.
Lorsque vous aurez 2 référentiels, vous pouvez charger le script à partir du référentiel que vous souhaitez utiliser dans load
. Exemple:
node {
// first repository
checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'subdirectory1']], submoduleCfg: [], userRemoteConfigs: [[url: 'repo1.git']]])
// second repository
checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'subdirectory2']], submoduleCfg: [], userRemoteConfigs: [[url: 'repo2.git']]])
// run first script
load 'subdirectory1/Jenkinsfile'
// run second script
load 'subdirectory2/Jenkinsfile'
}
Une autre solution élégante pour gérer plusieurs référentiels Git dans un seul pipeline peut être trouvée à ce fil .
node {
dir('RepoOne') {
git url: 'https://github.com/somewhere/RepoOne.git'
}
dir('RepoTwo') {
git url: 'https://github.com/somewhere/RepoTwo.git'
}
sh('. RepoOne/build.sh')
sh('. RepoTwo/build.sh')
}