Skip to content

chore: bump version to v0.24.8 #393

chore: bump version to v0.24.8

chore: bump version to v0.24.8 #393

Workflow file for this run

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*