Gitlab Kubernetes CD自动标记更改

问题描述

我的团队使用Helm在Gitlab中开发了kubernetes应用。作为审查过程的一部分,我们将应用程序实例部署到MR的名称空间中。构建Docker映像并将其标记为最新(对于当前的master稳定版)或标记为更改的分支。

我希望评论应用自动使用分支的最新版本(如果存在),否则使用最新版本,希望无需干预即可手动修改图像标签。

最干净的方法是什么?我看过很多地方

解决方法

使用--set部署头盔时,您可以传递docker image标签值。因此,对于管道中的不同分支(主分支和非主分支),您可以有不同的阶段,其中一个阶段您将传递--set dockerImageTag=latest,而对于MR分支,它将是--set dockerImageTag=<branch-name>

mr-build-deploy:
  only:
    - merge_requests
  script:
    - docker build ...
    - docker tag <docker-tag-name>
    - helm install --set dockerImageTag=<docker-tag-name> ...
 ...

master-build-deploy:
  only:
    - master
  script:
    - docker build ...
    - docker tag latest
    - helm install --set dockerImageTag=latest ...
 ...

或者在values.yaml中为lem图,您可以将默认值dockerImageTag设置为最新值,因此对于主步骤,您无需指定它。

说到最佳实践,建议不要使用最新标签,而要使用版本号(例如,以SemVer的形式),这样可以确保docker image中的哪些更改(如果发生)破坏了应用程序。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...