From 1411fd18bda9ad5f74183653c3632bad6d30e8a0 Mon Sep 17 00:00:00 2001 From: SpeedReach <37238439+SpeedReach@users.noreply.github.com> Date: Fri, 24 May 2024 21:08:49 +0800 Subject: [PATCH] modified devops --- Dockerfile | 17 +++++++++++++++++ Makefile | 14 +++++++++----- cmd/main.go | 1 + internal/infra/config.go | 6 +++++- internal/infra/database.go | 3 +++ internal/utils/infisical.go | 1 + migrations/Makefile | 2 +- migrations/run.go | 31 ++++++++++++++++++++----------- 8 files changed, 57 insertions(+), 18 deletions(-) diff --git a/Dockerfile b/Dockerfile index e69de29..d30c574 100644 --- a/Dockerfile +++ b/Dockerfile @@ -0,0 +1,17 @@ +FROM golang:1.22-alpine3.19 as build + +WORKDIR /usr/src/app + +# pre-copy/cache go.mod for pre-downloading dependencies and only redownloading them in subsequent builds if they change +COPY go.mod go.sum ./ +RUN go mod download && go mod verify + +COPY . . + +RUN go build -o /app /usr/src/app/cmd/main.go + + +FROM alpine:3.19 +COPY --from=build /app /app +EXPOSE 8080 +CMD ["/app"] \ No newline at end of file diff --git a/Makefile b/Makefile index 7367148..fc327da 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -SUB_DIRS = protobuf +SUB_DIRS = protobuf migrations PACKAGES ?= $(shell go list ./...) all: $(SUB_DIRS) @@ -6,9 +6,6 @@ all: $(SUB_DIRS) $(SUB_DIRS): make -C $@ -migrations: - make -C migrations - test: -mkdir build go test $(PACKAGES) -v -cover -failfast @@ -19,7 +16,14 @@ test_docker: docker run --name monify-test-postgres -p 5432:5432 -e POSTGRES_PASSWORD=password -d postgres go test $(PACKAGES) -v -cover -failfast -tags docker +docker_push: docker_build + docker push registry.nccupass.com/monify + +docker_build: + docker build -t registry.nccupass.com/monify . + clean: -rm -rf build -.PHONY: $(SUB_DIRS) + +.PHONY: $(SUB_DIRS) \ No newline at end of file diff --git a/cmd/main.go b/cmd/main.go index 8959cca..3c93e02 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -32,6 +32,7 @@ func main() { if err != nil { panic(err) } + println("Server is running on port 8080") err = s.Start(lis) if err != nil { log.Fatal(err) diff --git a/internal/infra/config.go b/internal/infra/config.go index 9c30068..74870a8 100644 --- a/internal/infra/config.go +++ b/internal/infra/config.go @@ -5,7 +5,11 @@ type Config struct { } func NewConfigFromSecrets(secrets map[string]string) Config { + postgresUri := secrets["POSTGRES_URI"] + if postgresUri == "" { + panic("Missing POSTGRES_URI") + } return Config{ - PostgresURI: secrets["POSTGRES_URI"], + PostgresURI: postgresUri, } } diff --git a/internal/infra/database.go b/internal/infra/database.go index dc9f1c8..6b4c45d 100644 --- a/internal/infra/database.go +++ b/internal/infra/database.go @@ -10,5 +10,8 @@ func SetupConnection(uri string) *sql.DB { if err != nil { panic(err) } + if err = db.Ping(); err != nil { + panic(err) + } return db } diff --git a/internal/utils/infisical.go b/internal/utils/infisical.go index f6681cf..5b222dc 100644 --- a/internal/utils/infisical.go +++ b/internal/utils/infisical.go @@ -65,6 +65,7 @@ func GetSecrets(token string, environment string) (Secrets, error) { } func LoadSecrets(env string) (map[string]string, error) { + println("Loading secrets with env: ", env) id, ok := os.LookupEnv("CLIENT_ID") if !ok { panic("cannot load client id for infisical") diff --git a/migrations/Makefile b/migrations/Makefile index 86ac034..9cdf712 100644 --- a/migrations/Makefile +++ b/migrations/Makefile @@ -1,5 +1,5 @@ # List of SQL source files -SRC = $(wildcard *.sql) +SRC = $(wildcard *.sql) run.go # File to track the last migration run TIMESTAMP = .last_migration diff --git a/migrations/run.go b/migrations/run.go index 8f3ad1e..3b71e39 100644 --- a/migrations/run.go +++ b/migrations/run.go @@ -1,11 +1,13 @@ package main import ( + "database/sql" "github.com/golang-migrate/migrate/v4" - _ "github.com/golang-migrate/migrate/v4/database/cockroachdb" - _ "github.com/golang-migrate/migrate/v4/database/postgres" + "github.com/golang-migrate/migrate/v4/database/cockroachdb" _ "github.com/golang-migrate/migrate/v4/source/file" + _ "github.com/jackc/pgx/v5/stdlib" "github.com/joho/godotenv" + "log" "monify/internal/utils" ) @@ -16,19 +18,26 @@ func main() { if err != nil { panic(secrets) } - m, err := migrate.New( - "file://.", - secrets["POSTGRES_URI"]) - if err != nil { - panic(err) + db, err := sql.Open("pgx", secrets["POSTGRES_URI"]) + if err != nil { + log.Fatal(err) } - err = m.Up() + driver, err := cockroachdb.WithInstance(db, &cockroachdb.Config{}) if err != nil { + log.Fatal(err) + } + m, err := migrate.NewWithDatabaseInstance( + "file://.", + "postgres", driver) + if err != nil { + log.Fatal(err) + } + + if err = m.Up(); err != nil { if err != migrate.ErrNoChange { - panic(err) - } else { - println("No Change") + log.Fatal(err) } } + }