diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4fc1d3fb..5c8773a0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -20,59 +20,84 @@ jobs: - os: ubuntu-latest target: x86_64-unknown-linux-gnu exe: rathole + cross: false - os: ubuntu-latest target: x86_64-unknown-linux-musl exe: rathole + cross: false - os: ubuntu-latest target: aarch64-unknown-linux-musl exe: rathole + cross: true - os: ubuntu-latest target: arm-unknown-linux-musleabi exe: rathole + cross: true - os: ubuntu-latest target: arm-unknown-linux-musleabihf exe: rathole + cross: true - os: ubuntu-latest target: armv7-unknown-linux-musleabihf exe: rathole + cross: true - os: ubuntu-latest target: mips-unknown-linux-gnu exe: rathole + cross: true - os: ubuntu-latest target: mips-unknown-linux-musl exe: rathole + cross: true - os: ubuntu-latest target: mipsel-unknown-linux-gnu exe: rathole + cross: true - os: ubuntu-latest target: mipsel-unknown-linux-musl exe: rathole + cross: true - os: ubuntu-latest target: mips64-unknown-linux-gnuabi64 exe: rathole + cross: true - os: ubuntu-latest target: mips64el-unknown-linux-gnuabi64 exe: rathole + cross: true - os: macos-latest target: x86_64-apple-darwin exe: rathole + cross: false - os: windows-latest target: x86_64-pc-windows-msvc exe: rathole.exe + cross: false steps: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: profile: minimal - toolchain: stable + # Since rust 1.72, some platforms are tier 3 + toolchain: 1.71 + default: true - name: Install cross - run: cargo install --version 0.1.16 cross + if: matrix.cross + run: cargo install --version 0.2.5 cross + - name: Install target + if: matrix.cross == false + run: rustup target add ${{ matrix.target }} + - name: Exclude TLS Features For Embedded Devices + if: matrix.cross + run: | + echo "RATHOLE_FEATURES=embedded" >> $GITHUB_ENV + echo "BUILDER=cross" >> $GITHUB_ENV - name: Run tests - run: cross test --release --target ${{ matrix.target }} --verbose + run: ${BUILDER:-cargo} test --release --target ${{ matrix.target }} --verbose --features ${RATHOLE_FEATURES:-default} --no-default-features - name: Build release - run: cross build --release --target ${{ matrix.target }} + run: ${BUILDER:-cargo} build --release --target ${{ matrix.target }} --features ${RATHOLE_FEATURES:-default} - name: Run UPX # Upx may not support some platforms. Ignore the errors continue-on-error: true diff --git a/Cargo.toml b/Cargo.toml index 501e8fab..1311f889 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -26,6 +26,10 @@ websocket = ["tokio-tungstenite", "tokio-util", "futures-core", "futures-sink", # Configuration hot-reload support hot-reload = ["notify"] +# Default feature releasing embedded devices +# Cross-compiling with tls is hard. So we don't :( +embedded = ["server", "client", "hot-reload", "noise"] + # Feature to enable tokio-console. Disabled by default. # Don't enable it unless for debugging purposes. console = ["console-subscriber", "tokio/tracing"]