-
Notifications
You must be signed in to change notification settings - Fork 132
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore: reduce startup time and add skaffold (#5970)
* chore: add skaffold * chore: add NATS retry * chore: add skaffold
- Loading branch information
1 parent
c08b9f8
commit 38733d5
Showing
12 changed files
with
320 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,11 +1,12 @@ | ||
.git | ||
.gitignore | ||
.github | ||
LICENSE | ||
README.md | ||
Makefile | ||
build | ||
docs | ||
assets | ||
config | ||
choco | ||
test | ||
test | ||
skaffold.yaml |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -45,3 +45,5 @@ movie.mp4 | |
/dist | ||
.vscode | ||
|
||
|
||
build/_local/values.dev.yaml |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
################################### | ||
## Build | ||
################################### | ||
FROM --platform=$BUILDPLATFORM golang:1.23-alpine AS builder | ||
|
||
ARG TARGETOS | ||
ARG TARGETARCH | ||
ARG GOMODCACHE="/root/.cache/go-build" | ||
ARG GOCACHE="/go/pkg" | ||
ARG SKAFFOLD_GO_GCFLAGS | ||
|
||
RUN apk --no-cache --update add ca-certificates && (rm -rf /var/cache/apk/* || 0) | ||
|
||
WORKDIR /app | ||
COPY . . | ||
RUN --mount=type=cache,target="$GOMODCACHE" \ | ||
--mount=type=cache,target="$GOCACHE" \ | ||
GOOS=$TARGETOS \ | ||
GOARCH=$TARGETARCH \ | ||
CGO_ENABLED=0 \ | ||
go build -gcflags="${SKAFFOLD_GO_GCFLAGS}" -o build/_local/agent-server cmd/api-server/main.go | ||
|
||
################################### | ||
## Debug | ||
################################### | ||
FROM golang:1.23-alpine AS debug | ||
|
||
ENV GOTRACEBACK=all | ||
RUN go install github.com/go-delve/delve/cmd/[email protected] | ||
|
||
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt | ||
COPY --from=builder /app/build/_local/agent-server /testkube/ | ||
|
||
ENTRYPOINT ["/go/bin/dlv", "exec", "--headless", "--continue", "--accept-multiclient", "--listen=:56268", "--api-version=2", "/testkube/agent-server"] | ||
|
||
################################### | ||
## Distribution | ||
################################### | ||
FROM scratch AS dist | ||
|
||
COPY LICENSE /testkube/ | ||
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt | ||
COPY --from=builder /app/build/_local/agent-server /testkube/ | ||
|
||
EXPOSE 8080 | ||
ENTRYPOINT ["/testkube/agent-server"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
ARG BUSYBOX_IMAGE="busybox:1.36.1-musl" | ||
|
||
################################### | ||
## Build testworkflow init | ||
################################### | ||
FROM --platform=$BUILDPLATFORM golang:1.23-alpine AS builder | ||
|
||
ARG TARGETOS | ||
ARG TARGETARCH | ||
ARG GOMODCACHE="/root/.cache/go-build" | ||
ARG GOCACHE="/go/pkg" | ||
ARG SKAFFOLD_GO_GCFLAGS | ||
|
||
WORKDIR /app | ||
COPY . . | ||
RUN --mount=type=cache,target="$GOMODCACHE" \ | ||
--mount=type=cache,target="$GOCACHE" \ | ||
GOOS=$TARGETOS \ | ||
GOARCH=$TARGETARCH \ | ||
CGO_ENABLED=0 \ | ||
go build -gcflags="${SKAFFOLD_GO_GCFLAGS}" -o build/_local/workflow-init cmd/testworkflow-init/main.go | ||
|
||
################################### | ||
## Build testworkflow toolkit | ||
################################### | ||
FROM --platform=$BUILDPLATFORM golang:1.23-alpine AS builder | ||
|
||
ARG TARGETOS | ||
ARG TARGETARCH | ||
ARG GOMODCACHE="/root/.cache/go-build" | ||
ARG GOCACHE="/go/pkg" | ||
ARG SKAFFOLD_GO_GCFLAGS | ||
|
||
WORKDIR /app | ||
COPY . . | ||
RUN --mount=type=cache,target="$GOMODCACHE" \ | ||
--mount=type=cache,target="$GOCACHE" \ | ||
GOOS=$TARGETOS \ | ||
GOARCH=$TARGETARCH \ | ||
CGO_ENABLED=0 \ | ||
go build -gcflags="${SKAFFOLD_GO_GCFLAGS}" -o build/_local/workflow-init cmd/testworkflow-init/main.go | ||
|
||
################################### | ||
## Debug | ||
################################### | ||
FROM golang:1.23-alpine AS debug | ||
|
||
ENV GOTRACEBACK=all | ||
RUN go install github.com/go-delve/delve/cmd/[email protected] | ||
|
||
COPY --from=builder /app/build/_local/workflow-init /testkube/ | ||
|
||
ENTRYPOINT ["/go/bin/dlv", "exec", "--headless", "--continue", "--accept-multiclient", "--listen=:56268", "--api-version=2", "/testkube/workflow-init"] | ||
|
||
################################### | ||
## Distribution | ||
################################### | ||
FROM ${BUSYBOX_IMAGE} AS dist | ||
RUN cp -rf /bin /.tktw-bin | ||
COPY --from=builder /app/build/_local/workflow-init /testkube/init | ||
USER 1001 | ||
ENTRYPOINT ["/init"] | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
ARG BUSYBOX_IMAGE="busybox:1.36.1-musl" | ||
ARG ALPINE_IMAGE="alpine:3.20.0" | ||
FROM ${BUSYBOX_IMAGE} AS busybox | ||
|
||
################################### | ||
## Build testworkflow-init | ||
################################### | ||
FROM --platform=$BUILDPLATFORM golang:1.23-alpine AS builder-init | ||
|
||
ARG TARGETOS | ||
ARG TARGETARCH | ||
ARG GOMODCACHE="/root/.cache/go-build" | ||
ARG GOCACHE="/go/pkg" | ||
ARG SKAFFOLD_GO_GCFLAGS | ||
|
||
WORKDIR /app | ||
COPY . . | ||
RUN --mount=type=cache,target="$GOMODCACHE" \ | ||
--mount=type=cache,target="$GOCACHE" \ | ||
GOOS=$TARGETOS \ | ||
GOARCH=$TARGETARCH \ | ||
CGO_ENABLED=0 \ | ||
go build -gcflags="${SKAFFOLD_GO_GCFLAGS}" -o build/_local/workflow-init cmd/testworkflow-init/main.go | ||
|
||
################################### | ||
## Build testworkflow-toolkit | ||
################################### | ||
FROM --platform=$BUILDPLATFORM golang:1.23-alpine AS builder-toolkit | ||
|
||
ARG TARGETOS | ||
ARG TARGETARCH | ||
ARG GOMODCACHE="/root/.cache/go-build" | ||
ARG GOCACHE="/go/pkg" | ||
ARG SKAFFOLD_GO_GCFLAGS | ||
|
||
RUN go install github.com/go-delve/delve/cmd/[email protected] | ||
|
||
WORKDIR /app | ||
COPY . . | ||
RUN --mount=type=cache,target="$GOMODCACHE" \ | ||
--mount=type=cache,target="$GOCACHE" \ | ||
GOOS=$TARGETOS \ | ||
GOARCH=$TARGETARCH \ | ||
CGO_ENABLED=0 \ | ||
go build -gcflags="${SKAFFOLD_GO_GCFLAGS}" -o build/_local/workflow-toolkit cmd/testworkflow-toolkit/main.go | ||
|
||
################################### | ||
## Debug | ||
################################### | ||
FROM ${ALPINE_IMAGE} AS debug | ||
RUN apk --no-cache add ca-certificates libssl3 git openssh-client | ||
ENV GOTRACEBACK=all | ||
COPY --from=builder-toolkit /go/bin/dlv / | ||
COPY --from=busybox /bin /.tktw-bin | ||
COPY --from=builder-toolkit /app/build/_local/workflow-toolkit /toolkit | ||
COPY --from=builder-init /app/build/_local/workflow-init /init | ||
RUN adduser --disabled-password --home / --no-create-home --uid 1001 default | ||
USER 1001 | ||
ENTRYPOINT ["/dlv", "exec", "--headless", "--accept-multiclient", "--listen=:56300", "--api-version=2", "/toolkit"] | ||
|
||
################################### | ||
## Distribution | ||
################################### | ||
FROM ${ALPINE_IMAGE} AS dist | ||
RUN apk --no-cache add ca-certificates libssl3 git openssh-client | ||
COPY --from=busybox /bin /.tktw-bin | ||
COPY --from=builder-toolkit /app/build/_local/workflow-toolkit /toolkit | ||
COPY --from=builder-init /app/build/_local/workflow-init /init | ||
RUN adduser --disabled-password --home / --no-create-home --uid 1001 default | ||
USER 1001 | ||
ENTRYPOINT ["/toolkit"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
testkube-dashboard: | ||
enabled: false | ||
mongodb: | ||
enabled: false | ||
testkube-api: | ||
cloud: | ||
url: testkube-enterprise-api:8089 | ||
tls: | ||
enabled: false | ||
existingSecret: | ||
name: testkube-default-agent-token | ||
key: agent-token |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
variable "GOCACHE" { | ||
default = "/go/pkg" | ||
} | ||
variable "GOMODCACHE" { | ||
default = "/root/.cache/go-build" | ||
} | ||
|
||
group "default" { | ||
targets = ["agent-server", "testworkflow-init", "testworkflow-toolkit"] | ||
} | ||
|
||
target "agent-server-meta" {} | ||
target "agent-server" { | ||
inherits = ["agent-server-meta"] | ||
context="." | ||
dockerfile = "build/_local/agent-server.Dockerfile" | ||
platforms = ["linux/arm64"] | ||
args = { | ||
GOCACHE = "${GOCACHE}" | ||
GOMODCACHE = "${GOMODCACHE}" | ||
} | ||
} | ||
|
||
target "testworkflow-init-meta" {} | ||
target "testworkflow-init" { | ||
inherits = ["testworkflow-init-meta"] | ||
context="." | ||
dockerfile = "build/_local/testworkflow-init.Dockerfile" | ||
platforms = ["linux/arm64"] | ||
args = { | ||
GOCACHE = "${GOCACHE}" | ||
GOMODCACHE = "${GOMODCACHE}" | ||
} | ||
} | ||
|
||
target "testworkflow-toolkit-meta" {} | ||
target "testworkflow-toolkit" { | ||
inherits = ["testworkflow-toolkit-meta"] | ||
context="." | ||
dockerfile = "build/_local/testworkflow-toolkit.Dockerfile" | ||
platforms = ["linux/arm64"] | ||
args = { | ||
GOCACHE = "${GOCACHE}" | ||
GOMODCACHE = "${GOMODCACHE}" | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,9 @@ | ||
package utils | ||
|
||
import "time" | ||
|
||
const ( | ||
// DefaultDockerRegistry is the default registry used when no registry is specified in the image name. | ||
DefaultDockerRegistry = "https://index.docker.io/v1/" | ||
DefaultRetryDelay = time.Second * 3 | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
apiVersion: skaffold/v4beta11 | ||
kind: Config | ||
metadata: | ||
name: testkube-agent | ||
build: | ||
local: | ||
concurrency: 1 # for testing, should be possible to run all concurrently. | ||
artifacts: | ||
- image: docker.io/testkube-agent-server | ||
context: . | ||
custom: | ||
buildCommand: GOCACHE="$(go env GOCACHE)" GOMODCACHE="$(go env GOMODCACHE)" docker buildx bake --set agent-server.tags="$IMAGE" --set agent-server.target="debug" agent-server | ||
dependencies: | ||
dockerfile: | ||
path: build/_local/agent-server.Dockerfile | ||
- image: docker.io/testworkflow-init | ||
context: . | ||
custom: | ||
buildCommand: GOCACHE="$(go env GOCACHE)" GOMODCACHE="$(go env GOMODCACHE)" docker buildx bake --set testworkflow-init.tags="$IMAGE" testworkflow-init | ||
dependencies: | ||
dockerfile: | ||
path: build/_local/testworkflow-init.Dockerfile | ||
- image: docker.io/testworkflow-toolkit | ||
context: . | ||
custom: | ||
buildCommand: GOCACHE="$(go env GOCACHE)" GOMODCACHE="$(go env GOMODCACHE)" docker buildx bake --set testworkflow-toolkit.tags="$IMAGE" --set testworkflow-toolkit.target="debug" testworkflow-toolkit | ||
dependencies: | ||
dockerfile: | ||
path: build/_local/testworkflow-toolkit.Dockerfile | ||
deploy: | ||
helm: | ||
# see https://skaffold.dev/docs/renderers/helm/#skaffoldyaml-configuration | ||
releases: | ||
- name: testkube-agent | ||
repo: https://kubeshop.github.io/helm-charts | ||
remoteChart: testkube | ||
# Alternative: Local chart - useful for when you are actively making changes to the chart. | ||
# chartPath: /Users/you/path/to/helm-charts/charts/testkube | ||
upgradeOnChange: true | ||
# skipBuildDependencies: true # This implies that you need to build dependencies yourself when you make local chart changes! | ||
namespace: tk-dev | ||
wait: true | ||
createNamespace: true | ||
valuesFiles: ['build/_local/values.dev.yaml'] # IMPORTANT: You will have to copy the values.dev.tpl.yaml template to get started! | ||
setValueTemplates: | ||
testkube-api.image.registry: '{{.IMAGE_DOMAIN_docker_io_testkube_agent_server}}' | ||
testkube-api.image.repository: '{{.IMAGE_REPO_NO_DOMAIN_docker_io_testkube_agent_server}}' | ||
testkube-api.image.tag: '{{.IMAGE_TAG_docker_io_testkube_agent_server}}@{{.IMAGE_DIGEST_docker_io_testkube_agent_server}}' | ||
testkube-api.imageTwInit.registry: '{{.IMAGE_DOMAIN_docker_io_testworkflow_init}}' | ||
testkube-api.imageTwInit.repository: '{{.IMAGE_REPO_NO_DOMAIN_docker_io_testworkflow_init}}' | ||
testkube-api.imageTwInit.tag: '{{.IMAGE_TAG_docker_io_testworkflow_init}}@{{.IMAGE_DIGEST_docker_io_testworkflow_init}}' | ||
testkube-api.imageTwToolkit.registry: '{{.IMAGE_DOMAIN_docker_io_testworkflow_toolkit}}' | ||
testkube-api.imageTwToolkit.repository: '{{.IMAGE_REPO_NO_DOMAIN_docker_io_testworkflow_toolkit}}' | ||
testkube-api.imageTwToolkit.tag: '{{.IMAGE_TAG_docker_io_testworkflow_toolkit}}@{{.IMAGE_DIGEST_docker_io_testworkflow_toolkit}}' | ||
flags: | ||
upgrade: ["--no-hooks"] | ||
statusCheckDeadlineSeconds: 300 | ||
tolerateFailuresUntilDeadline: true |