Compare commits
9 Commits
be73abca63
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
852f8e2a0c
|
|||
|
8074084137
|
|||
|
7084a075f9
|
|||
|
8c3d9fd625
|
|||
|
8954723510
|
|||
|
73c6c52798
|
|||
|
640c5de108
|
|||
|
7edd290c68
|
|||
|
55ab0dbf4d
|
3
.dockerignore
Normal file
3
.dockerignore
Normal file
@ -0,0 +1,3 @@
|
||||
.git/
|
||||
Dockerfile
|
||||
bin/
|
||||
22
.gitea/workflows/ci.yaml
Normal file
22
.gitea/workflows/ci.yaml
Normal 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
|
||||
38
.gitea/workflows/release.yaml
Normal file
38
.gitea/workflows/release.yaml
Normal 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
11
Dockerfile
Normal 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"]
|
||||
@ -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
|
||||
|
||||
@ -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
4
renovate.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"extends": ["config:recommended"],
|
||||
"labels": ["renovate", "deps"]
|
||||
}
|
||||
Reference in New Issue
Block a user