ci: fix apk build
All checks were successful
Queue Release Build / prepare (push) Successful in 23s
Deploy Web Apps / deploy (push) Successful in 6m35s
Queue Release Build / build-windows (push) Successful in 27m49s
Queue Release Build / build-linux (push) Successful in 44m3s
Queue Release Build / build-android (push) Successful in 20m59s
Queue Release Build / finalize (push) Successful in 2m40s

This commit is contained in:
2026-06-05 18:37:17 +02:00
parent 45675192a5
commit 9fc26b1ccf
8 changed files with 172 additions and 23 deletions

View File

@@ -424,12 +424,20 @@ function isDesktopReleaseAsset(filePath) {
|| lowerFileName.endsWith('.zip');
}
function isAndroidReleaseAsset(filePath) {
return path.basename(filePath).toLowerCase().endsWith('.apk');
}
function collectBuiltAssets(args) {
const distElectronDir = path.resolve(process.cwd(), args['dist-electron'] || 'dist-electron');
const distServerDir = path.resolve(process.cwd(), args['dist-server'] || 'dist-server');
const distAndroidDir = typeof args['dist-android'] === 'string' && args['dist-android'].trim().length > 0
? path.resolve(process.cwd(), args['dist-android'])
: null;
const files = [
...collectTopLevelFiles(distElectronDir).filter(isDesktopReleaseAsset),
...collectTopLevelFiles(distServerDir)
...collectTopLevelFiles(distServerDir),
...(distAndroidDir ? collectTopLevelFiles(distAndroidDir).filter(isAndroidReleaseAsset) : [])
];
return [...new Set(files)].sort((left, right) => left.localeCompare(right));
@@ -646,9 +654,17 @@ async function main() {
}
}
main().catch((error) => {
const message = error instanceof Error ? error.message : String(error);
if (require.main === module) {
main().catch((error) => {
const message = error instanceof Error ? error.message : String(error);
console.error(`[gitea-release] ${message}`);
process.exitCode = 1;
});
console.error(`[gitea-release] ${message}`);
process.exitCode = 1;
});
}
module.exports = {
collectBuiltAssets,
isAndroidReleaseAsset,
isDesktopReleaseAsset
};

View File

@@ -0,0 +1,29 @@
const assert = require('node:assert/strict');
const fs = require('node:fs');
const os = require('node:os');
const path = require('node:path');
const { test } = require('node:test');
const { collectBuiltAssets, isAndroidReleaseAsset } = require('./gitea-release');
test('isAndroidReleaseAsset matches apk files only', () => {
assert.equal(isAndroidReleaseAsset('/tmp/Toju-1.0.5-android-debug.apk'), true);
assert.equal(isAndroidReleaseAsset('/tmp/notes.txt'), false);
});
test('collectBuiltAssets includes apk files from dist-android', () => {
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'gitea-release-'));
const distAndroid = path.join(tempDir, 'dist-android');
fs.mkdirSync(distAndroid);
const apkPath = path.join(distAndroid, 'Toju-1.0.5-android-debug.apk');
fs.writeFileSync(apkPath, 'apk');
const files = collectBuiltAssets({
'dist-android': distAndroid,
'dist-electron': path.join(tempDir, 'missing-electron'),
'dist-server': path.join(tempDir, 'missing-server')
});
assert.deepEqual(files, [apkPath]);
});