diff --git a/.github/workflows/release-docker-assets.yml b/.github/workflows/release-docker-assets.yml deleted file mode 100644 index d8f236c52..000000000 --- a/.github/workflows/release-docker-assets.yml +++ /dev/null @@ -1,87 +0,0 @@ -name: Release Docker / OCI for Assets - -on: - push: - branches: - - 'main' - paths: - - 'apps/ui-server-auth/**' - - 'apps/ui-admin/**' - workflow_dispatch: - -jobs: - ghcr_build_assets: - name: Release Assets (${{ matrix.assets_name }}) - runs-on: ubuntu-latest - permissions: - contents: read - packages: write - strategy: - matrix: - include: - - assets_name: ui-server-auth - build_directory: ./apps/server/public/ui-server-auth - dockerfile: ./apps/ui-server-auth/Dockerfile - build_command: | - pnpm -F @proj-airi/ui-server-auth run build - - assets_name: ui-admin - build_directory: ./apps/server/public/ui-admin - dockerfile: ./apps/ui-admin/Dockerfile - build_command: | - pnpm -F @proj-airi/ui-admin run build - steps: - # Why? - # - # failed to build archive at `/home/runner/work/airi/airi/target/x86_64-unknown-linux-gnu/release/deps/libapp_lib.rlib`: - # No space left on device (os error 28) - - name: Free Disk Space - uses: jlumbroso/free-disk-space@main - - - uses: actions/checkout@v6 - # Turborepo - - name: Cache turbo build setup - uses: actions/cache@v5 - with: - path: .turbo - key: ${{ runner.os }}-turbo-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-turbo- - - uses: pnpm/action-setup@v4 - - uses: actions/setup-node@v6 - with: - node-version: lts/* - cache: pnpm - - run: pnpm install --frozen-lockfile - - run: ${{ matrix.build_command }} - - - uses: docker/metadata-action@v5 - id: meta - with: - images: ghcr.io/${{ github.repository }}/${{ matrix.assets_name }} - flavor: | - latest=true - tags: | - type=ref,event=branch - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} - type=semver,pattern={{major}},enable=${{ !startsWith(github.ref, 'refs/tags/v0.') }} - - - uses: docker/setup-qemu-action@v3 - - uses: docker/setup-buildx-action@v3 - - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - uses: docker/build-push-action@v6 - with: - context: ${{ matrix.build_directory }} - file: ${{ matrix.dockerfile }} - build-args: | - VITE_ENABLE_POSTHOG=true - platforms: linux/amd64,linux/arm64,linux/arm64/v8 - cache-from: type=gha - cache-to: type=gha,mode=max - push: true - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} diff --git a/apps/server/Dockerfile b/apps/server/Dockerfile index 5096c4112..d795b4978 100644 --- a/apps/server/Dockerfile +++ b/apps/server/Dockerfile @@ -1,15 +1,28 @@ +FROM node:24-alpine AS ui-assets + +WORKDIR /app + +RUN corepack enable + +COPY . . + +RUN --mount=type=cache,id=pnpm-store,target=/root/.pnpm-store \ + pnpm install --frozen-lockfile --ignore-scripts + +RUN pnpm -F @proj-airi/ui-server-auth run build +RUN pnpm -F @proj-airi/ui-admin run build + FROM node:24-alpine WORKDIR /app RUN corepack enable - COPY pnpm-lock.yaml pnpm-workspace.yaml package.json tsconfig.json ./ COPY patches/ ./patches/ COPY apps/server apps/server -COPY --from=ghcr.io/moeru-ai/airi/ui-server-auth:latest /app/airi/projects/ui/ui-server-auth apps/server/public/ui-server-auth -COPY --from=ghcr.io/moeru-ai/airi/ui-admin:latest /app/airi/projects/ui/ui-admin apps/server/public/ui-admin +COPY --from=ui-assets /app/apps/server/public/ui-server-auth apps/server/public/ui-server-auth +COPY --from=ui-assets /app/apps/server/public/ui-admin apps/server/public/ui-admin COPY packages/server-schema packages/server-schema COPY packages/server-sdk-shared packages/server-sdk-shared diff --git a/apps/server/production/railway/Dockerfile b/apps/server/production/railway/Dockerfile index 72cf2b305..814c46d79 100644 --- a/apps/server/production/railway/Dockerfile +++ b/apps/server/production/railway/Dockerfile @@ -1,3 +1,16 @@ +FROM node:24-alpine AS ui-assets + +WORKDIR /app + +RUN corepack enable + +COPY . . + +RUN pnpm install --frozen-lockfile --ignore-scripts + +RUN pnpm -F @proj-airi/ui-server-auth run build +RUN pnpm -F @proj-airi/ui-admin run build + FROM node:24-alpine WORKDIR /app @@ -6,8 +19,8 @@ RUN corepack enable COPY pnpm-lock.yaml pnpm-workspace.yaml package.json tsconfig.json ./ COPY patches/ ./patches/ -COPY --from=ghcr.io/moeru-ai/airi/ui-server-auth:latest /app/airi/projects/ui/ui-server-auth apps/server/public/ui-server-auth -COPY --from=ghcr.io/moeru-ai/airi/ui-admin:latest /app/airi/projects/ui/ui-admin apps/server/public/ui-admin +COPY --from=ui-assets /app/apps/server/public/ui-server-auth apps/server/public/ui-server-auth +COPY --from=ui-assets /app/apps/server/public/ui-admin apps/server/public/ui-admin COPY apps/server apps/server COPY packages/server-schema packages/server-schema COPY packages/server-sdk-shared packages/server-sdk-shared diff --git a/apps/server/railway.toml b/apps/server/railway.toml index 1e0f24420..ac2603747 100644 --- a/apps/server/railway.toml +++ b/apps/server/railway.toml @@ -4,6 +4,7 @@ dockerfilePath = "/apps/server/production/railway/Dockerfile" watchPatterns = [ "apps/server/**", "apps/ui-admin/**", + "apps/ui-server-auth/**", "packages/**", "pnpm-lock.yaml" ] diff --git a/apps/ui-admin/Dockerfile b/apps/ui-admin/Dockerfile deleted file mode 100644 index 88154b447..000000000 --- a/apps/ui-admin/Dockerfile +++ /dev/null @@ -1,4 +0,0 @@ -FROM scratch - -WORKDIR /app/airi/projects/ui/ui-admin -COPY . /app/airi/projects/ui/ui-admin diff --git a/apps/ui-server-auth/Dockerfile b/apps/ui-server-auth/Dockerfile deleted file mode 100644 index 3fe24b2bb..000000000 --- a/apps/ui-server-auth/Dockerfile +++ /dev/null @@ -1,4 +0,0 @@ -FROM scratch - -WORKDIR /app/airi/projects/ui/ui-server-auth -COPY . /app/airi/projects/ui/ui-server-auth