Skip to content

Commit a93f8b6

Browse files
authored
Merge branch 'main' into npalm/fix/fifo
2 parents 365661e + a2280f7 commit a93f8b6

File tree

15 files changed

+98
-19
lines changed

15 files changed

+98
-19
lines changed

CHANGELOG.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,20 @@
11
# Changelog
22

3+
## [5.21.0](https://github.com/philips-labs/terraform-aws-github-runner/compare/v5.20.1...v5.21.0) (2024-12-20)
4+
5+
6+
### Features
7+
8+
* Natively support runner pre/post job hooks ([#4263](https://github.com/philips-labs/terraform-aws-github-runner/issues/4263)) ([259a852](https://github.com/philips-labs/terraform-aws-github-runner/commit/259a852d9e1b08f18abe81c9fd80589be9cc7e64))
9+
10+
11+
### Bug Fixes
12+
13+
* Incorrect syncer binary location in tf outputs ([#4274](https://github.com/philips-labs/terraform-aws-github-runner/issues/4274)) ([401a373](https://github.com/philips-labs/terraform-aws-github-runner/commit/401a373684a6b11acd705fe88afee19f3fa84b4c)), closes [#4137](https://github.com/philips-labs/terraform-aws-github-runner/issues/4137)
14+
* **lambda:** bump @octokit/types from 13.6.1 to 13.6.2 in /lambdas in the octokit group ([#4303](https://github.com/philips-labs/terraform-aws-github-runner/issues/4303)) ([9f76c4c](https://github.com/philips-labs/terraform-aws-github-runner/commit/9f76c4c7b12814da32310153ae668a657da30458))
15+
* **lambda:** bump axios from 1.7.7 to 1.7.9 in /lambdas ([#4305](https://github.com/philips-labs/terraform-aws-github-runner/issues/4305)) ([e3cd5b4](https://github.com/philips-labs/terraform-aws-github-runner/commit/e3cd5b4c5c92ff1107f03f04d691ba8ed214da4d))
16+
* **lambda:** bump the aws group across 1 directory with 7 updates ([#4314](https://github.com/philips-labs/terraform-aws-github-runner/issues/4314)) ([3f9b768](https://github.com/philips-labs/terraform-aws-github-runner/commit/3f9b76878987773458fd2d9bb696d1f4d82d5ec2))
17+
318
## [5.20.1](https://github.com/philips-labs/terraform-aws-github-runner/compare/v5.20.0...v5.20.1) (2024-12-09)
419

520

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,8 @@ Talk to the forestkeepers in the `runners-channel` on Slack.
209209
| <a name="input_runner_egress_rules"></a> [runner\_egress\_rules](#input\_runner\_egress\_rules) | List of egress rules for the GitHub runner instances. | <pre>list(object({<br/> cidr_blocks = list(string)<br/> ipv6_cidr_blocks = list(string)<br/> prefix_list_ids = list(string)<br/> from_port = number<br/> protocol = string<br/> security_groups = list(string)<br/> self = bool<br/> to_port = number<br/> description = string<br/> }))</pre> | <pre>[<br/> {<br/> "cidr_blocks": [<br/> "0.0.0.0/0"<br/> ],<br/> "description": null,<br/> "from_port": 0,<br/> "ipv6_cidr_blocks": [<br/> "::/0"<br/> ],<br/> "prefix_list_ids": null,<br/> "protocol": "-1",<br/> "security_groups": null,<br/> "self": null,<br/> "to_port": 0<br/> }<br/>]</pre> | no |
210210
| <a name="input_runner_extra_labels"></a> [runner\_extra\_labels](#input\_runner\_extra\_labels) | Extra (custom) labels for the runners (GitHub). Separate each label by a comma. Labels checks on the webhook can be enforced by setting `enable_workflow_job_labels_check`. GitHub read-only labels should not be provided. | `list(string)` | `[]` | no |
211211
| <a name="input_runner_group_name"></a> [runner\_group\_name](#input\_runner\_group\_name) | Name of the runner group. | `string` | `"Default"` | no |
212+
| <a name="input_runner_hook_job_completed"></a> [runner\_hook\_job\_completed](#input\_runner\_hook\_job\_completed) | Script to be ran in the runner environment at the end of every job | `string` | `""` | no |
213+
| <a name="input_runner_hook_job_started"></a> [runner\_hook\_job\_started](#input\_runner\_hook\_job\_started) | Script to be ran in the runner environment at the beginning of every job | `string` | `""` | no |
212214
| <a name="input_runner_iam_role_managed_policy_arns"></a> [runner\_iam\_role\_managed\_policy\_arns](#input\_runner\_iam\_role\_managed\_policy\_arns) | Attach AWS or customer-managed IAM policies (by ARN) to the runner IAM role | `list(string)` | `[]` | no |
213215
| <a name="input_runner_log_files"></a> [runner\_log\_files](#input\_runner\_log\_files) | (optional) Replaces the module default cloudwatch log config. See https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-Configuration-File-Details.html for details. | <pre>list(object({<br/> log_group_name = string<br/> prefix_log_group = bool<br/> file_path = string<br/> log_stream_name = string<br/> }))</pre> | `null` | no |
214216
| <a name="input_runner_metadata_options"></a> [runner\_metadata\_options](#input\_runner\_metadata\_options) | Metadata options for the ec2 runner instances. By default, the module uses metadata tags for bootstrapping the runner, only disable `instance_metadata_tags` when using custom scripts for starting the runner. | `map(any)` | <pre>{<br/> "http_endpoint": "enabled",<br/> "http_put_response_hop_limit": 1,<br/> "http_tokens": "required",<br/> "instance_metadata_tags": "enabled"<br/>}</pre> | no |

examples/multi-runner/templates/runner-configs/linux-arm64.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,7 @@ runner_config:
1818
runners_maximum_count: 1
1919
delay_webhook_event: 0
2020
scale_down_schedule_expression: cron(* * * * ? *)
21+
runner_hook_job_started: |
22+
echo "Running pre job hook as \$(whoami)"
23+
runner_hook_job_completed: |
24+
echo "Running post job hook as \$(whoami)"

examples/multi-runner/templates/user-data.sh

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,4 +81,18 @@ ${post_install}
8181

8282
cd /opt/actions-runner
8383

84+
%{ if hook_job_started != "" }
85+
cat > /opt/actions-runner/hook_job_started.sh << EOF
86+
${hook_job_started}
87+
EOF
88+
echo ACTIONS_RUNNER_HOOK_JOB_STARTED=/opt/actions-runner/hook_job_started.sh | tee -a /opt/actions-runner/.env
89+
%{ endif }
90+
91+
%{ if hook_job_completed != "" }
92+
cat > /opt/actions-runner/hook_job_completed.sh << EOF
93+
${hook_job_completed}
94+
EOF
95+
echo ACTIONS_RUNNER_HOOK_JOB_COMPLETED=/opt/actions-runner/hook_job_completed.sh | tee -a /opt/actions-runner/.env
96+
%{ endif }
97+
8498
${start_runner}

main.tf

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ module "runners" {
215215
lambda_runtime = var.lambda_runtime
216216
lambda_architecture = var.lambda_architecture
217217
lambda_zip = var.runners_lambda_zip
218-
lambda_scale_up_memory_size = coalesce(var.runners_scale_up_Lambda_memory_size, var.runners_scale_up_lambda_memory_size)
218+
lambda_scale_up_memory_size = var.runners_scale_up_lambda_memory_size
219219
lambda_scale_down_memory_size = var.runners_scale_down_lambda_memory_size
220220
lambda_timeout_scale_up = var.runners_scale_up_lambda_timeout
221221
lambda_timeout_scale_down = var.runners_scale_down_lambda_timeout
@@ -245,6 +245,8 @@ module "runners" {
245245
userdata_content = var.userdata_content
246246
userdata_pre_install = var.userdata_pre_install
247247
userdata_post_install = var.userdata_post_install
248+
runner_hook_job_started = var.runner_hook_job_started
249+
runner_hook_job_completed = var.runner_hook_job_completed
248250
key_name = var.key_name
249251
runner_ec2_tags = var.runner_ec2_tags
250252

modules/multi-runner/README.md

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

modules/multi-runner/runners.tf

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -86,13 +86,15 @@ module "runners" {
8686
role_path = var.role_path
8787
role_permissions_boundary = var.role_permissions_boundary
8888

89-
enable_userdata = each.value.runner_config.enable_userdata
90-
userdata_template = each.value.runner_config.userdata_template
91-
userdata_content = each.value.runner_config.userdata_content
92-
userdata_pre_install = each.value.runner_config.userdata_pre_install
93-
userdata_post_install = each.value.runner_config.userdata_post_install
94-
key_name = var.key_name
95-
runner_ec2_tags = each.value.runner_config.runner_ec2_tags
89+
enable_userdata = each.value.runner_config.enable_userdata
90+
userdata_template = each.value.runner_config.userdata_template
91+
userdata_content = each.value.runner_config.userdata_content
92+
userdata_pre_install = each.value.runner_config.userdata_pre_install
93+
userdata_post_install = each.value.runner_config.userdata_post_install
94+
runner_hook_job_started = each.value.runner_config.runner_hook_job_started
95+
runner_hook_job_completed = each.value.runner_config.runner_hook_job_completed
96+
key_name = var.key_name
97+
runner_ec2_tags = each.value.runner_config.runner_ec2_tags
9698

9799
create_service_linked_role_spot = each.value.runner_config.create_service_linked_role_spot
98100

modules/multi-runner/variables.tf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@ variable "multi_runner_config" {
7878
cloudwatch_config = optional(string, null)
7979
userdata_pre_install = optional(string, "")
8080
userdata_post_install = optional(string, "")
81+
runner_hook_job_started = optional(string, "")
82+
runner_hook_job_completed = optional(string, "")
8183
runner_ec2_tags = optional(map(string), {})
8284
runner_iam_role_managed_policy_arns = optional(list(string), [])
8385
vpc_id = optional(string, null)
@@ -179,6 +181,8 @@ variable "multi_runner_config" {
179181
cloudwatch_config: "(optional) Replaces the module default cloudwatch log config. See https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-Configuration-File-Details.html for details."
180182
userdata_pre_install: "Script to be ran before the GitHub Actions runner is installed on the EC2 instances"
181183
userdata_post_install: "Script to be ran after the GitHub Actions runner is installed on the EC2 instances"
184+
runner_hook_job_started: "Script to be ran in the runner environment at the beginning of every job"
185+
runner_hook_job_completed: "Script to be ran in the runner environment at the end of every job"
182186
runner_ec2_tags: "Map of tags that will be added to the launch template instance tag specifications."
183187
runner_iam_role_managed_policy_arns: "Attach AWS or customer-managed IAM policies (by ARN) to the runner IAM role"
184188
vpc_id: "The VPC for security groups of the action runners. If not set uses the value of `var.vpc_id`."

modules/runners/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,8 @@ yarn run dist
203203
| <a name="input_runner_disable_default_labels"></a> [runner\_disable\_default\_labels](#input\_runner\_disable\_default\_labels) | Disable default labels for the runners (os, architecture and `self-hosted`). If enabled, the runner will only have the extra labels provided in `runner_extra_labels`. | `bool` | `false` | no |
204204
| <a name="input_runner_ec2_tags"></a> [runner\_ec2\_tags](#input\_runner\_ec2\_tags) | Map of tags that will be added to the launch template instance tag specifications. | `map(string)` | `{}` | no |
205205
| <a name="input_runner_group_name"></a> [runner\_group\_name](#input\_runner\_group\_name) | Name of the runner group. | `string` | `"Default"` | no |
206+
| <a name="input_runner_hook_job_completed"></a> [runner\_hook\_job\_completed](#input\_runner\_hook\_job\_completed) | Script to be ran in the runner environment at the end of every job | `string` | `""` | no |
207+
| <a name="input_runner_hook_job_started"></a> [runner\_hook\_job\_started](#input\_runner\_hook\_job\_started) | Script to be ran in the runner environment at the beginning of every job | `string` | `""` | no |
206208
| <a name="input_runner_iam_role_managed_policy_arns"></a> [runner\_iam\_role\_managed\_policy\_arns](#input\_runner\_iam\_role\_managed\_policy\_arns) | Attach AWS or customer-managed IAM policies (by ARN) to the runner IAM role | `list(string)` | `[]` | no |
207209
| <a name="input_runner_labels"></a> [runner\_labels](#input\_runner\_labels) | All the labels for the runners (GitHub) including the default one's(e.g: self-hosted, linux, x64, label1, label2). Separate each label by a comma | `list(string)` | n/a | yes |
208210
| <a name="input_runner_log_files"></a> [runner\_log\_files](#input\_runner\_log\_files) | (optional) List of logfiles to send to CloudWatch, will only be used if `enable_cloudwatch_agent` is set to true. Object description: `log_group_name`: Name of the log group, `prefix_log_group`: If true, the log group name will be prefixed with `/github-self-hosted-runners/<var.prefix>`, `file_path`: path to the log file, `log_stream_name`: name of the log stream. | <pre>list(object({<br/> log_group_name = string<br/> prefix_log_group = bool<br/> file_path = string<br/> log_stream_name = string<br/> }))</pre> | `null` | no |

modules/runners/main.tf

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,9 @@ locals {
5454
S3_LOCATION_RUNNER_DISTRIBUTION = local.s3_location_runner_distribution
5555
RUNNER_ARCHITECTURE = var.runner_architecture
5656
})
57-
post_install = var.userdata_post_install
57+
post_install = var.userdata_post_install
58+
hook_job_started = var.runner_hook_job_started
59+
hook_job_completed = var.runner_hook_job_completed
5860
start_runner = templatefile(local.userdata_start_runner[var.runner_os], {
5961
metadata_tags = var.metadata_options != null ? var.metadata_options.instance_metadata_tags : "enabled"
6062
})

0 commit comments

Comments
 (0)