pages235/.github/workflows/bundle-stats.yml
Vitaly 47864f0023
ci: report size change + always check single file build (#320)
* init

* should be final

* mbmb

* Update .github/workflows/bundle-stats.yml

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-03-29 10:41:25 +03:00

57 lines
1.9 KiB
YAML

name: Bundle Stats
on:
workflow_call:
inputs:
mode:
required: true
type: string
description: "'store' or 'compare'"
branch:
required: true
type: string
outputs:
stats:
description: "Bundle stats comparison"
value: ${{ jobs.bundle-stats.outputs.stats }}
jobs:
bundle-stats:
runs-on: ubuntu-latest
outputs:
stats: ${{ steps.gist-ops.outputs.stats }}
steps:
- uses: actions/github-script@v6
id: gist-ops
with:
script: |
const gistId = '${{ secrets.BUNDLE_STATS_GIST_ID }}';
async function getGistContent() {
const { data } = await github.rest.gists.get({ gist_id: gistId });
return JSON.parse(data.files['bundle-stats.json'].content || '{}');
}
async function updateGistContent(content) {
await github.rest.gists.update({
gist_id: gistId,
files: {
'bundle-stats.json': {
content: JSON.stringify(content, null, 2)
}
}
});
}
if ('${{ inputs.mode }}' === 'store') {
const stats = require('/tmp/bundle-stats.json');
const content = await getGistContent();
content['${{ inputs.branch }}'] = stats;
await updateGistContent(content);
} else {
const content = await getGistContent();
const baseStats = content['${{ inputs.branch }}'];
const newStats = require('/tmp/bundle-stats.json');
const comparison = `minecraft.html (normal build gzip)\n${baseStats.total}MB (${baseStats.gzipped}MB compressed) -> ${newStats.total}MB (${newStats.gzipped}MB compressed)`;
core.setOutput('stats', comparison);
}