feat: add GitOps deployment tracking endpoints (#10)
This commit is contained in:
@@ -153,6 +153,78 @@ function setupGiteaRoutes(app) {
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// GitOps deployment status
|
||||
app.get('/api/gitops/deployments', async (req, res) => {
|
||||
try {
|
||||
const repos = await gitea.getRepos();
|
||||
const deployments = [];
|
||||
|
||||
for (const repo of repos) {
|
||||
try {
|
||||
// Get latest release if exists
|
||||
const releases = await gitea.request(`/api/v1/repos/${giteaConfig.owner}/${repo.name}/releases?limit=1`);
|
||||
const latestRelease = releases[0];
|
||||
|
||||
deployments.push({
|
||||
repo: repo.name,
|
||||
full_name: repo.full_name,
|
||||
updated_at: repo.updated_at,
|
||||
latest_release: latestRelease ? {
|
||||
tag: latestRelease.tag_name,
|
||||
created: latestRelease.created_at,
|
||||
url: latestRelease.html_url
|
||||
} : null,
|
||||
html_url: repo.html_url
|
||||
});
|
||||
} catch {
|
||||
deployments.push({
|
||||
repo: repo.name,
|
||||
full_name: repo.full_name,
|
||||
updated_at: repo.updated_at,
|
||||
latest_release: null,
|
||||
html_url: repo.html_url
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
res.json({
|
||||
deployments,
|
||||
lastUpdated: new Date().toISOString()
|
||||
});
|
||||
} catch (error) {
|
||||
res.status(500).json({ error: error.message });
|
||||
}
|
||||
});
|
||||
|
||||
// Get deployment status for a specific repo
|
||||
app.get('/api/gitops/deployments/:repo', async (req, res) => {
|
||||
const { repo } = req.params;
|
||||
|
||||
try {
|
||||
const releases = await gitea.request(`/api/v1/repos/${giteaConfig.owner}/${repo}/releases?limit=5`);
|
||||
const commits = await gitea.request(`/api/v1/repos/${giteaConfig.owner}/${repo}/commits?limit=5`);
|
||||
|
||||
res.json({
|
||||
repo,
|
||||
releases: releases.map(r => ({
|
||||
tag: r.tag_name,
|
||||
name: r.name,
|
||||
created: r.created_at,
|
||||
url: r.html_url
|
||||
})),
|
||||
commits: commits.map(c => ({
|
||||
sha: c.sha?.substring(0, 7),
|
||||
message: c.commit?.message?.split('\n')[0],
|
||||
author: c.commit?.author?.name,
|
||||
date: c.commit?.author?.date
|
||||
}))
|
||||
});
|
||||
} catch (error) {
|
||||
res.status(500).json({ error: error.message });
|
||||
}
|
||||
});
|
||||
|
||||
console.log('✅ Gitea integration loaded');
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user