diff --git a/.forgejo/workflows/build-and-deploy.yml b/.forgejo/workflows/build-and-deploy.yml index 4f1011d..87a8b34 100644 --- a/.forgejo/workflows/build-and-deploy.yml +++ b/.forgejo/workflows/build-and-deploy.yml @@ -1,45 +1,74 @@ -name: Build and Deploy Go App - -on: - push: - branches: - - master - -jobs: - build: - runs-on: self-hosted - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Build Go app - run: | - cd modules/server - go mod tidy - go build -o nyanimedb . - - - name: Build Docker image - run: | - cd modules/server - docker build -t nyanimedb:latest . - - deploy: - runs-on: self-hosted - needs: build - env: - POSTGRES_USER: ${{ secrets.POSTGRES_USER }} - POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD }} - POSTGRES_DB: nyanimedb - POSTGRES_PORT: 5432 - POSTGRES_VERSION: 18 - LOG_LEVEL: ${{ vars.LOG_LEVEL }} - - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Deploy containers locally - run: | - cd deploy - docker compose down || true - docker compose up -d +name: Build and Deploy Go App + +on: + push: + branches: + - master + - cicd + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - uses: actions/setup-go@v6 + with: + go-version: '^1.25' + check-latest: false + cache-dependency-path: | + modules/server/go.sum + + - 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: + registry: ${{ vars.REGISTRY }} + username: ${{ secrets.REGISTRY_USERNAME }} + password: ${{ secrets.REGISTRY_TOKEN }} + + - name: Build and push + uses: docker/build-push-action@v6 + with: + context: ./modules/server + file: Dockerfiles/Dockerfile_server + push: true + tags: meowgit.nekoea.red/nihonium/nyanimedb:latest + + deploy: + runs-on: self-hosted + needs: build + env: + POSTGRES_USER: ${{ secrets.POSTGRES_USER }} + POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD }} + POSTGRES_DB: nyanimedb + POSTGRES_PORT: 5432 + POSTGRES_VERSION: 18 + LOG_LEVEL: ${{ vars.LOG_LEVEL }} + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Deploy containers locally + run: | + cd deploy + docker compose down || true + docker compose up -d diff --git a/Dockerfiles/Dockerfile_forgejo-runner b/Dockerfiles/Dockerfile_forgejo-runner new file mode 100644 index 0000000..cafd58c --- /dev/null +++ b/Dockerfiles/Dockerfile_forgejo-runner @@ -0,0 +1,24 @@ +FROM node:20-bookworm + +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt-get update && \ + apt-get install -y \ + ca-certificates \ + curl \ + gnupg \ + lsb-release \ + sudo \ + software-properties-common && \ + rm -rf /var/lib/apt/lists/* + +RUN mkdir -p /etc/apt/keyrings && \ + curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg + +RUN echo \ + "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \ + $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null + +RUN apt-get update && \ + apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin && \ + rm -rf /var/lib/apt/lists/* \ No newline at end of file diff --git a/Dockerfiles/Dockerfile_server b/Dockerfiles/Dockerfile_server new file mode 100644 index 0000000..87014ce --- /dev/null +++ b/Dockerfiles/Dockerfile_server @@ -0,0 +1,20 @@ +FROM ubuntu:22.04 + +WORKDIR /app +COPY --chmod=755 nyanimedb /app +COPY templates /app/templates +EXPOSE 8080 +ENTRYPOINT ["/app/nyanimedb"] + +# FROM golang:1.25 AS builder + +# ARG VERSION=dev + +# WORKDIR /go/src/app +# COPY main.go . +# RUN go build -o main -ldflags=-X=main.version=${VERSION} main.go + +# 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 diff --git a/deploy/buildx.sh b/deploy/buildx.sh new file mode 100644 index 0000000..96e0fe4 --- /dev/null +++ b/deploy/buildx.sh @@ -0,0 +1,2 @@ +#!/bin/bash +docker buildx build --platform linux/amd64 -t meowgit.nekoea.red/nihonium/forgejo-runner:latest -f ./Dockerfiles/Dockerfile_forgejo-runner . --push \ No newline at end of file diff --git a/deploy/docker-compose.yml b/deploy/docker-compose.yml index 57681ca..3cac6b1 100644 --- a/deploy/docker-compose.yml +++ b/deploy/docker-compose.yml @@ -27,7 +27,7 @@ services: # - pgadmin_data:/var/lib/pgadmin nyanimedb: - image: nyanimedb:latest + image: meowgit.nekoea.red/nihonium/nyanimedb:latest container_name: nyanimedb restart: always environment: diff --git a/modules/server/Dockerfile b/modules/server/Dockerfile deleted file mode 100644 index 8385c82..0000000 --- a/modules/server/Dockerfile +++ /dev/null @@ -1,7 +0,0 @@ -FROM ubuntu:22.04 - -WORKDIR /app -COPY --chmod=755 nyanimedb /app -COPY templates /app/templates -EXPOSE 8080 -ENTRYPOINT ["/app/nyanimedb"] \ No newline at end of file