Compare commits

..

9 Commits

Author SHA1 Message Date
852f8e2a0c ci: fix release action config
All checks were successful
build-and-test / build (push) Successful in 43s
release / build (release) Successful in 1m2s
2025-08-25 17:03:28 +02:00
8074084137 ci: fix docker image name in release action
Some checks failed
build-and-test / build (push) Successful in 43s
release / build (release) Failing after 1m9s
2025-08-25 16:54:03 +02:00
7084a075f9 ci: add release action
Some checks failed
build-and-test / build (push) Successful in 1m7s
release / build (release) Failing after 20s
2025-07-28 20:38:35 +02:00
8c3d9fd625 ci: fix artefact upload step
All checks were successful
build-and-test / build (push) Successful in 55s
2025-07-28 20:30:04 +02:00
8954723510 ci: add build action
Some checks failed
build-and-test / build (push) Failing after 1m58s
2025-07-28 20:08:17 +02:00
73c6c52798 ci: add renovate config 2025-07-28 09:14:19 +02:00
640c5de108 feat: parameterize UT server data 2025-07-28 00:02:27 +02:00
7edd290c68 refactor: remove obsolete debug code 2025-07-27 23:51:22 +02:00
55ab0dbf4d ci: add Dockerfile 2025-07-27 23:50:46 +02:00
7 changed files with 83 additions and 63 deletions

3
.dockerignore Normal file
View File

@ -0,0 +1,3 @@
.git/
Dockerfile
bin/

22
.gitea/workflows/ci.yaml Normal file
View File

@ -0,0 +1,22 @@
---
name: build-and-test
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: ^1.24
- name: Build binary
run: go build -v ./...
- name: Run tests
run: go test -json ./... > test-results.json
- name: Upload artefacts
uses: https://gitea.com/actions/gitea-upload-artifact@v4
with:
name: test-results
path: test-results.json

View File

@ -0,0 +1,38 @@
---
name: release
on:
release:
types: [published]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up docker
uses: docker/setup-buildx-action@v3
- name: Log in to the Gitea container registry
uses: docker/login-action@v3
with:
registry: ${{ gitea.server_url }}
username: ${{ gitea.actor }}
password: ${{ secrets.PACKAGES_TOKEN }}
- name: Extract metadata
id: meta
uses: docker/metadata-action@v5
with:
images: gitea.bp99.eu/${{ gitea.repository }}
tags: |
type=ref,event=tag
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}
type=raw,value=latest,enable={{is_default_branch}}
- name: Build and push docker image
uses: docker/build-push-action@v5
with:
context: ./
platforms: linux/amd64
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}

11
Dockerfile Normal file
View File

@ -0,0 +1,11 @@
FROM golang:1.24-alpine AS build
WORKDIR /app/
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -o bin/urbanterror-agones ./cmd/urbanterror-agones/
FROM alpine:3
WORKDIR /app/
COPY --from=build /app/bin/urbanterror-agones ./
ENTRYPOINT ["/app/urbanterror-agones"]

View File

@ -53,7 +53,7 @@ func (o *agonesObserver) GetID() string {
return o.id
}
func StartAgonesSidecar() error {
func StartAgonesSidecar(host string, port int) error {
slog.Info("Starting Urban Terror Agones sidecar")
// Create context
@ -61,7 +61,7 @@ func StartAgonesSidecar() error {
defer cancel()
// Create simple game client
client, err := q3c.New("localhost", 27960)
client, err := q3c.New(host, port)
if err != nil {
slog.Error("Failed to create new Quake3 client", "error", err)
return err

View File

@ -1,17 +1,15 @@
package main
import (
"context"
"flag"
"log/slog"
"os"
"time"
q3c "bp99.eu/ut-agones/internal/quake3/client"
)
func main() {
verbose := flag.Bool("v", false, "Enable debug verbosity")
host := flag.String("s", "localhost", "UT server hostname")
port := flag.Int("p", 27960, "UT server port")
flag.Parse()
level := slog.LevelInfo
@ -27,63 +25,7 @@ func main() {
),
)
if err := StartAgonesSidecar(); err != nil {
if err := StartAgonesSidecar(*host, *port); err != nil {
slog.Error("Agones sidecar error", "error", err)
}
}
func smain() {
slog.SetDefault(
slog.New(
slog.NewJSONHandler(
os.Stdout,
&slog.HandlerOptions{Level: slog.LevelDebug},
),
),
)
c, err := q3c.New("localhost", 27960)
if err != nil {
slog.Error("Failed to create client", "error", err)
return
} else {
slog.Info("Client created")
}
ticker := time.NewTicker(2 * time.Second)
defer ticker.Stop()
for {
select {
case <-ticker.C:
if err := c.Ping(); err != nil {
slog.Error("Failed to ping with client", "error", err)
} else {
slog.Info("Pinged client")
}
}
}
}
func xmain() {
slog.SetDefault(
slog.New(
slog.NewJSONHandler(
os.Stdout,
&slog.HandlerOptions{Level: slog.LevelDebug},
),
),
)
c, err := q3c.New("localhost", 27960)
if err != nil {
slog.Error("Failed to create client", "error", err)
return
} else {
slog.Info("Client created", "client", c)
}
ctx := context.Background()
q3c.NewRobust(ctx, c)
select {}
}

4
renovate.json Normal file
View File

@ -0,0 +1,4 @@
{
"extends": ["config:recommended"],
"labels": ["renovate", "deps"]
}