From ec39f7a26b4c6253979149e8d75ca4f9b35124fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B5=AE=E7=94=9F=E8=8B=A5=E6=A2=A6?= <1070753498@qq.com> Date: Wed, 3 Sep 2025 09:12:35 +0800 Subject: [PATCH 1/2] =?UTF-8?q?[=E6=9E=84=E5=BB=BA=E5=92=8C=E9=83=A8?= =?UTF-8?q?=E7=BD=B2]:=20=E6=9B=B4=E6=96=B0Qt=E7=89=88=E6=9C=AC=E8=87=B36.?= =?UTF-8?q?9.2=E5=B9=B6=E9=87=8D=E6=9E=84=E9=83=A8=E7=BD=B2=E8=84=9A?= =?UTF-8?q?=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 更新Qt版本: 将Windows和macOS的Qt依赖从6.9.1升级到6.9.2 - 删除冗余脚本: 移除macOS专用的package.py,由通用上传脚本替代 - 新增通用上传脚本: 添加upload.py支持多平台(windows_x86/macos_x86_64/macos_aarch64/ubuntu_x86_64/ubuntu_aarch64)的SFTP部署 - 重构macOS打包流程: package.sh改用新的通用上传脚本并更新Qt路径 - 更新构建配置: 同步修改VS Code设置、CMake配置和Windows构建脚本中的Qt版本路径 --- .../actions/install-dependencies/action.yml | 2 +- .vscode/settings.json | 2 +- cmake/qt.cmake | 4 +- packaging/macos/build.py | 2 +- packaging/macos/package.py | 42 ------ packaging/macos/package.sh | 6 +- packaging/upload.py | 131 ++++++++++++++++++ packaging/windows/build.py | 2 +- 8 files changed, 140 insertions(+), 51 deletions(-) delete mode 100644 packaging/macos/package.py create mode 100644 packaging/upload.py diff --git a/.github/actions/install-dependencies/action.yml b/.github/actions/install-dependencies/action.yml index e7bf5ce..a77d231 100644 --- a/.github/actions/install-dependencies/action.yml +++ b/.github/actions/install-dependencies/action.yml @@ -9,7 +9,7 @@ inputs: qt_ver: description: 'qt version' required: false - default: '6.9.1' + default: '6.9.2' type: string runs: diff --git a/.vscode/settings.json b/.vscode/settings.json index 6099d84..6912088 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -4,6 +4,6 @@ }, "cmake.generator": "Ninja", "cmake.environment": { - "PATH": "C:\\Qt\\6.9.1\\msvc2022_64\\bin;${env:PATH};" + "PATH": "C:\\Qt\\6.9.2\\msvc2022_64\\bin;${env:PATH};" } } \ No newline at end of file diff --git a/cmake/qt.cmake b/cmake/qt.cmake index 03e15bf..6762fc7 100644 --- a/cmake/qt.cmake +++ b/cmake/qt.cmake @@ -1,9 +1,9 @@ if(CMAKE_HOST_WIN32) - list(APPEND CMAKE_PREFIX_PATH "C:\\Qt\\6.9.1\\msvc2022_64") + list(APPEND CMAKE_PREFIX_PATH "C:\\Qt\\6.9.2\\msvc2022_64") elseif(CMAKE_HOST_APPLE) elseif(CMAKE_HOST_LINUX) - list(APPEND CMAKE_PREFIX_PATH "/opt/Qt/6.9.1/gcc_64") + list(APPEND CMAKE_PREFIX_PATH "/opt/Qt/6.9.2/gcc_64") endif() add_definitions(-DQT_DEPRECATED_WARNINGS diff --git a/packaging/macos/build.py b/packaging/macos/build.py index dfc537a..29e1a9f 100644 --- a/packaging/macos/build.py +++ b/packaging/macos/build.py @@ -5,7 +5,7 @@ build_list = [ { - "qmake": r"/Users/runner/Qt/6.9.1/macos/bin/qmake", + "qmake": r"/Users/runner/Qt/6.9.2/macos/bin/qmake", "qmake_params": r'"CONFIG+=qtquickcompiler"', "make": r"make", "project": r"/Users/runner/code/Qt-App/Qt-App.pro", diff --git a/packaging/macos/package.py b/packaging/macos/package.py deleted file mode 100644 index 68a11a1..0000000 --- a/packaging/macos/package.py +++ /dev/null @@ -1,42 +0,0 @@ -# -*- coding: utf-8 -*- - -import os -import time -import sys - -sys.path.append(sys.path[0] + "/../") -import utils - - -def rename_and_upload(): - version = "0.0.1" - current_time = time.strftime("%Y%m%d", time.localtime()) - dmg_path = "{0}/../releases/Qt-App.dmg".format(sys.path[0]) - dmg_name = "Qt-App_{0}_{1}_x86_64.dmg".format(version, current_time) - out_dmg_path = "{0}/../releases/{1}".format(sys.path[0], dmg_name) - utils.removeFile(out_dmg_path) - os.rename(dmg_path, out_dmg_path) - - json_path = "{0}/../releases/update.json".format(sys.path[0]) - utils.generate_json(version, out_dmg_path, dmg_name, json_path) - - base_url = "http://192.168.1.111:80/webdav/index.php/admin/packages/Qt-App/macos/" - username = "admin" - password = "password" - utils.upload_file(base_url + dmg_name, username, password, out_dmg_path) - utils.upload_file(base_url + "update.json", username, password, json_path) - - -def main(): - rename_and_upload() - - -if __name__ == "__main__": - main() - - -# sudo spctl -vvv --assess --type execute /Applications/Qt-App.app -# 输出如下: -# /Applications/Qt-App.app: accepted -# source=Notarized Developer ID -# origin=Developer ID Application: ******(******) diff --git a/packaging/macos/package.sh b/packaging/macos/package.sh index 43c441c..85504ff 100644 --- a/packaging/macos/package.sh +++ b/packaging/macos/package.sh @@ -8,7 +8,7 @@ project_root=$PWD echo "Project root: ${project_root}" echo "Start compiling..." -qmake="/Users/runner/Qt/6.9.1/macos/bin/qmake" +qmake="/Users/runner/Qt/6.9.2/macos/bin/qmake" build_dir="${project_root}/build/Desktop_Qt_6_8_1_macosbit-Release" rm -rf ${build_dir} @@ -29,7 +29,7 @@ cp -af -v ${project_root}/bin-64/Release/Qt-App.app ${packet_dir}/ delete_file_or_dir "${release_dir}/Qt-App.app" # deploy Qt-App -macdeployqt="/Users/fxy/Qt/6.9.1/macos/bin/macdeployqt" +macdeployqt="/Users/fxy/Qt/6.9.2/macos/bin/macdeployqt" ${macdeployqt} ${packet_dir}/Qt-App.app -always-overwrite cp -af -v ${packet_dir}/Qt-App.app ${release_dir}/ @@ -94,5 +94,5 @@ notarize_app "${out_dmg_path}" source ${project_root}/packaging/activate_venv.sh cd "$(dirname "$0")" -python ./package.py +python ${project_root}/packaging/upload.py macos_aarch64 deactivate diff --git a/packaging/upload.py b/packaging/upload.py new file mode 100644 index 0000000..5a984ad --- /dev/null +++ b/packaging/upload.py @@ -0,0 +1,131 @@ +# -*- coding: utf-8 -*- +""" +通用 SFTP 上传脚本 +支持平台:windows_x86、macos_x86_64、macos_aarch64、ubuntu_x86_64、ubuntu_aarch64 +用法: + python upload.py windows_x86 + python upload.py macos_x86_64 + ... +""" + +import os +import time +import argparse + +import utils + +# -------------------- 配置区 -------------------- +APP_NAME = "Qt-App" +VERSION = "0.0.1" +BUILD_DATE = time.strftime("%Y%m%d", time.localtime()) + +# 本地 releases 目录 +RELEASES_PATH = os.path.join(os.path.dirname(__file__), "releases") + +# 远端公共根目录 +REMOTE_ROOT = "/mnt/data/homes/admin/packages/qt-app" + +# 各平台配置 +PLATFORMS = { + "windows_x86": { + "src_file": f"{APP_NAME}_installer.exe", + "dst_tpl": f"{APP_NAME}_{VERSION}_{BUILD_DATE}_x86.exe", + "remote": f"{REMOTE_ROOT}/windows", + }, + "macos_x86_64": { + "src_file": f"{APP_NAME}.dmg", + "dst_tpl": f"{APP_NAME}_{VERSION}_{BUILD_DATE}_x86_64.dmg", + "remote": f"{REMOTE_ROOT}/macos/x86_64", + }, + "macos_aarch64": { + "src_file": f"{APP_NAME}.dmg", + "dst_tpl": f"{APP_NAME}_{VERSION}_{BUILD_DATE}_aarch64.dmg", + "remote": f"{REMOTE_ROOT}/macos/aarch64", + }, + "ubuntu_x86_64": { + "src_file": f"{APP_NAME}.deb", + "dst_tpl": f"{APP_NAME}_{VERSION}_{BUILD_DATE}_x86_64.deb", + "remote": f"{REMOTE_ROOT}/ubuntu/x86_64", + }, + "ubuntu_aarch64": { + "src_file": f"{APP_NAME}.deb", + "dst_tpl": f"{APP_NAME}_{VERSION}_{BUILD_DATE}_aarch64.deb", + "remote": f"{REMOTE_ROOT}/ubuntu/aarch64", + }, +} + +# SFTP 连接信息 +SFTP_SERVER = "192.168.1.111" +SFTP_PORT = 22 +SFTP_USER = "root" +SFTP_PWD = "123456" +# -------------------- 逻辑区 -------------------- + + +def upload_platform(platform_key: str) -> None: + if platform_key not in PLATFORMS: + raise ValueError(f"未知的 platform_key: {platform_key}") + + cfg = PLATFORMS[platform_key] + + src_path = os.path.join(RELEASES_PATH, cfg["src_file"]) + dst_name = cfg["dst_tpl"] + dst_path = os.path.join(RELEASES_PATH, dst_name) + + # 若目标文件已存在,先删除(utils.remove 内部已做存在性检查) + utils.remove(dst_path) + # 重命名 + os.rename(src_path, dst_path) + + # 生成 update.json + json_path = os.path.join(RELEASES_PATH, "update.json") + utils.generate_json(VERSION, dst_path, dst_name, json_path) + + # 上传主安装包 + utils.sftp_upload_file( + SFTP_SERVER, + SFTP_PORT, + SFTP_USER, + SFTP_PWD, + dst_path, + f"{cfg['remote']}/{dst_name}", + ) + + # 上传 update.json + utils.sftp_upload_file( + SFTP_SERVER, + SFTP_PORT, + SFTP_USER, + SFTP_PWD, + json_path, + f"{cfg['remote']}/update.json", + ) + + print(f"[{platform_key}] 上传完成 ✔") + + +def main() -> None: + parser = argparse.ArgumentParser(description="通用 SFTP 上传脚本") + parser.add_argument( + "platform", + choices=list(PLATFORMS.keys()), + help="要上传的平台标识", + ) + args = parser.parse_args() + upload_platform(args.platform) + + +if __name__ == "__main__": + main() + +# MacOS +# sudo spctl -vvv --assess --type execute /Applications/Qt-App.app +# 输出如下: +# /Applications/Qt-App.app: accepted +# source=Notarized Developer ID +# origin=Developer ID Application: ********(*******) + +# Ubuntu +# dpkg -r Qt-App +# dpkg -i Qt-App_0.0.1_20250810.deb +# dpkg -i --force-overwrite Qt-App_0.0.1_20250810.deb diff --git a/packaging/windows/build.py b/packaging/windows/build.py index d44c9d0..3ce7822 100644 --- a/packaging/windows/build.py +++ b/packaging/windows/build.py @@ -8,7 +8,7 @@ build_list = [ { - "qmake": r"C:\Qt\6.9.1\msvc2022_64\bin\qmake.exe", + "qmake": r"C:\Qt\6.9.2\msvc2022_64\bin\qmake.exe", "qmake_params": r'"CONFIG+=qtquickcompiler"', "jom": r"C:\Qt\Tools\QtCreator\bin\jom\jom.exe", "env_bat": r'C:\"Program Files"\"Microsoft Visual Studio"\2022\Community\VC\Auxiliary\Build\vcvarsall.bat x64', From aea1410a0cc90d6e54cb76b8fd848811799c0ccb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Sep 2025 08:32:10 +0000 Subject: [PATCH 2/2] Bump actions/setup-node from 4 to 5 Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4 to 5. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/setup-node dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/readme.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/readme.yml b/.github/workflows/readme.yml index 739a0d0..23e39e9 100644 --- a/.github/workflows/readme.yml +++ b/.github/workflows/readme.yml @@ -14,7 +14,7 @@ jobs: steps: - uses: actions/checkout@v5 - name: Setup Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v5 # ISO Langusge Codes: https://cloud.google.com/translate/docs/languages - name: Adding README - English uses: dephraiim/translate-readme@main