diff options
| -rw-r--r-- | .github/workflows/publish.yml | 92 | ||||
| -rw-r--r-- | .github/workflows/rust.yml | 24 | ||||
| -rw-r--r-- | decryptor/Cargo.toml | 11 | ||||
| -rw-r--r-- | docker/Dockerfile.aarch64-unknown-linux-gnu | 14 |
4 files changed, 141 insertions, 0 deletions
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..be57329 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,92 @@ +name: Publish + +on: + push: + tags: + - 'v*' + +defaults: + run: + working-directory: ./decryptor + +jobs: + publish: + name: ${{ matrix.target }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + include: + - os: ubuntu-latest + target: x86_64-unknown-linux-gnu + use-cross: false + + - os: ubuntu-latest + target: aarch64-unknown-linux-gnu + use-cross: true + + - os: macos-latest + target: aarch64-apple-darwin + use-cross: false + + - os: macos-12 + target: x86_64-apple-darwin + use-cross: false + + steps: + - uses: actions/checkout@v4 + + - name: Set the version + shell: bash + run: | + echo "DECRYPTOR_VERSION=$GITHUB_REF_NAME" >> $GITHUB_ENV + echo "version is: ${{ env.DECRYPTOR_VERSION }}" + + - name: Install Rust + uses: dtolnay/rust-toolchain@stable + with: + targets: ${{ matrix.target }} + + - name: Setup native compilation + if: ${{ matrix.use-cross == false }} + shell: bash + run: | + if [[ "${{ matrix.os }}" == "ubuntu-latest" ]]; then + sudo apt-get update && sudo apt-get install -y libssl-dev + fi + echo "CARGO=cargo" >> $GITHUB_ENV + + - name: Setup cross compilation + if: ${{ matrix.use-cross == true }} + shell: bash + run: | + dir="$RUNNER_TEMP/cross-download" + mkdir "$dir" + echo "$dir" >> $GITHUB_PATH + cd "$dir" + curl -LO "https://github.com/cross-rs/cross/releases/download/v0.2.5/cross-x86_64-unknown-linux-musl.tar.gz" + tar xf cross-x86_64-unknown-linux-musl.tar.gz + echo "CARGO=cross" >> $GITHUB_ENV + + - name: Build + shell: bash + run: | + $CARGO --version + $CARGO build --release --locked --target ${{ matrix.target }} + + - name: Setup archive + shell: bash + run: | + staging="decryptor-${{ env.DECRYPTOR_VERSION }}-${{ matrix.target }}" + mkdir "$staging" + + cp "target/${{ matrix.target }}/release/decryptor" "$staging/" + tar czf "$staging.tar.gz" "$staging" + echo "ASSET=$staging.tar.gz" >> $GITHUB_ENV + + - name: Upload the binaries + uses: svenstaro/[email protected] + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: ./decryptor/${{ env.ASSET }} + asset_name: ${{ env.ASSET }} + tag: ${{ github.ref }} diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml new file mode 100644 index 0000000..29fd6f7 --- /dev/null +++ b/.github/workflows/rust.yml @@ -0,0 +1,24 @@ +name: Rust + +on: + push: + pull_request: + +env: + CARGO_TERM_COLOR: always + +defaults: + run: + working-directory: ./decryptor + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + - name: Build + run: cargo build --verbose + - name: Run tests + run: cargo test --verbose diff --git a/decryptor/Cargo.toml b/decryptor/Cargo.toml index 80d0338..df38d4d 100644 --- a/decryptor/Cargo.toml +++ b/decryptor/Cargo.toml @@ -6,3 +6,14 @@ edition = "2021" [dependencies] hex = "0.4.3" openssl = "0.10.64" + +[package.metadata.cross.target.aarch64-unknown-linux-gnu] +dockerfile = "../docker/Dockerfile.aarch64-unknown-linux-gnu" +pre-build = [ + "sed 's/^deb http/deb [arch=amd64] http/' -i '/etc/apt/sources.list'", + "echo 'deb [arch=arm64] http://au.archive.ubuntu.com/pub/ubuntu/ports jammy main restricted universe multiverse' >> /etc/apt/sources.list", + "echo 'deb [arch=arm64] http://au.archive.ubuntu.com/pub/ubuntu/ports jammy-updates main restricted universe multiverse' >> /etc/apt/sources.list", + "echo 'deb [arch=arm64] http://au.archive.ubuntu.com/pub/ubuntu/ports jammy-backports main restricted universe multiverse' >> /etc/apt/sources.list", + "dpkg --add-architecture $CROSS_DEB_ARCH", + "apt-get update && apt-get -y install build-essential pkg-config libssl-dev:$CROSS_DEB_ARCH" +] diff --git a/docker/Dockerfile.aarch64-unknown-linux-gnu b/docker/Dockerfile.aarch64-unknown-linux-gnu new file mode 100644 index 0000000..c2f9d50 --- /dev/null +++ b/docker/Dockerfile.aarch64-unknown-linux-gnu @@ -0,0 +1,14 @@ +FROM ubuntu:22.04 +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt-get update && apt-get install --assume-yes --no-install-recommends \ + g++-aarch64-linux-gnu \ + libc6-dev-arm64-cross + +ENV CROSS_TOOLCHAIN_PREFIX=aarch64-linux-gnu- +ENV CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER="$CROSS_TOOLCHAIN_PREFIX"gcc \ + AR_aarch64_unknown_linux_gnu="$CROSS_TOOLCHAIN_PREFIX"ar \ + CC_aarch64_unknown_linux_gnu="$CROSS_TOOLCHAIN_PREFIX"gcc \ + CXX_aarch64_unknown_linux_gnu="$CROSS_TOOLCHAIN_PREFIX"g++ \ + RUST_TEST_THREADS=1 \ + PKG_CONFIG_PATH="/usr/lib/aarch64-linux-gnu/pkgconfig/:${PKG_CONFIG_PATH}" |
