GitLab CI 构建子项目并分别部署到kubernetes

GitLab CI build sub-projects and deploy them to kubernetes separately

如果我有一个 GitLab 项目,其中包含几个子文件夹:

每个子项目都有一个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 等)