我正在使用Azure DevOps设置自动部署,以部署到在EC2实例(不是Fargate)上运行服务的AWS ECS上。将Docker映像加载到ECR中,并使用CloudFormation模板完全设置ECS。
完成部署(加载新映像和/或应用任何CloudFormation更改)后,仅当服务未运行任务定义使用的映像的最新版本时,才需要重新启动服务。如果CloudFormation更新了服务或任务定义,则它将自动重新启动,并且我不想再次重新启动它。另外,如果未部署Docker映像,那么我不想重新启动它。因此,有没有办法检查服务任务当前正在运行的图像版本?
我无法检查任务定义的版本是否更改,因为在大多数情况下,它只是更改的图像,而不是任务定义。我正在使用“最新”标签加载映像,因此我可以在服务上调用ForceNewDeployment使其部署新版本,但是如果有可能,如果没有任何更改,我不想这样做。
最初,我想到要在部署过程中对其进行跟踪,但是由于我们的发布管道的设置方式以及Azure DevOps中的某些限制,所以我无法做到这一点。
我认为最好的解决方案是,如果可能的话,检查服务中每个任务当前正在运行的Image版本,以及映像是否具有更新版本,然后对该服务执行ForceNewDeployment。但是...有没有办法做到这一点?还是会有更好的方法来做我想做的事情?
编辑:当我将Docker映像加载到ECR时,我添加了两个标签:“最新”和DevOps版本号(“ 1234”)。最初,我只是希望在发布结束时查询ECR图像,如果其中有一个带有当前发布编号的标签,那么我知道该图像已更新。问题是我不知道该服务是否由于CloudFormation更改而已经重新启动。