Parent directory

main.go

1052 bytes
 1package main
 2
 3import (
 4	"log/slog"
 5	"net/http"
 6	"os"
 7)
 8
 9func main() {
10	slog.SetDefault(slog.New(slog.NewTextHandler(os.Stderr, nil)))
11
12	config, err := loadConfig()
13	if err != nil {
14		slog.Error("load configuration", "error", err)
15		os.Exit(1)
16	}
17
18	database, err := openDatabase(config.databasePath)
19	if err != nil {
20		slog.Error("open database", "error", err)
21		os.Exit(1)
22	}
23	defer func() {
24		if err := database.close(); err != nil {
25			slog.Error("close database", "error", err)
26		}
27	}()
28
29	statuses := newBuildStatuses(database)
30	jobs := make(chan buildJob, 100)
31	go runWorker(config, jobs, statuses)
32
33	server := http.NewServeMux()
34	server.HandleFunc("POST /build", buildHandler(jobs, statuses))
35	server.HandleFunc("POST /build-statuses", buildStatusHandler(statuses))
36	slog.Info("worker started", "address", ":8080", "registry", config.registry, "buildkit_address", config.buildkitAddress, "database_path", config.databasePath)
37	if err := http.ListenAndServe(":8080", server); err != nil {
38		slog.Error("serve HTTP", "error", err)
39		os.Exit(1)
40	}
41}