fix(parser): FangCloud share validity check reads the wrong JSON field #539
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Java CI(Maven 构建 + Docker 镜像 + 原生环境打包) | |
| permissions: | |
| contents: write | |
| packages: write | |
| on: | |
| workflow_dispatch: | |
| push: | |
| tags: | |
| - '*' | |
| branches-ignore: | |
| - '*' | |
| paths-ignore: | |
| - 'bin/**' | |
| - '.github/**' | |
| - '.mvn/**' | |
| - '.run/**' | |
| - '.vscode/**' | |
| - '*.txt' | |
| - '*.md' | |
| pull_request: | |
| branches: | |
| - "main" | |
| jobs: | |
| # ================================================================ | |
| # 阶段一:构建前端 + Maven 打包(只执行一次,产物共享) | |
| # ================================================================ | |
| build: | |
| name: 编译构建 | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: 检出代码 | |
| uses: actions/checkout@v3 | |
| - name: 设置 Node.js 18 | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '18' | |
| - name: 设置 JDK 17 | |
| uses: actions/setup-java@v3 | |
| with: | |
| java-version: '17' | |
| distribution: 'temurin' | |
| cache: maven | |
| - name: 构建前端 | |
| run: cd web-front && yarn install && yarn run build | |
| - name: Maven 编译打包 | |
| run: mvn -B package -DskipTests --file pom.xml | |
| - name: 更新依赖图谱 | |
| uses: advanced-security/maven-dependency-submission-action@v3 | |
| if: github.event_name != 'pull_request' | |
| continue-on-error: true | |
| with: | |
| ignore-maven-wrapper: true | |
| - name: 分享应用打包目录(供原生包和 Docker 复用) | |
| if: github.event_name != 'pull_request' | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: app-package | |
| path: web-service/target/package/ | |
| - name: 分享 bin-zip(供 Docker 复用) | |
| if: github.event_name != 'pull_request' | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: app-bin-zip | |
| path: web-service/target/netdisk-fast-download-bin.zip | |
| # ================================================================ | |
| # 阶段二-A:Docker 镜像构建(并行) | |
| # ================================================================ | |
| docker: | |
| name: Docker 镜像 | |
| needs: build | |
| if: github.event_name != 'pull_request' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: 检出代码 | |
| uses: actions/checkout@v3 | |
| - name: 下载 bin-zip 产物 | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: app-bin-zip | |
| path: web-service/target/ | |
| - name: 登录 GitHub 容器仓库 | |
| uses: docker/login-action@v3 | |
| with: | |
| registry: ghcr.io | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - name: 设置 QEMU(多平台构建支持) | |
| uses: docker/setup-qemu-action@v3 | |
| - name: 设置 Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: 生成 Docker 标签 | |
| id: docker_tag | |
| shell: bash | |
| run: | | |
| tag="$(printf '%s' "${GITHUB_REF_NAME}" | tr '[:upper:]' '[:lower:]' | sed -E 's/[^a-z0-9_.-]+/-/g; s/^-+//; s/-+$//')" | |
| if [ -z "$tag" ]; then | |
| tag="snapshot" | |
| fi | |
| echo "tag=$tag" >> "$GITHUB_OUTPUT" | |
| - name: 构建并推送 Docker 镜像 | |
| uses: docker/build-push-action@v5 | |
| with: | |
| context: . | |
| push: true | |
| platforms: linux/amd64,linux/arm64,linux/arm/v7 | |
| tags: | | |
| ghcr.io/${{ github.repository }}:${{ steps.docker_tag.outputs.tag }} | |
| ghcr.io/${{ github.repository }}:latest | |
| # ================================================================ | |
| # 阶段二-B:原生环境打包 Linux + Windows(并行) | |
| # ================================================================ | |
| native-package: | |
| name: 原生环境打包 → ${{ matrix.artifact-name }} | |
| needs: build | |
| if: github.event_name != 'pull_request' | |
| strategy: | |
| matrix: | |
| include: | |
| - os: ubuntu-latest | |
| artifact-name: netdisk-fast-download-linux-amd64 | |
| - os: windows-latest | |
| artifact-name: netdisk-fast-download-windows-amd64 | |
| runs-on: ${{ matrix.os }} | |
| defaults: | |
| run: | |
| shell: bash | |
| steps: | |
| - name: 设置 JDK 17 | |
| uses: actions/setup-java@v3 | |
| with: | |
| java-version: '17' | |
| distribution: 'temurin' | |
| - name: 下载 Maven 构建产物 | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: app-package | |
| path: web-service/target/package | |
| # ============================================================ | |
| # 选择 JDK 模块 | |
| # ============================================================ | |
| - name: 选择完整 JDK 模块集合 | |
| run: | | |
| # 123 网盘/自定义 JS 解析器会通过 javax.script、Nashorn 和 SPI/反射加载模块, | |
| # jdeps 无法稳定识别这些运行时依赖。这里优先保证原生包可运行,使用完整 | |
| # JDK 模块集合生成运行时,避免 Windows 精简 JRE 缺 java.scripting/jdk.dynalink 等模块。 | |
| printf 'JDK_MODULES=ALL-MODULE-PATH\n' >> $GITHUB_ENV | |
| # ============================================================ | |
| # jlink 生成完整模块 JRE | |
| # ============================================================ | |
| - name: 生成完整模块 JRE(jlink) | |
| run: | | |
| jlink \ | |
| --module-path "$JAVA_HOME/jmods" \ | |
| --add-modules "$JDK_MODULES" \ | |
| --output "native-package/netdisk-fast-download/jre" \ | |
| --strip-debug \ | |
| --compress=2 \ | |
| --no-header-files \ | |
| --no-man-pages | |
| echo "JRE size:" | |
| du -sh native-package/netdisk-fast-download/jre || true | |
| # Windows: 确保 MSVC 运行时 DLL 到位 | |
| if [[ "$RUNNER_OS" == "Windows" ]]; then | |
| JRE_BIN="native-package/netdisk-fast-download/jre/bin" | |
| for dll in vcruntime140.dll msvcp140.dll vcruntime140_1.dll; do | |
| if [ ! -f "$JRE_BIN/$dll" ] && [ -f "$JAVA_HOME/bin/$dll" ]; then | |
| echo "jlink 未包含 $dll,从 JDK 补拷" | |
| cp "$JAVA_HOME/bin/$dll" "$JRE_BIN/" | |
| fi | |
| done | |
| echo "=== JRE bin 目录 DLL 清单 ===" | |
| ls -la "$JRE_BIN"/*.dll 2>/dev/null || echo "(无 .dll 文件)" | |
| fi | |
| echo "=== 关键 JDK 模块校验 ===" | |
| "native-package/netdisk-fast-download/jre/bin/java" --list-modules | grep -q '^java.scripting@' | |
| "native-package/netdisk-fast-download/jre/bin/java" --list-modules | grep -q '^jdk.dynalink@' | |
| "native-package/netdisk-fast-download/jre/bin/java" --list-modules | grep -q '^jdk.unsupported@' | |
| # ============================================================ | |
| # 组装包目录 | |
| # ============================================================ | |
| - name: 组装包目录 | |
| run: | | |
| PKG="native-package/netdisk-fast-download" | |
| SRC="web-service/target/package" | |
| cp "$SRC/netdisk-fast-download.jar" "$PKG/" | |
| cp -r "$SRC/lib" "$PKG/" | |
| cp -r "$SRC/resources" "$PKG/" | |
| cp -r "$SRC/webroot" "$PKG/" | |
| mkdir -p "$PKG/db" | |
| mkdir -p "$PKG/logs" | |
| # ============================================================ | |
| # 生成启动脚本 | |
| # ============================================================ | |
| - name: 生成启动脚本(Linux) | |
| run: | | |
| PKG="native-package/netdisk-fast-download" | |
| echo '#!/bin/bash' > "$PKG/run.sh" | |
| echo 'DIR="$(cd "$(dirname "$0")" && pwd)"' >> "$PKG/run.sh" | |
| echo 'cd "$DIR" || exit 1' >> "$PKG/run.sh" | |
| echo 'exec "$DIR/jre/bin/java" -Xmx512M -Dfile.encoding=utf-8 -jar "$DIR/netdisk-fast-download.jar" "$@"' >> "$PKG/run.sh" | |
| chmod +x "$PKG/run.sh" | |
| - name: 生成启动脚本(Windows) | |
| run: | | |
| PKG="native-package/netdisk-fast-download" | |
| echo '@echo off' > "$PKG/run.bat" | |
| echo 'chcp 65001 > nul' >> "$PKG/run.bat" | |
| echo 'pushd %~dp0' >> "$PKG/run.bat" | |
| echo '"%~dp0jre\bin\java.exe" -Xmx512M -Dfile.encoding=utf-8 -jar "%~dp0netdisk-fast-download.jar" %*' >> "$PKG/run.bat" | |
| # ============================================================ | |
| # 打包为 zip | |
| # ============================================================ | |
| - name: 打包 ZIP(Linux) | |
| if: runner.os == 'Linux' | |
| run: | | |
| cd native-package | |
| zip -r "../${{ matrix.artifact-name }}.zip" netdisk-fast-download/ | |
| - name: 打包 ZIP(Windows) | |
| if: runner.os == 'Windows' | |
| shell: pwsh | |
| run: | | |
| Compress-Archive -Path native-package/netdisk-fast-download -DestinationPath "${{ matrix.artifact-name }}.zip" | |
| # ============================================================ | |
| # 上传产物 | |
| # ============================================================ | |
| - name: 上传原生安装包 | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ matrix.artifact-name }} | |
| path: ${{ matrix.artifact-name }}.zip | |
| - name: 上传到 Release | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| files: ${{ matrix.artifact-name }}.zip | |
| tag_name: ${{ github.ref_name }} | |
| generate_release_notes: true |