lamassu-server/.github/workflows/docker-build.yml
2025-05-23 19:15:31 +01:00

92 lines
2.5 KiB
YAML

name: Docker Build and Publish
on:
push:
branches:
- dev
env:
DOCKERHUB_SERVER_REPO: lamassu/lamassu-server
DOCKERHUB_ADMIN_REPO: lamassu/lamassu-admin-server
jobs:
build-and-publish:
runs-on: ubuntu-22.04
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Turbo cache
uses: actions/cache@v4
with:
path: .turbo
key: ${{ runner.os }}-turbo-${{ github.sha }}
restore-keys: |
${{ runner.os }}-turbo-
- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 10.11.0
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '22'
cache: 'pnpm'
- name: Install dependencies
run: pnpm install
- name: Build packages with Turbo
run: pnpm run build
- name: Verify build artifacts
run: |
echo "=== Verifying typesafe-db build ==="
ls -la packages/typesafe-db/lib/
echo "=== Verifying admin-ui build ==="
ls -la packages/admin-ui/build/
- name: Package production build
run: |
# Create production-ready server package using pnpm deploy
pnpm deploy --filter=./packages/server --prod lamassu-server --legacy
# Copy built admin UI to public directory
cp -r packages/admin-ui/build lamassu-server/public
# Copy Dockerfile to lamassu-server context
cp build/server.Dockerfile lamassu-server/
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_TOKEN }}
- name: Build and push server image
uses: docker/build-push-action@v5
with:
context: lamassu-server
push: true
target: l-s
file: lamassu-server/server.Dockerfile
tags: ${{ env.DOCKERHUB_SERVER_REPO }}:latest
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Build and push admin server image
uses: docker/build-push-action@v5
with:
context: lamassu-server
push: true
target: l-a-s
file: lamassu-server/server.Dockerfile
tags: ${{ env.DOCKERHUB_ADMIN_REPO }}:latest
cache-from: type=gha
cache-to: type=gha,mode=max