我有一个包含N个git存储库的项目,每个项目代表一个静态网站(N个不同)。对于每个git仓库,都有一个生成定义,该定义在Azure容器注册表上创建一个nginx docker映像。这N个构建定义链接到N个发布定义,这些发布定义将每个映像部署到k8(也在Azure上)。总体而言,CI / CD可以正常工作,并且在首次成功发布后,我会看到一系列环境,每个环境都代表一个现已在线的网站。
我无法使用VSTS CI / CD声明如何拆除这些环境。在GitLab CI(我以前使用过)中,存在一个stopping an environment的概念,尽管这只是.gitlab-ci.yaml
中的一个阶段,但是运行它实际上会从已部署的列表中删除一个环境。 >
在删除可自动部署的功能分支(又称为Review Apps)时,停止环境可能很有用。就我而言,当需要删除一个已经共享的静态网站时,我想这样做。
VSTS似乎没有释放已发布内容的概念,我想知道最好的解决方法是什么。到目前为止,我尝试了以下两个选项:
创建N个新的发布定义管道,这些管道会为相应的静态网站调用kubecetl delete ...
。这确实使事情变得很清楚,因为一个管道中称为k8s prod (website-42)
的环境与另一个管道中的环境并不相同(否则,我可以看到web → cloud
或web × cloud
被最后调用了) ):
在同一发行版定义中定义一个称为production (delete)
的新环境,并手动触发它。
在这种情况下,“部署”与“取消部署”相距不远,但是很难弄清楚最后一个(在上面的示例中,您可能会猜测,重新释放k8s资源是在删除它们之后发生的–您需要查看卡片上的时间,这是一个很差的指示。)
删除/取消部署已发布的应用程序还能做什么?
答案 0 :(得分:2)
VSTS在发行版管理中不具有“停止环境”功能(自动删除环境中已部署的内容)。但是您可以在VSTS YAML build中实现相同的目的。
因此,除了您共享的两种解决方法外,您还可以通过VSTS YAML构建来停止环境(类似于GitLab中的机制)。
对于YAML CI构建,您只需要以.vsts-ci.yml
结尾的文件即可。在.vsts-ci.yml
文件中,您可以指定带有删除已部署应用程序的任务。