mirror of
https://github.com/RayLabsHQ/gitea-mirror.git
synced 2025-12-08 20:46:44 +03:00
Fixed #87 where the Release Notes was missing
This commit is contained in:
@@ -1435,20 +1435,54 @@ export async function mirrorGitHubReleasesToGitea({
|
|||||||
}
|
}
|
||||||
).catch(() => null);
|
).catch(() => null);
|
||||||
|
|
||||||
|
const releaseNote = release.body || "";
|
||||||
|
|
||||||
if (existingReleasesResponse) {
|
if (existingReleasesResponse) {
|
||||||
console.log(`[Releases] Release ${release.tag_name} already exists, skipping`);
|
// Update existing release if the changelog/body differs
|
||||||
|
const existingRelease = existingReleasesResponse.data;
|
||||||
|
const existingNote = existingRelease.body || "";
|
||||||
|
|
||||||
|
if (existingNote !== releaseNote || existingRelease.name !== (release.name || release.tag_name)) {
|
||||||
|
console.log(`[Releases] Updating existing release ${release.tag_name} with new changelog/title`);
|
||||||
|
|
||||||
|
await httpPut(
|
||||||
|
`${config.giteaConfig.url}/api/v1/repos/${repoOwner}/${repository.name}/releases/${existingRelease.id}`,
|
||||||
|
{
|
||||||
|
tag_name: release.tag_name,
|
||||||
|
target: release.target_commitish,
|
||||||
|
title: release.name || release.tag_name,
|
||||||
|
body: releaseNote,
|
||||||
|
draft: release.draft,
|
||||||
|
prerelease: release.prerelease,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Authorization: `token ${decryptedConfig.giteaConfig.token}`,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
if (releaseNote) {
|
||||||
|
console.log(`[Releases] Updated changelog for ${release.tag_name} (${releaseNote.length} characters)`);
|
||||||
|
}
|
||||||
|
mirroredCount++;
|
||||||
|
} else {
|
||||||
|
console.log(`[Releases] Release ${release.tag_name} already up-to-date, skipping`);
|
||||||
skippedCount++;
|
skippedCount++;
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create the release
|
// Create new release with changelog/body content
|
||||||
|
if (releaseNote) {
|
||||||
|
console.log(`[Releases] Including changelog for ${release.tag_name} (${releaseNote.length} characters)`);
|
||||||
|
}
|
||||||
|
|
||||||
const createReleaseResponse = await httpPost(
|
const createReleaseResponse = await httpPost(
|
||||||
`${config.giteaConfig.url}/api/v1/repos/${repoOwner}/${repository.name}/releases`,
|
`${config.giteaConfig.url}/api/v1/repos/${repoOwner}/${repository.name}/releases`,
|
||||||
{
|
{
|
||||||
tag_name: release.tag_name,
|
tag_name: release.tag_name,
|
||||||
target: release.target_commitish,
|
target: release.target_commitish,
|
||||||
title: release.name || release.tag_name,
|
title: release.name || release.tag_name,
|
||||||
note: release.body || "",
|
body: releaseNote,
|
||||||
draft: release.draft,
|
draft: release.draft,
|
||||||
prerelease: release.prerelease,
|
prerelease: release.prerelease,
|
||||||
},
|
},
|
||||||
@@ -1507,13 +1541,14 @@ export async function mirrorGitHubReleasesToGitea({
|
|||||||
}
|
}
|
||||||
|
|
||||||
mirroredCount++;
|
mirroredCount++;
|
||||||
console.log(`[Releases] Successfully mirrored release: ${release.tag_name}`);
|
const noteInfo = releaseNote ? ` with ${releaseNote.length} character changelog` : " without changelog";
|
||||||
|
console.log(`[Releases] Successfully mirrored release: ${release.tag_name}${noteInfo}`);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(`[Releases] Failed to mirror release ${release.tag_name}: ${error instanceof Error ? error.message : String(error)}`);
|
console.error(`[Releases] Failed to mirror release ${release.tag_name}: ${error instanceof Error ? error.message : String(error)}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log(`✅ Mirrored ${mirroredCount} new releases to Gitea (${skippedCount} already existed)`);
|
console.log(`✅ Mirrored/Updated ${mirroredCount} releases to Gitea (${skippedCount} already up-to-date)`);
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function mirrorGitRepoPullRequestsToGitea({
|
export async function mirrorGitRepoPullRequestsToGitea({
|
||||||
|
|||||||
@@ -41,6 +41,12 @@ async function runScheduledSync(config: any): Promise<void> {
|
|||||||
console.log(`[Scheduler] Running scheduled sync for user ${userId}`);
|
console.log(`[Scheduler] Running scheduled sync for user ${userId}`);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
// Check if tokens are configured before proceeding
|
||||||
|
if (!config.githubConfig?.token || !config.giteaConfig?.token) {
|
||||||
|
console.log(`[Scheduler] Skipping sync for user ${userId}: GitHub or Gitea tokens not configured`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Update lastRun timestamp
|
// Update lastRun timestamp
|
||||||
const currentTime = new Date();
|
const currentTime = new Date();
|
||||||
const scheduleConfig = config.scheduleConfig || {};
|
const scheduleConfig = config.scheduleConfig || {};
|
||||||
@@ -307,7 +313,22 @@ async function schedulerLoop(): Promise<void> {
|
|||||||
config.scheduleConfig?.enabled === true
|
config.scheduleConfig?.enabled === true
|
||||||
);
|
);
|
||||||
|
|
||||||
if (enabledConfigs.length === 0) {
|
// Further filter configs that have valid tokens
|
||||||
|
const validConfigs = enabledConfigs.filter(config => {
|
||||||
|
const hasGitHubToken = !!config.githubConfig?.token;
|
||||||
|
const hasGiteaToken = !!config.giteaConfig?.token;
|
||||||
|
|
||||||
|
if (!hasGitHubToken || !hasGiteaToken) {
|
||||||
|
console.log(`[Scheduler] User ${config.userId}: Scheduling enabled but tokens missing (GitHub: ${hasGitHubToken}, Gitea: ${hasGiteaToken})`);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (validConfigs.length === 0) {
|
||||||
|
if (enabledConfigs.length > 0) {
|
||||||
|
console.log(`[Scheduler] ${enabledConfigs.length} config(s) have scheduling enabled but lack required tokens`);
|
||||||
|
} else {
|
||||||
console.log(`[Scheduler] No configurations with scheduling enabled (found ${activeConfigs.length} active configs)`);
|
console.log(`[Scheduler] No configurations with scheduling enabled (found ${activeConfigs.length} active configs)`);
|
||||||
|
|
||||||
// Show details about why configs are not enabled
|
// Show details about why configs are not enabled
|
||||||
@@ -316,16 +337,17 @@ async function schedulerLoop(): Promise<void> {
|
|||||||
const mirrorInterval = config.giteaConfig?.mirrorInterval;
|
const mirrorInterval = config.giteaConfig?.mirrorInterval;
|
||||||
console.log(`[Scheduler] User ${config.userId}: scheduleEnabled=${scheduleEnabled}, mirrorInterval=${mirrorInterval}`);
|
console.log(`[Scheduler] User ${config.userId}: scheduleEnabled=${scheduleEnabled}, mirrorInterval=${mirrorInterval}`);
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log(`[Scheduler] Processing ${enabledConfigs.length} configurations with scheduling enabled (out of ${activeConfigs.length} total active configs)`);
|
console.log(`[Scheduler] Processing ${validConfigs.length} valid configurations (out of ${enabledConfigs.length} with scheduling enabled)`);
|
||||||
|
|
||||||
// Check each configuration to see if it's time to run
|
// Check each configuration to see if it's time to run
|
||||||
const currentTime = new Date();
|
const currentTime = new Date();
|
||||||
|
|
||||||
for (const config of enabledConfigs) {
|
for (const config of validConfigs) {
|
||||||
const scheduleConfig = config.scheduleConfig || {};
|
const scheduleConfig = config.scheduleConfig || {};
|
||||||
|
|
||||||
// Check if it's time to run based on nextRun
|
// Check if it's time to run based on nextRun
|
||||||
|
|||||||
Reference in New Issue
Block a user