web-dev-qa-db-fra.com

Comment Jenkins Pipeline peut-il fonctionner avec Monorepo?

Je suis très nouveau à Jenkins. Mon référentiel est un monorepo - contient deux sous-projets, web_app et native_app. Je souhaite utiliser Jenkins en tant que moteur de configuration pour que chaque fois que le code soit transmis au référentiel, Jenkins vous aide à effectuer automatiquement le flux de production build-test-delivery.

J'ai créé un projet de pipeline, il semble intuitivement que je devrais créer deux Jenkinsfile, chacun sous un dossier associé, c'est-à-dire:

web_app/
  |-Jenkinsfile
native_app/
  |-Jenkinsfile

Cependant, je me suis vite rendu compte que cela poserait des problèmes - je dois changer de répertoire de travail pour presque chaque étape/étape. A tenté

stage('Build') { 
  steps {
      sh 'cd ./web_app/'
      sh 'ls'
      sh 'git pull'
    }
}

mais ne fonctionne pas, le répertoire de travail n’est pas modifié.

Je n'ai pas trouvé de méthode efficace pour modifier l'espace de travail pour l'ensemble du pipeline et je crains que cette structure monorepo ne provoque davantage de problèmes avec Jenkins à l'avenir. Dois-je diviser ce référentiel ou existe-t-il un moyen pratique de changer de répertoire de travail?

6
Stanley Luo

Vous pouvez utiliser l’étape dir pour modifier le répertoire d’un bloc d’étapes. Votre exemple de code ressemblerait à ceci:

stage('Build') {
  dir('web_app') {
    sh 'ls'
    sh 'git pull'
  }
}

Documentation de l'étape dir

dir: change le répertoire courant

Changer le répertoire actuel. Toute étape du bloc dir utilisera ce répertoire comme courant et tout chemin relatif l’utilisera comme chemin de base. Chemin

Type: chaîne

2
Antonio O.