diff --git a/backend/server/Dockerfile b/backend/server/Dockerfile index e2aeacc..bc29183 100644 --- a/backend/server/Dockerfile +++ b/backend/server/Dockerfile @@ -1,8 +1,10 @@ -FROM golang:1.17 +FROM golang:1.17 AS builder COPY go.mod ./ COPY go.sum ./ RUN unset GOPATH; go mod download COPY . ./ RUN unset GOPATH; go build -o /server -ldflags "-X main.ReleaseVersion=v0.`cat VERSION`" backend/server/server.go -CMD [ "/server" ] +FROM golang:1.17 +COPY --from=builder /server /server +CMD ["/server"] diff --git a/backend/server/server.go b/backend/server/server.go index 3dcbbfe..b105c6d 100644 --- a/backend/server/server.go +++ b/backend/server/server.go @@ -166,20 +166,35 @@ func init() { go runBackgroundJobs() } +func cron() error { + err := updateReleaseVersion() + if err != nil { + fmt.Println(err) + } + err = cleanDatabase() + if err != nil { + fmt.Println(err) + } + return nil +} + func runBackgroundJobs() { for { - err := updateReleaseVersion() + err := cron() if err != nil { - fmt.Println(err) - } - err = cleanDatabase() - if err != nil { - fmt.Println(err) + fmt.Printf("Cron failure: %v", err) } time.Sleep(10 * time.Minute) } } +func triggerCronHandler(w http.ResponseWriter, r *http.Request) { + err := cron() + if err != nil { + panic(err) + } +} + type releaseInfo struct { Name string `json:"name"` } @@ -297,6 +312,7 @@ func main() { http.Handle("/api/v1/ebootstrap", withLogging(apiEBootstrapHandler)) http.Handle("/api/v1/eregister", withLogging(apiERegisterHandler)) http.Handle("/api/v1/banner", withLogging(apiBannerHandler)) + http.Handle("/api/v1/trigger-cron", withLogging(triggerCronHandler)) http.Handle("/download/hishtory-linux-amd64", withLogging(bindaryDownloadHandler)) http.Handle("/download/hishtory-linux-amd64.intoto.jsonl", withLogging(attestationDownloadHandler)) log.Fatal(http.ListenAndServe(":8080", nil))