From 868594bc3a0af88700925e0ec56e961b1fb0bee9 Mon Sep 17 00:00:00 2001 From: Odweta Date: Thu, 19 Mar 2026 10:32:41 +0100 Subject: [PATCH] CI/CD --- backend/.gitlab-ci.yml | 15 +++++++++++++++ backend/Dockerfile | 10 ++++++++++ backend/db.go | 10 +++++----- backend/go.mod | 2 ++ backend/go.sum | 4 ++++ backend/main.go | 8 +++++++- 6 files changed, 43 insertions(+), 6 deletions(-) create mode 100644 backend/.gitlab-ci.yml create mode 100644 backend/Dockerfile diff --git a/backend/.gitlab-ci.yml b/backend/.gitlab-ci.yml new file mode 100644 index 0000000..e06c265 --- /dev/null +++ b/backend/.gitlab-ci.yml @@ -0,0 +1,15 @@ +stages: + - build + +variables: + IMAGE_NAME: registry.gitlab.com/$CI_PROJECT_PATH + +build: + stage: build + image: docker:latest + services: + - docker:dind + script: + - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY + - docker build -t $IMAGE_NAME:latest . + - docker push $IMAGE_NAME:latest diff --git a/backend/Dockerfile b/backend/Dockerfile new file mode 100644 index 0000000..d74da0b --- /dev/null +++ b/backend/Dockerfile @@ -0,0 +1,10 @@ +FROM golang:1.22-alpine + +WORKDIR /app +COPY . . + +RUN go build -o app + +EXPOSE 8080 + +CMD ["./app"] diff --git a/backend/db.go b/backend/db.go index c39e8e4..34a999b 100644 --- a/backend/db.go +++ b/backend/db.go @@ -5,23 +5,23 @@ import ( "fmt" "os" - "github.com/jackc/pgx/v5" + "github.com/jackc/pgx/v5/pgxpool" ) -var db *pgx.Conn +var db *pgxpool.Pool func connectDB() { - var err error connStr := os.Getenv("DB_URL") if connStr == "" { panic("DB_URL not set") } - db, err = pgx.Connect(context.Background(), connStr) + var err error + db, err = pgxpool.New(context.Background(), connStr) if err != nil { panic(err) } - fmt.Println("Connected to PostgreSQL") + fmt.Println("Connected to PostgreSQL (pool)") } diff --git a/backend/go.mod b/backend/go.mod index 43692b1..d5535eb 100644 --- a/backend/go.mod +++ b/backend/go.mod @@ -7,5 +7,7 @@ require ( github.com/jackc/pgpassfile v1.0.0 // indirect github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect github.com/jackc/pgx/v5 v5.8.0 // indirect + github.com/jackc/puddle/v2 v2.2.2 // indirect + golang.org/x/sync v0.17.0 // indirect golang.org/x/text v0.29.0 // indirect ) diff --git a/backend/go.sum b/backend/go.sum index 7e62d21..9c330fd 100644 --- a/backend/go.sum +++ b/backend/go.sum @@ -7,10 +7,14 @@ github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7Ulw github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= github.com/jackc/pgx/v5 v5.8.0 h1:TYPDoleBBme0xGSAX3/+NujXXtpZn9HBONkQC7IEZSo= github.com/jackc/pgx/v5 v5.8.0/go.mod h1:QVeDInX2m9VyzvNeiCJVjCkNFqzsNb43204HshNSZKw= +github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo= +github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= +golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/backend/main.go b/backend/main.go index f709661..f2f0381 100644 --- a/backend/main.go +++ b/backend/main.go @@ -4,6 +4,7 @@ package main import ( "net/http" + "os" "github.com/go-chi/chi/v5" ) @@ -17,7 +18,12 @@ func main() { r.Get("/users", getUsers) r.Post("/users", createUser) - http.ListenAndServe(":8080", r) + port := os.Getenv("PORT") + if port == "" { + port = "8080" + } + + http.ListenAndServe(":"+port, r) } /*package main