From 8f212cc7893e1bd7cb92aac0cfa715dadea626c2 Mon Sep 17 00:00:00 2001 From: Sebastian Silbermann Date: Tue, 16 Apr 2024 09:56:25 +0200 Subject: [PATCH] Ensure sizebot doesn't swallow large diffs (#28845) --- .circleci/config.yml | 2 ++ dangerfile.js | 17 +++++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 0a21b7f5c0..cc0ff7fa7e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -211,6 +211,8 @@ jobs: - setup_node_modules - run: command: node ./scripts/tasks/danger + - store_artifacts: + path: sizebot-message.md build_devtools_and_process_artifacts: docker: *docker diff --git a/dangerfile.js b/dangerfile.js index e29426afda..8f75f7ece3 100644 --- a/dangerfile.js +++ b/dangerfile.js @@ -31,6 +31,7 @@ const {markdown, danger, warn} = require('danger'); const {promisify} = require('util'); const glob = promisify(require('glob')); const gzipSize = require('gzip-size'); +const {writeFileSync} = require('fs'); const {readFileSync, statSync} = require('fs'); @@ -236,7 +237,7 @@ function row(result, baseSha, headSha) { } } - markdown(` + const message = ` Comparing: ${baseSha}...${headSha} ## Critical size changes @@ -263,5 +264,17 @@ ${significantResults.join('\n')} ` : '(No significant changes)' } -`); +`; + + // GitHub comments are limited to 65536 characters. + if (message.length > 65536) { + // Make message available as an artifact + writeFileSync('sizebot-message.md', message); + markdown( + 'The size diff is too large to display in a single comment. ' + + `The [CircleCI job](${process.env.CIRCLE_BUILD_URL}) contains an artifact called 'sizebot-message.md' with the full message.` + ); + } else { + markdown(message); + } })();