diff options
| author | Xe Iaso <me@xeiaso.net> | 2023-09-27 20:27:48 -0400 |
|---|---|---|
| committer | Xe Iaso <me@xeiaso.net> | 2023-09-27 20:27:48 -0400 |
| commit | 243005626f53711cb98bba06f349c159d1b91afd (patch) | |
| tree | 6766366a67eea811f603fd940c59ea0bea551547 /xesite/github.go | |
| parent | 066bf3207ab04f75d9ed038dd1b5f78340276812 (diff) | |
| download | xesite-243005626f53711cb98bba06f349c159d1b91afd.tar.xz xesite-243005626f53711cb98bba06f349c159d1b91afd.zip | |
add gokrazy post
Signed-off-by: Xe Iaso <me@xeiaso.net>
Diffstat (limited to 'xesite/github.go')
| -rw-r--r-- | xesite/github.go | 67 |
1 files changed, 0 insertions, 67 deletions
diff --git a/xesite/github.go b/xesite/github.go deleted file mode 100644 index bde7c9d..0000000 --- a/xesite/github.go +++ /dev/null @@ -1,67 +0,0 @@ -package main - -import ( - "context" - "encoding/json" - "expvar" - "fmt" - "log/slog" - "net/http" - "time" - - "github.com/go-git/go-git/v5" - "tailscale.com/metrics" - "xeiaso.net/v4/internal/github" - "xeiaso.net/v4/internal/lume" -) - -var ( - webhookCount = metrics.LabelMap{Label: "source"} - buildErrors = metrics.LabelMap{Label: "err"} -) - -func init() { - expvar.Publish("gauge_xesite_webhook_count", &webhookCount) - expvar.Publish("gauge_xesite_build_errors", &buildErrors) -} - -type GitHubWebhook struct { - fs *lume.FS -} - -func (gh *GitHubWebhook) ServeHTTP(w http.ResponseWriter, r *http.Request) { - webhookCount.Add("github", 1) - - if r.Header.Get("X-GitHub-Event") != "push" { - slog.Info("not a push event", "event", r.Header.Get("X-GitHub-Event")) - } - - var event github.PushEvent - if err := json.NewDecoder(r.Body).Decode(&event); err != nil { - slog.Error("error decoding event", "error", err) - http.Error(w, err.Error(), http.StatusBadRequest) - return - } - - slog.Info("push!", "ref", event.Ref, "author", event.Pusher.Login) - - if event.Ref != "refs/heads/"+*gitBranch { - slog.Error("not the right branch", "branch", event.Ref) - fmt.Fprintln(w, "OK") - return - } - - go func() { - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Minute) - defer cancel() - if err := gh.fs.Update(ctx); err != nil { - buildErrors.Add(err.Error(), 1) - if err == git.NoErrAlreadyUpToDate { - slog.Info("already up to date") - return - } - - slog.Error("error updating", "error", err) - } - }() -} |
