使用 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 .")
}
}
}
我们正在使 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 .")
}
}
}