如何相对于子目录运行詹金斯管道?

K. *_*ddy 7 java maven jenkins spring-boot jenkins-pipeline

我有一个 git 存储库,其中有 2 个模块。一种是基于 SpringBoot 的后端模块,另一种是基于 VueJS 的前端模块。

app-root
  - backend
  - frontend
Run Code Online (Sandbox Code Playgroud)

我有一个声明式风格的 Jenkinsfile 来使用相关的 Maven 命令构建我的后端模块。我想从后端目录中执行所有这些 Maven 命令。

一种选择是单独使用dir("backend") { ....}所有命令,这对我来说看起来很难看。

是否有其他选项可以指示 Jenkins 从子目录内执行整个管道?

rmp*_*ano -2

您可以在后端和前端模块中包含 jenkinsfiles 并只需在每个管道上指向它们,例如:

在此输入图像描述

在管道本身上,您只需cd进入子模块并执行其命令:

pipeline {
   agent any

   stages {
        stage('build') {
            steps {
                 sh 'cd backend'
                 sh 'mvn clean package'
             }
       }

    //other stages
   }

}
Run Code Online (Sandbox Code Playgroud)

如果您不想使用cd子模块,可以使用稀疏签出,但在这种情况下,您必须相应地更改 jenkinsfile 的路径,因为它将位于根文件夹中。

  • 这是我提到的问题..必须为每个命令使用 dir("backend") 或"cd module"。我正在考虑是否可以进行配置,以便整个管道从目录内部运行。 (4认同)