-
Notifications
You must be signed in to change notification settings - Fork 3
/
action.yaml
137 lines (131 loc) · 4.44 KB
/
action.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
name: "GitHub ECS Runner"
author: "Mark Ferrell"
description: "Launch ephemeral GitHub Runners in AWS ECS."
branding:
color: blue
icon: cpu
inputs:
name:
description: "Runner name"
type: string
default: "github-ecs-runner"
required: true
token:
description: "Access token to pass to the GitHub Runner. Defaults to github.token"
type: string
required: false
labels:
description: "GitHub Runner labels in addition to the default: self-hosted,Linux,X64,ephemeral,<inputs.name>"
type: string
required: false
workdir:
description: Runner workdir
type: string
required: true
default: "_workdir"
context:
description: "Runner context. Defaults to {owner}/{repo}"
type: string
required: false
task-definition:
description: "Existing AWS ECS Task Definition to use. Defaults to <inputs.name>"
type: string
required: false
cluster:
description: "ECS Cluster to deploy to"
type: string
required: true
default: default
launch-type:
description: "Launch type on which to run the task. Possible Values: FARGATE (default), EC2."
type: string
default: FARGATE
required: true
subnets:
description: "Subnet to deploy to. Subnets must have access to an IGW. Required for `launch-type = 'FARGATE'`"
type: string
required: false
subnets-tag:
description: "Use subnets with tagged with `key:value`"
type: string
required: false
security-groups:
description: "Network Security Groups to assign to this task. Required for `launch-type = 'FARGATE'`"
type: string
required: false
security-groups-tag:
description: "Use security groups tagged with `key:value`"
type: string
required: false
debug:
desription: "Enable action debugging"
type: boolean
required: true
default: false
outputs:
id:
description: GitHub Runner ID
value: ${{ steps.runner.outputs.runner_id }}
runner_id:
description: GitHub Runner ID
value: ${{ steps.runner.outputs.runner_id }}
arn:
description: AWS ECS Task Arn
value: ${{ steps.runner.outputs.aws_task_arn }}
aws_task_arn:
description: AWS ECS Task Arn
value: ${{ steps.runner.outputs.aws_task_arn }}
aws_task_id:
description: AWS ECS Task ID
value: ${{ steps.runner.outputs.aws_task_id }}
ipaddr:
description: AWS ECS IP Address
value: ${{ steps.runner.outputs.ipaddr }}
runs:
using: composite
steps:
- id: debug
if: ${{ inputs.debug }}
shell: bash
run: |
: Debugging data
printf '##\n# Environ\n%s\n' "$(env|grep '^GITHUB_'|sort)"
printf '##\n# Event\n%s\n' "$(cat "${GITHUB_EVENT_PATH}")"
printf '##\n# Files\n' ; find "${GITHUB_ACTION_PATH}"/*
printf '##\n# AWS\n' ; aws sts get-caller-identity
- id: subnets
shell: bash
env:
subnet_ids: "[ ${{ inputs.subnets }} ]"
subnet_tag: "${{ inputs.subnets-tag }}"
run: |
: AWS Describe Subnets
: FIXME migrate to ecs-run-task
test -z "${subnet_tag}" || subnet_ids="$(sh -x "${GITHUB_ACTION_PATH}/scripts/get-subnets" "${subnet_tag%%:*}" "${subnet_tag#*:}")"
echo "ids=${subnet_ids}" >> ${GITHUB_OUTPUT}
- id: security-groups
shell: bash
env:
security_group_names: "[ ${{ inputs.security-groups }} ]"
security_group_tag: "${{ inputs.security-groups-tag }}"
run: |
: AWS Describe Security Groups
: FIXME migrate to ecs-run-task
test -z "${security_group_tag}" || security_group_names="$(sh -x "${GITHUB_ACTION_PATH}/scripts/get-security-groups" "${security_group_tag%%:*}" "${security_group_tag#*:}")"
echo "names=${security_group_names}" >> ${GITHUB_OUTPUT}
- id: runner
shell: bash
env:
GITHUB_TOKEN: "${{ inputs.token }}"
INPUT_NAME: "${{ inputs.name }}"
INPUT_LABELS: "self-hosted,Linux,X64,ephemeral,${{ inputs.name }},${{ inputs.labels }}"
INPUT_WORKDIR: "${{ inputs.workdir }}"
INPUT_CONTEXT: "${{ inputs.context }}"
INPUT_LAUNCH_TYPE: "${{ inputs.launch-type }}"
INPUT_CLUSTER: "${{ inputs.cluster }}"
INPUT_TASK_DEFINITION: "${{ inputs.task-definition }}"
INPUT_SUBNETS: "${{ steps.subnets.outputs.ids }}"
INPUT_SECURITY_GROUPS: "${{ steps.security-groups.outputs.names }}"
run: |
: AWS Run ECS Task
GITHUB_TOKEN="${GITHUB_TOKEN:=${{ github.token }}}" "${GITHUB_ACTION_PATH}/scripts/ecs-run-task"