From f680e16be5f625a84a1d08b16531ae0f044d4026 Mon Sep 17 00:00:00 2001 From: nihonium Date: Thu, 9 Oct 2025 15:16:19 +0300 Subject: [PATCH 1/2] feat: modified dockerfiles for cicd build --- Dockerfiles/Dockerfile_backend | 8 +------- Dockerfiles/Dockerfile_frontend | 11 +---------- 2 files changed, 2 insertions(+), 17 deletions(-) diff --git a/Dockerfiles/Dockerfile_backend b/Dockerfiles/Dockerfile_backend index 1e170fc..0161a77 100644 --- a/Dockerfiles/Dockerfile_backend +++ b/Dockerfiles/Dockerfile_backend @@ -4,10 +4,4 @@ WORKDIR /app COPY --chmod=755 modules/server/nyanimedb /app COPY modules/server/templates /app/templates EXPOSE 8080 -ENTRYPOINT ["/app/nyanimedb"] - - -# FROM debian:buster-slim -# COPY --from=builder /go/src/app/main /go/bin/main -# ENV PATH="/go/bin:${PATH}" -# CMD ["main"] \ No newline at end of file +ENTRYPOINT ["/app/nyanimedb"] \ No newline at end of file diff --git a/Dockerfiles/Dockerfile_frontend b/Dockerfiles/Dockerfile_frontend index 9f0752e..a7ec893 100644 --- a/Dockerfiles/Dockerfile_frontend +++ b/Dockerfiles/Dockerfile_frontend @@ -1,13 +1,4 @@ -FROM node:20-alpine AS builder -ARG VITE_BACKEND_API_BASE_URL -ENV VITE_BACKEND_API_BASE_URL=$VITE_BACKEND_API_BASE_URL -WORKDIR /app -COPY modules/frontend/ ./ -RUN echo "VITE_BACKEND_API_BASE_URL=$VITE_BACKEND_API_BASE_URL" -RUN npm install -RUN npm run build - FROM nginx:alpine -COPY --from=builder /app/dist /usr/share/nginx/html +COPY modules/frontend/dist /usr/share/nginx/html EXPOSE 80 CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file From 951db38e4ce669bf97eabd69fef548fb7f6921bb Mon Sep 17 00:00:00 2001 From: nihonium Date: Thu, 9 Oct 2025 15:16:48 +0300 Subject: [PATCH 2/2] feat: build frontend via cicd --- .forgejo/workflows/build-and-deploy.yml | 69 ++++++++++++++++++------- 1 file changed, 49 insertions(+), 20 deletions(-) diff --git a/.forgejo/workflows/build-and-deploy.yml b/.forgejo/workflows/build-and-deploy.yml index 87a8b34..5e11166 100644 --- a/.forgejo/workflows/build-and-deploy.yml +++ b/.forgejo/workflows/build-and-deploy.yml @@ -9,34 +9,55 @@ on: jobs: build: runs-on: ubuntu-latest + env: + BACKEND_API_BASE_URL: ${{ vars.BACKEND_API_BASE_URL }} steps: - name: Checkout code uses: actions/checkout@v4 - + + # Build backend - uses: actions/setup-go@v6 with: go-version: '^1.25' check-latest: false cache-dependency-path: | - modules/server/go.sum + modules/backend/go.sum + + - name: Build Go app + run: | + cd modules/backend + go build -o nyanimedb . + tar -czvf nyanimedb-backend.tar.gz nyanimedb templates/ + - name: Upload built backend to artifactory + uses: actions/upload-artifact@v3 + with: + name: nyanimedb-backend.tar.gz + path: modules/backend/nyanimedb-backend.tar.gz + + # Build frontend + - uses: actions/setup-node@v5 + with: + node-version-file: 'modules/frontend/package.json' + cache: 'npm' + cache-dependency-path: modules/frontend/package-lock.json + + - name: Build frontend + run: | + cd modules/frontend + npm run build + tar -czvf nyanimedb-frontend.tar.gz dist/ + + - name: Upload built frontend to artifactory + uses: actions/upload-artifact@v3 + with: + name: nyanimedb-frontend.tar.gz + path: modules/frontend/nyanimedb-frontend.tar.gz + + # Build Docker images - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - # Build application - - name: Build Go app - run: | - cd modules/server - go mod tidy - go build -o nyanimedb . - - - name: Upload built application to artifactory - uses: actions/upload-artifact@v3 - with: - name: nyanimedb - path: modules/server/nyanimedb - - # Build Docker image - name: Login to Docker Hub uses: docker/login-action@v3 with: @@ -44,13 +65,21 @@ jobs: username: ${{ secrets.REGISTRY_USERNAME }} password: ${{ secrets.REGISTRY_TOKEN }} - - name: Build and push + - name: Build and push backend image uses: docker/build-push-action@v6 with: - context: ./modules/server - file: Dockerfiles/Dockerfile_server + file: Dockerfiles/Dockerfile_backend push: true - tags: meowgit.nekoea.red/nihonium/nyanimedb:latest + tags: meowgit.nekoea.red/nihonium/nyanimedb-backend:latest + + - name: Build and push frontend image + uses: docker/build-push-action@v6 + with: + build-args: + --build-arg VITE_BACKEND_API_BASE_URL=${BACKEND_API_BASE_URL} + file: Dockerfiles/Dockerfile_frontend + push: true + tags: meowgit.nekoea.red/nihonium/nyanimedb-frontend:latest deploy: runs-on: self-hosted