chore(ios): generate release artifacts locally

This commit is contained in:
joshavant
2026-07-01 21:45:32 -05:00
parent 4a2a97777e
commit 8e95e56e2d
26 changed files with 248 additions and 331 deletions

View File

@@ -1328,8 +1328,6 @@ describe("scripts/changed-lanes", () => {
"apps/android/fastlane/metadata/android/en-US/release_notes.txt",
"apps/android/version.json",
"apps/ios/CHANGELOG.md",
"apps/ios/Config/Version.xcconfig",
"apps/ios/fastlane/metadata/en-US/release_notes.txt",
"apps/macos/Sources/OpenClaw/Resources/Info.plist",
"docs/.generated/config-baseline.sha256",
"package.json",

View File

@@ -10,13 +10,13 @@ describe("check-release-metadata-only", () => {
"--head",
"HEAD",
"./package.json",
"apps\\ios\\Config\\Version.xcconfig",
"apps\\ios\\CHANGELOG.md",
]),
).toEqual({
staged: false,
base: "origin/release",
head: "HEAD",
paths: ["package.json", "apps/ios/Config/Version.xcconfig"],
paths: ["package.json", "apps/ios/CHANGELOG.md"],
});
});

View File

@@ -16,30 +16,15 @@ export function writeIosFixture(params: {
version?: string;
changelog: string;
packageVersion?: string;
releaseNotes?: string;
versionXcconfig?: string;
prefix?: string;
}): string {
const rootDir = makeTempDir(tempDirs, params.prefix ?? "openclaw-ios-version-");
fs.mkdirSync(path.join(rootDir, "apps", "ios", "Config"), { recursive: true });
fs.mkdirSync(path.join(rootDir, "apps", "ios", "fastlane", "metadata", "en-US"), {
recursive: true,
});
fs.mkdirSync(path.join(rootDir, "apps", "ios"), { recursive: true });
fs.writeFileSync(
path.join(rootDir, "package.json"),
`${JSON.stringify({ version: params.packageVersion ?? params.version ?? "2026.4.6" }, null, 2)}\n`,
"utf8",
);
fs.writeFileSync(path.join(rootDir, "apps", "ios", "CHANGELOG.md"), params.changelog, "utf8");
fs.writeFileSync(
path.join(rootDir, "apps", "ios", "Config", "Version.xcconfig"),
params.versionXcconfig ?? "",
"utf8",
);
fs.writeFileSync(
path.join(rootDir, "apps", "ios", "fastlane", "metadata", "en-US", "release_notes.txt"),
params.releaseNotes ?? "",
"utf8",
);
return rootDir;
}

View File

@@ -8,7 +8,6 @@ import {
normalizeGatewayVersionToPinnedIosVersion,
normalizePinnedIosVersion,
renderIosReleaseNotes,
renderIosVersionXcconfig,
resolveGatewayVersionForIosRelease,
resolveIosVersion,
} from "../../scripts/lib/ios-version.ts";
@@ -99,6 +98,35 @@ describe("resolveIosVersion", () => {
expect(result.stderr).toBe("");
});
it("prints derived release notes from the CLI", () => {
const rootDir = writeIosFixture({
packageVersion: "2026.4.6",
changelog: "# OpenClaw iOS Changelog\n\n## 2026.4.7\n\nGenerated notes.\n",
});
const result = spawnSync(
process.execPath,
[
"--import",
"tsx",
"scripts/ios-version.ts",
"--root",
rootDir,
"--version",
"2026.4.7",
"--field",
"releaseNotes",
],
{
cwd: process.cwd(),
encoding: "utf8",
},
);
expect(result.status).toBe(0);
expect(result.stdout).toBe("Generated notes.\n");
expect(result.stderr).toBe("");
});
it("rejects missing iOS sync CLI root values before reading version files", () => {
const result = spawnSync(
process.execPath,
@@ -136,10 +164,8 @@ describe("resolveIosVersion", () => {
canonicalVersion: "2026.4.6",
changelogPath: path.join(rootDir, "apps/ios/CHANGELOG.md"),
marketingVersion: "2026.4.6",
releaseNotesPath: path.join(rootDir, "apps/ios/fastlane/metadata/en-US/release_notes.txt"),
versionSource: "package",
versionSourcePath: path.join(rootDir, "package.json"),
versionXcconfigPath: path.join(rootDir, "apps/ios/Config/Version.xcconfig"),
});
});
@@ -212,20 +238,6 @@ describe("gateway version normalization", () => {
});
});
describe("renderIosVersionXcconfig", () => {
it("renders checked-in defaults from the package-derived iOS version", () => {
const rootDir = writeIosFixture({
packageVersion: "2026.4.8",
changelog: "# OpenClaw iOS Changelog\n\n## 2026.4.8\n\nNotes.\n",
});
const version = resolveIosVersion(rootDir);
expect(renderIosVersionXcconfig(version)).toContain("OPENCLAW_IOS_VERSION = 2026.4.8");
expect(renderIosVersionXcconfig(version)).toContain("OPENCLAW_MARKETING_VERSION = 2026.4.8");
expect(renderIosVersionXcconfig(version)).toContain("OPENCLAW_BUILD_VERSION = 1");
});
});
describe("release note extraction", () => {
it("extracts exact pinned version sections first", () => {
const rootDir = writeIosFixture({