ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 2m56s
release / android (APK в релиз) (push) Successful in 4m53s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 3m27s
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 1m2s
ci / ts / ts (packages + web) (push) Successful in 1m48s
release / release (версия и заметки) (push) Successful in 8s
On an Android 16 emulator the release APK crashed at launch with "Cannot read property 'NativeModule' of undefined": libexpo-modules-core.so was missing for the ABI the device picked. Two build defects: - librnskia.so was linked with 4 KB segment alignment (Skia 2.0.0-next.4 lacks ANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES), so 16 KB page devices cannot load it; a pnpm patch adds the flag - the APK carried incomplete x86, x86_64 and armeabi-v7a folders from the React Native libraries; an Expo config plugin keeps only arm64-v8a, the ABI the native modules are built for (the APK also halves in size) scripts/check-apk.mjs now fails the release on another ABI, a missing core library or a library not aligned to 16 KB. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
33 lines
1.9 KiB
Docker
33 lines
1.9 KiB
Docker
# syntax=docker/dockerfile:1
|
|
# Образ `web` = nginx + собранная SPA + конфиг (TLS, прокси на api, X-Accel-раздача аудио).
|
|
# Сборка из корня репозитория: docker build -f apps/web/Dockerfile --build-arg VERSION=1.2.3 .
|
|
|
|
FROM node:22-alpine AS build
|
|
RUN npm install -g pnpm@11.9.0
|
|
WORKDIR /repo
|
|
# Сначала только манифесты workspace: слой с установкой зависимостей пересобирается лишь при их изменении,
|
|
# а не при любой правке кода. Новый пакет в apps/ или packages/ — добавить его package.json сюда.
|
|
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./
|
|
# pnpm-патчи зависимостей (lockfile ссылается на них, без них --frozen-lockfile падает)
|
|
COPY patches/ patches/
|
|
COPY apps/web/package.json apps/web/
|
|
COPY apps/mobile/package.json apps/mobile/
|
|
COPY packages/api-client/package.json packages/api-client/
|
|
COPY packages/core/package.json packages/core/
|
|
COPY packages/design-tokens/package.json packages/design-tokens/
|
|
COPY packages/i18n/package.json packages/i18n/
|
|
RUN --mount=type=cache,target=/root/.local/share/pnpm/store \
|
|
pnpm install --frozen-lockfile --filter @pipu/web...
|
|
COPY . .
|
|
# Сгенерированные клиенты и токены лежат в репозитории (их актуальность проверяет CI), поэтому generate здесь не нужен.
|
|
RUN pnpm --filter @pipu/web build
|
|
|
|
FROM nginx:1.28-alpine
|
|
COPY deploy/nginx/default.conf.template /etc/nginx/templates/default.conf.template
|
|
COPY deploy/nginx/security-headers.conf /etc/nginx/snippets/security-headers.conf
|
|
COPY --from=build /repo/apps/web/dist /usr/share/nginx/html
|
|
ARG VERSION=0.0.0-dev
|
|
LABEL org.opencontainers.image.version=${VERSION}
|
|
ENV API_UPSTREAM=api:8080
|
|
EXPOSE 80
|