-
-
Notifications
You must be signed in to change notification settings - Fork 598
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ci: Display performance measurement results as custom metrics (#3491)
* Debug result * Fix * Refactoring to convert standard input to json format for custom metrics output * Custom metrics are now output as comments in Pull Reqeust * Fix `undefined is not an object (evaluating 'line.split')` * Add check to make sure line is not undefined * Debug result * Fix * Refactoring to convert standard input to json format for custom metrics output * Custom metrics are now output as comments in Pull Reqeust * Fix `undefined is not an object (evaluating 'line.split')` * Add check to make sure line is not undefined * Move path to parent directory to consolidate multiple metrics and output results * Refactoring to convert to octocov custom metrics format * The two performance measurement jobs were merged and compared output by octocov. * Append unit * bonsai * Review of title * Integrate bundling and size check processes * Fix code style * bonsai * Fix * refs https://github.com/k2tzumi/hono/actions/runs/11903022493/job/33169186026#step:7:96, Fix `no such file or directory` * Fix lint & code style
- Loading branch information
Showing
8 changed files
with
145 additions
and
96 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
locale: "en" | ||
repository: ${GITHUB_REPOSITORY}/perf-measures | ||
coverage: | ||
if: false | ||
codeToTestRatio: | ||
if: false | ||
testExecutionTime: | ||
if: false | ||
report: | ||
datastores: | ||
- artifact://${GITHUB_REPOSITORY} | ||
summary: | ||
if: true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
locale: "en" | ||
repository: ${GITHUB_REPOSITORY}/perf-measures | ||
coverage: | ||
if: false | ||
codeToTestRatio: | ||
if: false | ||
testExecutionTime: | ||
if: false | ||
diff: | ||
datastores: | ||
- artifact://${GITHUB_REPOSITORY} | ||
comment: | ||
if: is_pull_request | ||
summary: | ||
if: true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,3 @@ | ||
generated | ||
!generated/.gitkeep | ||
size.json |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
import * as esbuild from 'esbuild' | ||
import * as fs from 'node:fs' | ||
import * as os from 'os' | ||
import * as path from 'path' | ||
|
||
async function main() { | ||
const tempDir = os.tmpdir() | ||
const tempFilePath = path.join(tempDir, 'bundle.tmp.js') | ||
|
||
try { | ||
await esbuild.build({ | ||
entryPoints: ['dist/index.js'], | ||
bundle: true, | ||
minify: true, | ||
format: 'esm' as esbuild.Format, | ||
target: 'es2022', | ||
outfile: tempFilePath, | ||
}) | ||
|
||
const bundleSize = fs.statSync(tempFilePath).size | ||
const metrics = [] | ||
metrics.push({ | ||
key: 'bundle-size', | ||
name: 'Bundle Size', | ||
value: bundleSize, | ||
unit: 'B', | ||
}) | ||
const benchmark = { | ||
key: 'bundle-size-check', | ||
name: 'Bundle size check', | ||
metrics, | ||
} | ||
console.log(JSON.stringify(benchmark, null, 2)) | ||
} catch (error) { | ||
console.error('Build failed:', error) | ||
} finally { | ||
if (fs.existsSync(tempFilePath)) { | ||
fs.unlinkSync(tempFilePath) | ||
} | ||
} | ||
} | ||
|
||
main() |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,3 +2,4 @@ generated | |
!generated/.gitkeep | ||
trace | ||
*result.txt | ||
diagnostics.json |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,21 +1,46 @@ | ||
import * as fs from 'node:fs/promises' | ||
import * as readline from 'node:readline' | ||
|
||
async function main() { | ||
const currentResult = (await fs.readFile('./result.txt')).toString().split('\n') | ||
const previousResult = await fs | ||
.readFile('./previous-result.txt') | ||
.then((data) => data.toString().split('\n')) | ||
.catch(() => null) | ||
const table = ['| | Current | Previous |', '| --- | --- | --- |'] | ||
for (const [i, line] of currentResult.entries()) { | ||
if (line === '') { | ||
const rl = readline.createInterface({ | ||
input: process.stdin, | ||
output: process.stdout, | ||
terminal: false, | ||
}) | ||
const toKebabCase = (str: string): string => { | ||
return str | ||
.replace(/([a-z])([A-Z])/g, '$1-$2') | ||
.replace(/[\s_\/]+/g, '-') | ||
.toLowerCase() | ||
} | ||
const metrics = [] | ||
for await (const line of rl) { | ||
if (!line || line.trim() === '') { | ||
continue | ||
} | ||
const [name, value] = line.split(':') | ||
const mainValue = previousResult?.[i]?.split(':')?.[1] | ||
table.push(`| ${name?.trim()} | ${value?.trim()} | ${mainValue ? mainValue.trim() : 'N/A'} |`) | ||
const unitMatch = value?.trim().match(/^(\d+(\.\d+)?)([a-zA-Z]*)$/) | ||
if (unitMatch) { | ||
const [, number, , unit] = unitMatch | ||
metrics.push({ | ||
key: toKebabCase(name?.trim()), | ||
name: name?.trim(), | ||
value: parseFloat(number), | ||
unit: unit || undefined, | ||
}) | ||
} else { | ||
metrics.push({ | ||
key: toKebabCase(name?.trim()), | ||
name: name?.trim(), | ||
value: parseFloat(value?.trim()), | ||
}) | ||
} | ||
} | ||
const benchmark = { | ||
key: 'diagnostics', | ||
name: 'Compiler Diagnostics', | ||
metrics, | ||
} | ||
console.log(table.join('\n')) | ||
console.log(JSON.stringify(benchmark, null, 2)) | ||
} | ||
|
||
main() |