chore: bump version to v0.24.8 #393
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: CI | |
| on: | |
| push: | |
| tags: ["v*"] | |
| branches: ["master"] | |
| pull_request: | |
| branches: ["master"] | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: true | |
| defaults: | |
| run: | |
| shell: bash | |
| env: | |
| # PACKAGE Name | |
| PACKAGE: "clash_chimera" | |
| REGISTRY: "ghcr.io" | |
| IMAGE_NAME: "clash-rs" | |
| RUST_LOG: "clash=TRACE" | |
| RUSTUP_TOOLCHAIN: "stable" | |
| SENTRY_DSN: ${{ secrets.SENTRY_DSN }} | |
| CROSS_CONTAINER_UID: 1001 | |
| CROSS_CONTAINER_GID: 118 | |
| # Arm builder https://github.blog/changelog/2024-09-03-github-actions-arm64-linux-and-windows-runners-are-now-generally-available/ | |
| jobs: | |
| dashboard: | |
| name: Dashboard | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| cache: npm | |
| cache-dependency-path: clash-dashboard/package-lock.json | |
| - name: Install dashboard dependencies | |
| working-directory: clash-dashboard | |
| run: npm ci | |
| - name: Lint dashboard | |
| working-directory: clash-dashboard | |
| run: npm run lint | |
| - name: Build dashboard | |
| working-directory: clash-dashboard | |
| run: npm run build | |
| - name: Mark dashboard as prebuilt | |
| run: touch clash-dashboard/dist/chimera-prebuilt.marker | |
| - name: Upload dashboard build | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: dashboard-dist | |
| path: clash-dashboard/dist/ | |
| retention-days: 1 | |
| quality: | |
| name: Rust quality (${{ matrix.os }}) | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, windows-latest] | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| submodules: true | |
| - uses: actions/cache@v5 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ~/.cargo/git | |
| ~/.cargo/bin/ | |
| ~/.cargo/registry/index/ | |
| ~/.cargo/registry/cache/ | |
| ~/.cargo/git/db/ | |
| target | |
| key: quality-${{ matrix.os }}-${{ hashFiles('**/Cargo.toml') }} | |
| restore-keys: quality-${{ matrix.os }}- | |
| - uses: ilammy/setup-nasm@v1 | |
| if: runner.os == 'Windows' | |
| - uses: dtolnay/rust-toolchain@master | |
| with: | |
| toolchain: ${{ env.RUSTUP_TOOLCHAIN }} | |
| components: rustfmt,clippy | |
| - name: Install Protoc | |
| uses: arduino/setup-protoc@v3 | |
| with: | |
| version: "23.x" | |
| repo-token: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Cargo fmt | |
| if: runner.os == 'Linux' | |
| run: cargo fmt --all -- --check | |
| - name: Cargo clippy | |
| run: cargo clippy -p clash-lib --all-targets --all-features -- -D warnings | |
| - name: Test LAN proxy | |
| run: cargo test -p clash-lib --test lan_proxy_tests --all-features | |
| compile: | |
| name: ${{ matrix.release-name || matrix.target || 'Unknown' }} | |
| needs: [dashboard, quality] | |
| runs-on: ${{ matrix.os || 'ubuntu-latest' }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| # Example | |
| # when not set, default will be used (except target, cross) | |
| # - os: ubuntu-latest | |
| # target: x86_64-unknown-linux-gnu | |
| # release-name: $target | |
| # toolchain: nightly | |
| # tool: cargo/cross | |
| # postfix: "" | |
| # extra-args: "" | |
| # components: "" | |
| # rustflags: "--cfg tokio_unstable" | |
| # Linux x86 gnu | |
| - os: ubuntu-latest | |
| target: x86_64-unknown-linux-gnu | |
| tool: cross | |
| extra-args: -F "plus" | |
| # Linux x86 musl | |
| - os: ubuntu-latest | |
| target: x86_64-unknown-linux-musl | |
| tool: cross | |
| extra-args: -F "perf" | |
| - os: ubuntu-latest | |
| target: aarch64-unknown-linux-musl | |
| tool: cross | |
| extra-args: -F "perf" | |
| - os: ubuntu-latest | |
| target: i686-unknown-linux-musl | |
| tool: cross | |
| extra-args: -F "plus" | |
| #todo: add in the later | |
| # Linux x86 gnu static-crt | |
| #- os: ubuntu-latest | |
| # target: x86_64-unknown-linux-gnu | |
| # release-name: x86_64-unknown-linux-gnu-static-crt | |
| # extra-args: -F "plus" | |
| # rustflags: "-Ctarget-feature=+crt-static --cfg tokio_unstable" | |
| # Linux arm gnu | |
| - os: ubuntu-latest | |
| target: aarch64-unknown-linux-gnu | |
| tool: cross | |
| extra-args: -F "plus" | |
| zig: "2.17" | |
| - os: ubuntu-latest | |
| target: armv7-unknown-linux-gnueabi | |
| tool: cross | |
| extra-args: -F "plus" | |
| - os: ubuntu-latest | |
| target: armv7-unknown-linux-gnueabihf | |
| tool: cross | |
| extra-args: -F "plus" | |
| zig: "2.17" | |
| #- target: mipsel-unknown-linux-musl | |
| # tool: cross | |
| # extra-args: --no-default-features -F "standard,ring" -Z build-std=std,panic_abort | |
| # build-std: true | |
| # no-test: true | |
| # Windows | |
| - os: windows-latest | |
| target: x86_64-pc-windows-msvc | |
| postfix: ".exe" | |
| extra-args: -F "plus" | |
| - os: windows-latest | |
| target: i686-pc-windows-msvc | |
| postfix: ".exe" | |
| extra-args: -F "plus" | |
| - os: windows-latest | |
| target: aarch64-pc-windows-msvc | |
| postfix: ".exe" | |
| extra-args: -F "standard" | |
| no-test: true | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| submodules: true | |
| - name: Download dashboard build | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: dashboard-dist | |
| path: clash-dashboard/dist | |
| - uses: actions/cache@v5 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ~/.cargo/git | |
| ~/.cargo/bin/ | |
| ~/.cargo/registry/index/ | |
| ~/.cargo/registry/cache/ | |
| ~/.cargo/git/db/ | |
| /target | |
| key: ${{ matrix.release-name || matrix.target }}-${{ hashFiles('**/Cargo.toml') }} | |
| restore-keys: | | |
| ${{ matrix.release-name || matrix.target }} | |
| - name: Cache Docker images. | |
| uses: ScribeMD/docker-cache@0.5.0 | |
| if: startsWith(matrix.os, 'ubuntu') && !matrix.no-docker-test | |
| with: | |
| key: ${{ matrix.os }} | |
| read-only: ${{ matrix.target != 'x86_64-unknown-linux-gnu' }} | |
| - uses: ilammy/setup-nasm@v1 | |
| - uses: dtolnay/rust-toolchain@master | |
| with: | |
| toolchain: ${{ env.RUSTUP_TOOLCHAIN }} | |
| targets: ${{ matrix.build-std && 'x86_64-unknown-linux-gnu' || matrix.target }} | |
| components: ${{ matrix.components || matrix.build-std && 'rustfmt,clippy,rust-src' || 'rustfmt,clippy' }} | |
| - name: Install target for native cargo builds | |
| if: ${{ matrix.tool != 'cross' }} | |
| run: rustup target add ${{ matrix.target }} --toolchain ${{ env.RUSTUP_TOOLCHAIN }} | |
| - name: Install cross-rs/cross | |
| if: matrix.tool == 'cross' | |
| run: | | |
| rm -f ~/.cargo/bin/cross* | |
| cargo install cross --git https://github.com/cross-rs/cross | |
| - name: Install Protoc | |
| uses: arduino/setup-protoc@v3 | |
| with: | |
| version: "23.x" | |
| repo-token: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Set environment variables | |
| run: | | |
| echo "CLASH_GIT_REF=${GITHUB_REF}" >> $GITHUB_ENV | |
| echo "CLASH_GIT_SHA=${GITHUB_SHA}" >> $GITHUB_ENV | |
| - name: Cargo fmt | |
| if: ${{ github.event_name == 'pull_request' }} | |
| uses: clechasseur/rs-cargo@v4 | |
| with: | |
| command: fmt | |
| args: --all -- --check | |
| env: | |
| CLASH_DOCKER_TEST: "true" | |
| - name: Cargo clippy | |
| if: ${{ github.event_name == 'pull_request' }} | |
| uses: clechasseur/rs-cargo@v4 | |
| with: | |
| tool: ${{ matrix.tool }} | |
| command: clippy | |
| args: -p clash-rs --target ${{ matrix.target }} ${{ matrix.extra-args }} -- -D warnings | |
| env: | |
| CLASH_DOCKER_TEST: "true" | |
| - name: Cargo test | |
| uses: clechasseur/rs-cargo@v4 | |
| if: ${{ !matrix.no-test && github.event_name == 'pull_request' }} | |
| with: | |
| tool: ${{ matrix.tool }} | |
| command: "test" | |
| args: --workspace --exclude clash-ffi --target ${{ matrix.target }} ${{ matrix.extra-args }} | |
| env: | |
| CROSS_CONTAINER_OPTS: "--network host" | |
| CLASH_DOCKER_TEST: ${{ (startsWith(matrix.os, 'ubuntu') && !matrix.no-docker-test) && 'true' || 'false' }} | |
| RUSTFLAGS: ${{ matrix.rustflags || '--cfg tokio_unstable' }} | |
| - name: Cargo build | |
| uses: clechasseur/rs-cargo@v4 | |
| with: | |
| tool: ${{ matrix.tool }} | |
| command: build | |
| args: --release --target ${{ matrix.target }} ${{ matrix.extra-args }} --package clash-rs | |
| env: | |
| RUSTFLAGS: ${{ matrix.rustflags || '--cfg tokio_unstable' }} | |
| CROSS_BUILD_ZIG: ${{ matrix.zig }} | |
| - name: Rename binary | |
| run: mv target/${{ matrix.target }}/release/clash-rs${{ matrix.postfix }} ${{ env.PACKAGE }}-${{ matrix.release-name || matrix.target }}${{ matrix.postfix }} | |
| - name: Upload binaries | |
| uses: actions/upload-artifact@v7 | |
| if: ${{ !matrix.no-release }} | |
| with: | |
| name: binary-${{ matrix.release-name || matrix.target }} | |
| path: ${{ env.PACKAGE }}-${{ matrix.release-name || matrix.target }}${{ matrix.postfix }} | |
| - name: Setup tmate session | |
| if: ${{ failure() }} | |
| uses: mxschmitt/action-tmate@v3 | |
| with: | |
| detached: true | |
| timeout-minutes: 15 | |
| limit-access-to-actor: true | |
| release: | |
| name: Release | |
| needs: [compile] | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| fetch-tags: true | |
| - name: Merge binaries | |
| uses: actions/upload-artifact/merge@v7 | |
| with: | |
| name: binaries | |
| pattern: "binary-*" | |
| retention-days: 1 | |
| - name: Download binaries | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: binaries | |
| path: ./packages | |
| - name: Create SHA256Sums.txt and version.txt | |
| run: | | |
| cd packages | |
| sha256sum * > sha256sums.txt | |
| cat sha256sums.txt | |
| BIN="./${{ env.PACKAGE }}-x86_64-unknown-linux-musl" | |
| test -f "$BIN" || { echo "missing binary: $BIN"; ls -la; exit 1; } | |
| chmod +x "$BIN" | |
| "$BIN" -v > version.txt | |
| cat version.txt | |
| - name: Clean git tag & release | |
| if: startsWith(github.ref, 'refs/heads/master') | |
| run: | | |
| gh release delete latest --cleanup-tag --yes --repo $GITHUB_REPOSITORY || true | |
| # Move latest tag to current commit locally | |
| git tag latest -f || true | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Clean git tag | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| run: | | |
| # Delete latest tag locally (for git-cliff) | |
| git tag -d latest || true | |
| - name: Generate a changelog | |
| uses: orhun/git-cliff-action@main | |
| id: git-cliff | |
| with: | |
| config: .github/cliff.toml | |
| args: --latest --strip header | |
| env: | |
| GITHUB_REPO: ${{ github.repository }} | |
| - name: Github stable release | |
| uses: softprops/action-gh-release@v3 | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| with: | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| prerelease: false | |
| generate_release_notes: false | |
| body: ${{ steps.git-cliff.outputs.content }} | |
| files: | | |
| packages/* | |
| LICENSE* | |
| - name: Github nightly release | |
| uses: softprops/action-gh-release@v3 | |
| if: startsWith(github.ref, 'refs/heads/master') | |
| with: | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| prerelease: true | |
| generate_release_notes: false | |
| body: ${{ steps.git-cliff.outputs.content }} | |
| tag_name: "latest" | |
| files: | | |
| packages/* | |
| LICENSE* |