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

时间:2017-03-22 08:45:51

标签: continuous-integration gitlab kubernetes continuous-deployment gitlab-ci

如果我有一个包含多个子文件夹的GitLab项目:

  • 两个用java代码(来自java:alpine,用maven和build容器编译)
  • 一个使用nginx配置(来自openresty:alpine,构建一个Web服务器容器)

每个子项目都有一个Dockerfile,deployment.yml和gitlab-ci.yml。

对于项目中的每个子文件夹,

deployment.yml都是类似的,因为所有子项目都会产生一个多容器kubernetes pod。

我如何设置这个项目来构建和部署到kubernetes只有我上次提交时编辑的容器?

1 个答案:

答案 0 :(得分:1)

我使用了一个肮脏的黑客,比如在.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等)