mirror of
https://github.com/kunkundi/crossdesk.git
synced 2026-10-16 17:10:20 +08:00
[ci] sign Android release APKs with a fixed publishing key
This commit is contained in:
@@ -93,6 +93,26 @@ class ManifestTest(unittest.TestCase):
|
||||
with self.assertRaises(ValueError):
|
||||
self.merge(tag, downloads)
|
||||
|
||||
def test_signed_android_release_updates_existing_unsigned_download(self):
|
||||
unsigned = self.files("crossdesk-android-arm64-unsigned-v1.6.0-20261002.apk")
|
||||
current = self.merge("android-v1.6.0-20261002", unsigned)
|
||||
signed = self.files("crossdesk-android-arm64-v1.6.0-20261002.apk")
|
||||
result = self.merge("android-v1.6.0-20261002", signed, current)
|
||||
self.assertEqual(result["downloads"]["android-arm64"]["url"],
|
||||
"https://downloads.crossdesk.cn/crossdesk-android-arm64-v1.6.0-20261002.apk")
|
||||
self.assertEqual(result["version"], self.current["version"])
|
||||
self.assertEqual(result["downloads"]["windows-x64"], self.current["downloads"]["windows-x64"])
|
||||
self.assertNotIn("platforms", result)
|
||||
|
||||
def test_signed_android_is_preferred_when_release_retains_unsigned_apk(self):
|
||||
downloads = self.files("crossdesk-android-arm64-unsigned-v1.6.0-20261002.apk",
|
||||
"crossdesk-android-arm64-v1.6.0-20261002.apk")
|
||||
self.assertEqual(downloads["android-arm64"]["filename"],
|
||||
"crossdesk-android-arm64-v1.6.0-20261002.apk")
|
||||
with self.assertRaises(ValueError):
|
||||
self.files("crossdesk-android-arm64-unsigned-v1.6.0-20261001.apk",
|
||||
"crossdesk-android-arm64-v1.6.0-20261002.apk")
|
||||
|
||||
def test_invalid_current_manifest_is_rejected(self):
|
||||
downloads = self.files("crossdesk-android-arm64-unsigned-v1.6.0-20261002.apk")
|
||||
for current in ([], {}, {"downloads": []}):
|
||||
|
||||
@@ -17,7 +17,7 @@ ARTIFACTS = {
|
||||
"linux-amd64": ("linux-amd64", "deb"),
|
||||
"linux-arm64": ("linux-arm64", "deb"),
|
||||
"ios-arm64": ("ios-arm64-unsigned", "zip"),
|
||||
"android-arm64": ("android-arm64-unsigned", "apk"),
|
||||
"android-arm64": ("android-arm64(?:-unsigned)?", "apk"),
|
||||
}
|
||||
|
||||
|
||||
@@ -52,9 +52,15 @@ def artifact_downloads(directory):
|
||||
match = re.fullmatch(rf"crossdesk-{prefix}-v([0-9][0-9.\-]*)\.{extension}", path.name)
|
||||
if not match:
|
||||
continue
|
||||
if key in downloads:
|
||||
raise ValueError(f"Multiple release artifacts for {key}")
|
||||
metadata = version_info(match[1])
|
||||
if key in downloads:
|
||||
previous = downloads[key]
|
||||
if (key != "android-arm64" or previous["version"] != metadata["version"]
|
||||
or ("-unsigned-" in previous["filename"]) == ("-unsigned-" in path.name)):
|
||||
raise ValueError(f"Multiple release artifacts for {key}")
|
||||
# Older releases may retain their unsigned APK after adding a signed one.
|
||||
if "-unsigned-" in path.name:
|
||||
continue
|
||||
downloads[key] = {"url": DOWNLOAD_BASE + path.name, "filename": path.name,
|
||||
"version": metadata["version"], "releaseDate": metadata["releaseDate"]}
|
||||
break
|
||||
|
||||
Reference in New Issue
Block a user