feat: support Socks5 TCP + UDP outbound #1909
Workflow file for this run
This file contains 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: Build/Test/Release | |
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 | |
env: | |
PACKAGE: "clash" | |
jobs: | |
compile: | |
name: ${{ matrix.release-name || matrix.target || 'Unknown' }} | |
permissions: | |
contents: write | |
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: x86_64-linux | |
# toolchain: stable | |
# cross: true | |
# postfix: "" | |
# extra-args: "" | |
# components: "" | |
# rustflags: "" | |
# Linux x86 | |
- os: ubuntu-latest | |
target: x86_64-unknown-linux-gnu | |
cross: true | |
extra-args: "--all-features" | |
- os: ubuntu-latest | |
target: i686-unknown-linux-gnu | |
cross: true | |
extra-args: "--all-features" | |
# Linux x86 static-crt | |
- os: ubuntu-latest | |
target: x86_64-unknown-linux-gnu | |
release-name: x86_64-unknown-linux-gnu-static-crt | |
cross: true | |
extra-args: "--all-features" | |
rustflags: "-Ctarget-feature=+crt-static --cfg tokio_unstable" | |
- os: ubuntu-latest | |
target: i686-unknown-linux-gnu | |
release-name: i686-unknown-linux-gnu-static-crt | |
cross: true | |
extra-args: "--all-features" | |
rustflags: "-Ctarget-feature=+crt-static --cfg tokio_unstable" | |
# Linux arm | |
- os: ubuntu-latest | |
target: aarch64-unknown-linux-gnu | |
cross: true | |
extra-args: "--all-features" | |
- os: ubuntu-latest | |
target: armv7-unknown-linux-gnueabi | |
cross: true | |
extra-args: "--all-features" | |
- os: ubuntu-latest | |
target: armv7-unknown-linux-gnueabihf | |
cross: true | |
extra-args: "--all-features" | |
# Linux arm static-crt | |
- os: ubuntu-latest | |
target: aarch64-unknown-linux-gnu | |
release-name: aarch64-unknown-linux-gnu-static-crt | |
cross: true | |
extra-args: "--all-features" | |
rustflags: "-Ctarget-feature=+crt-static --cfg tokio_unstable" | |
- os: ubuntu-latest | |
target: armv7-unknown-linux-gnueabi | |
release-name: armv7-unknown-linux-gnueabi-static-crt | |
cross: true | |
extra-args: "--all-features" | |
rustflags: "-Ctarget-feature=+crt-static --cfg tokio_unstable" | |
- os: ubuntu-latest | |
target: armv7-unknown-linux-musleabihf | |
cross: true | |
extra-args: "--all-features" | |
rustflags: "--cfg tokio_unstable" | |
# Windows | |
- os: windows-latest | |
target: x86_64-pc-windows-msvc | |
cross: false | |
postfix: ".exe" | |
extra-args: "--all-features" | |
- os: windows-latest | |
target: i686-pc-windows-msvc | |
cross: false | |
postfix: ".exe" | |
extra-args: "--all-features" | |
# Windows static-crt | |
- os: windows-latest | |
target: x86_64-pc-windows-msvc | |
release-name: x86_64-pc-windows-msvc-static-crt | |
cross: false | |
postfix: ".exe" | |
extra-args: "--all-features" | |
rustflags: "-Ctarget-feature=+crt-static --cfg tokio_unstable" | |
- os: windows-latest | |
target: i686-pc-windows-msvc | |
release-name: i686-pc-windows-msvc-static-crt | |
cross: false | |
postfix: ".exe" | |
extra-args: "--all-features" | |
rustflags: "-Ctarget-feature=+crt-static --cfg tokio_unstable" | |
# MacOSX | |
- os: macos-12 | |
target: x86_64-apple-darwin | |
cross: false | |
extra-args: "--all-features" | |
- os: macos-14 | |
target: aarch64-apple-darwin | |
cross: false | |
extra-args: "--all-features" | |
# MacOSX static-crt | |
- os: macos-12 | |
target: x86_64-apple-darwin | |
release-name: x86_64-apple-darwin-static-crt | |
cross: false | |
extra-args: "--all-features" | |
rustflags: "-Ctarget-feature=+crt-static --cfg tokio_unstable" | |
- os: macos-14 | |
target: aarch64-apple-darwin | |
release-name: aarch64-apple-darwin-static-crt | |
cross: false | |
extra-args: "--all-features" | |
rustflags: "-Ctarget-feature=+crt-static --cfg tokio_unstable" | |
# Linux mips: tier-3, pity | |
# Linux risc-v: needs update rustls | |
# Windows gnu: tokio dont work | |
# Windows aarch: todo | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- uses: actions/cache@v4 | |
with: | |
path: | | |
~/.cargo/registry | |
~/.cargo/git | |
key: ${{ matrix.release-name || matrix.target }}-${{ hashFiles('**/Cargo.toml') }} | |
restore-keys: | | |
${{ matrix.release-name || matrix.target }} | |
- uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: ${{ matrix.toolchain || 'nightly' }} | |
target: ${{ matrix.target }} | |
components: ${{ matrix.components || 'rustfmt, clippy' }} | |
- name: Cargo fmt | |
uses: clechasseur/rs-cargo@v2 | |
with: | |
use-cross: ${{ matrix.cross }} | |
command: fmt | |
args: --all -- --check | |
- name: Cargo clippy | |
uses: clechasseur/rs-cargo@v2 | |
with: | |
use-cross: ${{ matrix.cross }} | |
command: clippy | |
args: --all --target ${{ matrix.target }} ${{ matrix.extra-args }} -- -D warnings | |
env: | |
RUSTFLAGS: ${{ matrix.rustflags || '--cfg tokio_unstable' }} | |
- name: Cargo test | |
uses: clechasseur/rs-cargo@v2 | |
if: startsWith(matrix.os, 'ubuntu') | |
with: | |
use-cross: ${{ matrix.cross }} | |
command: test | |
args: --all --target ${{ matrix.target }} ${{ matrix.extra-args }} | |
env: | |
CROSS_CONTAINER_OPTS: "--network host" | |
RUSTFLAGS: ${{ matrix.rustflags || '--cfg tokio_unstable' }} | |
- name: Cargo test (no docker test) | |
uses: clechasseur/rs-cargo@v2 | |
if: ${{ !startsWith(matrix.os, 'ubuntu') }} | |
with: | |
use-cross: ${{ matrix.cross }} | |
command: test | |
args: --all --target ${{ matrix.target }} ${{ matrix.extra-args }} | |
env: | |
CLASH_RS_CI: "true" | |
RUSTFLAGS: ${{ matrix.rustflags || '--cfg tokio_unstable' }} | |
- name: Cargo build | |
uses: clechasseur/rs-cargo@v2 | |
with: | |
use-cross: ${{ matrix.cross }} | |
command: build | |
args: --release --target ${{ matrix.target }} ${{ matrix.extra-args }} | |
env: | |
RUSTFLAGS: ${{ matrix.rustflags || '--cfg tokio_unstable' }} | |
- 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@v4 | |
with: | |
name: ${{ 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 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Merge binaries | |
uses: actions/upload-artifact/merge@v4 | |
with: | |
name: binaries | |
pattern: '*' | |
retention-days: 1 | |
- name: Download binaries | |
uses: actions/download-artifact@v4 | |
with: | |
name: binaries | |
path: ./packages | |
- name: Github stable release | |
uses: "mathieucarbou/marvinpinto-action-automatic-releases@master" | |
if: startsWith(github.ref, 'refs/tags/v') | |
with: | |
repo_token: "${{ secrets.GITHUB_TOKEN }}" | |
prerelease: false | |
files: | | |
packages/* | |
LICENSE | |
- name: Github nightly release | |
uses: "mathieucarbou/marvinpinto-action-automatic-releases@master" | |
if: startsWith(github.ref, 'refs/heads/master') | |
with: | |
repo_token: "${{ secrets.GITHUB_TOKEN }}" | |
prerelease: true | |
automatic_release_tag: "latest" | |
files: | | |
packages/* | |
LICENSE |