lila/.forgejo/workflows/deploy.yml
lila 6539d3e346
All checks were successful
Build and Deploy / quality (push) Successful in 1m47s
Build and Deploy / build-and-deploy (push) Successful in 1m0s
fix: prevent deployment when quality checks fail
2026-05-02 13:22:35 +02:00

70 lines
2.1 KiB
YAML

name: Build and Deploy
on:
push:
branches: [main]
jobs:
quality:
runs-on: docker
steps:
- name: Install tools
run: apt-get update && apt-get install -y nodejs
- name: Checkout code
uses: https://data.forgejo.org/actions/checkout@v4
- name: Install pnpm
run: npm install -g pnpm
- name: Install dependencies
run: pnpm install
- name: Build shared packages
run: pnpm --filter @lila/shared build && pnpm --filter @lila/db build
- name: Format check
run: pnpm format:check
- name: Lint
run: pnpm lint
- name: Type-check
run: pnpm typecheck
- name: Test
run: pnpm test:run
build-and-deploy:
runs-on: docker
needs: quality
steps:
- name: Install tools
run: apt-get update && apt-get install -y docker.io openssh-client
- name: Checkout code
uses: https://data.forgejo.org/actions/checkout@v4
- name: Login to registry
run: |
echo "${{ secrets.REGISTRY_PASSWORD }}" | docker login git.lilastudy.com -u "${{ secrets.REGISTRY_USER }}" --password-stdin
- name: Build API image
run: |
docker build \
-t git.lilastudy.com/forgejo-lila/lila-api:latest \
--target runner \
-f apps/api/Dockerfile .
- name: Build Web image
run: |
docker build \
-t git.lilastudy.com/forgejo-lila/lila-web:latest \
--target production \
--build-arg VITE_API_URL=https://api.lilastudy.com \
-f apps/web/Dockerfile .
- name: Push images
run: |
docker push git.lilastudy.com/forgejo-lila/lila-api:latest
docker push git.lilastudy.com/forgejo-lila/lila-web:latest
- name: Deploy via SSH
run: |
mkdir -p ~/.ssh
echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519
ssh -o StrictHostKeyChecking=no ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} \
"cd ~/lila-app && docker compose pull api web && docker compose up -d api web && docker image prune -f"