name: CI on: push: pull_request: jobs: validate: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - uses: actions/setup-go@v6 with: go-version-file: server/go.mod cache-dependency-path: server/go.sum - uses: pnpm/action-setup@v4 with: version: 11.19.0 - uses: actions/setup-node@v4 with: node-version: 22 cache: pnpm - name: Test Go server working-directory: server run: | test -z "$(gofmt -l .)" go vet ./... go test -race ./... CGO_ENABLED=0 go build -trimpath -o /tmp/serverstatus . - name: Check clients, WebUI and shell scripts run: | python3 -m py_compile clients/client-linux.py clients/client-psutil.py python3 -m unittest discover -s clients -p 'test_*.py' sh -n clients/entrypoint.sh sh -n tests/run-webui-server.sh tests/docker-smoke.sh bash -n status.sh node --check web/js/app.js node --check tests/webui/webui.spec.js node --check playwright.config.js - name: Test WebUI in Chromium run: | pnpm install --frozen-lockfile pnpm exec playwright install --with-deps chromium pnpm test:webui - name: Validate compose files run: | docker compose -f docker-compose-server.yml config docker compose -f docker-compose-client.yml config - name: Build Docker images run: | docker build -f Dockerfile.server -t serverstatus-server:test . docker build -f Dockerfile.client -t serverstatus-client:test . - name: Test Docker server-client connection run: tests/docker-smoke.sh - uses: docker/setup-qemu-action@v3 - uses: docker/setup-buildx-action@v3 - name: Build client image for AMD64 and ARM64 run: | docker buildx build \ --platform linux/amd64,linux/arm64 \ --file Dockerfile.client \ --output type=cacheonly \ .