jynx/main.go
Nils Stinnesbeck f359f0fb1f
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
made server more dynamic via environment variable, fixed negative
starting up servers
2023-07-15 23:31:23 +02:00

68 lines
1.4 KiB
Go

package main
import (
"os"
"strconv"
"time"
"git.stinnesbeck.com/go/jynx/ci/woodpecker"
"git.stinnesbeck.com/go/jynx/scaler"
"git.stinnesbeck.com/go/log"
)
func main() {
checkEnv()
log.PrintInfo("Starting autoscaler")
w := woodpecker.NewServer(
os.Getenv("WOODPECKER_HOSTNAME"),
os.Getenv("WOODPECKER_PROMETHEUS_AUTH_TOKEN"),
)
interval := time.Duration(5)
if i := os.Getenv("SCALER_POLL_INTERVAL"); i != "" {
envInterval, err := strconv.Atoi(i)
if err != nil {
log.PrintError("can't parse SCALER_POLL_INTERVAL", err)
os.Exit(1)
}
// overwrite default interval with the one provided by env variable
interval = time.Duration(envInterval)
}
ticker := time.Tick(interval * time.Second)
// start scaler once
if err := scaler.Start(&w); err != nil {
panic(err)
}
// start scaler every tick
for range ticker {
if err := scaler.Start(&w); err != nil {
panic(err)
}
}
}
func checkEnv() {
switch "" {
case os.Getenv("WOODPECKER_HOSTNAME"):
log.PrintError("WOODPECKER_HOSTNAME not set")
case os.Getenv("WOODPECKER_AGENT_SECRET"):
log.PrintError("WOODPECKER_AGENT_SECRET not set")
os.Exit(1)
case os.Getenv("HCLOUD_PREFIX"):
log.PrintError("HCLOUD_PREFIX not set")
os.Exit(1)
case os.Getenv("WOODPECKER_PROMETHEUS_AUTH_TOKEN"):
log.PrintError("WOODPECKER_PROMETHEUS_AUTH_TOKEN not set")
os.Exit(1)
case os.Getenv("HETZNER_SSH_KEY_NAMES"):
log.PrintError("HETZNER_SSH_KEY_NAMES not set")
os.Exit(1)
}
}