From c06ce6e8bb212d6c9d2405825807857914df6630 Mon Sep 17 00:00:00 2001 From: josh Date: Sun, 3 May 2026 20:58:15 -0400 Subject: [PATCH] Add CI/CD pipeline and docker-compose for deployment MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Gitea Actions workflow: test → build → push to container registry - docker-compose.yml for host deployment (host network for PXE) - Update example config to use container paths (/data, /etc/provisioning) Co-Authored-By: Claude Opus 4.6 --- .gitea/workflows/build.yml | 45 ++++++++++++++++++++++++++++++++ deploy/provisioning.example.yaml | 10 +++---- docker-compose.yml | 18 +++++++++++++ 3 files changed, 68 insertions(+), 5 deletions(-) create mode 100644 .gitea/workflows/build.yml create mode 100644 docker-compose.yml diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml new file mode 100644 index 0000000..25a5441 --- /dev/null +++ b/.gitea/workflows/build.yml @@ -0,0 +1,45 @@ +name: build-and-push + +on: + push: + branches: [main] + workflow_dispatch: + +jobs: + test: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: '1.23' + - name: Run tests + run: go test ./... + - name: Vet + run: go vet ./... + + build-and-push: + runs-on: ubuntu-latest + needs: test + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Log in to Gitea Container Registry + uses: docker/login-action@v3 + with: + registry: gitea.thewrightserver.net + username: josh + password: ${{ secrets.REGISTRY_TOKEN }} + - name: Build and push image + uses: docker/build-push-action@v5 + with: + context: . + file: deploy/Dockerfile + push: true + tags: | + gitea.thewrightserver.net/josh/provisioning:latest + gitea.thewrightserver.net/josh/provisioning:${{ github.sha }} diff --git a/deploy/provisioning.example.yaml b/deploy/provisioning.example.yaml index 5d74764..8e7f76d 100644 --- a/deploy/provisioning.example.yaml +++ b/deploy/provisioning.example.yaml @@ -3,18 +3,18 @@ server: public_url: "http://192.168.1.100:8080" database: - path: "./data/provisioning.db" + path: "/data/provisioning.db" pxe: enabled: true interface: "eth0" subnet: "192.168.1.0/24" - runtime_dir: "./data/pxe" - tftp_root: "./data/tftp" + runtime_dir: "/data/pxe" + tftp_root: "/data/tftp" dnsmasq_bin: "/usr/sbin/dnsmasq" images: - dir: "./data/images" + dir: "/data/images" proxmox: existing_node: "192.168.1.10" @@ -37,4 +37,4 @@ infrastructure: locks: ttl_minutes: 60 -server_types_path: "./server-types.yaml" +server_types_path: "/etc/provisioning/server-types.yaml" diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..4e64d66 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,18 @@ +services: + provisioning: + image: gitea.thewrightserver.net/josh/provisioning:latest + container_name: provisioning + restart: unless-stopped + network_mode: host + volumes: + - ./provisioning.yaml:/etc/provisioning/provisioning.yaml:ro + - ./server-types.yaml:/etc/provisioning/server-types.yaml:ro + - ./keys:/etc/provisioning/keys:ro + - data:/data + command: ["-config", "/etc/provisioning/provisioning.yaml"] + cap_add: + - NET_ADMIN + - NET_RAW + +volumes: + data: