web-dev-qa-db-fra.com

Jenkinsfile avec deux dépôts git

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.

19
Mark Chorley

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'
}
32
krynio

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')
}
25
czerwin