mirror of
https://github.com/streamyfin/streamyfin.git
synced 2026-06-11 00:10:24 +01:00
CI builds now display `version · commit · #run` so anyone can map a sideloaded build back to its Actions run (artifacts + logs) without Expo access. Store builds show the bare version - TestFlight already surfaces the build number to testers. Signed CI iOS builds move to a dedicated `ci` EAS profile (extends production, autoIncrement off) so they stop inflating the store build counter (counter was at 241 while the last TestFlight upload was 92).
76 lines
2.1 KiB
JavaScript
76 lines
2.1 KiB
JavaScript
const { execFileSync } = require("node:child_process");
|
|
|
|
// Build metadata, injected into `extra.build` and read at runtime via
|
|
// expo-constants (see utils/version.ts). Sources in priority order:
|
|
// EAS cloud build → GitHub Actions → explicit EXPO_PUBLIC_* → local git → null.
|
|
const git = (args) => {
|
|
try {
|
|
return execFileSync("git", args, { stdio: ["ignore", "pipe", "ignore"] })
|
|
.toString()
|
|
.trim();
|
|
} catch {
|
|
return null;
|
|
}
|
|
};
|
|
|
|
const buildMeta = {
|
|
commit:
|
|
(
|
|
process.env.EAS_BUILD_GIT_COMMIT_HASH ||
|
|
process.env.GITHUB_SHA ||
|
|
process.env.EXPO_PUBLIC_GIT_COMMIT ||
|
|
git(["rev-parse", "HEAD"]) ||
|
|
""
|
|
).slice(0, 7) || null,
|
|
branch:
|
|
process.env.EAS_BUILD_GIT_BRANCH ||
|
|
process.env.GITHUB_HEAD_REF ||
|
|
process.env.GITHUB_REF_NAME ||
|
|
process.env.EXPO_PUBLIC_GIT_BRANCH ||
|
|
git(["rev-parse", "--abbrev-ref", "HEAD"]) ||
|
|
null,
|
|
profile:
|
|
process.env.EAS_BUILD_PROFILE ||
|
|
process.env.EXPO_PUBLIC_BUILD_PROFILE ||
|
|
null,
|
|
// GitHub Actions run number (#2098) — lets anyone map a sideloaded CI build back
|
|
// to its Actions run (artifacts + logs) without Expo access. Null outside CI.
|
|
runNumber:
|
|
process.env.GITHUB_RUN_NUMBER ||
|
|
process.env.EXPO_PUBLIC_GIT_RUN_NUMBER ||
|
|
null,
|
|
builtAt: new Date().toISOString(),
|
|
};
|
|
|
|
module.exports = ({ config }) => {
|
|
if (process.env.EXPO_TV !== "1") {
|
|
config.plugins.push("expo-background-task");
|
|
|
|
config.plugins.push([
|
|
"react-native-google-cast",
|
|
{ useDefaultExpandedMediaControls: true },
|
|
]);
|
|
|
|
config.plugins.push([
|
|
"expo-camera",
|
|
{
|
|
cameraPermission:
|
|
"Allow Streamyfin to access the camera to scan QR codes for TV login.",
|
|
},
|
|
]);
|
|
}
|
|
|
|
// Only override googleServicesFile if env var is set
|
|
const androidConfig = {};
|
|
if (process.env.GOOGLE_SERVICES_JSON) {
|
|
androidConfig.googleServicesFile = process.env.GOOGLE_SERVICES_JSON;
|
|
}
|
|
|
|
config.extra = { ...config.extra, build: buildMeta };
|
|
|
|
return {
|
|
...(Object.keys(androidConfig).length > 0 && { android: androidConfig }),
|
|
...config,
|
|
};
|
|
};
|