Skip to content

Commit 8141581

Browse files
authored
Merge pull request #3 from field-energy/as/pass-task-arn-and-container-overrides
fix: output task def family:revision
2 parents f82e897 + 6c00345 commit 8141581

File tree

3 files changed

+19
-5
lines changed

3 files changed

+19
-5
lines changed

action.yml

+2
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ inputs:
6666
outputs:
6767
task-definition-arn:
6868
description: 'The ARN of the registered ECS task definition'
69+
task-definition-family-and-revision:
70+
description: 'The family & revision of the registered task definition - eg. "my-task-family:1"'
6971
task-arn:
7072
description: 'The ARN of the ECS task'
7173
runs:

index.js

+10-1
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ async function run() {
126126

127127
// Register the task definition if necessary - or use the passed in ARN
128128
if (!taskDefinitionFile && !taskDefRevisionArn) {
129-
const msg = "Invalid parameters: One of task-definition-file or task-definition-arn must be set";
129+
const msg = "Invalid parameters: One of task-definition or task-definition-revision-arn must be set";
130130
core.setFailed(msg);
131131
throw new Error(msg);
132132
}
@@ -157,8 +157,17 @@ async function run() {
157157
} else {
158158
core.debug(`Using the passed task definition ARN ${taskDefRevisionArn}`);
159159
}
160+
160161
core.setOutput('task-definition-arn', taskDefRevisionArn);
161162

163+
/* Extract task-definition-family & revision ARN, so we can output family:revision
164+
* Useful for later using `aws ecs describe-task-definition` to get the full ARN,
165+
* since outputting full ARN can be misinterpreted as a secret by Github Actions.
166+
*/
167+
const regex = new RegExp(':task-definition/(.*)$');
168+
const matches = taskDefRevisionArn.match(regex);
169+
core.setOutput('task-definition-family-and-revision', matches[1])
170+
162171
const clusterName = cluster ? cluster : 'default';
163172

164173
/**

index.test.js

+7-4
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ describe('Deploy to ECS', () => {
6666
mockEcsRegisterTaskDef.mockImplementation(() => {
6767
return {
6868
promise() {
69-
return Promise.resolve({ taskDefinition: { taskDefinitionArn: 'task:def:arn' } });
69+
return Promise.resolve({ taskDefinition: { taskDefinitionArn: 'task:def:arn:task-definition/task-def-family:1' } });
7070
}
7171
};
7272
});
@@ -135,10 +135,11 @@ describe('Deploy to ECS', () => {
135135
await run();
136136
expect(core.setFailed).toHaveBeenCalledTimes(0);
137137
expect(mockEcsRegisterTaskDef).toHaveBeenNthCalledWith(1, { family: 'task-def-family'});
138-
expect(core.setOutput).toHaveBeenNthCalledWith(1, 'task-definition-arn', 'task:def:arn');
138+
expect(core.setOutput).toBeCalledWith('task-definition-arn', 'task:def:arn:task-definition/task-def-family:1');
139+
expect(core.setOutput).toBeCalledWith('task-definition-family-and-revision', 'task-def-family:1');
139140
expect(mockRunTasks).toHaveBeenNthCalledWith(1, {
140141
cluster: 'cluster-789',
141-
taskDefinition: 'task:def:arn',
142+
taskDefinition: 'task:def:arn:task-definition/task-def-family:1',
142143
count: '1',
143144
startedBy: 'amazon-ecs-run-task-for-github-actions',
144145
networkConfiguration: {
@@ -169,13 +170,15 @@ describe('Deploy to ECS', () => {
169170
expect(core.setFailed).toHaveBeenCalledTimes(0);
170171

171172
expect(mockEcsRegisterTaskDef).toHaveBeenNthCalledWith(1, { family: 'task-def-family'});
172-
expect(core.setOutput).toHaveBeenNthCalledWith(1, 'task-definition-arn', 'task:def:arn');
173+
expect(core.setOutput).toBeCalledWith('task-definition-arn', 'task:def:arn:task-definition/task-def-family:1');
174+
expect(core.setOutput).toBeCalledWith('task-definition-family-and-revision', 'task-def-family:1');
173175
expect(mockEcsDescribeTasks).toHaveBeenNthCalledWith(1, {
174176
cluster: 'cluster-789',
175177
tasks: ['arn:aws:ecs:fake-region:account_id:task/arn']
176178
});
177179

178180
expect(mockEcsWaiter).toHaveBeenCalledTimes(1);
181+
expect(core.setOutput).toBeCalledWith('task-arn', ['arn:aws:ecs:fake-region:account_id:task/arn']);
179182

180183
expect(core.info).toBeCalledWith("All tasks have exited successfully.");
181184
});

0 commit comments

Comments
 (0)