From ec0f4b4173c95efc8d5f726662cbbb70ea24ab38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20Jona=C5=A1?= Date: Thu, 21 Apr 2022 02:46:13 +0200 Subject: [PATCH] fix(core): handle failed CI workflows in CNW CLI (#9915) --- docs/generated/packages/workspace.json | 1 + .../bin/create-nx-workspace.ts | 29 +++++++++++++++++-- .../src/generators/ci-workflow/schema.json | 1 + 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/docs/generated/packages/workspace.json b/docs/generated/packages/workspace.json index 1903db84a5a10..155260334865e 100644 --- a/docs/generated/packages/workspace.json +++ b/docs/generated/packages/workspace.json @@ -684,6 +684,7 @@ "type": "string", "description": "Workflow name.", "$default": { "$source": "argv", "index": 0 }, + "default": "build", "x-prompt": "How should we name your workflow?", "pattern": "^[a-zA-Z].*$" } diff --git a/packages/create-nx-workspace/bin/create-nx-workspace.ts b/packages/create-nx-workspace/bin/create-nx-workspace.ts index 9c6f8904aa13e..566bd2e0fb241 100644 --- a/packages/create-nx-workspace/bin/create-nx-workspace.ts +++ b/packages/create-nx-workspace/bin/create-nx-workspace.ts @@ -827,7 +827,7 @@ async function setupCI( try { const pmc = getPackageManagerCommand(packageManager); // GENERATE WORKFLOWS HERE based on `ci` and `packageManager` - const res = Promise.allSettled( + const res = await Promise.allSettled( ci.map( async (provider) => await execAndWait( @@ -836,8 +836,31 @@ async function setupCI( ) ) ); - ciSpinner.succeed('CI workflow(s) have been generated successfully'); - return res; + if (res.some((r) => r.status === 'fulfilled')) { + if (res.some((r) => r.status === 'rejected')) { + // show error message that some failed + const failedWorkflows = res + .map((r, i) => [r.status, ci[i]]) + .filter(([r, provider]) => r === 'rejected') + .map(([, provider]) => `"${provider}"`) + .join(', '); + ciSpinner.fail( + `Nx failed to generate some CI workflow(s): ${failedWorkflows}` + ); + } else { + ciSpinner.succeed('CI workflow(s) have been generated successfully'); + } + return res; + } else { + ciSpinner.fail(); + + output.error({ + title: `Nx failed to generate CI workflow(s)`, + bodyLines: res.map((r: PromiseRejectedResult) => r.reason.message), + }); + + process.exit(1); + } } catch (e) { ciSpinner.fail(); diff --git a/packages/workspace/src/generators/ci-workflow/schema.json b/packages/workspace/src/generators/ci-workflow/schema.json index 9d2ff30136eeb..c181dfb85adfd 100644 --- a/packages/workspace/src/generators/ci-workflow/schema.json +++ b/packages/workspace/src/generators/ci-workflow/schema.json @@ -27,6 +27,7 @@ "$source": "argv", "index": 0 }, + "default": "build", "x-prompt": "How should we name your workflow?", "pattern": "^[a-zA-Z].*$" }