update agent

This commit is contained in:
2026-07-17 15:41:05 +07:00
parent 13bea66473
commit 476c41cf08
15 changed files with 467 additions and 20 deletions

View File

@@ -204,10 +204,14 @@ function helpers() {
return statusClassMap[status] || 'badge-muted';
},
packageTypeLabel(type) {
return type === 'docker' ? 'Docker' : '.deb';
if (type === 'docker') return 'Docker';
if (type === 'apt') return 'APT';
return '.deb';
},
packageTypeClass(type) {
return type === 'docker' ? 'badge-info' : 'badge-primary';
if (type === 'docker') return 'badge-info';
if (type === 'apt') return 'badge-warning';
return 'badge-primary';
}
};
}
@@ -848,7 +852,8 @@ function requireAdmin(req, res, next) {
}
function normalizePackageType(value) {
return String(value || 'deb').toLowerCase() === 'docker' ? 'docker' : 'deb';
const packageType = String(value || 'deb').toLowerCase();
return ['deb', 'apt', 'docker'].includes(packageType) ? packageType : 'deb';
}
function normalizeApplicationStatus(value) {
@@ -1694,8 +1699,13 @@ app.get('/packages/export.csv', asyncRoute(async (req, res) => {
app.post('/packages', upload.single('packageFile'), asyncRoute(async (req, res) => {
try {
const artifact = await getArtifactFromUpload(req.file);
const packageType = normalizePackageType(req.body.packageType);
if (packageType === 'apt' && req.file) {
await removeUploadedFile(req.file);
}
const artifact = packageType === 'apt'
? { filePath: null, checksum: null, fileSizeBytes: null }
: await getArtifactFromUpload(req.file);
const packageCode = String(req.body.packageCode || '').trim();
const packageName = String(req.body.packageName || '').trim();
const version = String(req.body.version || '').trim();
@@ -1742,7 +1752,14 @@ app.post('/packages', upload.single('packageFile'), asyncRoute(async (req, res)
createdByUserId: req.currentUser.id
});
redirectWithNotice(res, '/packages', 'success', 'Đã upload package và lưu vào database.');
redirectWithNotice(
res,
'/packages',
'success',
packageType === 'apt'
? 'Đã tạo APT package metadata; không cần upload artifact.'
: 'Đã upload package và lưu vào database.'
);
} catch (error) {
await removeUploadedFile(req.file);
if (error.code === 'DUPLICATE_PACKAGE') {
@@ -1758,7 +1775,6 @@ app.post('/package-versions', upload.single('packageFile'), asyncRoute(async (re
let versionInput = null;
try {
const artifact = await getArtifactFromUpload(req.file);
const version = String(req.body.version || '').trim();
if (!req.body.packageId || !version) {
@@ -1780,6 +1796,13 @@ app.post('/package-versions', upload.single('packageFile'), asyncRoute(async (re
return;
}
if (packageItem.type === 'apt' && req.file) {
await removeUploadedFile(req.file);
}
const artifact = packageItem.type === 'apt'
? { filePath: null, checksum: null, fileSizeBytes: null }
: await getArtifactFromUpload(req.file);
if (packageItem.type === 'deb') {
const metadataMessage = await getDebUploadMetadataValidationMessage(req.file, packageItem.code, version);
if (metadataMessage) {