Merge GitHub upstream into Gitea primary

This commit is contained in:
Jesse_Chen
2026-08-05 11:13:34 +08:00
105 changed files with 3612 additions and 886 deletions
+8
View File
@@ -7,6 +7,14 @@ import pg from "pg";
const { Client } = pg;
const migrationFilenamePattern = /^\d{14}_[a-z0-9_]+\.sql$/;
const retiredMigrationChecksums = new Map([
[
"20260727010000_rectification_v4_conversational_turns.sql",
"1f4fcd5d14b1dc7a280d31e7023777308be5fcc0c49fa46c0fac10f682044115",
],
[
"20260727010000_refine_admin_redemption_audit.sql",
"df37255ecfd5bffc34600190de84ff53245ab7e5a91226eb745a010467f08104",
],
[
"20260727010000_admin_users.sql",
"785f4fdc65db1028623cc7b5a2571217b913ef9e55f5a17b01658a71612976de",
+12 -4
View File
@@ -5,8 +5,14 @@ import { pathToFileURL } from "node:url";
const shaPattern = /^[0-9a-f]{40}$/;
const digestPattern = /^sha256:[0-9a-f]{64}$/;
const expectedKeys = ["git_sha", "api_digest", "web_digest"];
const defaultRegistry = "ghcr.io/jesse-ux";
const acrRepository = "crpi-d1feco6itet73spp.cn-hongkong.personal.cr.aliyuncs.com/copse/jyotisha";
const registryPattern = /^(?:[a-z0-9](?:[a-z0-9.-]*[a-z0-9])?)(?::[1-9][0-9]{0,4})?(?:\/[a-z0-9]+(?:[._-][a-z0-9]+)*)*$/;
export function parseStagingImageManifest(text, expectedSha) {
export function parseStagingImageManifest(text, expectedSha, registry = defaultRegistry) {
if (!registryPattern.test(registry)) {
throw new Error("invalid staging image registry");
}
if (!shaPattern.test(expectedSha)) {
throw new Error("invalid expected staging revision");
}
@@ -37,12 +43,13 @@ export function parseStagingImageManifest(text, expectedSha) {
}
}
const sharedRepository = registry === acrRepository;
return {
gitSha: expectedSha,
apiDigest: values.get("api_digest"),
webDigest: values.get("web_digest"),
apiImage: `ghcr.io/jesse-ux/jyotisha-api@${values.get("api_digest")}`,
webImage: `ghcr.io/jesse-ux/jyotisha-web@${values.get("web_digest")}`,
apiImage: `${sharedRepository ? registry : `${registry}/jyotisha-api`}@${values.get("api_digest")}`,
webImage: `${sharedRepository ? registry : `${registry}/jyotisha-web`}@${values.get("web_digest")}`,
};
}
@@ -52,13 +59,14 @@ const invokedPath = process.argv[1]
if (invokedPath === import.meta.url) {
try {
const [manifestPath, expectedSha] = process.argv.slice(2);
const [manifestPath, expectedSha, registry] = process.argv.slice(2);
if (!manifestPath || !expectedSha) {
throw new Error("manifest path and expected revision are required");
}
const manifest = parseStagingImageManifest(
await readFile(manifestPath, "utf8"),
expectedSha,
registry,
);
process.stdout.write(
[