Skip to content

Commit fbae09f

Browse files
committed
feat!: Remove support check_run (#2521)
Migration: In the past we used for scaling the check_run event, since GitHub had now support for a workflow_job event. Now the event is upport for quite some time. And also support exists on GHES. We will phase out check_run support. Ensure you configure the GitHub app to subscribe to workflow_job. In case you on an old GHES server version, the only. migration path is to update GHES or remain on old version of the module
1 parent ea3a426 commit fbae09f

File tree

8 files changed

+110
-125
lines changed

8 files changed

+110
-125
lines changed

README.md

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,15 +47,14 @@ A logical question would be, why not Kubernetes? In the current approach, we sta
4747

4848
## Overview
4949

50-
The moment a GitHub action workflow requiring a `self-hosted` runner is triggered, GitHub will try to find a runner which can execute the workload. This module reacts to GitHub's [`check_run` event](https://docs.github.com/en/developers/webhooks-and-events/webhooks/webhook-events-and-payloads#check_run) or [`workflow_job` event](https://docs.github.com/en/free-pro-team@latest/developers/webhooks-and-events/webhook-events-and-payloads#workflow_job) for the triggered workflow and creates a new runner if necessary.
50+
The moment a GitHub action workflow requiring a `self-hosted` runner is triggered, GitHub will try to find a runner which can execute the workload. This module reacts to GitHub's [`workflow_job` event](https://docs.github.com/en/free-pro-team@latest/developers/webhooks-and-events/webhook-events-and-payloads#workflow_job) for the triggered workflow and creates a new runner if necessary.
5151

52-
For receiving the `check_run` or `workflow_job` event by the webhook (lambda), a webhook needs to be created in GitHub. The `workflow_job` is the preferred option, and the `check_run` option will be maintained for backward compatibility. The advantage of the `workflow_job` event is that the runner checks if the received event can run on the configured runners by matching the labels, which avoid instances being scaled up and never used. The following options are available:
52+
For receiving the `workflow_job` event by the webhook (lambda), a webhook needs to be created in GitHub. The `check_run` option is dropped from version 2.x. The following options to sent the event are supported.
5353

54-
- `workflow_job`: **(preferred option)** create a webhook on enterprise, org or app level. Select this option for ephemeral runners.
55-
- `check_run`: create a webhook on enterprise, org, repo or app level. When using the app option, the app needs to be installed to repo's are using the self-hosted runners.
56-
- a Webhook needs to be created. The webhook hook can be defined on enterprise, org, repo, or app level.
54+
- Create a GitHup app, define a webhook and subscribe the app to the `workflow_job` event.
55+
- Create a webhook on enterprise, org or repo level, define a webhook and subscribe the app to the `workflow_job` event.
5756

58-
In AWS a [API gateway](https://docs.aws.amazon.com/apigateway/index.html) endpoint is created that is able to receive the GitHub webhook events via HTTP post. The gateway triggers the webhook lambda which will verify the signature of the event. This check guarantees the event is sent by the GitHub App. The lambda only handles `workflow_job` or `check_run` events with status `queued` and matching the runner labels (only for `workflow_job`). The accepted events are posted on a SQS queue. Messages on this queue will be delayed for a configurable amount of seconds (default 30 seconds) to give the available runners time to pick up this build.
57+
In AWS a [API gateway](https://docs.aws.amazon.com/apigateway/index.html) endpoint is created that is able to receive the GitHub webhook events via HTTP post. The gateway triggers the webhook lambda which will verify the signature of the event. This check guarantees the event is sent by the GitHub App. The lambda only handles `workflow_job` events with status `queued` and matching the runner labels. The accepted events are posted on a SQS queue. Messages on this queue will be delayed for a configurable amount of seconds (default 30 seconds) to give the available runners time to pick up this build.
5958

6059
The "scale up runner" lambda listens to the SQS queue and picks up events. The lambda runs various checks to decide whether a new EC2 spot instance needs to be created. For example, the instance is not created if the build is already started by an existing runner, or the maximum number of runners is reached.
6160

modules/runner-binaries-syncer/lambdas/runner-binaries-syncer/yarn.lock

Lines changed: 84 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.4.tgz#95c86de137bf0317f3a570e1b6e996b427299747"
4949
integrity sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw==
5050

51-
51+
"@babel/[email protected]", "@babel/core@^7.12.3":
5252
version "7.17.8"
5353
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.8.tgz#3dac27c190ebc3a4381110d46c80e77efe172e1a"
5454
integrity sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ==
@@ -69,7 +69,7 @@
6969
json5 "^2.1.2"
7070
semver "^6.3.0"
7171

72-
"@babel/core@^7.11.6", "@babel/core@^7.12.3":
72+
"@babel/core@^7.11.6":
7373
version "7.19.3"
7474
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.3.tgz#2519f62a51458f43b682d61583c3810e7dcee64c"
7575
integrity sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ==
@@ -108,6 +108,15 @@
108108
"@jridgewell/gen-mapping" "^0.3.2"
109109
jsesc "^2.5.1"
110110

111+
"@babel/generator@^7.19.3", "@babel/generator@^7.19.4":
112+
version "7.19.5"
113+
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.19.5.tgz#da3f4b301c8086717eee9cab14da91b1fa5dcca7"
114+
integrity sha512-DxbNz9Lz4aMZ99qPpO1raTbcrI1ZeYh+9NR9qhfkQIbFtVEqotHojEBxHzmxhVONkGt6VyrqVQcgpefMy9pqcg==
115+
dependencies:
116+
"@babel/types" "^7.19.4"
117+
"@jridgewell/gen-mapping" "^0.3.2"
118+
jsesc "^2.5.1"
119+
111120
"@babel/helper-compilation-targets@^7.17.7":
112121
version "7.18.9"
113122
resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz#69e64f57b524cde3e5ff6cc5a9f4a387ee5563bf"
@@ -157,6 +166,14 @@
157166
"@babel/template" "^7.18.10"
158167
"@babel/types" "^7.19.0"
159168

169+
"@babel/helper-function-name@^7.19.0":
170+
version "7.19.0"
171+
resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c"
172+
integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==
173+
dependencies:
174+
"@babel/template" "^7.18.10"
175+
"@babel/types" "^7.19.0"
176+
160177
"@babel/helper-get-function-arity@^7.16.7":
161178
version "7.16.7"
162179
resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419"
@@ -495,6 +512,22 @@
495512
debug "^4.1.0"
496513
globals "^11.1.0"
497514

515+
"@babel/traverse@^7.19.0", "@babel/traverse@^7.19.3", "@babel/traverse@^7.19.4":
516+
version "7.19.4"
517+
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.19.4.tgz#f117820e18b1e59448a6c1fa9d0ff08f7ac459a8"
518+
integrity sha512-w3K1i+V5u2aJUOXBFFC5pveFLmtq1s3qcdDNC2qRI6WPBQIDaKFqXxDEqDO/h1dQ3HjsZoZMyIy6jGLq0xtw+g==
519+
dependencies:
520+
"@babel/code-frame" "^7.18.6"
521+
"@babel/generator" "^7.19.4"
522+
"@babel/helper-environment-visitor" "^7.18.9"
523+
"@babel/helper-function-name" "^7.19.0"
524+
"@babel/helper-hoist-variables" "^7.18.6"
525+
"@babel/helper-split-export-declaration" "^7.18.6"
526+
"@babel/parser" "^7.19.4"
527+
"@babel/types" "^7.19.4"
528+
debug "^4.1.0"
529+
globals "^11.1.0"
530+
498531
499532
version "7.17.0"
500533
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b"
@@ -512,6 +545,15 @@
512545
"@babel/helper-validator-identifier" "^7.19.1"
513546
to-fast-properties "^2.0.0"
514547

548+
"@babel/types@^7.18.10", "@babel/types@^7.19.0", "@babel/types@^7.19.3", "@babel/types@^7.19.4":
549+
version "7.19.4"
550+
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.19.4.tgz#0dd5c91c573a202d600490a35b33246fed8a41c7"
551+
integrity sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw==
552+
dependencies:
553+
"@babel/helper-string-parser" "^7.19.4"
554+
"@babel/helper-validator-identifier" "^7.19.1"
555+
to-fast-properties "^2.0.0"
556+
515557
"@bcoe/v8-coverage@^0.2.3":
516558
version "0.2.3"
517559
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
@@ -1589,9 +1631,9 @@ caniuse-lite@^1.0.30001366:
15891631
integrity sha512-XDgbeOHfifWV3GEES2B8rtsrADx4Jf+juKX2SICJcaUhjYBO3bR96kvEIHa15VU6ohtOhBZuPGGYGbXMRn0NCw==
15901632

15911633
caniuse-lite@^1.0.30001400:
1592-
version "1.0.30001420"
1593-
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001420.tgz#f62f35f051e0b6d25532cf376776d41e45b47ef6"
1594-
integrity sha512-OnyeJ9ascFA9roEj72ok2Ikp7PHJTKubtEJIQ/VK3fdsS50q4KWy+Z5X0A1/GswEItKX0ctAp8n4SYDE7wTu6A==
1634+
version "1.0.30001419"
1635+
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001419.tgz#3542722d57d567c8210d5e4d0f9f17336b776457"
1636+
integrity sha512-aFO1r+g6R7TW+PNQxKzjITwLOyDhVRLjW0LcwS/HCZGUUKTGNp9+IwLC4xyDSZBygVL/mxaFR3HIV6wEKQuSzw==
15951637

15961638
chalk@^2.0.0:
15971639
version "2.4.2"
@@ -1771,6 +1813,11 @@ diff-sequences@^29.3.1:
17711813
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.3.1.tgz#104b5b95fe725932421a9c6e5b4bef84c3f2249e"
17721814
integrity sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ==
17731815

1816+
diff-sequences@^29.2.0:
1817+
version "29.2.0"
1818+
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.2.0.tgz#4c55b5b40706c7b5d2c5c75999a50c56d214e8f6"
1819+
integrity sha512-413SY5JpYeSBZxmenGEmCVQ8mCgtFJF0w9PROdaS6z987XC2Pd2GOKqOITLtMftmyFZqgtCOb/QA7/Z3ZXfzIw==
1820+
17741821
diff@^4.0.1:
17751822
version "4.0.2"
17761823
resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
@@ -1803,9 +1850,9 @@ electron-to-chromium@^1.4.188:
18031850
integrity sha512-8nCXyIQY9An88NXAp+PuPy5h3/w5ZY7Iu2lag65Q0XREprcat5F8gKhoHsBUnQcFuCRnmevpR8yEBYRU3d2HDw==
18041851

18051852
electron-to-chromium@^1.4.251:
1806-
version "1.4.283"
1807-
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.283.tgz#d4f263f5df402fd799c0a06255d580dcf8aa9a8e"
1808-
integrity sha512-g6RQ9zCOV+U5QVHW9OpFR7rdk/V7xfopNXnyAamdpFgCHgZ1sjI8VuR1+zG2YG/TZk+tQ8mpNkug4P8FU0fuOA==
1853+
version "1.4.282"
1854+
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.282.tgz#02af3fd6051e97ac3388a4b11d455bc1ca49838f"
1855+
integrity sha512-Dki0WhHNh/br/Xi1vAkueU5mtIc9XLHcMKB6tNfQKk+kPG0TEUjRh5QEMAUbRp30/rYNMFD1zKKvbVzwq/4wmg==
18091856

18101857
emittery@^0.13.1:
18111858
version "0.13.1"
@@ -2705,6 +2752,16 @@ jest-diff@^29.3.1:
27052752
jest-get-type "^29.2.0"
27062753
pretty-format "^29.3.1"
27072754

2755+
jest-diff@^29.2.0:
2756+
version "29.2.0"
2757+
resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.2.0.tgz#b1e11ac1a1401fc4792ef8ba406b48f1ae7d2bc5"
2758+
integrity sha512-GsH07qQL+/D/GxlnU+sSg9GL3fBOcuTlmtr3qr2pnkiODCwubNN2/7slW4m3CvxDsEus/VEOfQKRFLyXsUlnZw==
2759+
dependencies:
2760+
chalk "^4.0.0"
2761+
diff-sequences "^29.2.0"
2762+
jest-get-type "^29.2.0"
2763+
pretty-format "^29.2.0"
2764+
27082765
jest-docblock@^29.2.0:
27092766
version "29.2.0"
27102767
resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.2.0.tgz#307203e20b637d97cee04809efc1d43afc641e82"
@@ -2735,6 +2792,11 @@ jest-environment-node@^29.3.1:
27352792
jest-mock "^29.3.1"
27362793
jest-util "^29.3.1"
27372794

2795+
jest-get-type@^27.5.1:
2796+
version "27.5.1"
2797+
resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1"
2798+
integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==
2799+
27382800
jest-get-type@^29.2.0:
27392801
version "29.2.0"
27402802
resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.2.0.tgz#726646f927ef61d583a3b3adb1ab13f3a5036408"
@@ -3382,6 +3444,15 @@ pretty-format@^29.0.0, pretty-format@^29.3.1:
33823444
ansi-styles "^5.0.0"
33833445
react-is "^18.0.0"
33843446

3447+
pretty-format@^29.2.0:
3448+
version "29.2.0"
3449+
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.2.0.tgz#1d4ea56fb46079b44efd9ed59c14f70f2950a61b"
3450+
integrity sha512-QCSUFdwOi924g24czhOH5eTkXxUCqlLGZBRCySlwDYHIXRJkdGyjJc9nZaqhlFBZws8dq5Dvk0lCilsmlfsPxw==
3451+
dependencies:
3452+
"@jest/schemas" "^29.0.0"
3453+
ansi-styles "^5.0.0"
3454+
react-is "^18.0.0"
3455+
33853456
progress@^2.0.0:
33863457
version "2.0.3"
33873458
resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
@@ -3425,6 +3496,11 @@ react-is@^18.0.0:
34253496
resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b"
34263497
integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==
34273498

3499+
react-is@^18.0.0:
3500+
version "18.2.0"
3501+
resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b"
3502+
integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==
3503+
34283504
readdirp@~3.6.0:
34293505
version "3.6.0"
34303506
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"

modules/runners/lambdas/runners/src/scale-runners/scale-up.test.ts

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -227,11 +227,6 @@ describe('scaleUp with GHES', () => {
227227
expect(createRunner).toBeCalledWith(expectedRunnerParams);
228228
});
229229

230-
it('creates a runner with legacy event check_run', async () => {
231-
await scaleUpModule.scaleUp('aws:sqs', { ...TEST_DATA, eventType: 'check_run' });
232-
expect(createRunner).toBeCalledWith(expectedRunnerParams);
233-
});
234-
235230
it('creates a runner with labels in a specific group', async () => {
236231
process.env.RUNNER_EXTRA_LABELS = 'label1,label2';
237232
process.env.RUNNER_GROUP_NAME = 'TEST_GROUP';
@@ -402,14 +397,6 @@ describe('scaleUp with public GH', () => {
402397
expect(listEC2Runners).not.toBeCalled();
403398
});
404399

405-
it('does not list runners when no workflows are queued (check_run)', async () => {
406-
mockOctokit.checks.get.mockImplementation(() => ({
407-
data: { status: 'completed' },
408-
}));
409-
await scaleUpModule.scaleUp('aws:sqs', { ...TEST_DATA, eventType: 'check_run' });
410-
expect(listEC2Runners).not.toBeCalled();
411-
});
412-
413400
describe('on org level', () => {
414401
beforeEach(() => {
415402
process.env.ENABLE_ORGANIZATION_RUNNERS = 'true';
@@ -449,11 +436,6 @@ describe('scaleUp with public GH', () => {
449436
expect(createRunner).toBeCalledWith(expectedRunnerParams);
450437
});
451438

452-
it('creates a runner with legacy event check_run', async () => {
453-
await scaleUpModule.scaleUp('aws:sqs', { ...TEST_DATA, eventType: 'check_run' });
454-
expect(createRunner).toBeCalledWith(expectedRunnerParams);
455-
});
456-
457439
it('creates a runner with labels in s specific group', async () => {
458440
process.env.RUNNER_EXTRA_LABELS = 'label1,label2';
459441
process.env.RUNNER_GROUP_NAME = 'TEST_GROUP';

modules/runners/lambdas/runners/src/scale-runners/scale-up.ts

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -105,13 +105,6 @@ async function isJobQueued(githubInstallationClient: Octokit, payload: ActionReq
105105
repo: payload.repositoryName,
106106
});
107107
isQueued = jobForWorkflowRun.data.status === 'queued';
108-
} else if (payload.eventType === 'check_run') {
109-
const checkRun = await githubInstallationClient.checks.get({
110-
check_run_id: payload.id,
111-
owner: payload.repositoryOwner,
112-
repo: payload.repositoryName,
113-
});
114-
isQueued = checkRun.data.status === 'queued';
115108
} else {
116109
throw Error(`Event ${payload.eventType} is not supported`);
117110
}

modules/runners/lambdas/runners/yarn.lock

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2426,9 +2426,9 @@ caniuse-lite@^1.0.30001366:
24262426
integrity sha512-wgfRYa9DenEomLG/SdWgQxpIyvdtH3NW8Vq+tB6AwR9e56iOIcu1im5F/wNdDf04XlKHXqIx4N8Jo0PemeBenQ==
24272427

24282428
caniuse-lite@^1.0.30001400:
2429-
version "1.0.30001420"
2430-
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001420.tgz#f62f35f051e0b6d25532cf376776d41e45b47ef6"
2431-
integrity sha512-OnyeJ9ascFA9roEj72ok2Ikp7PHJTKubtEJIQ/VK3fdsS50q4KWy+Z5X0A1/GswEItKX0ctAp8n4SYDE7wTu6A==
2429+
version "1.0.30001419"
2430+
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001419.tgz#3542722d57d567c8210d5e4d0f9f17336b776457"
2431+
integrity sha512-aFO1r+g6R7TW+PNQxKzjITwLOyDhVRLjW0LcwS/HCZGUUKTGNp9+IwLC4xyDSZBygVL/mxaFR3HIV6wEKQuSzw==
24322432

24332433
chalk@^2.0.0:
24342434
version "2.4.2"
@@ -2642,9 +2642,9 @@ electron-to-chromium@^1.4.188:
26422642
integrity sha512-uxMa/Dt7PQsLBVXwH+t6JvpHJnrsYBaxWKi/J6HE+/nBtoHENhwBoNkgkm226/Kfxeg0z1eMQLBRPPKcDH8xWA==
26432643

26442644
electron-to-chromium@^1.4.251:
2645-
version "1.4.283"
2646-
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.283.tgz#d4f263f5df402fd799c0a06255d580dcf8aa9a8e"
2647-
integrity sha512-g6RQ9zCOV+U5QVHW9OpFR7rdk/V7xfopNXnyAamdpFgCHgZ1sjI8VuR1+zG2YG/TZk+tQ8mpNkug4P8FU0fuOA==
2645+
version "1.4.282"
2646+
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.282.tgz#02af3fd6051e97ac3388a4b11d455bc1ca49838f"
2647+
integrity sha512-Dki0WhHNh/br/Xi1vAkueU5mtIc9XLHcMKB6tNfQKk+kPG0TEUjRh5QEMAUbRp30/rYNMFD1zKKvbVzwq/4wmg==
26482648

26492649
emittery@^0.13.1:
26502650
version "0.13.1"

modules/webhook/lambdas/webhook/src/webhook/handler.test.ts

Lines changed: 3 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -246,67 +246,15 @@ describe('handler', () => {
246246
});
247247
});
248248

249-
describe('Test for check_run event (legacy): ', () => {
249+
describe('Test for check_run is ignored.', () => {
250250
it('handles check_run events', async () => {
251251
const event = JSON.stringify(checkrun_event);
252252
const resp = await handle(
253253
{ 'X-Hub-Signature': await webhooks.sign(event), 'X-GitHub-Event': 'check_run' },
254254
event,
255255
);
256-
expect(resp.statusCode).toBe(201);
257-
expect(sendActionRequest).toBeCalled();
258-
});
259-
260-
it('does not handle check_run events with actions other than queued (action = started)', async () => {
261-
const event = JSON.stringify({ ...checkrun_event, action: 'started' });
262-
const resp = await handle(
263-
{ 'X-Hub-Signature': await webhooks.sign(event), 'X-GitHub-Event': 'check_run' },
264-
event,
265-
);
266-
expect(resp.statusCode).toBe(201);
267-
expect(sendActionRequest).not.toBeCalled();
268-
});
269-
270-
it('does not handle check_run events with actions other than queued (action = completed)', async () => {
271-
const event = JSON.stringify({ ...checkrun_event, action: 'completed' });
272-
const resp = await handle(
273-
{ 'X-Hub-Signature': await webhooks.sign(event), 'X-GitHub-Event': 'check_run' },
274-
event,
275-
);
276-
expect(resp.statusCode).toBe(201);
277-
expect(sendActionRequest).not.toBeCalled();
278-
});
279-
280-
it('does not handle check_run events from unlisted repositories', async () => {
281-
const event = JSON.stringify(checkrun_event);
282-
process.env.REPOSITORY_WHITE_LIST = '["NotCodertocat/Hello-World"]';
283-
const resp = await handle(
284-
{ 'X-Hub-Signature': await webhooks.sign(event), 'X-GitHub-Event': 'check_run' },
285-
event,
286-
);
287-
expect(resp.statusCode).toBe(403);
288-
expect(sendActionRequest).not.toBeCalled();
289-
});
290-
291-
it('handles check_run events from whitelisted repositories', async () => {
292-
const event = JSON.stringify(checkrun_event);
293-
process.env.REPOSITORY_WHITE_LIST = '["Codertocat/Hello-World"]';
294-
const resp = await handle(
295-
{ 'X-Hub-Signature': await webhooks.sign(event), 'X-GitHub-Event': 'check_run' },
296-
event,
297-
);
298-
expect(resp.statusCode).toBe(201);
299-
expect(sendActionRequest).toBeCalled();
300-
});
301-
302-
it('handles check_run events with no installation id.', async () => {
303-
const event = JSON.stringify({ ...checkrun_event, installation: { id: null } });
304-
const resp = await handle(
305-
{ 'X-Hub-Signature': await webhooks.sign(event), 'X-GitHub-Event': 'check_run' },
306-
event,
307-
);
308-
expect(resp.statusCode).toBe(201);
309-
expect(sendActionRequest).toBeCalled();
256+
expect(resp.statusCode).toBe(202);
257+
expect(sendActionRequest).toBeCalledTimes(0);
310258
});
311259
});
312260

0 commit comments

Comments
 (0)