From 9df84cc79786650431a6aeaf6a2c81251c235724 Mon Sep 17 00:00:00 2001 From: mauriziovitale Date: Fri, 19 Jul 2024 15:26:26 +0200 Subject: [PATCH] Check new algoritm --- .../determine-pr-complexity.js | 33 +++++++++++++++++++ .github/workflows/pull-request.yml | 2 +- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/.github/actions/determine-complexity/determine-pr-complexity.js b/.github/actions/determine-complexity/determine-pr-complexity.js index f5a190a6e6..a043658335 100644 --- a/.github/actions/determine-complexity/determine-pr-complexity.js +++ b/.github/actions/determine-complexity/determine-pr-complexity.js @@ -15,6 +15,31 @@ * limitations under the License. */ +function determineComplexity(changedFiles, totalFilesChanged, totalLinesChanged, limitFileChanged, limitLinesChanged) { + let level = 'unknown'; + let packagesAffected = new Set(); + + // Determine packagesAffected and if the level should be major based on file paths + for (let filePath of changedFiles) { + if (filePath.startsWith('lib/core/') || filePath.startsWith('lib/extensions/')) { + level = 'major'; + packagesAffected.add(filePath.split('/')[2]); + } + } + + // Check if the number of files or lines changed exceeds limits + if (totalFilesChanged > limitFileChanged || totalLinesChanged > limitLinesChanged) { + level = 'major'; + } + + return { + filesChanged: totalFilesChanged, + linesChanged: totalLinesChanged, + level: level, + packagesAffected: Array.from(packagesAffected) // Convert Set to Array for the output + }; +} + async function getPRDetails(github, core, owner, repo, pull_number, limitFileChanged, limitLinesChanged) { const { data: files } = await github.rest.pulls.listFiles({ owner, @@ -22,6 +47,14 @@ async function getPRDetails(github, core, owner, repo, pull_number, limitFileCha pull_number }); + const complexity = determineComplexity( + files.map((file) => file.filename), + files.length, + files.reduce((total, file) => total + file.additions + file.deletions, 0), + limitFileChanged, + limitLinesChanged + ); + let filesChanged = files.length; let linesChanged = files.reduce((total, file) => total + file.additions + file.deletions, 0); diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 1184820a43..3bb3d8e3cd 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -512,7 +512,7 @@ jobs: uses: ./.github/actions/determine-complexity with: file-changed-limit: 10 - lines-changed-limit: 450 + lines-changed-limit: 340 verify-downstream: needs: determine-complexity