是否要在VSTS中释放(取消部署)应用程序?

时间:2018-07-17 17:14:13

标签: kubernetes azure-devops continuous-deployment azure-pipelines-release-pipeline

我有一个包含N个git存储库的项目,每个项目代表一个静态网站(N个不同)。对于每个git仓库,都有一个生成定义,该定义在Azure容器注册表上创建一个nginx docker映像。这N个构建定义链接到N个发布定义,这些发布定义将每个映像部署到k8(也在Azure上)。总体而言,CI / CD可以正常工作,并且在首次成功发布后,我会看到一系列环境,每个环境都代表一个现已在线的网站。

environments VSTS CI/CD release pipelines

我无法使用VSTS CI / CD声明如何拆除这些环境。在GitLab CI(我以前使用过)中,存在一个stopping an environment的概念,尽管这只是.gitlab-ci.yaml中的一个阶段,但是运行它实际上会从已部署的列表中删除一个环境。 >

在删除可自动部署的功能分支(又称为Review Apps)时,停止环境可能很有用。就我而言,当需要删除一个已经共享的静态网站时,我想这样做。

VSTS似乎没有释放已发布内容的概念,我想知道最好的解决方法是什么。到目前为止,我尝试了以下两个选项:

  1. 创建N个新的发布定义管道,这些管道会为相应的静态网站调用kubecetl delete ...。这确实使事情变得很清楚,因为一个管道中称为k8s prod (website-42)的环境与另一个管道中的环境并不相同(否则,我可以看到web → cloudweb × cloud被最后调用了) ):

    environment cards (multiple release definitions)

  2. 在同一发行版定义中定义一个称为production (delete)的新环境,并手动触发它。

    environment cards (single release definitions)

    在这种情况下,“部署”与“取消部署”相距不远,但是很难弄清楚最后一个(在上面的示例中,您可能会猜测,重新释放k8s资源是在删除它们之后发生的–您需要查看卡片上的时间,这是一个很差的指示。)

删除/取消部署已发布的应用程序还能做什么?

1 个答案:

答案 0 :(得分:2)

VSTS在发行版管理中不具有“停止环境”功能(自动删除环境中已部署的内容)。但是您可以在VSTS YAML build中实现相同的目的。

因此,除了您共享的两种解决方法外,您还可以通过VSTS YAML构建来停止环境(类似于GitLab中的机制)。

对于YAML CI构建,您只需要以.vsts-ci.yml结尾的文件即可。在.vsts-ci.yml文件中,您可以指定带有删除已部署应用程序的任务。