mirror of
https://github.com/lobehub/lobehub.git
synced 2026-03-27 13:29:15 +07:00
* move db * refactor db import * refactor eval types * fix tests * fix tests * fix tests * fix db migration issues * fix docker issue * fix tests * update alias * fix tests * update db test for client and server * refactor db * update codecov * update codecov * update codecov * add docker pr comments
90 lines
2.3 KiB
JavaScript
90 lines
2.3 KiB
JavaScript
/**
|
|
* Generate or update PR comment with Docker build info
|
|
*/
|
|
module.exports = async ({
|
|
github,
|
|
context,
|
|
dockerMetaJson,
|
|
image,
|
|
version,
|
|
dockerhubUrl,
|
|
platforms,
|
|
}) => {
|
|
const COMMENT_IDENTIFIER = '<!-- DOCKER-BUILD-COMMENT -->';
|
|
|
|
const parseTags = () => {
|
|
try {
|
|
if (dockerMetaJson) {
|
|
const parsed = JSON.parse(dockerMetaJson);
|
|
if (Array.isArray(parsed.tags) && parsed.tags.length > 0) {
|
|
return parsed.tags;
|
|
}
|
|
}
|
|
} catch (e) {
|
|
// ignore parsing error, fallback below
|
|
}
|
|
if (image && version) {
|
|
return [`${image}:${version}`];
|
|
}
|
|
return [];
|
|
};
|
|
|
|
const generateCommentBody = () => {
|
|
const tags = parseTags();
|
|
const buildTime = new Date().toISOString();
|
|
|
|
// Use the first tag as the main version
|
|
const mainTag = tags.length > 0 ? tags[0] : `${image}:${version}`;
|
|
const tagVersion = mainTag.includes(':') ? mainTag.split(':')[1] : version;
|
|
|
|
return [
|
|
COMMENT_IDENTIFIER,
|
|
'',
|
|
'### 🐳 Database Docker Build Completed!',
|
|
`**Version**: \`${tagVersion || 'N/A'}\``,
|
|
`**Build Time**: \`${buildTime}\``,
|
|
'',
|
|
dockerhubUrl ? `🔗 View all tags on Docker Hub: ${dockerhubUrl}` : '',
|
|
'',
|
|
'### Pull Image',
|
|
'Download the Docker image to your local machine:',
|
|
'',
|
|
'```bash',
|
|
`docker pull ${mainTag}`,
|
|
'```',
|
|
'> [!IMPORTANT]',
|
|
'> This build is for testing and validation purposes.',
|
|
]
|
|
.filter(Boolean)
|
|
.join('\n');
|
|
};
|
|
|
|
const body = generateCommentBody();
|
|
|
|
// List comments on the PR
|
|
const { data: comments } = await github.rest.issues.listComments({
|
|
issue_number: context.issue.number,
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
});
|
|
|
|
const existing = comments.find((c) => c.body && c.body.includes(COMMENT_IDENTIFIER));
|
|
if (existing) {
|
|
await github.rest.issues.updateComment({
|
|
comment_id: existing.id,
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
body,
|
|
});
|
|
return { updated: true, id: existing.id };
|
|
}
|
|
|
|
const result = await github.rest.issues.createComment({
|
|
issue_number: context.issue.number,
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
body,
|
|
});
|
|
return { updated: false, id: result.data.id };
|
|
};
|