Skip to content

Commit b2351a5

Browse files
committed
Queue-based architecture now working 🥳
1 parent 1ffd4ad commit b2351a5

16 files changed

Lines changed: 1620 additions & 1109 deletions

File tree

Lines changed: 97 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,105 @@
1-
FROM pwabuilder.azurecr.io/pwa-android-build-box:master AS base
1+
# ─── PRELIMINAR: Ubuntu base con Android/Java toolchain ───────────────────────
2+
FROM --platform=linux/amd64 ubuntu:20.04 AS ubuntu
23

3-
WORKDIR /app
4-
COPY . .
4+
ARG ANDROID_SDK_TOOLS_VERSION="11076708"
5+
ARG NODE_VERSION="20.x"
6+
ARG JENV_RELEASE="0.5.6"
57

6-
ENV PORT=5858
7-
EXPOSE 5858
8+
ARG DIRWORK="/tmp"
9+
ARG SDK_PACKAGES_LIST="${DIRWORK}/packages.txt"
10+
11+
ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
12+
ENV PATH=${JAVA_HOME}/bin:${PATH}
13+
14+
ENV ANDROID_HOME="/opt/android-sdk" \
15+
ANDROID_SDK_HOME="/opt/android-sdk" \
16+
ANDROID_NDK="/opt/android-sdk/ndk/latest" \
17+
ANDROID_NDK_ROOT="/opt/android-sdk/ndk/latest" \
18+
FLUTTER_HOME="/opt/flutter" \
19+
JENV_ROOT="/opt/jenv" \
20+
ANDROID_SDK_MANAGER=/opt/android-sdk/cmdline-tools/latest/bin/sdkmanager \
21+
TZ=America/Los_Angeles \
22+
LANG="en_US.UTF-8" \
23+
LANGUAGE="en_US.UTF-8" \
24+
LC_ALL="en_US.UTF-8"
25+
26+
ENV PATH="${JENV_ROOT}/shims:${JENV_ROOT}/bin:$JAVA_HOME/bin:$PATH:$ANDROID_SDK_HOME/emulator:$ANDROID_SDK_HOME/cmdline-tools/latest/bin:$ANDROID_SDK_HOME/tools:$ANDROID_SDK_HOME/platform-tools:$ANDROID_NDK:$FLUTTER_HOME/bin:$FLUTTER_HOME/bin/cache/dart-sdk/bin"
27+
28+
FROM ubuntu AS pre-base
29+
ARG TERM=dumb
30+
ARG DEBIAN_FRONTEND=noninteractive
31+
WORKDIR ${DIRWORK}
32+
33+
RUN echo export JAVA_HOME="/usr/lib/jvm/java-17-openjdk-$(uname -m)/" >> /etc/jdk.env && \
34+
echo . /etc/jdk.env >> /etc/bash.bashrc && echo . /etc.jdk.env >> /etc/profile && \
35+
apt-get update -qq && \
36+
apt-get install -qq --no-install-recommends \
37+
apt-utils locales unzip curl git git-lfs build-essential openjdk-11-jdk openjdk-17-jdk \
38+
wget zip zipalign ruby-full python3-pip tzdata && \
39+
locale-gen $LANG && \
40+
git lfs install && \
41+
ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone && \
42+
rm -rf /var/lib/apt/lists/*
43+
44+
45+
FROM pre-base AS base
46+
47+
RUN wget --quiet -O sdk-tools.zip \
48+
"https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_SDK_TOOLS_VERSION}_latest.zip" && \
49+
mkdir -p "$ANDROID_HOME/cmdline-tools" && \
50+
unzip -q sdk-tools.zip -d "$ANDROID_HOME/cmdline-tools" && \
51+
rm sdk-tools.zip && \
52+
mv "$ANDROID_HOME/cmdline-tools/cmdline-tools" "$ANDROID_HOME/cmdline-tools/latest" && \
53+
echo yes | "$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" --licenses && \
54+
echo yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "platform-tools" && \
55+
echo yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "platforms;android-31" && \
56+
echo yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "platforms;android-36" && \
57+
echo yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "build-tools;35.0.0" && \
58+
echo yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "build-tools;34.0.0" && \
59+
echo yes | "$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" --licenses
60+
61+
62+
FROM base AS jenv-base
63+
RUN git clone --depth 1 --branch ${JENV_RELEASE} https://github.com/jenv/jenv.git ${JENV_ROOT} && \
64+
echo 'eval "$(jenv init -)"' >> ~/.bash_profile && \
65+
. ~/.bash_profile && . /etc/jdk.env && \
66+
jenv add /usr/lib/jvm/java-11-openjdk-$(uname -m) && \
67+
jenv add /usr/lib/jvm/java-17-openjdk-$(uname -m) && \
68+
jenv global 17.0
869

9-
ENV JAVA_OPTS="-Xmx20000m"
70+
71+
FROM base AS pre-minimal
72+
RUN mkdir -p "$ANDROID_HOME"/.android && \
73+
echo '### User Sources for Android SDK Manager' > "$ANDROID_HOME"/.android/repositories.cfg && \
74+
echo yes | ${ANDROID_SDK_MANAGER} --licenses > /dev/null && \
75+
${ANDROID_SDK_MANAGER} --list > ${SDK_PACKAGES_LIST}
76+
77+
78+
FROM pre-minimal AS node-final
79+
RUN curl -sL https://deb.nodesource.com/setup_${NODE_VERSION} | bash - && \
80+
apt-get update -qq && apt-get install -qq nodejs yarn && \
81+
npm install -g bower cordova eslint gulp-cli @ionic/cli mocha node-gyp
82+
83+
FROM node-final AS builder
84+
WORKDIR /app
85+
86+
COPY package*.json tsconfig.json ./
87+
COPY . .
1088

1189
ENV NODE_ENV=development
1290
RUN npm install
13-
ENV NODE_ENV=production
91+
RUN npm run build
92+
RUN ls -la /app/server.*
93+
94+
FROM builder AS app
95+
WORKDIR /app
96+
97+
COPY --from=builder /app/package*.json ./
98+
RUN npm install --omit=dev --ignore-scripts
99+
100+
COPY --from=builder /app .
101+
102+
ENV PORT=5858
103+
EXPOSE 5858
14104

15105
CMD npm start

apps/pwabuilder-google-play/models/googlePlayPackageJob.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ import { AndroidPackageOptions } from "./androidPackageOptions.js";
22

33
export interface GooglePlayPackageJob {
44
id: string;
5-
analysisId: string;
5+
pwaUrl: string;
6+
analysisId: string | null;
67
status: "Queued" | "InProgress" | "Completed" | "Failed";
78
createdAt: string;
89
retryCount: number;

apps/pwabuilder-google-play/models/packageJobLogger.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,18 @@ export class PackageJobLogger {
3232
const timestamp = new Date().toISOString();
3333
const optionsArgsStr = optionalArgs ? " " + optionalArgs.map(arg => JSON.stringify(arg || "")).join(" ") : "";
3434
const logEntry = `${timestamp} [${level}]: ${message}${optionsArgsStr}`;
35-
this.job.logs.push(logEntry);
3635

36+
this.job.logs.push(logEntry);
3737
if (level === "error") {
3838
this.job.errors.push(logEntry);
3939
}
4040

41-
console.log(logEntry);
41+
if (level === "warn") {
42+
console.warn(message, optionalArgs);
43+
} else if (level === "error") {
44+
console.error(message, optionalArgs);
45+
} else {
46+
console.info(message, optionalArgs);
47+
}
4248
}
4349
}

0 commit comments

Comments
 (0)