diff --git a/.github/workflows/build-release.yml b/.github/workflows/build-release.yml index 96a327a3..f0cc5649 100644 --- a/.github/workflows/build-release.yml +++ b/.github/workflows/build-release.yml @@ -12,23 +12,59 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - - name: Build Docker images - run: | - cd build - docker build -t shadowsocks-rust:x86_64-pc-windows-gnu -f Dockerfile.x86_64-pc-windows-gnu . - docker build -t shadowsocks-rust:x86_64-unknown-linux-musl -f Dockerfile.x86_64-unknown-linux-musl . - docker build -t shadowsocks-rust:x86_64-unknown-linux-gnu -f Dockerfile.x86_64-unknown-linux-gnu . - docker build -t shadowsocks-rust:arm-unknown-linux-gnueabihf -f Dockerfile.arm-unknown-linux-gnueabihf . - docker build -t shadowsocks-rust:aarch64-unknown-linux-gnu -f Dockerfile.aarch64-unknown-linux-gnu . - docker build -t shadowsocks-rust:mips-unknown-linux-musl -f Dockerfile.mips-unknown-linux-musl . - docker build -t shadowsocks-rust:mipsel-unknown-linux-musl -f Dockerfile.mipsel-unknown-linux-musl . + - name: Install cross run: cargo install cross - - name: Build releases + + - name: Build x86_64-pc-windows-gnu timeout-minutes: 120 run: | cd build - ./build-release + docker build -t shadowsocks-rust:x86_64-pc-windows-gnu -f Dockerfile.x86_64-pc-windows-gnu . + ./build-release -t shadowsocks-rust:x86_64-pc-windows-gnu + + - name: Build x86_64-unknown-linux-musl + timeout-minutes: 120 + run: | + cd build + docker build -t shadowsocks-rust:x86_64-unknown-linux-musl -f Dockerfile.x86_64-unknown-linux-musl . + ./build-release -t shadowsocks-rust:x86_64-unknown-linux-musl + + - name: Build x86_64-unknown-linux-gnu + timeout-minutes: 120 + run: | + cd build + docker build -t shadowsocks-rust:x86_64-unknown-linux-gnu -f Dockerfile.x86_64-unknown-linux-gnu . + ./build-release -t shadowsocks-rust:x86_64-unknown-linux-gnu + + - name: Build arm-unknown-linux-gnueabihf + timeout-minutes: 120 + run: | + cd build + docker build -t shadowsocks-rust:arm-unknown-linux-gnueabihf -f Dockerfile.arm-unknown-linux-gnueabihf . + ./build-release -t shadowsocks-rust:arm-unknown-linux-gnueabihf + + - name: Build aaarch64-unknown-linux-gnu + timeout-minutes: 120 + run: | + cd build + docker build -t shadowsocks-rust:aaarch64-unknown-linux-gnu -f Dockerfile.aaarch64-unknown-linux-gnu . + ./build-release -t shadowsocks-rust:aaarch64-unknown-linux-gnu + + - name: Build mips-unknown-linux-musl + timeout-minutes: 120 + run: | + cd build + docker build -t shadowsocks-rust:mips-unknown-linux-musl -f Dockerfile.mips-unknown-linux-musl . + ./build-release -t shadowsocks-rust:mips-unknown-linux-musl + + - name: Build mipsel-unknown-linux-musl + timeout-minutes: 120 + run: | + cd build + docker build -t shadowsocks-rust:mipsel-unknown-linux-musl -f Dockerfile.mipsel-unknown-linux-musl . + ./build-release -t shadowsocks-rust:mipsel-unknown-linux-musl + - uses: actions/upload-artifact@v2 with: name: releases diff --git a/Cross.toml b/Cross.toml index c5797333..2c9249ed 100644 --- a/Cross.toml +++ b/Cross.toml @@ -19,3 +19,9 @@ image = "shadowsocks-rust:arm-unknown-linux-gnueabihf" [target.aarch64-unknown-linux-gnu] image = "shadowsocks-rust:aarch64-unknown-linux-gnu" + +[target.mips-unknown-linux-musl] +image = "shadowsocks-rust:mips-unknown-linux-musl" + +[target.mipsel-unknown-linux-musl] +image = "shadowsocks-rust:mipsel-unknown-linux-musl" diff --git a/build/build-release b/build/build-release index be8ae67f..1c1fc8c0 100755 --- a/build/build-release +++ b/build/build-release @@ -49,13 +49,16 @@ function build() { EXTRA_FLAG="" if [[ "$TARGET" == "mips"* ]]; then + # This is because `ring` doesn't support MIPS + # https://github.com/shadowsocks/shadowsocks-rust/issues/273 + # https://github.com/briansmith/ring/issues/562 EXTRA_FEATURES="sodium rc4 aes-cfb aes-ctr local-http local-http-native-tls local-tunnel local-socks4 local-redir" EXTRA_FLAG="--no-default-features" fi cross build --target "${TARGET}" \ --features "aes-pmac-siv openssl-vendored ${EXTRA_FEATURES}" \ - ${EXTRA_FLAG} \ + ${EXTRA_FLAG} \ --release if [[ $? != "0" ]]; then