[release] align iOS versions with desktop release tags

This commit is contained in:
dijunkun
2026-10-10 01:56:26 +08:00
parent 587a1ef07b
commit 1f82bb39da
3 changed files with 32 additions and 19 deletions
+18 -10
View File
@@ -22,7 +22,7 @@ on:
default: "0"
outputs:
version:
description: "Independent iOS version and build date."
description: "iOS artifact version; combined releases match the desktop tag."
value: ${{ jobs.build.outputs.version }}
pull_request:
paths:
@@ -122,22 +122,29 @@ jobs:
echo "CROSSDESK_RELEASE_BUILD=YES" >> "${GITHUB_ENV}"
fi
- name: Read independent iOS version
- name: Resolve iOS version
id: ios_version
shell: bash
run: |
IOS_VERSION_BASE="$(xcodebuild \
-project apps/ios/CrossDeskMobile.xcodeproj \
-scheme CrossDeskMobile \
-configuration Release \
-destination 'generic/platform=iOS' \
-showBuildSettings CODE_SIGNING_ALLOWED=NO | \
awk '$1 == "MARKETING_VERSION" && $2 == "=" { print $3 }')"
if [[ "${CROSSDESK_SOURCE_TAG}" == v* ]]; then
# Combined releases share the desktop version, including the date
# and optional hotfix suffix in the artifact filename.
IOS_VERSION_BASE="${VERSION_NUM#v}"
IOS_VERSION_BASE="${IOS_VERSION_BASE%%-*}"
else
IOS_VERSION_BASE="$(xcodebuild \
-project apps/ios/CrossDeskMobile.xcodeproj \
-scheme CrossDeskMobile \
-configuration Release \
-destination 'generic/platform=iOS' \
-showBuildSettings CODE_SIGNING_ALLOWED=NO | \
awk '$1 == "MARKETING_VERSION" && $2 == "=" { print $3 }')"
VERSION_NUM="v${IOS_VERSION_BASE}-${VERSION_NUM##*-}"
fi
if [[ ! "${IOS_VERSION_BASE}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "Invalid iOS marketing version: ${IOS_VERSION_BASE}" >&2
exit 1
fi
VERSION_NUM="v${IOS_VERSION_BASE}-${VERSION_NUM##*-}"
if [[ "${CROSSDESK_SOURCE_TAG}" == ios-v* && "${CROSSDESK_SOURCE_TAG#ios-}" != "${VERSION_NUM}" ]]; then
echo "iOS source tag does not match the app version: ${CROSSDESK_SOURCE_TAG} vs ${VERSION_NUM}" >&2
exit 1
@@ -200,6 +207,7 @@ jobs:
CODE_SIGNING_ALLOWED=NO \
CODE_SIGNING_REQUIRED=NO \
COMPILER_INDEX_STORE_ENABLE=NO \
MARKETING_VERSION="${IOS_VERSION_BASE}" \
IPHONEOS_DEPLOYMENT_TARGET="${IOS_DEPLOYMENT_TARGET}" \
build
@@ -353,7 +353,7 @@
ARCHS = arm64;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 2;
CURRENT_PROJECT_VERSION = 3;
DEVELOPMENT_TEAM = 8DNC3SZ86S;
ENABLE_BITCODE = NO;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
@@ -366,7 +366,7 @@
);
INFOPLIST_FILE = CrossDeskMobile/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 16.0;
MARKETING_VERSION = 0.0.1;
MARKETING_VERSION = 1.6.1;
OTHER_LDFLAGS = (
"$(inherited)",
"$(PROJECT_DIR)/Vendor/$(PLATFORM_NAME)/$(CONFIGURATION)/libCrossDeskMiniRTC.a",
@@ -403,7 +403,7 @@
ARCHS = arm64;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 2;
CURRENT_PROJECT_VERSION = 3;
DEVELOPMENT_TEAM = 8DNC3SZ86S;
ENABLE_BITCODE = NO;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
@@ -416,7 +416,7 @@
);
INFOPLIST_FILE = CrossDeskMobile/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 16.0;
MARKETING_VERSION = 0.0.1;
MARKETING_VERSION = 1.6.1;
OTHER_LDFLAGS = (
"$(inherited)",
"$(PROJECT_DIR)/Vendor/$(PLATFORM_NAME)/$(CONFIGURATION)/libCrossDeskMiniRTC.a",
+10 -5
View File
@@ -52,8 +52,9 @@ For an existing checkout, run `git submodule update --init --recursive` from
the repository root. All remaining commands below use that root directory.
For a released app, select the tag shown in **Settings → About and open-source
licenses** when cloning: `git clone --branch <source-tag> --recurse-submodules
https://github.com/kunkundi/crossdesk.git`. The iOS marketing version is independent
of the repository tag; use the source tag or commit recorded in the app.
https://github.com/kunkundi/crossdesk.git`. Combined releases share the desktop
tag's numeric version. Use the source tag or commit recorded in the app to
identify its exact source.
Install [Xmake](https://xmake.io/guide/quick-start.html) 3.1.1 or newer,
CMake, and a current Python 3 with setuptools/wheel. Pin the package repository
@@ -143,10 +144,14 @@ The workflow builds with the minimum supported Xmake version (3.1.1) and retains
the pinned Xcode/SDK, dependency cache, license catalog validation, unsigned arm64
Release build, and app-bundle verification. Unit tests run locally as needed.
It uploads
`crossdesk-ios-arm64-unsigned-v<marketing-version>-<date>.zip`,
`crossdesk-ios-arm64-unsigned-v<version>-<date>.zip`,
including the app, source metadata, third-party source catalog, rights notice
and any generated dSYM. The version comes from the iOS target; dated repository
tags provide the build date, otherwise the date uses the Asia/Shanghai timezone.
and any generated dSYM. For combined `v*` releases, the ZIP uses the same version,
date and optional hotfix suffix as the desktop packages, and the app's
`MARKETING_VERSION` is set to the tag's numeric version during the build.
Branch builds and independent `ios-v*` releases use the iOS target's
`MARKETING_VERSION`. Dated tags provide the build date; otherwise the date uses
the Asia/Shanghai timezone.
The main workflow collects this same ZIP for GitHub Releases and the download
server. Standalone `Build iOS` runs only upload the build artifact.