Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ RUN go mod download
# Copy the rest of the project to ensure code changes doesnt trigger re-download of all deps
COPY . .

RUN CGO_ENABLED=0 GOOS=$TARGETOS GOARCH=$GOARCH go build -a -installsuffix cgo -o main .
RUN CGO_ENABLED=0 GOOS=$TARGETOS GOARCH=$TARGETARCH go build -a -installsuffix cgo -o main .


############################
Expand Down
2 changes: 1 addition & 1 deletion cached.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ COPY . .
ENV GOCACHE=/root/.cache/go-build
RUN --mount=type=cache,target=/go/pkg/mod/ \
--mount=type=cache,target="/root/.cache/go-build" \
CGO_ENABLED=0 GOOS=$TARGETOS GOARCH=$GOARCH go build -a -installsuffix cgo -o main .
CGO_ENABLED=0 GOOS=$TARGETOS GOARCH=$TARGETARCH go build -a -installsuffix cgo -o main .


############################
Expand Down
2 changes: 1 addition & 1 deletion docs/api/v2/V2_docs.go

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion docs/api/v2/V2_swagger.json

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions docs/api/v2/V2_swagger.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,11 @@ components:
uniqueItems: false
internalPort:
type: integer
internalPorts:
items:
type: integer
type: array
uniqueItems: false
name:
type: string
neverStale:
Expand Down
1 change: 1 addition & 0 deletions dto/v2/body/deployment.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ type DeploymentRead struct {
InitCommands []string `json:"initCommands"`
Args []string `json:"args"`
InternalPort int `json:"internalPort"`
InternalPorts []int `json:"internalPorts,omitempty"`
Image *string `json:"image,omitempty"`
HealthCheckPath *string `json:"healthCheckPath,omitempty"`
CustomDomain *CustomDomainRead `json:"customDomain,omitempty"`
Expand Down
1 change: 1 addition & 0 deletions export/types/v2/body/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ export interface DeploymentRead {
initCommands: string[];
args: string[];
internalPort: number /* int */;
internalPorts?: number /* int */[];
image?: string;
healthCheckPath?: string;
customDomain?: CustomDomainRead;
Expand Down
78 changes: 73 additions & 5 deletions models/model/deployment_convert.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@ package model

import (
"fmt"
"slices"
"strconv"
"strings"

"github.com/kthcloud/go-deploy/dto/v2/body"
"github.com/kthcloud/go-deploy/pkg/log"
Expand All @@ -20,18 +22,58 @@ func (deployment *Deployment) ToDTO(smURL *string, externalPort *int, teams []st

envs := make([]body.Env, len(app.Envs))

envs = append(envs, body.Env{
Name: "PORT",
Value: fmt.Sprintf("%d", app.InternalPort),
})

portIndex := -1
internalPortIndex := -1
for i, env := range app.Envs {
if env.Name == "PORT" {
portIndex = i
continue
} else if env.Name == "INTERNAL_PORTS" {
internalPortIndex = i
continue
}
envs[i] = body.Env{
Name: env.Name,
Value: env.Value,
}
}

if portIndex == -1 {
envs = append(envs, body.Env{
Name: "PORT",
Value: fmt.Sprintf("%d", app.InternalPort),
})
} else {
envs[portIndex] = body.Env{
Name: "PORT",
Value: fmt.Sprintf("%d", app.InternalPort),
}
}
if internalPortIndex == -1 {
if len(app.InternalPorts) > 0 {
portsStr := make([]string, len(app.InternalPorts))
for i, port := range app.InternalPorts {
portsStr[i] = fmt.Sprintf("%d", port)
}

envs = append(envs, body.Env{
Name: "INTERNAL_PORTS",
Value: strings.Join(portsStr, ","),
})
}
} else if len(app.InternalPorts) > 0 {
portsStr := make([]string, len(app.InternalPorts))
for i, port := range app.InternalPorts {
portsStr[i] = fmt.Sprintf("%d", port)
}
envs[internalPortIndex] = body.Env{
Name: "INTERNAL_PORTS",
Value: strings.Join(portsStr, ","),
}
} else {
envs = slices.Delete(envs, internalPortIndex, internalPortIndex+1)
}

volumes := make([]body.Volume, len(app.Volumes))
for i, volume := range app.Volumes {
volumes[i] = body.Volume{
Expand Down Expand Up @@ -125,6 +167,7 @@ func (deployment *Deployment) ToDTO(smURL *string, externalPort *int, teams []st
InitCommands: app.InitCommands,
Args: app.Args,
InternalPort: app.InternalPort,
InternalPorts: app.InternalPorts,
Image: image,
HealthCheckPath: healthCheckPath,
CustomDomain: customDomain,
Expand Down Expand Up @@ -171,6 +214,18 @@ func (p *DeploymentCreateParams) FromDTO(dto *body.DeploymentCreate, fallbackZon
p.InternalPort = port
continue
}
if env.Name == "INTERNAL_PORTS" {
portsStr := strings.Split(env.Value, ",")
var internalPorts []int
for _, prt := range portsStr {
prt = strings.TrimSpace(prt)
if port, err := strconv.Atoi(prt); err == nil {
internalPorts = append(internalPorts, port)
}
}
p.InternalPorts = internalPorts
continue
}

p.Envs = append(p.Envs, DeploymentEnv{
Name: env.Name,
Expand Down Expand Up @@ -240,6 +295,19 @@ func (p *DeploymentUpdateParams) FromDTO(dto *body.DeploymentUpdate, deploymentT
continue
}

if env.Name == "INTERNAL_PORTS" {
portsStr := strings.Split(env.Value, ",")
var internalPorts []int
for _, prt := range portsStr {
prt = strings.TrimSpace(prt)
if port, err := strconv.Atoi(prt); err == nil {
internalPorts = append(internalPorts, port)
}
}
p.InternalPorts = &internalPorts
continue
}

envs = append(envs, DeploymentEnv{
Name: env.Name,
Value: env.Value,
Expand Down
40 changes: 21 additions & 19 deletions models/model/deployment_params.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,16 @@ type DeploymentCreateParams struct {
RAM float64
Replicas int

Image string
InternalPort int
Envs []DeploymentEnv
Volumes []DeploymentVolume
InitCommands []string
Args []string
PingPath string
CustomDomain *string
Visibility string
Image string
InternalPort int
InternalPorts []int
Envs []DeploymentEnv
Volumes []DeploymentVolume
InitCommands []string
Args []string
PingPath string
CustomDomain *string
Visibility string

NeverStale bool

Expand All @@ -30,16 +31,17 @@ type DeploymentUpdateParams struct {
CpuCores *float64
RAM *float64

Envs *[]DeploymentEnv
InternalPort *int
Volumes *[]DeploymentVolume
InitCommands *[]string
Args *[]string
CustomDomain *string
Image *string
PingPath *string
Replicas *int
Visibility *string
Envs *[]DeploymentEnv
InternalPort *int
InternalPorts *[]int
Volumes *[]DeploymentVolume
InitCommands *[]string
Args *[]string
CustomDomain *string
Image *string
PingPath *string
Replicas *int
Visibility *string

NeverStale *bool
}
Expand Down
11 changes: 6 additions & 5 deletions models/model/deployment_related.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,12 @@ type App struct {
RAM float64 `bson:"ram,omitempty"`
Replicas int `bson:"replicas"`

Image string `bson:"image"`
InternalPort int `bson:"internalPort"`
Envs []DeploymentEnv `bson:"envs"`
Volumes []DeploymentVolume `bson:"volumes"`
Visibility string `bson:"visibility"`
Image string `bson:"image"`
InternalPort int `bson:"internalPort"`
InternalPorts []int `bson:"internalPorts"`
Envs []DeploymentEnv `bson:"envs"`
Volumes []DeploymentVolume `bson:"volumes"`
Visibility string `bson:"visibility"`

// Deprecated: use Visibility instead.
Private bool `bson:"private"`
Expand Down
12 changes: 7 additions & 5 deletions pkg/db/resources/deployment_repo/db.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,12 @@ func (client *Client) Create(id, ownerID string, params *model.DeploymentCreateP
RAM: params.RAM,
Replicas: params.Replicas,

Image: params.Image,
InternalPort: params.InternalPort,
Envs: params.Envs,
Volumes: params.Volumes,
Visibility: params.Visibility,
Image: params.Image,
InternalPort: params.InternalPort,
InternalPorts: params.InternalPorts,
Envs: params.Envs,
Volumes: params.Volumes,
Visibility: params.Visibility,

Args: params.Args,
InitCommands: params.InitCommands,
Expand Down Expand Up @@ -132,6 +133,7 @@ func (client *Client) UpdateWithParams(id string, params *model.DeploymentUpdate
db.AddIfNotNil(&setUpdate, "name", params.Name)
db.AddIfNotNil(&setUpdate, "ownerId", params.OwnerID)
db.AddIfNotNil(&setUpdate, "apps.main.internalPort", params.InternalPort)
db.AddIfNotNil(&setUpdate, "apps.main.internalPorts", params.InternalPorts)
db.AddIfNotNil(&setUpdate, "apps.main.envs", params.Envs)
db.AddIfNotNil(&setUpdate, "apps.main.volumes", params.Volumes)
db.AddIfNotNil(&setUpdate, "apps.main.initCommands", params.InitCommands)
Expand Down
Loading