From 489647c641360769c8abd51cbeb4776e809e48aa Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Wed, 6 Jan 2021 11:55:59 -0800 Subject: [PATCH] src: Allow params to be set to false on label Adds functionality to set some CircleCI parameters to false when applying labels. Should make it so that workflows don't have the potential to get run twice. Signed-off-by: Eli Uriegas --- src/trigger-circleci-workflows.ts | 16 ++++++++++++++++ test/trigger-circleci-workflows.test.ts | 23 ++++++++++++++++------- 2 files changed, 32 insertions(+), 7 deletions(-) diff --git a/src/trigger-circleci-workflows.ts b/src/trigger-circleci-workflows.ts index f9b47100f..6ed3cce50 100644 --- a/src/trigger-circleci-workflows.ts +++ b/src/trigger-circleci-workflows.ts @@ -92,6 +92,14 @@ export function genCircleParametersForPR( // ci/all is a special label that will set all to true if (appliedLabels.includes('ci/all') || appliedLabels.includes(label)) { parameters[labelsToParams[label].parameter] = true; + if (labelsToParams[label]['set_to_false']) { + const falseParams = labelsToParams[label]['set_to_false']; + // There's potential for labels to override each other which we should + // probably be careful of + for (const falseLabel of Object.keys(falseParams)) { + parameters[falseParams[falseLabel]] = false; + } + } } } return parameters; @@ -121,6 +129,14 @@ function genCircleParametersForPush( context.log.debug({pattern}, 'genParametersForPush'); if (strippedRef.match(pattern)) { parameters[labelsToParams[label].parameter] = true; + if (labelsToParams[label]['set_to_false']) { + const falseParams = labelsToParams[label]['set_to_false']; + // There's potential for labels to override each other which we should + // probably be careful of + for (const falseLabel of Object.keys(falseParams)) { + parameters[falseParams[falseLabel]] = false; + } + } } } } diff --git a/test/trigger-circleci-workflows.test.ts b/test/trigger-circleci-workflows.test.ts index 815fe1ae1..ce71cfa39 100644 --- a/test/trigger-circleci-workflows.test.ts +++ b/test/trigger-circleci-workflows.test.ts @@ -16,6 +16,8 @@ labels_to_circle_params: - ci-all/.* tags: - v[0-9]+(\.[0-9]+)*-rc[0-9]+ + set_to_false: + - default ci/bleh: parameter: run_bleh_tests ci/foo: @@ -61,7 +63,8 @@ describe('trigger-circleci-workflows', () => { branch: 'test_branch', parameters: { run_binaries_tests: true, - run_bleh_tests: true + run_bleh_tests: true, + default: false } }); return true; @@ -88,7 +91,8 @@ describe('trigger-circleci-workflows', () => { parameters: { run_binaries_tests: true, run_bleh_tests: true, - run_foo_tests: true + run_foo_tests: true, + default: false } }); return true; @@ -118,7 +122,8 @@ describe('trigger-circleci-workflows', () => { branch: 'pull/1/head', parameters: { run_binaries_tests: true, - run_bleh_tests: true + run_bleh_tests: true, + default: false } }); return true; @@ -146,7 +151,8 @@ describe('trigger-circleci-workflows', () => { parameters: { run_binaries_tests: true, run_bleh_tests: true, - run_foo_tests: true + run_foo_tests: true, + default: false } }); return true; @@ -169,7 +175,8 @@ describe('trigger-circleci-workflows', () => { expect(body).toStrictEqual({ branch: 'nightly', parameters: { - run_binaries_tests: true + run_binaries_tests: true, + default: false } }); return true; @@ -192,7 +199,8 @@ describe('trigger-circleci-workflows', () => { expect(body).toStrictEqual({ branch: 'ci-all/bleh', parameters: { - run_binaries_tests: true + run_binaries_tests: true, + default: false } }); return true; @@ -215,7 +223,8 @@ describe('trigger-circleci-workflows', () => { expect(body).toStrictEqual({ tag: 'v1.5.0-rc1', parameters: { - run_binaries_tests: true + run_binaries_tests: true, + default: false } }); return true;