fix: Android bundling
All checks were successful
conventional commit messages check / conventional commit messages check (pull_request) Successful in 7s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 7s
GitLeaks check / GitLeaks check (pull_request) Successful in 11s
Rust check / Rust check (pull_request) Successful in 12m57s
hadolint check / hadolint check (pull_request) Successful in 19s
htmlhint check / htmlhint check (pull_request) Successful in 33s
markdownlint check / markdownlint check (pull_request) Successful in 28s
Prettier check / Prettier check (pull_request) Successful in 28s
ShellCheck check / ShellCheck check (pull_request) Successful in 34s
Stylelint check / Stylelint check (pull_request) Successful in 30s
checkov check / checkov check (pull_request) Successful in 1m27s
yamllint check / yamllint check (pull_request) Successful in 25s
actionlint check / actionlint check (pull_request) Successful in 6s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 3s
All checks were successful
conventional commit messages check / conventional commit messages check (pull_request) Successful in 7s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 7s
GitLeaks check / GitLeaks check (pull_request) Successful in 11s
Rust check / Rust check (pull_request) Successful in 12m57s
hadolint check / hadolint check (pull_request) Successful in 19s
htmlhint check / htmlhint check (pull_request) Successful in 33s
markdownlint check / markdownlint check (pull_request) Successful in 28s
Prettier check / Prettier check (pull_request) Successful in 28s
ShellCheck check / ShellCheck check (pull_request) Successful in 34s
Stylelint check / Stylelint check (pull_request) Successful in 30s
checkov check / checkov check (pull_request) Successful in 1m27s
yamllint check / yamllint check (pull_request) Successful in 25s
actionlint check / actionlint check (pull_request) Successful in 6s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 3s
This commit is contained in:
@@ -3,6 +3,7 @@
|
|||||||
/.github
|
/.github
|
||||||
/bundle
|
/bundle
|
||||||
/node_modules
|
/node_modules
|
||||||
|
/scripts
|
||||||
/target
|
/target
|
||||||
|
|
||||||
/.dockerignore
|
/.dockerignore
|
||||||
|
|||||||
5
docker-compose-android-bundle.yaml
Executable file
5
docker-compose-android-bundle.yaml
Executable file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
services:
|
||||||
|
app:
|
||||||
|
build:
|
||||||
|
target: builder_android
|
||||||
@@ -5,8 +5,8 @@ RUN useradd -m -u 1000 -s /bin/bash app_user \
|
|||||||
|
|
||||||
USER app_user
|
USER app_user
|
||||||
|
|
||||||
RUN cargo install --git https://github.com/diesel-rs/diesel --rev 2e85ba060d3d70ea605ea58a79b8a435749a7adc diesel_cli \
|
RUN cargo install --git https://github.com/diesel-rs/diesel --rev 2e85ba060d3d70ea605ea58a79b8a435749a7adc --locked diesel_cli \
|
||||||
&& cargo install --git https://github.com/DioxusLabs/dioxus --rev 8f8b58ea80ba0ec8057807bcd58fb609f7a5f2b1 dioxus-cli
|
&& cargo install --git https://github.com/DioxusLabs/dioxus --rev 8f8b58ea80ba0ec8057807bcd58fb609f7a5f2b1 --locked dioxus-cli
|
||||||
|
|
||||||
COPY --chown=app_user . /srv/app
|
COPY --chown=app_user . /srv/app
|
||||||
WORKDIR /srv/app
|
WORKDIR /srv/app
|
||||||
|
|||||||
@@ -1,4 +1,13 @@
|
|||||||
FROM rust:1.92.0-bookworm@sha256:9676d0547a259997add8f5924eb6b959c589ed39055338e23b99aba7958d6d31 AS builder
|
FROM rust:1.92.0-bookworm@sha256:9676d0547a259997add8f5924eb6b959c589ed39055338e23b99aba7958d6d31 AS builder_base
|
||||||
|
|
||||||
|
RUN cargo install --git https://github.com/diesel-rs/diesel --rev 2e85ba060d3d70ea605ea58a79b8a435749a7adc --locked diesel_cli \
|
||||||
|
&& cargo install --git https://github.com/DioxusLabs/dioxus --rev 8f8b58ea80ba0ec8057807bcd58fb609f7a5f2b1 --locked dioxus-cli --features disable-telemetry
|
||||||
|
|
||||||
|
COPY . /srv/app
|
||||||
|
WORKDIR /srv/app
|
||||||
|
|
||||||
|
|
||||||
|
FROM builder_base AS builder_android
|
||||||
|
|
||||||
ARG ANDROID_NDK_VERSION=26.2.11394342
|
ARG ANDROID_NDK_VERSION=26.2.11394342
|
||||||
ARG ANDROID_COMMAND_LINE_TOOLS_VERSION=13114758
|
ARG ANDROID_COMMAND_LINE_TOOLS_VERSION=13114758
|
||||||
@@ -13,11 +22,8 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
|||||||
|
|
||||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||||
openjdk-17-jdk-headless=17.0.17+10-1~deb12u1 \
|
openjdk-17-jdk-headless=17.0.17+10-1~deb12u1 \
|
||||||
&& curl -fsSL -o /tmp/cmdline-tools.zip "https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_COMMAND_LINE_TOOLS_VERSION}_latest.zip" \
|
|
||||||
&& apt-get clean \
|
&& apt-get clean \
|
||||||
&& rm -rf /var/lib/apt/lists/* \
|
&& rm -rf /var/lib/apt/lists/* \
|
||||||
&& cargo install --git https://github.com/diesel-rs/diesel --rev 2e85ba060d3d70ea605ea58a79b8a435749a7adc diesel_cli \
|
|
||||||
&& cargo install --git https://github.com/DioxusLabs/dioxus --rev 8f8b58ea80ba0ec8057807bcd58fb609f7a5f2b1 dioxus-cli --features disable-telemetry \
|
|
||||||
&& rustup target add aarch64-linux-android \
|
&& rustup target add aarch64-linux-android \
|
||||||
&& mkdir -p "$ANDROID_SDK_ROOT/cmdline-tools" \
|
&& mkdir -p "$ANDROID_SDK_ROOT/cmdline-tools" \
|
||||||
&& curl -fsSL -o /tmp/cmdline-tools.zip "https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_COMMAND_LINE_TOOLS_VERSION}_latest.zip" \
|
&& curl -fsSL -o /tmp/cmdline-tools.zip "https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_COMMAND_LINE_TOOLS_VERSION}_latest.zip" \
|
||||||
@@ -25,32 +31,33 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
|||||||
&& export PATH="$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$ANDROID_SDK_ROOT/platform-tools:$PATH" \
|
&& export PATH="$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$ANDROID_SDK_ROOT/platform-tools:$PATH" \
|
||||||
&& mv "$ANDROID_SDK_ROOT/cmdline-tools/cmdline-tools" "$ANDROID_SDK_ROOT/cmdline-tools/latest" \
|
&& mv "$ANDROID_SDK_ROOT/cmdline-tools/cmdline-tools" "$ANDROID_SDK_ROOT/cmdline-tools/latest" \
|
||||||
&& rm /tmp/cmdline-tools.zip \
|
&& rm /tmp/cmdline-tools.zip \
|
||||||
&& yes | sdkmanager --sdk_root="$ANDROID_SDK_ROOT" --licenses > /dev/null \
|
# `yes` can exit with 141, which is okay, so the `test` is added to ignore it.
|
||||||
|
&& yes | sdkmanager --sdk_root="$ANDROID_SDK_ROOT" --licenses > /dev/null; test "${PIPESTATUS[1]}" -eq 0 \
|
||||||
&& sdkmanager --sdk_root="$ANDROID_SDK_ROOT" "platform-tools" "platforms;android-$ANDROID_VERSION" "build-tools;$ANDROID_BUILD_TOOLS_VERSION" "ndk;$ANDROID_NDK_VERSION" \
|
&& sdkmanager --sdk_root="$ANDROID_SDK_ROOT" "platform-tools" "platforms;android-$ANDROID_VERSION" "build-tools;$ANDROID_BUILD_TOOLS_VERSION" "ndk;$ANDROID_NDK_VERSION" \
|
||||||
&& curl -fsSL -o /tmp/bundletool-all.jar "https://github.com/google/bundletool/releases/download/$ANDROID_BUNDLETOOL_VERSION/bundletool-all-${ANDROID_BUNDLETOOL_VERSION}.jar" \
|
&& curl -fsSL -o /tmp/bundletool-all.jar "https://github.com/google/bundletool/releases/download/$ANDROID_BUNDLETOOL_VERSION/bundletool-all-${ANDROID_BUNDLETOOL_VERSION}.jar" \
|
||||||
&& echo "$ANDROID_BUNDLETOOL_SHA256 /tmp/bundletool-all.jar" | sha256sum -c - \
|
&& echo "$ANDROID_BUNDLETOOL_SHA256 /tmp/bundletool-all.jar" | sha256sum -c - \
|
||||||
&& keytool -genkeypair -noprompt -keystore /tmp/android_keystore.jks -alias key -keyalg RSA -keysize 2048 -validity 3660 -dname "CN=" -storepass 123456 -keypass 123456
|
&& keytool -genkeypair -noprompt -keystore /tmp/android_keystore.jks -alias key -keyalg RSA -keysize 2048 -validity 3660 -dname "CN=" -storepass 123456 -keypass 123456 \
|
||||||
|
&& export ANDROID_HOME="$ANDROID_SDK_ROOT" \
|
||||||
COPY . /srv/app
|
|
||||||
WORKDIR /srv/app
|
|
||||||
|
|
||||||
RUN export ANDROID_HOME="$ANDROID_SDK_ROOT" \
|
|
||||||
&& export ANDROID_NDK_HOME="$ANDROID_SDK_ROOT/ndk/$ANDROID_NDK_VERSION" \
|
&& export ANDROID_NDK_HOME="$ANDROID_SDK_ROOT/ndk/$ANDROID_NDK_VERSION" \
|
||||||
&& dx bundle --release \
|
|
||||||
&& dx bundle --platform android --target aarch64-linux-android --release \
|
&& dx bundle --platform android --target aarch64-linux-android --release \
|
||||||
&& java -jar /tmp/bundletool-all.jar build-apks --bundle=/srv/app/target/dx/todo_baggins/release/android/app/app/build/outputs/bundle/release/TodoBaggins-aarch64-linux-android.aab --output=/tmp/todo_baggins.apks --mode=universal --ks=/tmp/android_keystore.jks --ks-key-alias=key --ks-pass=pass:123456 \
|
&& java -jar /tmp/bundletool-all.jar build-apks --bundle=/srv/app/target/dx/todo_baggins/release/android/app/app/build/outputs/bundle/release/TodoBaggins-aarch64-linux-android.aab --output=/tmp/todo_baggins.apks --mode=universal --ks=/tmp/android_keystore.jks --ks-key-alias=key --ks-pass=pass:123456 \
|
||||||
&& mkdir -p /srv/app/bundle/android \
|
&& mkdir -p /srv/app/bundle \
|
||||||
&& unzip -qp /tmp/todo_baggins.apks universal.apk > /srv/app/bundle/android/todo_baggins.apk
|
&& unzip -qp /tmp/todo_baggins.apks universal.apk > /srv/app/bundle/todo_baggins.apk
|
||||||
|
|
||||||
FROM debian:bookworm@sha256:b877a1a3fdf02469440f1768cf69c9771338a875b7add5e80c45b756c92ac20a AS runner
|
|
||||||
|
FROM builder_base AS builder_web
|
||||||
|
|
||||||
|
RUN dx bundle --release
|
||||||
|
|
||||||
|
|
||||||
|
FROM debian:bookworm@sha256:b877a1a3fdf02469440f1768cf69c9771338a875b7add5e80c45b756c92ac20a AS runner_web
|
||||||
|
|
||||||
RUN apt-get update \
|
RUN apt-get update \
|
||||||
&& apt-get install -y --no-install-recommends libpq5=15.10-0+deb12u1 \
|
&& apt-get install -y --no-install-recommends libpq5=15.10-0+deb12u1 \
|
||||||
&& apt-get clean \
|
&& apt-get clean \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
COPY --from=builder /srv/app/target/dx/todo_baggins/release/web /srv/app/web
|
COPY --from=builder_web /srv/app/target/dx/todo_baggins/release/web /srv/app/web
|
||||||
COPY --from=builder /srv/app/bundle/android /srv/app/android
|
|
||||||
|
|
||||||
RUN chown -R 1000:1000 /srv/app/web
|
RUN chown -R 1000:1000 /srv/app/web
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,12 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
mkdir -p ../bundle \
|
echo "Warning: This script needs to stop any currently running Docker compose stacks. Stopping them now..."
|
||||||
&& docker compose -f docker-compose-prod.yaml cp app:/srv/app/android bundle
|
docker compose down
|
||||||
|
|
||||||
|
mkdir -p bundle/android bundle/temp \
|
||||||
|
&& docker compose -f docker-compose-prod.yaml -f docker-compose-android-bundle.yaml up --build --no-start --no-deps app \
|
||||||
|
&& docker compose -f docker-compose-prod.yaml -f docker-compose-android-bundle.yaml cp app:/srv/app/bundle bundle/temp \
|
||||||
|
&& mv bundle/temp/bundle/* bundle/android \
|
||||||
|
&& rm -r bundle/temp
|
||||||
|
|
||||||
|
echo "Warning: If a running Docker compose stack has been stopped by this script, you may want to bring it up again now."
|
||||||
|
|||||||
Reference in New Issue
Block a user