From 5f5ca5f1dc3833220e7fcfb9413b1952dc15cc50 Mon Sep 17 00:00:00 2001 From: Michael Schiemer Date: Fri, 31 Oct 2025 15:28:49 +0100 Subject: [PATCH] Fix production-deploy workflow: use array syntax for branches, remove if condition --- .gitea/workflows/production-deploy.yml | 3 +- deployment/gitea-runner/ADD_PHP_CI_LABEL.md | 110 ++++++++++++++++++++ docker/ci/Dockerfile | 69 ++++++++++++ 3 files changed, 181 insertions(+), 1 deletion(-) create mode 100644 deployment/gitea-runner/ADD_PHP_CI_LABEL.md create mode 100644 docker/ci/Dockerfile diff --git a/.gitea/workflows/production-deploy.yml b/.gitea/workflows/production-deploy.yml index 6f0b2e21..8eb1180e 100644 --- a/.gitea/workflows/production-deploy.yml +++ b/.gitea/workflows/production-deploy.yml @@ -112,7 +112,8 @@ jobs: build: name: Build Docker Image needs: test - if: always() && (needs.test.result == 'success' || needs.test.result == 'skipped') + # Note: if condition might not work correctly in Gitea - always() might need different syntax + # if: always() && (needs.test.result == 'success' || needs.test.result == 'skipped') runs-on: ubuntu-latest outputs: image_tag: ${{ steps.meta.outputs.tag }} diff --git a/deployment/gitea-runner/ADD_PHP_CI_LABEL.md b/deployment/gitea-runner/ADD_PHP_CI_LABEL.md new file mode 100644 index 00000000..d54da56b --- /dev/null +++ b/deployment/gitea-runner/ADD_PHP_CI_LABEL.md @@ -0,0 +1,110 @@ +# php-ci Label zum Runner hinzufügen + +## Problem +Workflows mit `runs-on: php-ci` können nicht ausgeführt werden, wenn der Runner dieses Label nicht kennt. + +## Lösung + +### Schritt 1: php-ci Image verfügbar machen + +**Option A: Image in Registry pushen (empfohlen für Production)** +```bash +cd deployment/gitea-runner +./build-ci-image.sh + +# Login zur Registry +docker login registry.michaelschiemer.de -u admin + +# Image zur Registry pushen +docker tag php-ci:latest registry.michaelschiemer.de/ci/php-ci:latest +docker push registry.michaelschiemer.de/ci/php-ci:latest +``` + +**Option B: Image lokal in docker-dind laden** +```bash +cd deployment/gitea-runner + +# Stelle sicher dass docker-dind läuft +docker compose up -d docker-dind + +# Image bauen +./build-ci-image.sh + +# Image in docker-dind laden +docker save php-ci:latest | docker exec -i gitea-runner-dind docker load +``` + +### Schritt 2: Label zu .env hinzufügen + +**Wenn .env existiert:** +```bash +cd deployment/gitea-runner +nano .env +``` + +Füge `php-ci:docker://php-ci:latest` zu `GITEA_RUNNER_LABELS` hinzu: + +```bash +# Für lokales Image: +GITEA_RUNNER_LABELS=ubuntu-latest:docker://node:16-bullseye,ubuntu-22.04:docker://node:16-bullseye,php-ci:docker://php-ci:latest + +# Für Registry Image (empfohlen): +GITEA_RUNNER_LABELS=ubuntu-latest:docker://node:16-bullseye,ubuntu-22.04:docker://node:16-bullseye,php-ci:docker://registry.michaelschiemer.de/ci/php-ci:latest +``` + +**Wenn .env nicht existiert:** +```bash +cd deployment/gitea-runner +cp .env.example .env +# Dann .env bearbeiten und php-ci Label sicherstellen (ist schon im Beispiel enthalten) +``` + +### Schritt 3: Runner neu registrieren + +⚠️ **WICHTIG:** Labels können nur bei der Registration geändert werden! + +```bash +cd deployment/gitea-runner + +# Runner unregistrieren +./unregister.sh + +# Runner mit neuen Labels neu registrieren +./register.sh +``` + +### Schritt 4: Verifikation + +1. **In Gitea UI prüfen:** + - Gehe zu: https://git.michaelschiemer.de/admin/actions/runners + - Runner sollte jetzt das `php-ci` Label zeigen + +2. **Workflow testen:** + - Ein Workflow mit `runs-on: php-ci` sollte jetzt funktionieren + +## Troubleshooting + +**Runner zeigt php-ci Label nicht:** +- Runner muss neu registriert werden (Labels können nicht dynamisch geändert werden) +- Prüfe ob Image verfügbar ist: `docker exec gitea-runner-dind docker images | grep php-ci` + +**Workflow findet keinen Runner:** +- Prüfe ob Runner das Label hat (Gitea UI) +- Prüfe ob Image verfügbar ist (für lokales Image: in docker-dind) + +## Schnellstart + +```bash +cd deployment/gitea-runner + +# 1. Image bauen und in docker-dind laden +./build-ci-image.sh +docker save php-ci:latest | docker exec -i gitea-runner-dind docker load + +# 2. .env prüfen/anpassen +nano .env # Sicherstellen dass php-ci:docker://php-ci:latest in GITEA_RUNNER_LABELS ist + +# 3. Runner neu registrieren +./unregister.sh +./register.sh +``` diff --git a/docker/ci/Dockerfile b/docker/ci/Dockerfile new file mode 100644 index 00000000..4ff2d670 --- /dev/null +++ b/docker/ci/Dockerfile @@ -0,0 +1,69 @@ +# Dockerfile für CI/CD Workflows +# Optimiert für Gitea Actions Runner mit PHP 8.5 und allen benötigten Tools +FROM php:8.5.0RC3-cli + +# System-Abhängigkeiten für CI/CD +RUN apt-get update && apt-get install -y \ + git \ + curl \ + unzip \ + zip \ + lsb-release \ + ca-certificates \ + apt-transport-https \ + jq \ + ansible \ + libzip-dev \ + libpng-dev \ + libjpeg-dev \ + libfreetype6-dev \ + libwebp-dev \ + libavif-dev \ + libxpm-dev \ + libsodium-dev \ + libpq-dev \ + libxml2-dev \ + libicu-dev \ + libonig-dev \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +# Installiere PHP Extensions (CLI-Version) +RUN docker-php-ext-configure gd \ + --with-freetype \ + --with-jpeg \ + --with-webp \ + && docker-php-ext-install -j$(nproc) \ + zip \ + pdo_mysql \ + pdo_pgsql \ + pcntl \ + bcmath \ + mbstring \ + xml \ + intl \ + exif \ + soap \ + gd + +# Installiere PECL Extensions +RUN pecl install apcu redis-6.3.0RC1 \ + && docker-php-ext-enable apcu redis + +# Configure APCu +RUN echo "apc.enable_cli=1" >> /usr/local/etc/php/conf.d/docker-php-ext-apcu.ini \ + && echo "apc.shm_size=128M" >> /usr/local/etc/php/conf.d/docker-php-ext-apcu.ini + +# Composer installieren +RUN curl -sS https://getcomposer.org/installer | php \ + && mv composer.phar /usr/local/bin/composer \ + && chmod +x /usr/local/bin/composer + +# Arbeitsverzeichnis +WORKDIR /workspace + +# Standard-User für CI (UID/GID 1000) +RUN groupadd -g 1000 ci && useradd -u 1000 -g ci -m ci + +# Stelle sicher, dass alle benötigten Tools verfügbar sind +RUN php -v && composer --version && git --version && jq --version