diff --git a/renovate.json b/renovate.json index 4fc3ab49f..23c255ab9 100644 --- a/renovate.json +++ b/renovate.json @@ -36,7 +36,11 @@ "stacks/java-openliberty-gradle/**", "stacks/java-websphereliberty/**", "stacks/java-websphereliberty-gradle/**", - "stacks/nodejs/**" + "stacks/nodejs/**", + "stacks/go/1.0.2/**", + "stacks/go/1.1.0/**", + "stacks/go/2.0.0/**", + "stacks/go/2.1.0/**" ], "prHourlyLimit": 20, "prConcurrentLimit": 5 diff --git a/stacks/go/1.0.2/devfile.yaml b/stacks/go/1.0.2/devfile.yaml index 5faf77bc9..cdd1b9a92 100644 --- a/stacks/go/1.0.2/devfile.yaml +++ b/stacks/go/1.0.2/devfile.yaml @@ -6,6 +6,7 @@ metadata: icon: https://raw.githubusercontent.com/devfile-samples/devfile-stack-icons/main/golang.svg tags: - Go + - Deprecated projectType: Go language: Go provider: Red Hat diff --git a/stacks/go/1.1.0/devfile.yaml b/stacks/go/1.1.0/devfile.yaml index b6e293dd4..ba1022dc8 100644 --- a/stacks/go/1.1.0/devfile.yaml +++ b/stacks/go/1.1.0/devfile.yaml @@ -6,6 +6,7 @@ metadata: icon: https://raw.githubusercontent.com/devfile-samples/devfile-stack-icons/main/golang.svg tags: - Go + - Deprecated projectType: Go language: Go provider: Red Hat diff --git a/stacks/go/1.2.0/devfile.yaml b/stacks/go/1.2.0/devfile.yaml new file mode 100644 index 000000000..fe0ca80d2 --- /dev/null +++ b/stacks/go/1.2.0/devfile.yaml @@ -0,0 +1,76 @@ +schemaVersion: 2.1.0 +metadata: + name: go + displayName: Go Runtime + description: Go (version 1.19.x) is an open source programming language that makes it easy to build simple, reliable, and efficient software. + icon: https://raw.githubusercontent.com/devfile-samples/devfile-stack-icons/main/golang.svg + tags: + - Go + projectType: Go + language: Go + provider: Red Hat + version: 1.2.0 +starterProjects: + - name: go-starter + description: A Go project with a simple HTTP server + git: + checkoutFrom: + revision: main + remotes: + origin: https://github.com/devfile-samples/devfile-stack-go.git +components: + - container: + endpoints: + - name: http-go + targetPort: 8080 + - exposure: none + name: debug + targetPort: 5858 + image: registry.access.redhat.com/ubi9/go-toolset:1.19.13-4.1697647145 + args: ["tail", "-f", "/dev/null"] + env: + - name: DEBUG_PORT + value: '5858' + memoryLimit: 1024Mi + mountSources: true + name: runtime +commands: + - exec: + env: + - name: GOPATH + value: ${PROJECT_SOURCE}/.go + - name: GOCACHE + value: ${PROJECT_SOURCE}/.cache + commandLine: go build main.go + component: runtime + group: + isDefault: true + kind: build + workingDir: ${PROJECT_SOURCE} + id: build + - exec: + commandLine: ./main + component: runtime + group: + isDefault: true + kind: run + workingDir: ${PROJECT_SOURCE} + id: run + + - exec: + commandLine: | + GOPATH=${PROJECT_SOURCE}/.go \ + GOCACHE=${PROJECT_SOURCE}/.cache \ + dlv \ + --listen=127.0.0.1:${DEBUG_PORT} \ + --only-same-user=false \ + --headless=true \ + --api-version=2 \ + --accept-multiclient \ + debug --continue main.go + component: runtime + group: + isDefault: true + kind: debug + workingDir: ${PROJECT_SOURCE} + id: debug diff --git a/stacks/go/2.0.0/devfile.yaml b/stacks/go/2.0.0/devfile.yaml index 8722ad675..54aa5b447 100644 --- a/stacks/go/2.0.0/devfile.yaml +++ b/stacks/go/2.0.0/devfile.yaml @@ -6,6 +6,7 @@ metadata: icon: https://raw.githubusercontent.com/devfile-samples/devfile-stack-icons/main/golang.svg tags: - Go + - Deprecated projectType: Go language: Go provider: Red Hat diff --git a/stacks/go/2.1.0/devfile.yaml b/stacks/go/2.1.0/devfile.yaml index 6fb61f937..f3b5d1e0d 100644 --- a/stacks/go/2.1.0/devfile.yaml +++ b/stacks/go/2.1.0/devfile.yaml @@ -6,6 +6,7 @@ metadata: icon: https://raw.githubusercontent.com/devfile-samples/devfile-stack-icons/main/golang.svg tags: - Go + - Deprecated projectType: Go language: Go provider: Red Hat diff --git a/stacks/go/2.2.0/devfile.yaml b/stacks/go/2.2.0/devfile.yaml new file mode 100644 index 000000000..69ec50aa6 --- /dev/null +++ b/stacks/go/2.2.0/devfile.yaml @@ -0,0 +1,103 @@ +schemaVersion: 2.2.0 +metadata: + name: go + displayName: Go Runtime + description: Go (version 1.19.x) is an open source programming language that makes it easy to build simple, reliable, and efficient software. + icon: https://raw.githubusercontent.com/devfile-samples/devfile-stack-icons/main/golang.svg + tags: + - Go + projectType: Go + language: Go + provider: Red Hat + version: 2.2.0 +starterProjects: + - name: go-starter + description: A Go project with a simple HTTP server + git: + checkoutFrom: + revision: main + remotes: + origin: https://github.com/devfile-samples/devfile-stack-go.git +components: + - name: build + image: + imageName: go-image:latest + dockerfile: + uri: docker/Dockerfile + buildContext: . + rootRequired: false + - name: deploy + kubernetes: + uri: kubernetes/deploy.yaml + endpoints: + - name: http-8081 + targetPort: 8081 + - container: + endpoints: + - name: http-go + targetPort: 8080 + - exposure: none + name: debug + targetPort: 5858 + image: registry.access.redhat.com/ubi9/go-toolset:1.19.13-4.1697647145 + args: ['tail', '-f', '/dev/null'] + env: + - name: DEBUG_PORT + value: '5858' + memoryLimit: 1024Mi + mountSources: true + name: runtime +commands: + - id: build-image + apply: + component: build + - id: deployk8s + apply: + component: deploy + - id: deploy + composite: + commands: + - build-image + - deployk8s + group: + kind: deploy + isDefault: true + - exec: + env: + - name: GOPATH + value: ${PROJECT_SOURCE}/.go + - name: GOCACHE + value: ${PROJECT_SOURCE}/.cache + commandLine: go build main.go + component: runtime + group: + isDefault: true + kind: build + workingDir: ${PROJECT_SOURCE} + id: build + - exec: + commandLine: ./main + component: runtime + group: + isDefault: true + kind: run + workingDir: ${PROJECT_SOURCE} + id: run + + - exec: + commandLine: | + GOPATH=${PROJECT_SOURCE}/.go \ + GOCACHE=${PROJECT_SOURCE}/.cache \ + dlv \ + --listen=127.0.0.1:${DEBUG_PORT} \ + --only-same-user=false \ + --headless=true \ + --api-version=2 \ + --accept-multiclient \ + debug --continue main.go + component: runtime + group: + isDefault: true + kind: debug + workingDir: ${PROJECT_SOURCE} + id: debug diff --git a/stacks/go/2.2.0/docker/Dockerfile b/stacks/go/2.2.0/docker/Dockerfile new file mode 100644 index 000000000..ee1f97b82 --- /dev/null +++ b/stacks/go/2.2.0/docker/Dockerfile @@ -0,0 +1,12 @@ +FROM registry.access.redhat.com/ubi9/go-toolset:1.19.13-4.1697647145 + +COPY go.mod ./ +RUN go mod download + +COPY *.go ./ + +RUN go build -o ./main + +EXPOSE 8081 + +CMD [ "./main" , "-p=8081"] diff --git a/stacks/go/2.2.0/kubernetes/deploy.yaml b/stacks/go/2.2.0/kubernetes/deploy.yaml new file mode 100644 index 000000000..2cd45e0a4 --- /dev/null +++ b/stacks/go/2.2.0/kubernetes/deploy.yaml @@ -0,0 +1,41 @@ +kind: Service +apiVersion: v1 +metadata: + name: my-go-svc +spec: + ports: + - name: http-8081 + port: 8081 + protocol: TCP + targetPort: 8081 + selector: + app: go-app +--- +kind: Deployment +apiVersion: apps/v1 +metadata: + name: my-go +spec: + replicas: 1 + selector: + matchLabels: + app: go-app + template: + metadata: + labels: + app: go-app + spec: + containers: + - name: my-go + image: go-image:latest + ports: + - name: http + containerPort: 8081 + protocol: TCP + resources: + requests: + memory: "10Mi" + cpu: "10m" + limits: + memory: "100Mi" + cpu: "100m" diff --git a/stacks/go/stack.yaml b/stacks/go/stack.yaml index 596896c03..2925a36dd 100644 --- a/stacks/go/stack.yaml +++ b/stacks/go/stack.yaml @@ -4,9 +4,13 @@ displayName: Go Runtime icon: https://raw.githubusercontent.com/devfile-samples/devfile-stack-icons/main/golang.svg versions: - version: 1.0.2 - default: true # should have one and only one default version # 1.1.0: debug command via dlv - version: 1.1.0 + # 1.2.0: debug command via dlv & go 1.19 + - version: 1.2.0 + default: true # should have one and only one default version - version: 2.0.0 # 2.1.0: debug command via dlv - version: 2.1.0 + # 2.2.0: debug command via dlv & go 1.19 + - version: 2.2.0 \ No newline at end of file