Skip to content

Commit b74b034

Browse files
fix: support new 'ECS' deployment type rather than relying on a null value (#387)
* revert to working build and add check * Support nil for deployment controller as well * package * check `type` * add a test Co-authored-by: Braden Simpson <[email protected]>
1 parent 82ada25 commit b74b034

File tree

3 files changed

+39
-4
lines changed

3 files changed

+39
-4
lines changed

dist/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -556,10 +556,10 @@ async function run() {
556556
throw new Error(`Service is ${serviceResponse.status}`);
557557
}
558558

559-
if (!serviceResponse.deploymentController) {
559+
if (!serviceResponse.deploymentController || !serviceResponse.deploymentController.type || serviceResponse.deploymentController.type === 'ECS') {
560560
// Service uses the 'ECS' deployment controller, so we can call UpdateService
561561
await updateEcsService(ecs, clusterName, service, taskDefArn, waitForService, waitForMinutes, forceNewDeployment);
562-
} else if (serviceResponse.deploymentController.type == 'CODE_DEPLOY') {
562+
} else if (serviceResponse.deploymentController.type === 'CODE_DEPLOY') {
563563
// Service uses CodeDeploy, so we should start a CodeDeploy deployment
564564
await createCodeDeployDeployment(codedeploy, clusterName, service, taskDefArn, waitForService, waitForMinutes);
565565
} else {

index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -308,10 +308,10 @@ async function run() {
308308
throw new Error(`Service is ${serviceResponse.status}`);
309309
}
310310

311-
if (!serviceResponse.deploymentController) {
311+
if (!serviceResponse.deploymentController || !serviceResponse.deploymentController.type || serviceResponse.deploymentController.type === 'ECS') {
312312
// Service uses the 'ECS' deployment controller, so we can call UpdateService
313313
await updateEcsService(ecs, clusterName, service, taskDefArn, waitForService, waitForMinutes, forceNewDeployment);
314-
} else if (serviceResponse.deploymentController.type == 'CODE_DEPLOY') {
314+
} else if (serviceResponse.deploymentController.type === 'CODE_DEPLOY') {
315315
// Service uses CodeDeploy, so we should start a CodeDeploy deployment
316316
await createCodeDeployDeployment(codedeploy, clusterName, service, taskDefArn, waitForService, waitForMinutes);
317317
} else {

index.test.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,41 @@ describe('Deploy to ECS', () => {
167167
expect(core.info).toBeCalledWith("Deployment started. Watch this deployment's progress in the Amazon ECS console: https://console.aws.amazon.com/ecs/home?region=fake-region#/clusters/cluster-789/services/service-456/events");
168168
});
169169

170+
test('registers the task definition contents and updates the service if deployment controller type is ECS', async () => {
171+
mockEcsDescribeServices.mockImplementation(() => {
172+
return {
173+
promise() {
174+
return Promise.resolve({
175+
failures: [],
176+
services: [{
177+
status: 'ACTIVE',
178+
deploymentController: {
179+
type: 'ECS'
180+
}
181+
}]
182+
});
183+
}
184+
};
185+
});
186+
187+
await run();
188+
expect(core.setFailed).toHaveBeenCalledTimes(0);
189+
expect(mockEcsRegisterTaskDef).toHaveBeenNthCalledWith(1, { family: 'task-def-family'});
190+
expect(core.setOutput).toHaveBeenNthCalledWith(1, 'task-definition-arn', 'task:def:arn');
191+
expect(mockEcsDescribeServices).toHaveBeenNthCalledWith(1, {
192+
cluster: 'cluster-789',
193+
services: ['service-456']
194+
});
195+
expect(mockEcsUpdateService).toHaveBeenNthCalledWith(1, {
196+
cluster: 'cluster-789',
197+
service: 'service-456',
198+
taskDefinition: 'task:def:arn',
199+
forceNewDeployment: false
200+
});
201+
expect(mockEcsWaiter).toHaveBeenCalledTimes(0);
202+
expect(core.info).toBeCalledWith("Deployment started. Watch this deployment's progress in the Amazon ECS console: https://console.aws.amazon.com/ecs/home?region=fake-region#/clusters/cluster-789/services/service-456/events");
203+
});
204+
170205
test('prints Chinese console domain for cn regions', async () => {
171206
const originalRegion = config.region;
172207
config.region = 'cn-fake-region';

0 commit comments

Comments
 (0)