Compare commits

5 Commits

Author SHA1 Message Date
313f9fec43 Update golang to 1.26.0
All checks were successful
Server Check Build (NixCN CMS) TeamCity build finished
Signed-off-by: Asai Neko <sugar@sne.moe>
2026-03-07 15:49:16 +08:00
337ce15b37 Fix api user other UserInfoPayload
All checks were successful
Server Check Build (NixCN CMS) TeamCity build finished
Signed-off-by: Asai Neko <sugar@sne.moe>
2026-02-21 14:16:38 +08:00
37f06fe98a Add RetryConfig for OtelTracer
All checks were successful
Server Check Build (NixCN CMS) TeamCity build finished
Signed-off-by: Asai Neko <sugar@sne.moe>
2026-02-19 12:00:45 +08:00
79fbbd1862 Use env vars when config.yaml not exist
All checks were successful
Server Check Build (NixCN CMS) TeamCity build finished
Signed-off-by: Asai Neko <sugar@sne.moe>
2026-02-18 16:47:11 +08:00
e8571492f0 Fix deploy files
Signed-off-by: Asai Neko <sugar@sne.moe>
2026-02-18 14:30:26 +08:00
7 changed files with 88 additions and 92 deletions

View File

@@ -82,7 +82,7 @@ func (self *UserHandler) Other(c *gin.Context) {
} else if userIdFromUrl != userIdFromHeader {
UserInfoPayload = &service_user.UserInfoPayload{
Context: c,
UserId: userIdFromHeader,
UserId: userIdFromUrl,
IsOther: true,
Data: nil,
}

View File

@@ -26,11 +26,15 @@ func Init() {
viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_"))
viper.AutomaticEnv()
conf := &config{}
if err := viper.ReadInConfig(); err != nil {
// Dont generate config when using dev mode
log.Fatalln("[Config] Can't read config!")
if _, ok := err.(viper.ConfigFileNotFoundError); ok {
log.Println("[Config] No config file found, using Env vars only.")
} else {
log.Fatalf("[Config] Fatal error reading config file: %s \n", err)
}
}
conf := &config{}
if err := viper.Unmarshal(conf); err != nil {
log.Fatalln("[Condig] Can't unmarshal config!")
}

View File

@@ -1,11 +1,11 @@
test.nix.org.cn {
tls /etc/caddy/cert.crt /etc/caddy/key.pem
tls /etc/caddy/cert.crt /etc/caddy/cert.key
handle /app/api/* {
reverse_proxy backend:8000
reverse_proxy cms-server:8000
}
handle /app/* {
reverse_proxy client-cms:3000
reverse_proxy cms-client:3000
}
}

View File

@@ -1,7 +1,7 @@
services:
postgres:
image: docker.io/postgres:18-alpine
container_name: cms-db
container_name: postgres
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
@@ -18,7 +18,7 @@ services:
redis:
image: docker.io/redis:8-alpine
container_name: cms-redis
container_name: redis
volumes:
- ./data/redis:/data
healthcheck:
@@ -29,7 +29,7 @@ services:
lgtm:
image: grafana/otel-lgtm:latest
container_name: lgtm-stack
container_name: lgtm
ports:
- "3000:3000"
- "4317:4317" # OTLP gRPC
@@ -48,7 +48,7 @@ services:
caddy:
image: docker.io/caddy:latest
container_name: caddy-proxy
container_name: caddy
restart: always
ports:
- "80:80"

View File

@@ -3,10 +3,11 @@
"devenv": {
"locked": {
"dir": "src/modules",
"lastModified": 1766087669,
"lastModified": 1772840537,
"narHash": "sha256-Axb80AW0e6Xd/UmtjFnTTPOqxzkI4tzGa8ykk8nKQoo=",
"owner": "cachix",
"repo": "devenv",
"rev": "c03eed645ea94da7afbee29da76436b7ce33a5cb",
"rev": "b6208f517a7359d6046c89b5ac0de20cfca3b4c0",
"type": "github"
},
"original": {
@@ -19,25 +20,11 @@
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1765121682,
"lastModified": 1761588595,
"narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "65f23138d8d09a92e30f1e5c87611b23ef451bf3",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_2": {
"flake": false,
"locked": {
"lastModified": 1765121682,
"owner": "edolstra",
"repo": "flake-compat",
"rev": "65f23138d8d09a92e30f1e5c87611b23ef451bf3",
"rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5",
"type": "github"
},
"original": {
@@ -51,10 +38,11 @@
"systems": "systems"
},
"locked": {
"lastModified": 1731533236,
"lastModified": 1701680307,
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
"type": "github"
},
"original": {
@@ -67,37 +55,17 @@
"inputs": {
"flake-compat": "flake-compat",
"gitignore": "gitignore",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1765911976,
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "b68b780b69702a090c8bb1b973bab13756cc7a27",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "git-hooks.nix",
"type": "github"
}
},
"git-hooks_2": {
"inputs": {
"flake-compat": "flake-compat_2",
"gitignore": "gitignore_2",
"nixpkgs": [
"go-overlay",
"nixpkgs"
]
},
"locked": {
"lastModified": 1765911976,
"lastModified": 1765016596,
"narHash": "sha256-rhSqPNxDVow7OQKi4qS5H8Au0P4S3AYbawBSmJNUtBQ=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "b68b780b69702a090c8bb1b973bab13756cc7a27",
"rev": "548fc44fca28a5e81c5d6b846e555e6b9c2a5a3c",
"type": "github"
},
"original": {
@@ -107,26 +75,6 @@
}
},
"gitignore": {
"inputs": {
"nixpkgs": [
"git-hooks",
"nixpkgs"
]
},
"locked": {
"lastModified": 1762808025,
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "cb5e3fdca1de58ccbc3ef53de65bd372b48f567c",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"gitignore_2": {
"inputs": {
"nixpkgs": [
"go-overlay",
@@ -135,10 +83,11 @@
]
},
"locked": {
"lastModified": 1762808025,
"lastModified": 1709087332,
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "cb5e3fdca1de58ccbc3ef53de65bd372b48f567c",
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
"type": "github"
},
"original": {
@@ -150,16 +99,17 @@
"go-overlay": {
"inputs": {
"flake-utils": "flake-utils",
"git-hooks": "git-hooks_2",
"git-hooks": "git-hooks",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1766126609,
"lastModified": 1772865556,
"narHash": "sha256-IIYNduS/rTlLzDxDyHqXd8JHl9F7UDf3EiEdtwupop4=",
"owner": "purpleclay",
"repo": "go-overlay",
"rev": "959f32b00fd3d462d4d570bd118b4be03c3f2019",
"rev": "8e54102a2301c8003f7a15f2536c6530d3035c4e",
"type": "github"
},
"original": {
@@ -169,11 +119,15 @@
}
},
"nixpkgs": {
"inputs": {
"nixpkgs-src": "nixpkgs-src"
},
"locked": {
"lastModified": 1764580874,
"lastModified": 1772749504,
"narHash": "sha256-eqtQIz0alxkQPym+Zh/33gdDjkkch9o6eHnMPnXFXN0=",
"owner": "cachix",
"repo": "devenv-nixpkgs",
"rev": "dcf61356c3ab25f1362b4a4428a6d871e84f1d1d",
"rev": "08543693199362c1fddb8f52126030d0d374ba2e",
"type": "github"
},
"original": {
@@ -183,20 +137,34 @@
"type": "github"
}
},
"nixpkgs-src": {
"flake": false,
"locked": {
"lastModified": 1772173633,
"narHash": "sha256-MOH58F4AIbCkh6qlQcwMycyk5SWvsqnS/TCfnqDlpj4=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "c0f3d81a7ddbc2b1332be0d8481a672b4f6004d6",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"devenv": "devenv",
"git-hooks": "git-hooks",
"go-overlay": "go-overlay",
"nixpkgs": "nixpkgs",
"pre-commit-hooks": [
"git-hooks"
]
"nixpkgs": "nixpkgs"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
@@ -211,4 +179,4 @@
},
"root": "root",
"version": 7
}
}

View File

@@ -24,7 +24,7 @@
languages = {
go = {
enable = true;
version = "1.25.5";
version = "1.26.0";
};
};

View File

@@ -34,10 +34,22 @@ func Init(ctx context.Context) func(context.Context) error {
slog.Error("[OTEL] Failed to create resource", "err", err)
}
traceExporter, _ := otlptracegrpc.New(ctx,
retryConfig := otlptracegrpc.RetryConfig{
Enabled: true,
InitialInterval: 1 * time.Second,
MaxInterval: 10 * time.Second,
}
// Trace Exporter
traceExporter, err := otlptracegrpc.New(ctx,
otlptracegrpc.WithEndpoint(endpoint),
otlptracegrpc.WithInsecure(),
otlptracegrpc.WithRetry(retryConfig),
)
if err != nil {
slog.Error("[OTEL] Failed to create trace exporter", "err", err)
}
tp := sdktrace.NewTracerProvider(
sdktrace.WithBatcher(traceExporter),
sdktrace.WithResource(res),
@@ -45,10 +57,16 @@ func Init(ctx context.Context) func(context.Context) error {
)
otel.SetTracerProvider(tp)
metricExporter, _ := otlpmetricgrpc.New(ctx,
// Metric Exporter
metricExporter, err := otlpmetricgrpc.New(ctx,
otlpmetricgrpc.WithEndpoint(endpoint),
otlpmetricgrpc.WithInsecure(),
otlpmetricgrpc.WithRetry(otlpmetricgrpc.RetryConfig(retryConfig)),
)
if err != nil {
slog.Error("[OTEL] Failed to create metric exporter", "err", err)
}
mp := sdkmetric.NewMeterProvider(
sdkmetric.WithResource(res),
sdkmetric.WithReader(sdkmetric.NewPeriodicReader(metricExporter,
@@ -56,10 +74,16 @@ func Init(ctx context.Context) func(context.Context) error {
)
otel.SetMeterProvider(mp)
logExporter, _ := otlploggrpc.New(ctx,
// Log Exporter
logExporter, err := otlploggrpc.New(ctx,
otlploggrpc.WithEndpoint(endpoint),
otlploggrpc.WithInsecure(),
otlploggrpc.WithRetry(otlploggrpc.RetryConfig(retryConfig)),
)
if err != nil {
slog.Error("[OTEL] Failed to create log exporter", "err", err)
}
lp := sdklog.NewLoggerProvider(
sdklog.WithResource(res),
sdklog.WithProcessor(sdklog.NewBatchProcessor(logExporter)),