diff options
author | Vincent Ambo <mail@tazj.in> | 2020-06-19T00·27+0100 |
---|---|---|
committer | Vincent Ambo <mail@tazj.in> | 2020-06-19T00·35+0100 |
commit | a37b4fbef301b5ad82e9f6939c4e736514ac2fb8 (patch) | |
tree | 0cdc51c332220dee0d3e54bcb012365ceee1d5fe /ops/besadii | |
parent | 94ead741ecbd4af66d7fcb3de01c068f6ab45b67 (diff) |
feat(besadii): Add Sourcegraph index update triggers r/1027
Sourcegraph has a heuristic for determining when to update the repository that doesn't work for the TVL repository, where commits are often in irregular short bursts. This changes besadii to trigger Sourcegraph index updates when invoked by Gerrit. Change-Id: Ifcfc25406d9e25bbdc93e79c23608ce4c6b10ba8
Diffstat (limited to 'ops/besadii')
-rw-r--r-- | ops/besadii/main.go2 | 55 |
1 files changed, 42 insertions, 13 deletions
diff --git a/ops/besadii/main.go2 b/ops/besadii/main.go2 index 43059565242e..cdc6405b43cf 100644 --- a/ops/besadii/main.go2 +++ b/ops/besadii/main.go2 @@ -1,10 +1,11 @@ // Copyright 2019-2020 Google LLC. // SPDX-License-Identifier: Apache-2.0 // -// besadii is a small CLI tool that triggers depot builds on -// builds.sr.ht +// besadii is a small CLI tool that runs as a Gerrit hook (currently +// 'ref-updated') to trigger various actions: // -// It is designed to run as a Gerrit hook (ref-updated). +// - sr.ht CI builds +// - SourceGraph (cs.tvl.fyi) repository index updates package main import ( @@ -91,7 +92,7 @@ cat built-paths | cachix push tazjin`}, } // Trigger a build of a given branch & commit on builds.sr.ht -func triggerBuild(log *syslog.Writer, token string, update *branchUpdate) { +func triggerBuild(log *syslog.Writer, token string, update *branchUpdate) error { build := Build{ Manifest: prepareManifest(update.commit), Note: fmt.Sprintf("build of %q at %q, submitted by %q", update.branch, update.commit, update.submitter), @@ -107,8 +108,7 @@ func triggerBuild(log *syslog.Writer, token string, update *branchUpdate) { req, err := http.NewRequest("POST", "https://builds.sr.ht/api/jobs", reader) if err != nil { - log.Err(fmt.Sprintf("failed to create an HTTP request: %s", err)) - os.Exit(1) + return fmt.Errorf("failed to create an HTTP request: %w", err) } req.Header.Add("Authorization", "token "+token) @@ -116,10 +116,8 @@ func triggerBuild(log *syslog.Writer, token string, update *branchUpdate) { resp, err := http.DefaultClient.Do(req) if err != nil { - // This might indicate a temporary error on the sourcehut side, do - // not fail the whole program. - log.Err(fmt.Sprintf("failed to send builds.sr.ht request:", err)) - return + // This might indicate a temporary error on the sourcehut side. + return fmt.Errorf("failed to send builds.sr.ht request: %w", err) } defer resp.Body.Close() @@ -129,6 +127,23 @@ func triggerBuild(log *syslog.Writer, token string, update *branchUpdate) { } else { fmt.Fprintf(log, "triggered builds.sr.ht job for branch %q at commit %q", update.branch, update.commit) } + + return nil +} + +// Trigger a Sourcegraph repository index update on cs.tvl.fyi. +// +// https://docs.sourcegraph.com/admin/repo/webhooks +func triggerIndexUpdate(token string) error { + req, err := http.NewRequest("POST", "https://cs.tvl.fyi/.api/repos/depot/-/refresh", nil) + if err != nil { + return err + } + + req.Header.Add("Authorization", "token "+token) + + _, err = http.DefaultClient.Do(req) + return err } func branchUpdateFromFlags() (*branchUpdate, error) { @@ -182,9 +197,15 @@ func main() { os.Exit(1) } - token, err := ioutil.ReadFile("/etc/secrets/srht-token") + srhtToken, err := ioutil.ReadFile("/etc/secrets/srht-token") if err != nil { - log.Alert("sourcehot token could not be read") + log.Alert("sourcehut token could not be read") + os.Exit(1) + } + + sourcegraphToken, err := ioutil.ReadFile("/etc/secrets/sourcegraph-token") + if err != nil { + log.Alert("sourcegraph token could not be read") os.Exit(1) } @@ -198,5 +219,13 @@ func main() { os.Exit(0) } - triggerBuild(log, string(token), update) + err = triggerBuild(log, string(srhtToken), update) + if err != nil { + log.Err(fmt.Sprintf("failed to trigger sr.ht build: %s", err)) + } + + err = triggerIndexUpdate(string(sourcegraphToken)) + if err != nil { + log.Err(fmt.Sprintf("failed to trigger sourcegraph index update: %s", err)) + } } |