mirror of
https://github.com/kunkundi/crossdesk.git
synced 2026-10-20 19:14:39 +08:00
[ci] remove tests from build and release workflows
This commit is contained in:
@@ -147,24 +147,18 @@ jobs:
|
|||||||
- name: Verify shared license catalog
|
- name: Verify shared license catalog
|
||||||
run: python3 -B apps/ios/scripts/generate_third_party_licenses.py
|
run: python3 -B apps/ios/scripts/generate_third_party_licenses.py
|
||||||
|
|
||||||
- name: Verify native build tool selection
|
- name: Build APKs
|
||||||
run: python3 -B -m unittest discover -s apps/android/test -p 'build_native_test.py' -v
|
|
||||||
|
|
||||||
- name: Build APKs and run Lint
|
|
||||||
working-directory: apps/android
|
working-directory: apps/android
|
||||||
run: |
|
run: |
|
||||||
./gradlew --no-daemon --stacktrace \
|
./gradlew --no-daemon --stacktrace \
|
||||||
:app:assembleDebug :app:assembleRelease :app:assembleDebugAndroidTest \
|
:app:assembleDebug :app:assembleRelease
|
||||||
:app:lintDebug :app:lintRelease
|
|
||||||
|
|
||||||
- name: Verify APKs and native protocol
|
- name: Verify APKs
|
||||||
working-directory: apps/android
|
working-directory: apps/android
|
||||||
run: |
|
run: |
|
||||||
python3 -B test/verify_apk.py app/build/outputs/apk/debug/app-debug.apk
|
python3 -B test/verify_apk.py app/build/outputs/apk/debug/app-debug.apk
|
||||||
python3 -B test/verify_apk.py app/build/outputs/apk/release/app-release-unsigned.apk
|
python3 -B test/verify_apk.py app/build/outputs/apk/release/app-release-unsigned.apk
|
||||||
python3 -B test/run_native.py
|
|
||||||
"${ANDROID_HOME}/build-tools/36.0.0/apksigner" verify app/build/outputs/apk/debug/app-debug.apk
|
"${ANDROID_HOME}/build-tools/36.0.0/apksigner" verify app/build/outputs/apk/debug/app-debug.apk
|
||||||
"${ANDROID_HOME}/build-tools/36.0.0/apksigner" verify app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk
|
|
||||||
|
|
||||||
- name: Package APKs with the independent Android version
|
- name: Package APKs with the independent Android version
|
||||||
id: package
|
id: package
|
||||||
@@ -202,19 +196,17 @@ jobs:
|
|||||||
for variant, source in (
|
for variant, source in (
|
||||||
("unsigned", "release/app-release-unsigned.apk"),
|
("unsigned", "release/app-release-unsigned.apk"),
|
||||||
("debug", "debug/app-debug.apk"),
|
("debug", "debug/app-debug.apk"),
|
||||||
("debug", "androidTest/debug/app-debug-androidTest.apk"),
|
|
||||||
):
|
):
|
||||||
destination = output / variant
|
destination = output / variant
|
||||||
destination.mkdir(parents=True, exist_ok=True)
|
destination.mkdir(parents=True, exist_ok=True)
|
||||||
suffix = "-test" if "androidTest/" in source else ""
|
shutil.copyfile(apk_dir / source, destination / f"crossdesk-android-arm64-{variant}-{version}.apk")
|
||||||
shutil.copyfile(apk_dir / source, destination / f"crossdesk-android-arm64-{variant}-{version}{suffix}.apk")
|
|
||||||
with open(os.environ["GITHUB_OUTPUT"], "a") as stream:
|
with open(os.environ["GITHUB_OUTPUT"], "a") as stream:
|
||||||
stream.write(f"version={version}\n")
|
stream.write(f"version={version}\n")
|
||||||
with open(os.environ["GITHUB_STEP_SUMMARY"], "a") as stream:
|
with open(os.environ["GITHUB_STEP_SUMMARY"], "a") as stream:
|
||||||
stream.write(f"Android {version}: arm64, API 26+, 16 KB aligned.\n\n"
|
stream.write(f"Android {version}: arm64, API 26+, 16 KB aligned.\n\n"
|
||||||
"Debug APK uses an ephemeral CI debug key; it is for testing and may require uninstalling an existing build. "
|
"Debug APK uses an ephemeral CI debug key; it is for testing and may require uninstalling an existing build. "
|
||||||
"The Release APK is unsigned and needs your own signing before installation.\n\n"
|
"The Release APK is unsigned and needs your own signing before installation.\n\n"
|
||||||
"Lint, native protocol/frame tests and APK checks passed. Device tests were compiled, not executed.\n")
|
"Debug and Release APKs built and packaged; APK checks passed.\n")
|
||||||
|
|
||||||
- name: Upload unsigned Release APK
|
- name: Upload unsigned Release APK
|
||||||
uses: actions/upload-artifact@v6
|
uses: actions/upload-artifact@v6
|
||||||
@@ -223,19 +215,10 @@ jobs:
|
|||||||
path: ${{ runner.temp }}/crossdesk-android/unsigned/*.apk
|
path: ${{ runner.temp }}/crossdesk-android/unsigned/*.apk
|
||||||
if-no-files-found: error
|
if-no-files-found: error
|
||||||
|
|
||||||
- name: Upload Debug and device test APKs
|
- name: Upload Debug APK
|
||||||
uses: actions/upload-artifact@v6
|
uses: actions/upload-artifact@v6
|
||||||
with:
|
with:
|
||||||
name: crossdesk-android-arm64-debug-${{ steps.package.outputs.version }}
|
name: crossdesk-android-arm64-debug-${{ steps.package.outputs.version }}
|
||||||
path: ${{ runner.temp }}/crossdesk-android/debug/*.apk
|
path: ${{ runner.temp }}/crossdesk-android/debug/*.apk
|
||||||
if-no-files-found: error
|
if-no-files-found: error
|
||||||
retention-days: 14
|
retention-days: 14
|
||||||
|
|
||||||
- name: Upload Lint reports
|
|
||||||
if: ${{ !cancelled() }}
|
|
||||||
uses: actions/upload-artifact@v6
|
|
||||||
with:
|
|
||||||
name: crossdesk-android-reports
|
|
||||||
path: apps/android/app/build/reports/
|
|
||||||
if-no-files-found: ignore
|
|
||||||
retention-days: 14
|
|
||||||
|
|||||||
@@ -163,12 +163,7 @@ jobs:
|
|||||||
python-version: "3.13"
|
python-version: "3.13"
|
||||||
|
|
||||||
- name: Verify iOS license catalog
|
- name: Verify iOS license catalog
|
||||||
run: |
|
run: python3 -B apps/ios/scripts/generate_third_party_licenses.py
|
||||||
python3 -B -m unittest discover -s apps/ios/tests -p 'third_party_licenses_test.py' -v
|
|
||||||
python3 -B apps/ios/scripts/generate_third_party_licenses.py
|
|
||||||
|
|
||||||
- name: Verify iOS privacy controls
|
|
||||||
run: python3 -B -m unittest discover -s apps/ios/tests -p 'privacy_controls_test.py' -v
|
|
||||||
|
|
||||||
- name: Install xmake
|
- name: Install xmake
|
||||||
uses: xmake-io/github-action-setup-xmake@v1
|
uses: xmake-io/github-action-setup-xmake@v1
|
||||||
|
|||||||
@@ -150,17 +150,6 @@ jobs:
|
|||||||
--cc=gcc-10 --cxx=g++-10 --root -y
|
--cc=gcc-10 --cxx=g++-10 --root -y
|
||||||
xmake b -vy --root crossdesk
|
xmake b -vy --root crossdesk
|
||||||
|
|
||||||
- name: Verify repository and wire boundaries
|
|
||||||
env:
|
|
||||||
XMAKE_GLOBALDIR: /data
|
|
||||||
run: |
|
|
||||||
xmake b -vy --root repository_structure_test
|
|
||||||
xmake b -vy --root crossdesk_wire_test
|
|
||||||
xmake b -vy --root keyboard_state_wire_test
|
|
||||||
xmake run --root repository_structure_test
|
|
||||||
xmake run --root crossdesk_wire_test
|
|
||||||
xmake run --root keyboard_state_wire_test
|
|
||||||
|
|
||||||
- name: Install Linux headless runtime dependencies
|
- name: Install Linux headless runtime dependencies
|
||||||
run: |
|
run: |
|
||||||
apt-get update
|
apt-get update
|
||||||
@@ -467,25 +456,6 @@ jobs:
|
|||||||
xmake f --CROSSDESK_VERSION=${{ env.VERSION_NUM }} --USE_CUDA=true -y
|
xmake f --CROSSDESK_VERSION=${{ env.VERSION_NUM }} --USE_CUDA=true -y
|
||||||
xmake b -vy crossdesk
|
xmake b -vy crossdesk
|
||||||
|
|
||||||
- name: Test installed Windows autostart and unattended host
|
|
||||||
run: |
|
|
||||||
xmake b -vy windows_autostart_test
|
|
||||||
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
|
|
||||||
xmake run windows_autostart_test
|
|
||||||
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
|
|
||||||
xmake b -vy windows_unattended_policy_test
|
|
||||||
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
|
|
||||||
xmake b -vy windows_unattended_security_test
|
|
||||||
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
|
|
||||||
xmake run windows_unattended_policy_test
|
|
||||||
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
|
|
||||||
xmake run windows_unattended_security_test
|
|
||||||
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
|
|
||||||
xmake b -vy windows_service_lifetime_test
|
|
||||||
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
|
|
||||||
xmake run windows_service_lifetime_test
|
|
||||||
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
|
|
||||||
|
|
||||||
- name: Package
|
- name: Package
|
||||||
shell: pwsh
|
shell: pwsh
|
||||||
run: |
|
run: |
|
||||||
@@ -542,13 +512,6 @@ jobs:
|
|||||||
xmake f --CROSSDESK_VERSION=${{ env.VERSION_NUM }} --USE_CUDA=true --CROSSDESK_PORTABLE=true -y
|
xmake f --CROSSDESK_VERSION=${{ env.VERSION_NUM }} --USE_CUDA=true --CROSSDESK_PORTABLE=true -y
|
||||||
xmake b -vy crossdesk
|
xmake b -vy crossdesk
|
||||||
|
|
||||||
- name: Test portable Windows autostart
|
|
||||||
run: |
|
|
||||||
xmake b -vy windows_autostart_test
|
|
||||||
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
|
|
||||||
xmake run windows_autostart_test
|
|
||||||
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
|
|
||||||
|
|
||||||
- name: Package Portable
|
- name: Package Portable
|
||||||
shell: pwsh
|
shell: pwsh
|
||||||
run: |
|
run: |
|
||||||
@@ -635,9 +598,6 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
path: artifacts
|
path: artifacts
|
||||||
|
|
||||||
- name: Verify release manifest updates
|
|
||||||
run: python3 -B -m unittest discover -s .github/scripts -p 'test_*.py' -v
|
|
||||||
|
|
||||||
- name: Extract version number
|
- name: Extract version number
|
||||||
id: version
|
id: version
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|||||||
@@ -101,9 +101,6 @@ jobs:
|
|||||||
- name: Checkout publishing scripts
|
- name: Checkout publishing scripts
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v5
|
||||||
|
|
||||||
- name: Verify release manifest updates
|
|
||||||
run: python3 -B -m unittest discover -s .github/scripts -p 'test_*.py' -v
|
|
||||||
|
|
||||||
- name: Verify release version
|
- name: Verify release version
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
@@ -30,9 +30,6 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
ref: ${{ github.event.repository.default_branch }}
|
ref: ${{ github.event.repository.default_branch }}
|
||||||
|
|
||||||
- name: Verify release manifest updates
|
|
||||||
run: python3 -B -m unittest discover -s .github/scripts -p 'test_*.py' -v
|
|
||||||
|
|
||||||
- name: Download release information and assets
|
- name: Download release information and assets
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
@@ -98,14 +98,13 @@ git push origin android-v1.6.0-20261002
|
|||||||
|
|
||||||
Gradle 缓存与 Android 原生依赖缓存分别管理;原生缓存按宿主架构、构建脚本及 MiniRTC 配方区分,不复用桌面或 iOS 的配置和目标文件。GitHub 托管 runner 每次启动仍是新环境;第一次运行或缓存失效时需要安装。不同分支和标签可读取默认分支的缓存,因此建议先在默认分支运行一次 `Build Android` 预热,再创建发布标签。
|
Gradle 缓存与 Android 原生依赖缓存分别管理;原生缓存按宿主架构、构建脚本及 MiniRTC 配方区分,不复用桌面或 iOS 的配置和目标文件。GitHub 托管 runner 每次启动仍是新环境;第一次运行或缓存失效时需要安装。不同分支和标签可读取默认分支的缓存,因此建议先在默认分支运行一次 `Build Android` 预热,再创建发布标签。
|
||||||
|
|
||||||
CI 构建 Debug、Release 和设备测试 APK,执行 Debug / Release Lint、本机 C++ 协议与画面队列测试,并校验 APK 的 arm64 ABI、16 KB ELF / ZIP 对齐、完整许可证及 Debug 签名。Ubuntu x64 构建机上不运行 arm64 设备测试;使用下面的设备验证流程在 arm64 手机或模拟器上执行。Lint 报告在构建失败时也会保留。
|
CI 仅构建和打包 Debug、Release APK,并校验 APK 的 arm64 ABI、16 KB ELF / ZIP 对齐、完整许可证及 Debug 签名。单元测试、本机 C++ 协议与画面队列测试、Lint 和设备测试改为按需在本地执行;设备测试使用下面的设备验证流程在 arm64 手机或模拟器上执行。
|
||||||
|
|
||||||
产物使用 Android 工程自己的 `versionName`,例如 `v1.6.0-20261002`,不跟随桌面版本号。构建日期采用上海时区;带日期的版本标签沿用标签中的日期,与 iOS 一致。Actions 提供:
|
产物使用 Android 工程自己的 `versionName`,例如 `v1.6.0-20261002`,不跟随桌面版本号。构建日期采用上海时区;带日期的版本标签沿用标签中的日期,与 iOS 一致。Actions 提供:
|
||||||
|
|
||||||
- `crossdesk-android-arm64-<版本>.apk`:已签名 Release APK,独立安卓发布和全平台标签发布收集此 APK,可直接安装。
|
- `crossdesk-android-arm64-<版本>.apk`:已签名 Release APK,独立安卓发布和全平台标签发布收集此 APK,可直接安装。
|
||||||
- `crossdesk-android-arm64-unsigned-<版本>.apk`:构建工作流的中间产物,也可用于自行签名和验证修改后的构建。
|
- `crossdesk-android-arm64-unsigned-<版本>.apk`:构建工作流的中间产物,也可用于自行签名和验证修改后的构建。
|
||||||
- `crossdesk-android-arm64-debug-<版本>.apk` 和对应的 `-test.apk`:可安装的调试应用和设备测试包,保留 14 天。
|
- `crossdesk-android-arm64-debug-<版本>.apk`:可安装的调试应用,保留 14 天。
|
||||||
- `crossdesk-android-reports`:Lint 报告,保留 14 天。
|
|
||||||
|
|
||||||
Debug APK 使用每次运行的临时调试证书,可能无法覆盖手机上已有的其他签名版本;卸载原应用会清除本机连接记录和密码。需要持续覆盖升级时,应使用同一私钥签名 Release APK,并在发布新版本时递增 `app/build.gradle` 中的 `versionCode`。未签名 APK 已完成对齐,可通过 SDK 的 `apksigner sign --ks <自己的密钥库> --out <已签名.apk> <未签名.apk>` 签名,再用 `apksigner verify` 检查。
|
Debug APK 使用每次运行的临时调试证书,可能无法覆盖手机上已有的其他签名版本;卸载原应用会清除本机连接记录和密码。需要持续覆盖升级时,应使用同一私钥签名 Release APK,并在发布新版本时递增 `app/build.gradle` 中的 `versionCode`。未签名 APK 已完成对齐,可通过 SDK 的 `apksigner sign --ks <自己的密钥库> --out <已签名.apk> <未签名.apk>` 签名,再用 `apksigner verify` 检查。
|
||||||
|
|
||||||
|
|||||||
+4
-3
@@ -105,9 +105,10 @@ or relevant build configuration also trigger it. The main
|
|||||||
workflow on branch/tag pushes and manual runs, and waits for its result before
|
workflow on branch/tag pushes and manual runs, and waits for its result before
|
||||||
publishing a version-tag release.
|
publishing a version-tag release.
|
||||||
|
|
||||||
The workflow tests the minimum supported Xmake version (3.0.0) and retains the
|
The workflow builds with the minimum supported Xmake version (3.0.0) and retains
|
||||||
pinned Xcode/SDK, dependency cache, license and privacy checks, unsigned arm64
|
the pinned Xcode/SDK, dependency cache, license catalog validation, unsigned arm64
|
||||||
Release build, and app-bundle verification. It uploads
|
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<marketing-version>-<date>.zip`,
|
||||||
including the app, source metadata, third-party source catalog, rights notice
|
including the app, source metadata, third-party source catalog, rights notice
|
||||||
and any generated dSYM. The version comes from the iOS target; dated repository
|
and any generated dSYM. The version comes from the iOS target; dated repository
|
||||||
|
|||||||
Reference in New Issue
Block a user