使用 Jenkins 从父目录构建

Build from parent directory with Jenkins

我们正在使 monorepo 适应我们的项目,我们将代码组织到三个文件夹中,其中一个是其他两个项目之间的 shared_code。

当在其中一个项目或共享代码中完成更改时,会根据更改触发构建,并构建 docker 图像并将其推送到 docker 注册表。

project1
  -Dockerfile
  -Jenkinsfile
project2
  -Dockerfile
  -Jenkinsfile
shared_code
Jenkinfile

由于我们将 docker 与共享代码一起使用,因此构建应该从父目录完成,因为 docker 不希望包含父目录中的文件。

应该做这样的事情:

docker build -t project1:tag -f project1/Dockerfile .

这一切都还好,但是当使用 Jenkins 时,我在 project1 中定义了 Jenkinsfile,所以当我从 Jenkins 构建 project1 时,我遇到了 docker 不访问父目录的问题,同时时间我不想将 Jenkinsfile 带到父文件夹以保持特定组织。

有没有办法在 Jenkinsfile 中配置 Jenkins 用于构建的目录?

如果有人面临同样的挑战,我回来回答我的问题。

这就是帮助我从 Jenkins 构建图像的原因:

stage("Build image") {
        // Build the docker image with a tag
        steps {
            script {
                dockerImage = docker.build("project1:${env.BUILD_ID}", "-f ./project1/Dockerfile .")
            }
       }
 }