-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.go
More file actions
83 lines (73 loc) · 2.44 KB
/
main.go
File metadata and controls
83 lines (73 loc) · 2.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package main
import (
"crypto/tls"
"encoding/json"
"fmt"
"github.com/Ashish-devtron/image-scan-plugin/util"
"github.com/caarlos0/env"
"github.com/go-resty/resty/v2"
"log"
)
type ImageScanningInputVariables struct {
Dest string `env:"DEST"`
Digest string `env:"DIGEST"`
PipelineId int `env:"PIPELINE_ID"`
TriggeredBy int `env:"TRIGGERED_BY"`
DockerRegistryId string `env:"DOCKER_REGISTRY_ID"`
}
type ScanEvent struct {
Image string `json:"image"`
ImageDigest string `json:"imageDigest"`
AppId int `json:"appId"`
EnvId int `json:"envId"`
PipelineId int `json:"pipelineId"`
CiArtifactId int `json:"ciArtifactId"`
UserId int `json:"userId"`
AccessKey string `json:"accessKey"`
SecretKey string `json:"secretKey"`
Token string `json:"token"`
AwsRegion string `json:"awsRegion"`
DockerRegistryId string `json:"dockerRegistryId"`
}
type PubSubConfig struct {
ImageScannerEndpoint string `env:"IMAGE_SCANNER_ENDPOINT" envDefault:"http://image-scanner-new-demo-devtroncd-service.devtroncd:80"`
}
func main() {
imageScanningInputVariables := &ImageScanningInputVariables{}
err := env.Parse(imageScanningInputVariables)
util.LogStage("IMAGE SCAN")
log.Println(util.DEVTRON, " /image-scanner")
scanEvent := &ScanEvent{Image: imageScanningInputVariables.Dest, ImageDigest: imageScanningInputVariables.Digest, PipelineId: imageScanningInputVariables.PipelineId, UserId: imageScanningInputVariables.TriggeredBy}
scanEvent.DockerRegistryId = imageScanningInputVariables.DockerRegistryId
err = SendEventToClairUtility(scanEvent)
if err != nil {
log.Println(err)
panic(err)
}
log.Println(util.DEVTRON, " /image-scanner")
}
func SendEventToClairUtility(event *ScanEvent) error {
jsonBody, err := json.Marshal(event)
if err != nil {
log.Println(util.DEVTRON, "err", err)
return err
}
cfg := &PubSubConfig{}
err = env.Parse(cfg)
if err != nil {
return err
}
client := resty.New()
client.SetTLSClientConfig(&tls.Config{InsecureSkipVerify: true})
resp, err := client.R().
SetHeader("Content-Type", "application/json").
SetBody(jsonBody).
Post(fmt.Sprintf("%s/%s", cfg.ImageScannerEndpoint, "scanner/image"))
if err != nil {
log.Println(util.DEVTRON, "err in image scanner app over rest", err)
return err
}
log.Println(util.DEVTRON, resp.StatusCode())
log.Println(util.DEVTRON, resp)
return nil
}