diff --git a/.gitea/workflows/pilotwings.yml b/.gitea/workflows/pilotwings.yml new file mode 100644 index 0000000..a44fde7 --- /dev/null +++ b/.gitea/workflows/pilotwings.yml @@ -0,0 +1,48 @@ +name: pilotwings +on: [push] + +jobs: + python: + runs-on: ubuntu-latest + container: python:3.13.0-slim + steps: + - run: apt-get update + - run: apt-get install -y git nodejs + - uses: actions/checkout@v4 + - uses: Gr1N/setup-poetry@v9 + - run: poetry install + - run: poetry run ruff check . + - run: poetry run mypy . + + node: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - run: npm ci + - run: npm run type-check + - run: npm run lint + + docker: + runs-on: ubuntu-latest + container: docker + needs: [python, node] + steps: + - uses: actions/checkout@v4 + - uses: docker/metadata-action@v5 + id: meta + with: + images: xefir/pilotwings + tags: | + type=schedule + type=ref,event=tag + type=ref,event=pr + type=raw,value=latest,enable={{is_default_branch}} + - uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - uses: docker/build-push-action@v6 + with: + push: ${{ gitea.ref_name == gitea.event.repository.default_branch || gitea.ref_type == 'tag' }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..8ce2aee --- /dev/null +++ b/Dockerfile @@ -0,0 +1,19 @@ +FROM node:20.18.0-slim as frontend + +WORKDIR /app +COPY . . +RUN npm ci && npm run build + +FROM python:3.13.0-slim as backend + +WORKDIR /app +COPY . . +COPY --from=frontend /app/backend/dist /app/backend/dist +RUN pip install poetry && poetry build + +FROM python:3.13.0-slim + +COPY --from=backend /app/dist /tmp/dist +RUN pip install /tmp/dist/*.whl && rm -rf /tmp/dist + +CMD [ pilotwings ]