@@ -41,6 +41,8 @@ const (
4141 canaryScaleMetadataKey = "canary-scale"
4242 currentListenersKey = "current-listeners"
4343 canaryTargetGroupArnKey = "canary-target-group-arn"
44+ // Force new deployment flag metadata key.
45+ forceNewDeploymentKey = "force-new-deployment"
4446)
4547
4648type registerer interface {
@@ -147,15 +149,15 @@ func applyTaskDefinition(ctx context.Context, cli provider.Client, taskDefinitio
147149 return td , nil
148150}
149151
150- func applyServiceDefinition (ctx context.Context , cli provider.Client , serviceDefinition types.Service ) (* types.Service , error ) {
152+ func applyServiceDefinition (ctx context.Context , cli provider.Client , serviceDefinition types.Service , forceNewDeployment bool ) (* types.Service , error ) {
151153 found , err := cli .ServiceExists (ctx , * serviceDefinition .ClusterArn , * serviceDefinition .ServiceName )
152154 if err != nil {
153155 return nil , fmt .Errorf ("unable to validate service name %s: %w" , * serviceDefinition .ServiceName , err )
154156 }
155157
156158 var service * types.Service
157159 if found {
158- service , err = cli .UpdateService (ctx , serviceDefinition )
160+ service , err = cli .UpdateService (ctx , serviceDefinition , forceNewDeployment )
159161 if err != nil {
160162 return nil , fmt .Errorf ("failed to update ECS service %s: %w" , * serviceDefinition .ServiceName , err )
161163 }
@@ -291,7 +293,7 @@ func createPrimaryTaskSet(ctx context.Context, client provider.Client, service t
291293 return nil
292294}
293295
294- func sync (ctx context.Context , in * executor.Input , platformProviderName string , platformProviderCfg * config.PlatformProviderECSConfig , recreate bool , taskDefinition types.TaskDefinition , serviceDefinition types.Service , targetGroup * types.LoadBalancer ) bool {
296+ func sync (ctx context.Context , in * executor.Input , platformProviderName string , platformProviderCfg * config.PlatformProviderECSConfig , recreate bool , forceNewDeployment bool , taskDefinition types.TaskDefinition , serviceDefinition types.Service , targetGroup * types.LoadBalancer ) bool {
295297 client , err := provider .DefaultRegistry ().Client (platformProviderName , platformProviderCfg , in .Logger )
296298 if err != nil {
297299 in .LogPersister .Errorf ("Unable to create ECS client for the provider %s: %v" , platformProviderName , err )
@@ -306,7 +308,7 @@ func sync(ctx context.Context, in *executor.Input, platformProviderName string,
306308 }
307309
308310 in .LogPersister .Infof ("Start applying the ECS service definition" )
309- service , err := applyServiceDefinition (ctx , client , serviceDefinition )
311+ service , err := applyServiceDefinition (ctx , client , serviceDefinition , forceNewDeployment )
310312 if err != nil {
311313 in .LogPersister .Errorf ("Failed to apply service %s: %v" , * serviceDefinition .ServiceName , err )
312314 return false
@@ -330,7 +332,7 @@ func sync(ctx context.Context, in *executor.Input, platformProviderName string,
330332 // Scale up the service tasks count back to its desired.
331333 in .LogPersister .Infof ("Scale up ECS desired tasks count back to %d" , cnt )
332334 service .DesiredCount = cnt
333- if _ , err = client .UpdateService (ctx , * service ); err != nil {
335+ if _ , err = client .UpdateService (ctx , * service , forceNewDeployment ); err != nil {
334336 in .LogPersister .Errorf ("Failed to turning back service tasks: %v" , err )
335337 return false
336338 }
@@ -367,7 +369,11 @@ func rollout(ctx context.Context, in *executor.Input, platformProviderName strin
367369 }
368370
369371 in .LogPersister .Infof ("Start applying the ECS service definition" )
370- service , err := applyServiceDefinition (ctx , client , serviceDefinition )
372+
373+ // forceNewDeployment is false since this configuration only available for QuickSync strategy.
374+ forceNewDeployment := false
375+
376+ service , err := applyServiceDefinition (ctx , client , serviceDefinition , forceNewDeployment )
371377 if err != nil {
372378 in .LogPersister .Errorf ("Failed to apply service %s: %v" , * serviceDefinition .ServiceName , err )
373379 return false
0 commit comments