我有多个项目需要作为同一CI流的一部分来构建--一些是在java中,一些是nodejs,一些是c++等等。
我的问题是-我应该为每个模块类型创建一个jenkins从属容器镜像,即一个能够构建java的专用从属镜像,以及一个专用容器来构建nodejs,并安装节点等,或者创建一个可以构建任何东西的容器- jave、node等。
如果我从vm的角度来看,我很可能会使用相同的vm来构建任何东西--这意味着一个集中的构建从站。但我不喜欢这种依赖性,或者如果明天我需要更新java版本并保留旧版本,我可能会创建巨大的图像,它们之间的差异很小。
WDYT?
发布于 2017-01-18 19:29:23
我个人倾向于使用容器-每个模块-类型,原因如下:
我可能会用Git创建一个单独的项目,它的结构是这样的:
- /slaves
- /slaves/java
- /slaves/java/Dockerfile
- /slaves/node
- /slaves/node/Dockerfile
...我有一个Dockerfile,它为给定的“模块类型”创建和构建从模块的容器镜像。我会通过拉取请求对这个项目进行更改,每次拉取请求合并到master中时,将生成的图像推送到DockerHub作为新版本,作为我的Jenkins slaves使用。
我会让我的Jenkins实例中运行的另一个项目来处理上面的事情,这个项目只是简单地监视我的Git存储库。当对Git存储库进行更改时,它只会按顺序运行构建命令,然后将新镜像推送到DockerHub:
docker build -f slaves/java/Dockerfile -t my-company/java-slave:$BUILD_NUMBER -t my-company/java-slave:latest
docker build -f slaves/node/Dockerfile -t my-company/node-slave:$BUILD_NUMBER -t my-company/node-slave:latest
docker push my-company/java-slave:$BUILD_NUMBER
docker push my-company/java-slave:latest
docker push my-company/node-slave:$BUILD_NUMBER
docker push my-company/node-slave:latest然后,当您准备好时,可以将Jenkins配置更新为新的从属映像。
https://stackoverflow.com/questions/41715859
复制相似问题