Jenkins管道如何与monorepo一起工作

Sta*_*Luo 6 git jenkins jenkins-pipeline

詹金斯很新.我的存储库是一个monorepo - 包含两个子项目,web_appnative_app.我想使用Jenkins作为CI引擎,这样每次代码推送到repo时,Jenkins都会自动帮助完成构建测试交付工作流程.

我创建了一个管道项目,直觉上我应该创建两个Jenkinsfile,每个都在相关的文件夹下,即:

web_app/
  |-Jenkinsfile
native_app/
  |-Jenkinsfile
Run Code Online (Sandbox Code Playgroud)

但是,我很快意识到这会导致问题 - 我需要为几乎每个阶段/步骤更改工作目录.试着

stage('Build') { 
  steps {
      sh 'cd ./web_app/'
      sh 'ls'
      sh 'git pull'
    }
}
Run Code Online (Sandbox Code Playgroud)

但不起作用,工作目录不会更改.

我还没有找到一个有效的方法来改变整个管道的工作空间,我担心这个单一结构将导致Jenkins将来出现更多问题.我应该拆分此存储库,还是有一些方便的方法来更改工作目录?

Ant*_* O. 5

您可以使用dir步骤来更改步骤块的目录。您的示例代码如下所示:

stage('Build') {
  dir('web_app') {
    sh 'ls'
    sh 'git pull'
  }
}
Run Code Online (Sandbox Code Playgroud)

dir步骤的文档

dir:更改当前目录

更改当前目录。dir 块内的任何步骤都将使用此目录作为当前目录,任何相对路径都将使用它作为基本路径。小路

类型:字符串