完善 Gitea 工作流并修复移动端导航与列表按钮图标

前端:
- 「我的构建」列表「查看详情/查看进度」按钮补充与其他按钮同风格的眼睛小图标
- 顶部导航增加 768px 以下移动端适配: 顶栏纵向排列, 导航单行横向滑动, 修复手机端错位

Gitea Actions 工作流 (仅 .gitea, 不动 .github):
- 5 个生成器工作流全部补充 /updategh 终态状态回调 (成功/取消/失败均回调),
  修复无回调导致构建 6 小时后被误判为超时的 P0 缺陷
- Windows 两个工作流 job 级默认 shell 设为 pwsh, 兼容 act 在 Windows 默认 bash
- 修复 VCPKG_BINARY_SOURCES 中 \v 的 YAML 非法转义 (双引号改单引号)
- Flutter 补丁路径改为 .rdgen-src/.github/patches/, run-on-arch 容器内用 /workspace 前缀
- run-on-arch githubToken 置空, 避免 Gitea token 拉 ghcr.io 失败
- runs-on 标签对齐现场 runner: ubuntu-22.04 改为 ubuntu-24.04
- run-vcpkg/setup-ndk 钉到 node20 运行时 SHA, 规避 node24 action 不兼容
- decrypt-secrets 的 pip 安装增加三级回退; cleanzip 请求增加超时重试
- 所有产物上传 curl 增加 --fail/超时/重试参数
- macOS 动态定位 *.app 不再硬编码 RustDesk.app, DMG 路径改用 GITHUB_WORKSPACE
- 修复签名条件判断、PowerShell 变量空格等小问题
- setup.md 更新 runner 标签表及 Windows/macOS host 准备要求
This commit is contained in:
naeeo
2026-09-30 11:40:33 +08:00
parent 6e5754fb59
commit 73ca96fa67
12 changed files with 348 additions and 70 deletions
+60 -8
View File
@@ -101,6 +101,8 @@ jobs:
method: 'POST'
customHeaders: '{"Content-Type": "application/json"}'
data: '{"uuid": "${{ env.uuid }}"}'
timeout: '15000'
retry: '3'
- name: Checkout source code
@@ -294,7 +296,7 @@ jobs:
continue-on-error: true
run: |
cd $(dirname $(dirname $(which flutter)))
[[ "3.24.5" == ${{env.FLUTTER_VERSION}} ]] && git apply ${{ github.workspace }}/.github/patches/flutter_3.24.4_dropdown_menu_enableFilter.diff
[[ "3.24.5" == ${{env.FLUTTER_VERSION}} ]] && git apply ${{ github.workspace }}/.rdgen-src/.github/patches/flutter_3.24.4_dropdown_menu_enableFilter.diff
- name: Workaround for flutter issue
shell: bash
@@ -500,7 +502,7 @@ jobs:
path: ./
- name: Setup vcpkg with Github Actions binary cache
uses: lukka/run-vcpkg@v11
uses: lukka/run-vcpkg@1737e223b9c3f4fb07a7cf1cfa123cc243fcc0dd # v11 pinned to node20 runtime
with:
vcpkgGitCommitId: ${{ env.VCPKG_COMMIT_ID }}
doNotCache: false
@@ -550,7 +552,7 @@ jobs:
ls -l "$APP/Contents/MacOS/custom_.txt"
- name: Install rcodesign tool
if: env.MACOS_P12_BASE64 != null
if: env.MACOS_P12_BASE64 != ''
shell: bash
run: |
pushd /tmp
@@ -584,7 +586,11 @@ jobs:
continue-on-error: false
shell: bash
run: |
ASSETS_DIR="build/macos/Build/Products/Release/RustDesk.app/Contents/Frameworks/App.framework/Versions/Current/Resources/flutter_assets/assets"
# build.py renames the bundle to the custom app name: locate *.app
# dynamically instead of assuming RustDesk.app still exists.
APP=$(find ./flutter/build/macos/Build/Products/Release -maxdepth 1 -name "*.app" | head -n 1)
echo "App bundle: $APP"
ASSETS_DIR="$APP/Contents/Frameworks/App.framework/Versions/Current/Resources/flutter_assets/assets"
mkdir -p "$ASSETS_DIR"
if [ -f "$ASSETS_DIR/icon.svg" ]; then
mv "$ASSETS_DIR/icon.svg" "$ASSETS_DIR/icon.svg.bak"
@@ -600,7 +606,11 @@ jobs:
continue-on-error: false
shell: bash
run: |
ASSETS_DIR="build/macos/Build/Products/Release/RustDesk.app/Contents/Frameworks/App.framework/Versions/Current/Resources/flutter_assets/assets"
# build.py renames the bundle to the custom app name: locate *.app
# dynamically instead of assuming RustDesk.app still exists.
APP=$(find ./flutter/build/macos/Build/Products/Release -maxdepth 1 -name "*.app" | head -n 1)
echo "App bundle: $APP"
ASSETS_DIR="$APP/Contents/Frameworks/App.framework/Versions/Current/Resources/flutter_assets/assets"
mkdir -p "$ASSETS_DIR"
curl -k -L --tlsv1.2 --proto =https --ssl-reqd \
-H "User-Agent: Mozilla/5.0" \
@@ -696,7 +706,7 @@ jobs:
- name: Create DMG
run: |
cd /Users/runner/work/${{ github.event.repository.name }}/${{ github.event.repository.name }}/flutter/build/macos/Build/Products/Release
cd $GITHUB_WORKSPACE/flutter/build/macos/Build/Products/Release
# Print directory contents for debugging
echo "Directory contents:"
ls -la
@@ -745,7 +755,7 @@ jobs:
if: ${{ env.rdgen == 'true' }}
shell: bash
run: |
curl -i -X POST \
curl --fail -i -X POST --connect-timeout 10 --max-time 300 --retry 3 --retry-delay 5 \
-H "Content-Type: multipart/form-data" \
-H "Authorization: Bearer ${{ env.token }}" \
-F "file=@$GITHUB_WORKSPACE/${{ env.filename }}-${{ matrix.job.arch }}.dmg" \
@@ -757,7 +767,7 @@ jobs:
if: ${{ env.rdgen == 'false' }}
shell: bash
run: |
curl -i -X POST \
curl --fail -i -X POST --connect-timeout 10 --max-time 300 --retry 3 --retry-delay 5 \
-H "Content-Type: multipart/form-data" \
-H "Authorization: Bearer ${{ env.token }}" \
-F "file=@$GITHUB_WORKSPACE/${{ env.filename }}-${{ matrix.job.arch }}.dmg" \
@@ -769,6 +779,48 @@ jobs:
continue-on-error: true
if: always()
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
path: .rdgen-src
- uses: actions/download-artifact@v4
with:
name: encrypted-secrets-zip
- name: Load Secrets
uses: ./.gitea/actions/decrypt-secrets
with:
zip_password: ${{ secrets.ZIP_PASSWORD }}
- name: Report build status
if: always()
shell: bash
env:
BUILD_RESULT: ${{ needs.build-for-macos.result }}
run: |
# Single aggregated callback for the x86_64/aarch64 matrix.
case "$BUILD_RESULT" in
success) STATUS=success ;;
cancelled) STATUS=cancelled ;;
*) STATUS=failure ;;
esac
if [ "${{ env.rdgen }}" = "false" ]; then
STATUS_URL="${{ env.apiServer }}/api/updategh"
else
STATUS_URL="${{ secrets.GENURL }}/updategh"
fi
if [ -z "${{ env.uuid }}" ]; then
echo "::warning::uuid missing, skip status callback"
exit 0
fi
echo "Reporting status=$STATUS for uuid=${{ env.uuid }}"
curl --fail --silent --show-error \
--connect-timeout 10 --max-time 30 --retry 3 --retry-delay 5 \
-X POST -H "Content-Type: application/json" \
-d "{\"uuid\":\"${{ env.uuid }}\",\"status\":\"$STATUS\"}" \
"$STATUS_URL" || echo "::warning::status callback failed"
- name: Delete secrets artifact
uses: geekyeggo/delete-artifact@v4
with: