GitLab CI 构建子项目并分别部署到kubernetes
GitLab CI build sub-projects and deploy them to kubernetes separately
如果我有一个 GitLab 项目,其中包含几个子文件夹:
- 两个 java 代码(来自 java:alpine,用 maven 编译和构建容器)
- 一个带有 nginx 配置(来自 openresty:alpine,用于构建 Web 服务器容器)
每个子项目都有一个Dockerfile,deployment.yml,和gitlab-ci.yml。
deployment.yml 对于项目中的每个子文件夹都是相似的,因为所有的子项目都会生成一个多容器 kubernetes pod。
如何设置此项目以仅构建我在上次提交时编辑的容器并将其部署到 kubernetes?
我使用了一个肮脏的 hack,比如在 .gitlab-ci.yml 中为每个子项目设置几个构建块,并为每个子项目设置 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 build stage
也是如此。
之后,如果我推送像 akka-1.0.3
这样的标签,就会启动适当的管道作业。
但是,单个项目的 GitLab CI 注册表中的图像只有一个名称存在问题,因此您应该将图像推送到其他地方(GCR 等)
如果我有一个 GitLab 项目,其中包含几个子文件夹:
- 两个 java 代码(来自 java:alpine,用 maven 编译和构建容器)
- 一个带有 nginx 配置(来自 openresty:alpine,用于构建 Web 服务器容器)
每个子项目都有一个Dockerfile,deployment.yml,和gitlab-ci.yml。
deployment.yml 对于项目中的每个子文件夹都是相似的,因为所有的子项目都会生成一个多容器 kubernetes pod。
如何设置此项目以仅构建我在上次提交时编辑的容器并将其部署到 kubernetes?
我使用了一个肮脏的 hack,比如在 .gitlab-ci.yml 中为每个子项目设置几个构建块,并为每个子项目设置 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 build stage
也是如此。
之后,如果我推送像 akka-1.0.3
这样的标签,就会启动适当的管道作业。
但是,单个项目的 GitLab CI 注册表中的图像只有一个名称存在问题,因此您应该将图像推送到其他地方(GCR 等)