summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/publish.yml92
-rw-r--r--.github/workflows/rust.yml24
-rw-r--r--decryptor/Cargo.toml11
-rw-r--r--docker/Dockerfile.aarch64-unknown-linux-gnu14
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}"