Skip to content

V0.3

V0.3 #2

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
permissions:
contents: read
packages: write
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- run: pip install ruff
- run: ruff check backend/
- run: ruff format --check backend/
test:
runs-on: ubuntu-latest
services:
postgres:
image: postgres:16-alpine
env:
POSTGRES_DB: meshplanner
POSTGRES_USER: meshplanner
POSTGRES_PASSWORD: test
ports: ["5432:5432"]
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
env:
DATABASE_URL: postgresql+asyncpg://meshplanner:test@localhost:5432/meshplanner
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install system dependencies
run: sudo apt-get update && sudo apt-get install -y gdal-bin libgdal-dev
- name: Install Python dependencies
run: pip install -r backend/requirements.txt pytest pytest-asyncio
- name: Run tests
run: cd backend && pytest tests/ -v
docker-build:
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: docker/setup-buildx-action@v3
- name: Build backend image
uses: docker/build-push-action@v6
with:
context: .
file: backend/Dockerfile
push: false
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Build frontend image
uses: docker/build-push-action@v6
with:
context: frontend
file: frontend/Dockerfile
push: false
docker-publish:
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
needs: [lint, test]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: docker/setup-buildx-action@v3
- name: Log in to GHCR
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push backend
uses: docker/build-push-action@v6
with:
context: .
file: backend/Dockerfile
push: true
tags: |
ghcr.io/${{ github.repository_owner }}/mesh-planner-backend:latest
ghcr.io/${{ github.repository_owner }}/mesh-planner-backend:${{ github.sha }}
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Build and push frontend
uses: docker/build-push-action@v6
with:
context: frontend
file: frontend/Dockerfile
push: true
tags: |
ghcr.io/${{ github.repository_owner }}/mesh-planner-frontend:latest
ghcr.io/${{ github.repository_owner }}/mesh-planner-frontend:${{ github.sha }}
cache-from: type=gha
cache-to: type=gha,mode=max