From 3a478cb28d6d8ae91ede328245a4c7d0a2577605 Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 21 Jun 2025 21:24:54 +0300 Subject: [PATCH] ci: add docker pipeline --- .github/workflows/build-docker.yml | 26 ++++++++++++++++++++++++++ .github/workflows/build.yml | 4 ++-- .gitignore | 4 ++++ docker/Dockerfile | 23 ++++++++++++++++++++--- 4 files changed, 52 insertions(+), 5 deletions(-) create mode 100644 .github/workflows/build-docker.yml create mode 100644 .gitignore diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml new file mode 100644 index 0000000..178b9aa --- /dev/null +++ b/.github/workflows/build-docker.yml @@ -0,0 +1,26 @@ +# This workflow will build a golang project +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-go + +name: Go + +on: + release: + types: [published] + workflow_dispatch: + +jobs: + build-docker: + runs-on: debian-latest + steps: + - uses: actions/checkout@v3 + - name: Build Docker image + run: | + docker build -t git.mi6e4ka.dev/yabl/app:latest -f ./docker/Dockerfile . + - name: Login to local Docker registry + run: | + echo ${{ secrets.REGISTRY_PASSWORD }} | docker login git.mi6e4ka.dev \ + --username ${{ secrets.REGISTRY_USERNAME }} \ + --password-stdin + - name: Push image + run: | + docker push git.mi6e4ka.dev/yabl/app:latest diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fff5b50..32aaa16 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -4,8 +4,8 @@ name: Go on: - release: - types: [published] + # release: + # types: [published] workflow_dispatch: jobs: diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0f6d566 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +uploads +keys +lib +*.db \ No newline at end of file diff --git a/docker/Dockerfile b/docker/Dockerfile index 74c93cf..63a937c 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,10 +1,27 @@ -FROM debian:12-slim +FROM node:24-slim AS web-builder +WORKDIR /web +COPY ./apps/web/ . +RUN npm ci && npm run build + +# FROM golang:1.24-alpine3.22 AS builder +FROM golang:1.24-bookworm AS builder +WORKDIR /build +COPY apps/api/ ./api +COPY apps/book-reaper/ ./book-reaper +COPY --from=web-builder /web/dist ./api/web +# RUN apk add mupdf-libs libffi-dev gcc +RUN cd ./api && CGO_ENABLED=1 GOPROXY=goproxy.io go build --tags=fts5 -ldflags="-s -w" -o ../yabl . +RUN cd ./book-reaper && CGO_ENABLED=1 GOPROXY=goproxy.io go build --tags=fts5 -ldflags="-s -w" -o ../book-reaper ./cmd/book-reaper + +# FROM alpine:3.22 +FROM debian:bookworm-slim WORKDIR /app -COPY ./build/api/yabl /app/yabl -COPY ./build/book-reaper/book-reaper /app/book-reaper +COPY --from=builder /build/yabl . +COPY --from=builder /build/book-reaper . RUN chmod +x /app/yabl /app/book-reaper +# RUN apk add mupdf-libs libffi-dev ENTRYPOINT ["/app/yabl"] \ No newline at end of file