Moved github PAT and storage path to env vars

This commit is contained in:
2026-03-30 22:02:39 +02:00
parent b1079efe58
commit bdf7d4f468
10 changed files with 35 additions and 32 deletions
+1 -1
View File
@@ -1,5 +1,5 @@
.env
config/config.yaml
mydeploys
storage
quay
config
+1
View File
@@ -27,6 +27,7 @@ USER appuser
ENV PORT=4321
ENV CONFIG_DIR=/config
ENV STORAGE_PATH=/storage
EXPOSE 4321
+1 -1
View File
@@ -12,7 +12,7 @@ func NewStaticHandler(storagePath string, siteMap map[string]config.SiteConfig)
return func(c fiber.Ctx) error {
site, ok := siteMap[c.Hostname()]
if !ok {
return c.SendStatus(fiber.StatusNotFound)
return c.Status(fiber.StatusNotFound).SendString("Site not found")
}
urlPath := filepath.Clean(c.Path())
+4 -3
View File
@@ -5,6 +5,7 @@ import (
"quay/app/github"
"quay/app/models"
"quay/internal/config"
"quay/internal/envconfig"
"strings"
"crypto/subtle"
@@ -12,7 +13,7 @@ import (
"github.com/gofiber/fiber/v3"
)
func NewUpdateSiteHandler(cfg *config.Config) fiber.Handler {
func NewUpdateSiteHandler(cfg *config.Config, envCfg *envconfig.EnvConfig) fiber.Handler {
return func(c fiber.Ctx) error {
sitename := c.Query("site")
if sitename == "" {
@@ -58,7 +59,7 @@ func NewUpdateSiteHandler(cfg *config.Config) fiber.Handler {
})
}
sitePath := filepath.Join(cfg.Global.StoragePath, siteConfig.Name)
sitePath := filepath.Join(envCfg.StoragePath, siteConfig.Name)
if _, err := filepath.Abs(sitePath); err != nil {
return c.Status(500).JSON(models.APIError{
Error: "Failed to resolve site path",
@@ -69,7 +70,7 @@ func NewUpdateSiteHandler(cfg *config.Config) fiber.Handler {
siteConfig.Owner,
siteConfig.Repo,
siteConfig.Branch,
cfg.Global.GithubPat,
envCfg.GithubPat,
sitePath,
)
+4 -3
View File
@@ -5,17 +5,18 @@ import (
"path/filepath"
"quay/app/handlers"
"quay/internal/config"
"quay/internal/envconfig"
"github.com/gofiber/fiber/v3"
)
func Register(app *fiber.App, cfg *config.Config) {
func Register(app *fiber.App, cfg *config.Config, envCfg *envconfig.EnvConfig) {
api := app.Group("/api")
api.Get("/health", handlers.HealthCheck)
api.Post("/update", handlers.NewUpdateSiteHandler(cfg))
api.Post("/update", handlers.NewUpdateSiteHandler(cfg, envCfg))
storagePath, err := filepath.Abs(cfg.Global.StoragePath)
storagePath, err := filepath.Abs(envCfg.StoragePath)
if err != nil {
log.Fatalf("Failed to resolve storage path: %v", err)
}
-4
View File
@@ -2,10 +2,6 @@
# This file defines the global settings and the sites to be deployed.
# You can use ${VARIABLE_NAME} to reference environment variables for sensitive information.
global:
github_pat: "${GITHUB_PAT}"
storage_path: /var/www/sites
sites:
- repo: my-lib-docs
owner: yourname
+1 -1
View File
@@ -10,7 +10,7 @@ services:
- '8080:4321'
volumes:
- ./config:/config
- ./mydeploys:/deploys
- ./storage:/storage
restart: unless-stopped
healthcheck:
test:
+1 -13
View File
@@ -6,11 +6,6 @@ import (
"gopkg.in/yaml.v3"
)
type GlobalConfig struct {
GithubPat string `yaml:"github_pat"`
StoragePath string `yaml:"storage_path"`
}
type SiteConfig struct {
Name string `yaml:"name"`
Repo string `yaml:"repo"`
@@ -23,8 +18,7 @@ type SiteConfig struct {
}
type Config struct {
Global GlobalConfig `yaml:"global"`
Sites []SiteConfig `yaml:"sites"`
Sites []SiteConfig `yaml:"sites"`
}
type Error struct {
@@ -37,12 +31,6 @@ func (c Error) Error() string {
}
func validateConfig(config *Config) error {
if config.Global.GithubPat == "" {
return &Error{Field: "global.github_pat", Message: "GitHub PAT is required"}
}
if config.Global.StoragePath == "" {
return &Error{Field: "global.storage_path", Message: "Storage path is required"}
}
for i, site := range config.Sites {
if site.Name == "" {
return &Error{Field: "sites[" + string(i) + "].name", Message: "Name is required"}
+21 -5
View File
@@ -1,10 +1,14 @@
package envconfig
import "os"
import (
"os"
)
type EnvConfig struct {
Port string
ConfigDir string
Port string
ConfigDir string
GithubPat string
StoragePath string
}
func Load() EnvConfig {
@@ -18,8 +22,20 @@ func Load() EnvConfig {
configDir = "./"
}
githubPat := os.Getenv("GITHUB_PAT")
if githubPat == "" {
githubPat = ""
}
storagePath := os.Getenv("STORAGE_PATH")
if storagePath == "" {
storagePath = "./storage"
}
return EnvConfig{
Port: port,
ConfigDir: configDir,
Port: port,
ConfigDir: configDir,
GithubPat: githubPat,
StoragePath: storagePath,
}
}
+1 -1
View File
@@ -26,7 +26,7 @@ func main() {
app := fiber.New()
fiberconfig.Setup(app)
routes.Register(app, cfg)
routes.Register(app, cfg, &envCfg)
log.Fatal(app.Listen(":" + envCfg.Port))
}