完善 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:
@@ -28,7 +28,7 @@ env:
|
||||
# for arm64 linux because official Dart SDK does not work
|
||||
FLUTTER_ELINUX_VERSION: "3.16.9"
|
||||
TAG_NAME: "${{ inputs.upload-tag }}"
|
||||
VCPKG_BINARY_SOURCES: "clear;files,D:\vcpkg-cache,readwrite"
|
||||
VCPKG_BINARY_SOURCES: 'clear;files,D:\vcpkg-cache,readwrite'
|
||||
# vcpkg version: 2024.07.12
|
||||
VCPKG_COMMIT_ID: "${{ inputs.version == 'master' && '9e593bb18ea69cc5095e012465dcd675a822ed0d' || '120deac3062162151622ca4860575a33844ba10b' }}"
|
||||
ARMV7_VCPKG_COMMIT_ID: "6f29f12e82a8293156836ad81cc9bf5af41fe836"
|
||||
@@ -70,6 +70,11 @@ jobs:
|
||||
name: Build Windows
|
||||
needs: [build-RustDeskTempTopMostWindow, generate-bridge, setup]
|
||||
runs-on: ${{ matrix.job.os }}
|
||||
# Gitea act defaults to bash on Windows hosts; most unmarked steps here are
|
||||
# PowerShell. Requires PowerShell 7 (pwsh) installed on the self-hosted runner.
|
||||
defaults:
|
||||
run:
|
||||
shell: pwsh
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
@@ -107,6 +112,8 @@ jobs:
|
||||
method: 'POST'
|
||||
customHeaders: '{"Content-Type": "application/json"}'
|
||||
data: '{"uuid": "${{ env.uuid }}"}'
|
||||
timeout: '15000'
|
||||
retry: '3'
|
||||
|
||||
|
||||
- name: Set rdgen value
|
||||
@@ -385,7 +392,7 @@ jobs:
|
||||
- name: Patch flutter
|
||||
shell: bash
|
||||
run: |
|
||||
cp .github/patches/flutter_3.24.4_dropdown_menu_enableFilter.diff $(dirname $(dirname $(which flutter)))
|
||||
cp .rdgen-src/.github/patches/flutter_3.24.4_dropdown_menu_enableFilter.diff $(dirname $(dirname $(which flutter)))
|
||||
cd $(dirname $(dirname $(which flutter)))
|
||||
[[ "3.24.5" == ${{env.FLUTTER_VERSION}} ]] && git apply flutter_3.24.4_dropdown_menu_enableFilter.diff
|
||||
|
||||
@@ -401,7 +408,7 @@ jobs:
|
||||
prefix-key: ${{ matrix.job.os }}
|
||||
|
||||
- name: Setup vcpkg with Github Actions binary cache
|
||||
uses: lukka/run-vcpkg@v11
|
||||
uses: lukka/run-vcpkg@1737e223b9c3f4fb07a7cf1cfa123cc243fcc0dd # v11 pinned to node20 runtime
|
||||
with:
|
||||
vcpkgDirectory: C:\vcpkg
|
||||
vcpkgGitCommitId: ${{ env.VCPKG_COMMIT_ID }}
|
||||
@@ -723,8 +730,8 @@ jobs:
|
||||
retry_wait_seconds: 15
|
||||
shell: bash
|
||||
command: |
|
||||
curl -i -X POST -H "Content-Type: multipart/form-data" -H "Authorization: Bearer ${{ env.token }}" -F "file=@./SignOutput/${{ env.filename }}.exe" -F "uuid=${{ env.uuid }}" ${{ secrets.GENURL }}/save_custom_client
|
||||
curl -i -X POST -H "Content-Type: multipart/form-data" -H "Authorization: Bearer ${{ env.token }}" -F "file=@./SignOutput/${{ env.filename }}.msi" -F "uuid=${{ env.uuid }}" ${{ secrets.GENURL }}/save_custom_client || true
|
||||
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=@./SignOutput/${{ env.filename }}.exe" -F "uuid=${{ env.uuid }}" ${{ secrets.GENURL }}/save_custom_client
|
||||
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=@./SignOutput/${{ env.filename }}.msi" -F "uuid=${{ env.uuid }}" ${{ secrets.GENURL }}/save_custom_client || true
|
||||
|
||||
- name: send file to api server
|
||||
if: ${{ env.rdgen == 'false' }}
|
||||
@@ -735,8 +742,8 @@ jobs:
|
||||
retry_wait_seconds: 15
|
||||
shell: bash
|
||||
command: |
|
||||
curl -i -X POST -H "Content-Type: multipart/form-data" -H "Authorization: Bearer ${{ env.token }}" -F "file=@./SignOutput/${{ env.filename }}.exe" ${{ env.apiServer }}/api/save_custom_client
|
||||
curl -i -X POST -H "Content-Type: multipart/form-data" -H "Authorization: Bearer ${{ env.token }}" -F "file=@./SignOutput/${{ env.filename }}.msi" ${{ env.apiServer }}/api/save_custom_client || true
|
||||
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=@./SignOutput/${{ env.filename }}.exe" ${{ env.apiServer }}/api/save_custom_client
|
||||
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=@./SignOutput/${{ env.filename }}.msi" ${{ env.apiServer }}/api/save_custom_client || true
|
||||
|
||||
cleanup:
|
||||
needs: [build-for-windows-flutter]
|
||||
@@ -744,6 +751,49 @@ 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-windows-flutter.result }}
|
||||
run: |
|
||||
# Single aggregated callback. needs.result also covers the upstream
|
||||
# reusable jobs: if third-party/bridge/setup fail the build is "skipped".
|
||||
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:
|
||||
|
||||
Reference in New Issue
Block a user