Merge branch 'deploy'
This commit is contained in:
@@ -18,7 +18,7 @@ jobs:
|
|||||||
- name: Set up Go
|
- name: Set up Go
|
||||||
uses: actions/setup-go@v5
|
uses: actions/setup-go@v5
|
||||||
with:
|
with:
|
||||||
go-version: "1.26.0"
|
go-version: "1.26.x"
|
||||||
|
|
||||||
- name: Install gosec
|
- name: Install gosec
|
||||||
run: go install github.com/securego/gosec/v2/cmd/gosec@latest
|
run: go install github.com/securego/gosec/v2/cmd/gosec@latest
|
||||||
@@ -29,6 +29,9 @@ jobs:
|
|||||||
- name: Run gosec
|
- name: Run gosec
|
||||||
run: gosec ./...
|
run: gosec ./...
|
||||||
|
|
||||||
|
- name: Run govulncheck
|
||||||
|
run: govulncheck ./...
|
||||||
|
|
||||||
style:
|
style:
|
||||||
name: Style
|
name: Style
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|||||||
@@ -1,11 +1,16 @@
|
|||||||
- Complete testing
|
- Deployment
|
||||||
- Deployment(PKGBUILD, bootstrap script?)
|
- PKGBUILD
|
||||||
|
- bootstrap script
|
||||||
|
- ~ci testing, lint, gosec, vulncheck~
|
||||||
|
- ~graceful shutdown~
|
||||||
|
- cd build binary, package
|
||||||
- More complete sync(refresh packages on schedule with db, prefetch updates to pkgs we already have)
|
- More complete sync(refresh packages on schedule with db, prefetch updates to pkgs we already have)
|
||||||
- clean cache of old files
|
- clean cache of old files
|
||||||
- implement streaming
|
- implement streaming
|
||||||
- Add chi for mux
|
- Add chi for mux
|
||||||
- Build server/tool
|
- Build server/tool
|
||||||
- Think about: arch doesn't like partial upgrades, round robin fetching the db files might be an issue
|
- Think about: arch doesn't like partial upgrades, round robin fetching the db files might be an issue
|
||||||
|
- ~Complete testing~
|
||||||
- ~Add better logging for errors, filename more deatail~
|
- ~Add better logging for errors, filename more deatail~
|
||||||
- ~package main~
|
- ~package main~
|
||||||
- ~internal/cache~
|
- ~internal/cache~
|
||||||
|
|||||||
Vendored
+4
@@ -69,6 +69,10 @@ func NewCache(cacheRoot string, mirrorURLs []string, mirroredRepos []string) (*C
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *Cache) Close() error {
|
||||||
|
return c.cr.Close()
|
||||||
|
}
|
||||||
|
|
||||||
type UpstreamError struct {
|
type UpstreamError struct {
|
||||||
StatusCode int
|
StatusCode int
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,14 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log/slog"
|
"log/slog"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
|
"os/signal"
|
||||||
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/ewpt3ch/pkgstash/internal/cache"
|
"github.com/ewpt3ch/pkgstash/internal/cache"
|
||||||
@@ -53,6 +56,8 @@ func main() {
|
|||||||
slog.Error("failed to create cache", "err", err)
|
slog.Error("failed to create cache", "err", err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
defer c.Close()
|
||||||
|
|
||||||
srv := &Server{
|
srv := &Server{
|
||||||
cfg: cfg,
|
cfg: cfg,
|
||||||
c: c,
|
c: c,
|
||||||
@@ -66,6 +71,7 @@ func main() {
|
|||||||
|
|
||||||
if err := srv.c.Refresh(); err != nil {
|
if err := srv.c.Refresh(); err != nil {
|
||||||
slog.Error("failed to refesh db files", "err", err)
|
slog.Error("failed to refesh db files", "err", err)
|
||||||
|
c.Close()
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -75,10 +81,26 @@ func main() {
|
|||||||
ReadHeaderTimeout: 5 * time.Second,
|
ReadHeaderTimeout: 5 * time.Second,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// gracefully quit the server
|
||||||
|
quit := make(chan os.Signal, 1)
|
||||||
|
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
|
||||||
|
|
||||||
|
go func() {
|
||||||
slog.Info("serving pkgstash", "root", cfg.CacheRoot, "port", cfg.Port)
|
slog.Info("serving pkgstash", "root", cfg.CacheRoot, "port", cfg.Port)
|
||||||
if err = httpServe.ListenAndServe(); err != nil {
|
if err = httpServe.ListenAndServe(); err != http.ErrServerClosed {
|
||||||
slog.Error("server failed", "err", err)
|
slog.Error("server failed", "err", err)
|
||||||
|
c.Close()
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
<-quit
|
||||||
|
slog.Info("shutting down")
|
||||||
|
|
||||||
|
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
|
||||||
|
defer cancel()
|
||||||
|
|
||||||
|
if err := httpServe.Shutdown(ctx); err != nil {
|
||||||
|
slog.Error("shutdown failed", "err", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user