Skip to content
This repository was archived by the owner on Oct 24, 2024. It is now read-only.

Commit 41da2d7

Browse files
author
Vipul Rawat
authored
Remove cloud dependency and update linters (#7)
1 parent 11eb454 commit 41da2d7

File tree

7 files changed

+248
-374
lines changed

7 files changed

+248
-374
lines changed

.github/workflows/cicd.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,13 @@ jobs:
5454
- name: Checkout code
5555
uses: actions/checkout@v4
5656

57-
- name: Install Go 1.21
57+
- name: Install Go 1.22
5858
uses: actions/setup-go@v4
5959
with:
60-
go-version: 1.21
60+
go-version: 1.22
6161

6262
- name: golangci-lint
63-
uses: golangci/golangci-lint-action@v3
63+
uses: golangci/golangci-lint-action@v6
6464
with:
6565
version: v1.59.1
6666
args: --timeout=9m

deploy.go

Lines changed: 57 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -1,111 +1,86 @@
11
package main
22

33
import (
4-
"encoding/json"
54
"errors"
65
"fmt"
76
"os"
8-
"os/exec"
97
"path/filepath"
8+
"strings"
9+
"text/template"
1010

1111
"gofr.dev/pkg/gofr"
1212

13-
"kops.dev/internal/models"
14-
)
15-
16-
const (
17-
gcp = "GCP"
18-
executableName = "main"
13+
"kops.dev/internal/templates"
1914
)
2015

2116
var (
22-
errDepKeyNotProvided = errors.New("KOPS_DEPLOYMENT_KEY not provided, please download the key form https://kops.dev")
23-
errCloudProviderNotRecognized = errors.New("cloud provider in KOPS_DEPLOYMENT_KEY is not provided or supported")
17+
errDepKeyNotProvided = errors.New("KOPS_DEPLOYMENT_KEY not provided, " +
18+
"please download the key form https://kops.dev")
19+
errLanguageNotProvided = errors.New("unable to create DockerFile as project " +
20+
"programming language not provided. Please Provide a programming language using -lang=<language>")
21+
errLanguageNotSupported = errors.New("creating DockerFile for provided language is not supported yet")
2422
)
2523

2624
func Deploy(ctx *gofr.Context) (interface{}, error) {
27-
var deploy models.Deploy
28-
2925
keyFile := os.Getenv("KOPS_DEPLOYMENT_KEY")
3026
if keyFile == "" {
3127
return nil, errDepKeyNotProvided
3228
}
3329

34-
f, err := os.ReadFile(filepath.Clean(keyFile))
35-
if err != nil {
36-
return nil, err
37-
}
38-
39-
err = json.Unmarshal(f, &deploy)
40-
if err != nil {
41-
return nil, err
42-
}
43-
44-
// build binaries for the current working directory
45-
err = buildBinary()
30+
// letting this key file to be used later
31+
_, err := os.ReadFile(filepath.Clean(keyFile))
4632
if err != nil {
4733
return nil, err
4834
}
4935

50-
// create and build docker image
51-
err = createGoDockerFile()
52-
if err != nil {
53-
return nil, err
54-
}
55-
56-
tag := ctx.Param("tag")
57-
if tag == "" {
58-
tag = "latest"
59-
}
36+
fi, _ := os.Stat("Dockerfile")
37+
if fi != nil {
38+
fmt.Println("Dockerfile present, using already created dockerfile")
39+
} else {
40+
// removing the cloud-specific logic from cli to hosted service
41+
lang := ctx.Param("lang")
42+
if lang == "" {
43+
ctx.Logger.Errorf("%v", errLanguageNotProvided)
6044

61-
image := filepath.Clean(deploy.ServiceName + ":" + tag)
45+
return nil, errLanguageNotProvided
46+
}
6247

63-
err = replaceInputOutput(exec.Command("docker", "build", "-t", image, ".")).Run()
64-
if err != nil {
65-
return nil, err
66-
}
48+
port := ctx.Param("p")
49+
if port == "" {
50+
port = "8000"
51+
}
6752

68-
// check what cloud provider is
69-
switch deploy.CloudProvider {
70-
case gcp:
71-
err = deployGCP(&deploy, image)
72-
if err != nil {
53+
if err := createDockerFile(ctx, lang, port); err != nil {
7354
return nil, err
7455
}
75-
76-
return "Successfully deployed!", nil
77-
default:
78-
return nil, errCloudProviderNotRecognized
79-
}
80-
}
81-
82-
func buildBinary() error {
83-
fmt.Println("Creating binary for the project")
84-
85-
output, err := exec.Command("sh", "-c", "CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o "+executableName+" .").CombinedOutput()
86-
if err != nil {
87-
fmt.Println("error occurred while creating binary!", output)
88-
89-
return err
9056
}
9157

92-
fmt.Println("Binary created successfully")
58+
// TODO: build and push the docker image to the Kops API
59+
// Also need to figure out the contract for the API
9360

94-
return nil
61+
return "Successful", nil
9562
}
9663

97-
func createGoDockerFile() error {
98-
content := `FROM alpine:latest
99-
RUN apk add --no-cache tzdata ca-certificates
100-
COPY main ./main
101-
RUN chmod +x /main
102-
EXPOSE 8000
103-
CMD ["/main"]`
64+
func createDockerFile(ctx *gofr.Context, lang, port string) error {
65+
var content string
66+
67+
// get the template content for dockerFile based on the language
68+
switch strings.ToLower(lang) {
69+
case "go":
70+
content = templates.Golang
71+
case "java":
72+
content = templates.Java
73+
case "js":
74+
content = templates.Js
75+
default:
76+
ctx.Logger.Errorf("creating DockerFile for %s is not supported yet,"+
77+
" reach us at https://github.com/kops-dev/kops-cli/issues to know more", lang)
10478

105-
fi, _ := os.Stat("Dockerfile")
106-
if fi != nil {
107-
fmt.Println("Dockerfile present, using already created dockerfile")
108-
return nil
79+
fmt.Printf("creating DockerFile for %s is not supported yet, "+
80+
"reach us at https://github.com/kops-dev/kops-cli/issues to know more\n", lang)
81+
fmt.Println("you can create your own DockerFile and run the kops-cli again.")
82+
83+
return errLanguageNotSupported
10984
}
11085

11186
file, err := os.Create("Dockerfile")
@@ -115,11 +90,19 @@ CMD ["/main"]`
11590

11691
defer file.Close()
11792

118-
if _, err = file.WriteString(content); err != nil {
93+
t := template.New(lang)
94+
95+
temp, err := t.Parse(content)
96+
if err != nil {
11997
return err
12098
}
12199

122-
fmt.Println("Dockerfile created successfully!")
100+
if er := temp.Execute(file, port); er != nil {
101+
ctx.Logger.Error("error while creating DockerFile", er)
102+
fmt.Println("unable to create the DockerFile, please check permissions for creating files in the directory")
103+
104+
return er
105+
}
123106

124107
return nil
125108
}

gcp.go

Lines changed: 0 additions & 121 deletions
This file was deleted.

0 commit comments

Comments
 (0)