Skip to content

Commit 438b947

Browse files
authored
Merge branch 'feature/cluster-endpoints' into main
2 parents d89c499 + 421d2a8 commit 438b947

11 files changed

+511
-119
lines changed
+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
name: Build and publish a Docker image
2+
on:
3+
push:
4+
branches:
5+
- '*'
6+
tags:
7+
- 'v[0-9]+.[0-9]+.[0-9]+'
8+
pull_request:
9+
branches:
10+
- '*'
11+
jobs:
12+
build:
13+
name: Build & push docker image
14+
runs-on: ubuntu-latest
15+
env:
16+
IMG_NAME: ${{ github.repository }}
17+
steps:
18+
- name: Checkout
19+
uses: actions/checkout@v3
20+
21+
- name: Debug
22+
run: |
23+
echo "github.ref -> {{ github.ref }}"
24+
25+
- name: Docker metadata
26+
id: metadata
27+
uses: docker/metadata-action@v3
28+
with:
29+
images: ${{ env.IMG_NAME }}
30+
tags: |
31+
type=semver,pattern={{version}}
32+
type=semver,pattern={{major}}.{{minor}}
33+
type=raw,value={{sha}},enable=${{ github.ref_type != 'tag' }}
34+
35+
- name: Log in to Docker Hub
36+
uses: docker/login-action@v1
37+
if: ${{ github.ref_type == 'tag' }}
38+
with:
39+
username: ${{ secrets.DOCKER_USERNAME }}
40+
password: ${{ secrets.DOCKER_PASSWORD }}
41+
42+
- name: Build and push Docker image
43+
uses: docker/build-push-action@v2
44+
with:
45+
context: .
46+
push: ${{ github.event.base_ref =='refs/heads/main' && github.ref_type == 'tag' && !startsWith(github.ref, 'refs/tags/v0.')}}
47+
tags: ${{ steps.metadata.outputs.tags }}
48+
labels: ${{ steps.metadata.outputs.labels }}

.github/workflows/docker-image.yaml

+6-7
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,10 @@ name: Build and publish a Docker image
22
on:
33
push:
44
branches:
5-
- '*'
6-
tags:
7-
- 'v[0-9]+.[0-9]+.[0-9]+'
8-
- '*'
5+
- "*"
96
pull_request:
107
branches:
11-
- '*'
8+
- "*"
129
jobs:
1310
build:
1411
name: Build & push docker image
@@ -17,12 +14,14 @@ jobs:
1714
IMG_NAME: ${{ github.repository }}
1815
steps:
1916
- name: Checkout
20-
uses: actions/checkout@v3
17+
uses: actions/checkout@v4
18+
with:
19+
ref: feature/console-endpoints
2120

2221
- name: Debug
2322
run: |
2423
echo "github.ref -> {{ github.ref }}"
25-
24+
2625
- name: Docker metadata
2726
id: metadata
2827
uses: docker/metadata-action@v3

Dockerfile

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,6 @@ RUN go build -o /app/api-bin ./cmd
88
FROM alpine:latest
99
WORKDIR /app
1010
COPY --from=0 /app/api-bin /app/api-bin
11-
COPY --from=0 /app/configs/app.env /app/configs/app.env
11+
#COPY --from=0 /app/configs/app.env /app/configs/app.env
1212
EXPOSE 8080
13-
CMD [ "/app//api-bin" ]
13+
CMD [ "/app/api-bin" ]

cmd/main.go

+20-96
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,16 @@ package main
22

33
import (
44
"log"
5-
"time"
65
"strings"
76
"net/http"
8-
"github.com/gin-contrib/cors"
7+
//"github.com/gin-contrib/cors"
98
"github.com/gin-gonic/gin"
109
"github.com/kriipke/console-api/pkg/controllers"
1110
"github.com/kriipke/console-api/pkg/initializers"
1211
"github.com/kriipke/console-api/pkg/routes"
13-
"github.com/charmbracelet/lipgloss"
14-
"github.com/fatih/color"
15-
//"github.com/charmbracelet/lipgloss/table"
16-
12+
"github.com/kriipke/console-api/pkg/middleware"
1713
)
1814

19-
var style_keys = lipgloss.NewStyle().Bold(true).Foreground(lipgloss.Color("5"))
20-
var style_values = lipgloss.NewStyle().Foreground(lipgloss.Color("8"))
21-
2215
var (
2316
server *gin.Engine
2417
AuthController controllers.AuthController
@@ -29,6 +22,9 @@ var (
2922

3023
PostController controllers.PostController
3124
PostRouteController routes.PostRouteController
25+
26+
ClusterController controllers.ClusterController
27+
ClusterRouteController routes.ClusterRouteController
3228
)
3329
// function to convert an array to string
3430
func arrayToString(arr []string) string {
@@ -54,6 +50,9 @@ func init() {
5450
PostController = controllers.NewPostController(initializers.DB)
5551
PostRouteController = routes.NewRoutePostController(PostController)
5652

53+
ClusterController = controllers.NewClusterController(initializers.DB)
54+
ClusterRouteController = routes.NewRouteClusterController(ClusterController)
55+
5756
server = gin.Default()
5857
}
5958

@@ -63,20 +62,19 @@ func main() {
6362
log.Fatal("? Could not load environment variables", err)
6463
}
6564

66-
//consoleApiHost := os.Getenv("CONSOLE_API_HOST")
67-
//consoleApiPort := os.Getenv("CONSOLE_API_PORT")
68-
69-
corsConfig := cors.DefaultConfig()
70-
corsConfig.AllowOrigins = []string{"http://0.0.0.0:8080", config.ClientOrigin}
71-
//corsConfig.AllowAllOrigins = true
72-
//corsConfig.AllowCredentials = true
7365
// https://github.com/gin-gonic/gin/issues/2801
74-
//corsConfig.AddAllowMethods("OPTIONS")
66+
// corsConfig := cors.DefaultConfig()
67+
// corsConfig.AllowCredentials = true
68+
// corsConfig.AllowOrigins = []string{"http://localhost:8080", "http://localhost:3000", config.ClientOrigin}
69+
// corsConfig.AllowMethods = []string{"OPTIONS", "POST", "GET", "PUT"}
70+
// corsConfig.AllowHeader = []string{"Content-Type", "Authorization", "Origin"}
71+
72+
73+
// server.Use(cors.New(corsConfig))
7574

76-
//server.Use(cors.New(corsConfig))
77-
server.Use(corsMiddleware())
78-
server.Use(ResponseLogger())
79-
server.Use(RequestLogger())
75+
server.Use(middleware.CORSMiddleware())
76+
server.Use(middleware.ResponseLogger())
77+
server.Use(middleware.RequestLogger())
8078

8179
router := server.Group("/api")
8280
router.GET("/healthchecker", func(ctx *gin.Context) {
@@ -87,80 +85,6 @@ func main() {
8785
AuthRouteController.AuthRoute(router)
8886
UserRouteController.UserRoute(router)
8987
PostRouteController.PostRoute(router)
88+
ClusterRouteController.ClusterRoute(router)
9089
log.Fatal(server.Run(":" + config.ServerPort))
9190
}
92-
93-
94-
// https://jwstanly.com/blog/article/How+to+solve+SAM+403+Errors+on+CORS+Preflight
95-
func RequestLogger() gin.HandlerFunc {
96-
return func(c *gin.Context) {
97-
t := time.Now()
98-
99-
c1 := color.New(color.FgMagenta, color.Bold)
100-
c2 := color.New(color.FgWhite)
101-
c3 := color.New(color.FgYellow)
102-
c4 := color.New(color.FgCyan, color.Bold)
103-
c5 := color.New(color.FgWhite, color.Bold)
104-
105-
c.Next()
106-
107-
latency := time.Since(t)
108-
109-
c4.Printf("\n %s", c.Request.Method)
110-
c5.Printf("%s ", c.Request.RequestURI)
111-
c1.Printf("%s ", c.Request.Proto)
112-
c2.Printf("%s\n", latency)
113-
114-
for name, values := range c.Request.Header {
115-
for _, value := range values {
116-
c3.Printf(" %-20s:", name)
117-
c2.Printf("%-40s\n", value)
118-
}
119-
}
120-
}
121-
}
122-
123-
func ResponseLogger() gin.HandlerFunc {
124-
return func(c *gin.Context) {
125-
c.Writer.Header().Set("X-Content-Type-Options", "nosniff")
126-
127-
c.Next()
128-
129-
//c1 := color.New(color.FgMagenta, color.Bold)
130-
c2 := color.New(color.FgWhite)
131-
c3 := color.New(color.FgYellow)
132-
c4 := color.New(color.FgCyan, color.Bold)
133-
c5 := color.New(color.FgWhite, color.Bold)
134-
135-
c4.Printf("\n %s", c.Writer.Status())
136-
c4.Printf("%s ", c.Request.Method)
137-
c5.Printf("%s\n", c.Request.RequestURI)
138-
139-
for name, values := range c.Writer.Header() {
140-
for _, value := range values {
141-
c3.Printf(" %-40s:", name)
142-
c2.Printf("%-80s\n", value)
143-
}
144-
}
145-
146-
}
147-
}
148-
149-
150-
func corsMiddleware() gin.HandlerFunc {
151-
return func(c *gin.Context) {
152-
c.Writer.Header().Set("Access-Control-Allow-Origin",
153-
"http://localhost:3000, http://localhost:8080")
154-
c.Writer.Header().Set("Access-Control-Allow-Credentials", "true")
155-
c.Writer.Header().Set("Access-Control-Allow-Methods", "*")
156-
c.Writer.Header().Set("Access-Control-Allow-Headers", "Content-Type, Authorization")
157-
158-
if c.Request.Method == "OPTIONS" {
159-
c.AbortWithStatus(204)
160-
return
161-
}
162-
163-
c.Next()
164-
}
165-
}
166-

0 commit comments

Comments
 (0)