60 lines
1.8 KiB
JavaScript
60 lines
1.8 KiB
JavaScript
module.exports = async ({github, context, core}) => {
|
|
const fs = require('fs');
|
|
|
|
// Validate pr_number.txt
|
|
if (!fs.existsSync('pr_number.txt')) {
|
|
core.setFailed("Required artifact file 'pr_number.txt' was not found in the workspace.");
|
|
return;
|
|
}
|
|
const prNumberContent = fs.readFileSync('pr_number.txt', 'utf8').trim();
|
|
const issue_number = parseInt(prNumberContent, 10);
|
|
if (!Number.isFinite(issue_number) || issue_number <= 0) {
|
|
core.setFailed('Invalid PR number in pr_number.txt: "' + prNumberContent + '"');
|
|
return;
|
|
}
|
|
|
|
// Validate comparison.md
|
|
if (!fs.existsSync('comparison.md')) {
|
|
core.setFailed("Required artifact file 'comparison.md' was not found in the workspace.");
|
|
return;
|
|
}
|
|
let comparison;
|
|
try {
|
|
comparison = fs.readFileSync('comparison.md', 'utf8');
|
|
} catch (error) {
|
|
core.setFailed("Failed to read 'comparison.md': " + error.message);
|
|
return;
|
|
}
|
|
|
|
// Find existing comment
|
|
const { data: comments } = await github.rest.issues.listComments({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
issue_number: issue_number,
|
|
});
|
|
|
|
const botComment = comments.find(comment =>
|
|
comment.user.type === 'Bot' &&
|
|
comment.body.includes('Benchmark Comparison')
|
|
);
|
|
|
|
const footer = '<sub>🤖 This comment will be automatically updated with the latest benchmark results.</sub>';
|
|
const commentBody = `${comparison}\n\n${footer}`;
|
|
|
|
if (botComment) {
|
|
await github.rest.issues.updateComment({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
comment_id: botComment.id,
|
|
body: commentBody
|
|
});
|
|
} else {
|
|
await github.rest.issues.createComment({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
issue_number: issue_number,
|
|
body: commentBody
|
|
});
|
|
}
|
|
};
|