GitLab CI构建子项目并将它们单独部署到Kubernetes

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

  • 两个包含Java代码的文件夹(使用java:alpine编译并使用Maven构建容器)
  • 一个包含Nginx配置的文件夹(使用openresty:alpine构建Web服务器容器)

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

deployment.yml 对于项目中的每个子文件夹都是相似的,因为所有子项目都将结果合并到一个多容器Kubernetes Pod中。

如何设置此项目,仅构建和部署最后一次提交编辑的容器到Kubernetes?

点赞
用户3906452
用户3906452

我使用了一种不太正规的方法,例如在每个子项目的.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等)。

2017-04-03 09:57:58