如果我有一个 GitLab 项目,其中包含几个子文件夹:
- 两个使用 java 代码(来自 java:alpine,用 maven 编译和构建容器)
- 带有 nginx 配置的(来自 openresty:alpine,用于构建 Web 服务器容器)
每个子项目都有一个 Dockerfile、deployment.yml 和 gitlab-ci.yml。
deployment.yml 对于项目中的每个子文件夹都是相似的,因为所有子项目都会生成一个多容器 kubernetes pod。
我如何设置此项目以仅构建我在上次提交时编辑的容器并将其部署到 kubernetes?
最佳答案
我使用了一个肮脏的 hack,比如在 .gitlab-ci.yml 中为每个子项目设置几个构建 block ,并为每个子项目设置 only
参数:
maven-build-akka:
image: maven:3-jdk-8
stage: build
only:
- /^akka-.*$/
script:
- cd akka
- mvn package -B --settings ../settings.xml
artifacts:
paths:
- akka/target/*.jar
对于 docker 构建阶段
也是如此。
之后,如果我推送像 akka-1.0.3
这样的标签,就会启动适当的管道作业。
但是,单个项目在 GitLab CI 注册表中只有一个图像名称存在问题,因此您应该将图像推送到其他地方(GCR 等)
关于continuous-integration - GitLab CI构建子项目并分别部署到kubernetes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42946581/