aboutsummaryrefslogtreecommitdiff
path: root/xesite/github.go
diff options
context:
space:
mode:
authorXe Iaso <me@xeiaso.net>2023-09-27 20:27:48 -0400
committerXe Iaso <me@xeiaso.net>2023-09-27 20:27:48 -0400
commit243005626f53711cb98bba06f349c159d1b91afd (patch)
tree6766366a67eea811f603fd940c59ea0bea551547 /xesite/github.go
parent066bf3207ab04f75d9ed038dd1b5f78340276812 (diff)
downloadxesite-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.go67
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)
- }
- }()
-}