diff --git a/.github/actions/prepare-build/action.yml b/.github/actions/prepare-build/action.yml index b2cb692b..33885c6d 100644 --- a/.github/actions/prepare-build/action.yml +++ b/.github/actions/prepare-build/action.yml @@ -23,7 +23,7 @@ runs: if: ${{ inputs.web == 'true' }} uses: ./.github/actions/prepare-pnpm with: - build_filter: './easytier-web/*' + build-filter: './easytier-web/*' - name: Install GUI dependencies (Used by clippy) if: ${{ inputs.gui == 'true' }} diff --git a/.github/actions/prepare-pnpm/action.yml b/.github/actions/prepare-pnpm/action.yml index 3b5b2bb9..bc33ea47 100644 --- a/.github/actions/prepare-pnpm/action.yml +++ b/.github/actions/prepare-pnpm/action.yml @@ -3,20 +3,21 @@ author: Luna description: 'Setup Node.js, pnpm, and install dependencies' inputs: - build_filter: + build-filter: description: 'The filter argument for pnpm build (e.g. ./easytier-web/*)' - required: true + required: false + default: '' runs: using: "composite" steps: - name: Setup Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v5 with: node-version: 22 - name: Install pnpm - uses: pnpm/action-setup@v4 + uses: pnpm/action-setup@v5 with: version: 10 run_install: false @@ -27,7 +28,7 @@ runs: echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - name: Setup pnpm cache - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: ${{ env.STORE_PATH }} key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} @@ -38,5 +39,10 @@ runs: shell: bash run: | pnpm -r install - echo "Building with filter: ${{ inputs.build_filter }}" - pnpm -r --filter "${{ inputs.build_filter }}" build \ No newline at end of file + if [ -n "${{ inputs.build-filter }}" ]; then + echo "Building with filter: ${{ inputs.build-filter }}" + pnpm -r --filter "${{ inputs.build-filter }}" build + else + echo "No build filter provided, building all packages" + pnpm -r build + fi diff --git a/.github/workflows/core.yml b/.github/workflows/core.yml index ef1dd1a8..377ff767 100644 --- a/.github/workflows/core.yml +++ b/.github/workflows/core.yml @@ -36,38 +36,15 @@ jobs: needs: pre_job if: needs.pre_job.outputs.should_skip != 'true' steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v5 - - uses: actions/setup-node@v4 + - name: Setup Frontend Environment + uses: ./.github/actions/prepare-pnpm with: - node-version: 22 - - - name: Install pnpm - uses: pnpm/action-setup@v4 - with: - version: 10 - run_install: false - - - name: Get pnpm store directory - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - - - name: Setup pnpm cache - uses: actions/cache@v4 - with: - path: ${{ env.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-pnpm-store- - - - name: Install frontend dependencies - run: | - pnpm -r install - pnpm -r --filter "./easytier-web/*" build + build-filter: './easytier-web/*' - name: Archive artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: easytier-web-dashboard path: | @@ -142,7 +119,7 @@ jobs: - build_web if: needs.pre_job.outputs.should_skip != 'true' steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v5 - name: Set current ref as env variable run: | @@ -290,7 +267,7 @@ jobs: rm -rf ./artifacts/objects/ - name: Archive artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: easytier-${{ matrix.ARTIFACT_NAME }} path: | @@ -317,7 +294,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout Code - uses: actions/checkout@v4 # 必须先检出代码才能获取模块配置 + uses: actions/checkout@v5 # 必须先检出代码才能获取模块配置 # 下载二进制文件到独立目录 - name: Download Linux aarch64 binaries @@ -337,7 +314,7 @@ jobs: # 上传生成的模块 - name: Upload Magisk Module - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: Easytier-Magisk path: | diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 4b4a18ff..823da5c1 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -31,7 +31,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Validate inputs run: | diff --git a/.github/workflows/gui.yml b/.github/workflows/gui.yml index b685e79b..afa7a1e3 100644 --- a/.github/workflows/gui.yml +++ b/.github/workflows/gui.yml @@ -78,7 +78,7 @@ jobs: needs: pre_job if: needs.pre_job.outputs.should_skip != 'true' steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v5 - name: Install GUI dependencies (x86 only) if: ${{ matrix.TARGET == 'x86_64-unknown-linux-musl' }} @@ -119,37 +119,18 @@ jobs: echo "PKG_CONFIG_SYSROOT_DIR=/usr/aarch64-linux-gnu/" >> "$GITHUB_ENV" echo "PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig/" >> "$GITHUB_ENV" + - name: Install rpm package (Linux target only) + if: ${{ contains(matrix.TARGET, '-linux-') }} + run: | + sudo apt update + sudo apt install -y rpm + - name: Set current ref as env variable run: | echo "GIT_DESC=$(git log -1 --format=%cd.%h --date=format:%Y-%m-%d_%H:%M:%S)" >> $GITHUB_ENV - - uses: actions/setup-node@v4 - with: - node-version: 22 - - - name: Install pnpm - uses: pnpm/action-setup@v4 - with: - version: 10 - run_install: false - - - name: Get pnpm store directory - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - - - name: Setup pnpm cache - uses: actions/cache@v4 - with: - path: ${{ env.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-pnpm-store- - - - name: Install frontend dependencies - run: | - pnpm -r install - pnpm -r build + - name: Setup Frontend Environment + uses: ./.github/actions/prepare-pnpm - uses: Swatinem/rust-cache@v2 with: @@ -184,7 +165,7 @@ jobs: with: projectPath: ./easytier-gui # https://tauri.app/v1/guides/building/linux/#cross-compiling-tauri-applications-for-arm-based-devices - args: --verbose --target ${{ matrix.GUI_TARGET }} ${{ matrix.OS == 'ubuntu-22.04' && contains(matrix.TARGET, 'aarch64') && '--bundles deb' || '' }} + args: --verbose --target ${{ matrix.GUI_TARGET }} ${{ contains(matrix.TARGET, '-linux-') && contains(matrix.TARGET, 'aarch64') && '--bundles deb,rpm' || '' }} - name: Compress run: | @@ -202,6 +183,7 @@ jobs: mv ./target/$GUI_TARGET/release/bundle/dmg/*.dmg ./artifacts/objects/ elif [[ $OS =~ ^ubuntu.*$ && ! $TARGET =~ ^mips.*$ ]]; then mv ./target/$GUI_TARGET/release/bundle/deb/*.deb ./artifacts/objects/ + mv ./target/$GUI_TARGET/release/bundle/rpm/*.rpm ./artifacts/objects/ if [[ $GUI_TARGET =~ ^x86_64.*$ ]]; then # currently only x86 appimage is supported mv ./target/$GUI_TARGET/release/bundle/appimage/*.AppImage ./artifacts/objects/ @@ -212,7 +194,7 @@ jobs: rm -rf ./artifacts/objects/ - name: Archive artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: easytier-gui-${{ matrix.ARTIFACT_NAME }} path: | diff --git a/.github/workflows/mobile.yml b/.github/workflows/mobile.yml index dec7d255..f44ad550 100644 --- a/.github/workflows/mobile.yml +++ b/.github/workflows/mobile.yml @@ -47,7 +47,7 @@ jobs: needs: pre_job if: needs.pre_job.outputs.should_skip != 'true' steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v5 - name: Set current ref as env variable run: | @@ -70,33 +70,8 @@ jobs: echo "$ANDROID_HOME/ndk/26.0.10792818/toolchains/llvm/prebuilt/linux-x86_64/bin" >> $GITHUB_PATH echo "NDK_HOME=$ANDROID_HOME/ndk/26.0.10792818/" > $GITHUB_ENV - - uses: actions/setup-node@v4 - with: - node-version: 22 - - - name: Install pnpm - uses: pnpm/action-setup@v4 - with: - version: 10 - run_install: false - - - name: Get pnpm store directory - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - - - name: Setup pnpm cache - uses: actions/cache@v4 - with: - path: ${{ env.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-pnpm-store- - - - name: Install frontend dependencies - run: | - pnpm -r install - pnpm -r build + - name: Setup Frontend Environment + uses: ./.github/actions/prepare-pnpm - uses: Swatinem/rust-cache@v2 with: @@ -138,7 +113,7 @@ jobs: rm -rf ./artifacts/objects/ - name: Archive artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: easytier-gui-${{ matrix.ARTIFACT_NAME }} path: | diff --git a/.github/workflows/nix.yml b/.github/workflows/nix.yml index 230c866f..3182ce07 100644 --- a/.github/workflows/nix.yml +++ b/.github/workflows/nix.yml @@ -16,7 +16,7 @@ jobs: check-full-shell: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Install Nix uses: cachix/install-nix-action@v27 diff --git a/.github/workflows/ohos.yml b/.github/workflows/ohos.yml index 2dafb53b..2febe3fb 100644 --- a/.github/workflows/ohos.yml +++ b/.github/workflows/ohos.yml @@ -22,7 +22,7 @@ jobs: cargo_fmt_check: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: fmt check working-directory: ./easytier-contrib/easytier-ohrs run: | @@ -52,7 +52,7 @@ jobs: OHPM_PUBLISH_CODE: ${{ secrets.OHPM_PUBLISH_CODE }} if: needs.pre_job.outputs.should_skip != 'true' steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Install dependencies run: | sudo apt-get update @@ -181,7 +181,7 @@ jobs: mv package.har easytier-release.har - name: Upload artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: easytier-ohos path: | diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7e60516d..2fa2eecb 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -35,7 +35,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Download Core Artifact uses: dawidd6/action-download-artifact@v11 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 669061c0..72dad752 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -38,7 +38,7 @@ jobs: needs: pre_job if: needs.pre_job.outputs.should_skip != 'true' steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v5 - name: Prepare build environment uses: ./.github/actions/prepare-build @@ -79,7 +79,7 @@ jobs: needs: pre_job if: needs.pre_job.outputs.should_skip != 'true' steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v5 - name: Prepare build environment uses: ./.github/actions/prepare-build @@ -95,7 +95,7 @@ jobs: - name: Archive test run: cargo nextest archive --archive-file tests.tar.zst --package easytier --features full - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v5 with: name: tests path: tests.tar.zst @@ -119,7 +119,7 @@ jobs: - name: "three_node::subnet_proxy_three_node_test" opts: "-E 'test(subnet_proxy_three_node_test)' --test-threads 1 --no-fail-fast" steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v5 - name: Setup tools for test run: sudo apt install bridge-utils