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

3
如果我有一个GitLab项目,其中包含几个子文件夹:
  • 两个Java代码(来自java:alpine,使用maven编译和构建容器)
  • 一个nginx配置文件(来自openresty:alpine,构建Web服务器容器)
每个子项目都有一个Dockerfile、deployment.yml和gitlab-ci.yml。
每个sub-folders的deployment.yml在项目中都是相似的,因为所有的sub-projects都会形成一个单一的多容器Kubernetes pod。
如何设置该项目以仅构建和部署最后一次提交所编辑的容器到Kubernetes?
1个回答

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等)。


应该只检查分支(而不是文件路径),对吗? - fatfatson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接