diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index f2cbff5..9454cf9 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -7,12 +7,12 @@ MediaWiki deployment for rd13 – a self-hosted wiki running in Docker, served v - Language: PHP (MediaWiki core + extensions), YAML, Dockerfile - Framework: MediaWiki - Database: MariaDB -- Infrastructure: Docker Compose, GitHub Container Registry (ghcr.io), Linux Server (remote via VS Code Server) +- Infrastructure: Docker Compose, Forgejo (self-hosted Git), Woodpecker CI, Forgejo Container Registry, Linux Server (remote via VS Code Server) ## Architecture - Pattern: Containerised deployment (App + DB as separate services) - Key constraints: No application code changes – configuration and infrastructure only -- Image published to: `ghcr.io/c-schulz-rd13/rd13_media_wiki:latest` +- Image published to: `192.168.178.6:8083/cschulz/rd13_media_wiki:latest` (Forgejo Container Registry) - Extensions live in: `wikidata/extensions/` - Wiki config: `wikidata/LocalSettings.php` - Upload config: `wikidata/uploads.ini` @@ -21,6 +21,7 @@ MediaWiki deployment for rd13 – a self-hosted wiki running in Docker, served v - Branch naming: `feat/-description`, `fix/-description` - Commit format: Conventional Commits (`feat|fix|chore|docs|refactor|ci`) - Secrets: never in `docker-compose.yml` or `LocalSettings.php` – use `.env` files or Docker secrets +- CI/CD: Woodpecker CI pipeline defined in `.woodpecker.yml` at repo root - Images: always pin with a specific tag, avoid `:latest` in production compose files ## Engineering Process @@ -51,7 +52,7 @@ A task is only done when ALL of the following are true: ## Testing Strategy - No unit/integration tests (deployment-only repo) - Validation: `docker compose config` for compose syntax -- Build test: CI pipeline runs `docker buildx build` on PRs +- Build test: Woodpecker CI pipeline runs `docker buildx build` (dry-run) on PRs, build+push on merge to `main` ## Security - No secrets in code or config files – use environment variables / `.env` diff --git a/.woodpecker.yml b/.woodpecker.yml new file mode 100644 index 0000000..682ac53 --- /dev/null +++ b/.woodpecker.yml @@ -0,0 +1,26 @@ +steps: + # Build and push image on push to main + - name: docker-build-push + image: woodpeckerci/plugin-docker-buildx + settings: + registry: 192.168.178.6:8083 + repo: 192.168.178.6:8083/cschulz/rd13_media_wiki + tags: latest + platforms: linux/amd64 + username: cschulz + password: + from_secret: RD13_MW_DOCKER_BUILD_TOKEN + when: + - event: push + branch: main + + # Build only (no push) on pull requests + - name: docker-build-only + image: woodpeckerci/plugin-docker-buildx + settings: + repo: 192.168.178.6:8083/cschulz/rd13_media_wiki + platforms: linux/amd64 + dry_run: true + when: + - event: pull_request + branch: main diff --git a/README.md b/README.md index eeabc7e..9999a95 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ docker run --rm -it -v ./maps_data:/data -p 8091:80 klokantech/openmaptiles-serv ## Update of the MediaWiki Core -Um eine neues Dockerimages mit der neusten Version zu bauen kann mann entweder einen neuen Commit im Master machen, falls Code änderungen nötig sind, oder händisch im Github über Actions den Build Workflow auslösen. +Um ein neues Docker-Image mit der neusten Version zu bauen, kann man entweder einen neuen Commit auf `main` pushen (Woodpecker CI baut und pushed das Image automatisch), oder den Build-Workflow händisch in Woodpecker über die UI auslösen. Nach dem das neue Images gebaut ist, kann es mit gepulled und gestartet werden. Hierfür kann man folgende Kommandos nehmen.