feat: support geosite #1867
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 | |
- name: Setup upterm session | |
uses: lhotari/action-upterm@v1 | |
with: | |
## If no one connects after 5 minutes, shut down server. | |
wait-timeout-minutes: 5 | |
## limits ssh access and adds the ssh public key for the user which triggered the workflow | |
limit-access-to-actor: true | |
## limits ssh access and adds the ssh public keys of the listed GitHub users | |
limit-access-to-users: ibigbug | |
- 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/${{ env.PACKAGE }}${{ 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 }} | |
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 |