Files
michaelschiemer/deployment/NATIVE-WORKFLOW-README.md

3.5 KiB

Native Workflow ohne GitHub Actions

Problem

Der aktuelle Workflow (production-deploy.yml) verwendet GitHub Actions wie:

  • actions/checkout@v4
  • shivammathur/setup-php@v2
  • actions/cache@v3
  • docker/setup-buildx-action@v3
  • docker/build-push-action@v5

Diese Actions müssen von GitHub geladen werden, was zu Abbrüchen führen kann wenn:

  • GitHub nicht erreichbar ist
  • Actions nicht geladen werden können
  • Timeouts auftreten

Lösung: Native Workflow

Die Datei .gitea/workflows/production-deploy-native.yml verwendet nur Shell-Commands und keine GitHub Actions:

Vorteile

  1. Keine GitHub-Abhängigkeit: Funktioniert komplett offline
  2. Schneller: Keine Action-Downloads
  3. Weniger Fehlerquellen: Direkte Shell-Commands statt Actions
  4. Einfacher zu debuggen: Standard-Bash-Scripts

Änderungen

1. Checkout

Vorher:

- uses: actions/checkout@v4

Nachher:

git clone --depth 1 --branch "$REF_NAME" \
  "https://git.michaelschiemer.de/${{ github.repository }}.git" \
  /workspace/repo

2. PHP Setup

Vorher:

- uses: shivammathur/setup-php@v2
  with:
    php-version: '8.3'

Nachher:

apt-get update
apt-get install -y php8.3 php8.3-cli php8.3-mbstring ...

3. Cache

Vorher:

- uses: actions/cache@v3

Nachher:

# Einfaches Datei-basiertes Caching
if [ -d "/tmp/composer-cache/vendor" ]; then
  cp -r /tmp/composer-cache/vendor /workspace/repo/vendor
fi

4. Docker Buildx

Vorher:

- uses: docker/setup-buildx-action@v3

Nachher:

docker buildx create --name builder --use || docker buildx use builder
docker buildx inspect --bootstrap

5. Docker Build/Push

Vorher:

- uses: docker/build-push-action@v5

Nachher:

docker buildx build \
  --file ./Dockerfile.production \
  --tag $REGISTRY/$IMAGE_NAME:latest \
  --push \
  .

Verwendung

Option 1: Native Workflow aktivieren

  1. Benenne um:

    mv .gitea/workflows/production-deploy.yml .gitea/workflows/production-deploy-with-actions.yml.bak
    mv .gitea/workflows/production-deploy-native.yml .gitea/workflows/production-deploy.yml
    
  2. Commite und pushe:

    git add .gitea/workflows/production-deploy.yml
    git commit -m "chore: switch to native workflow without GitHub Actions"
    git push origin main
    

Option 2: Beide parallel testen

Lass beide Workflows parallel laufen:

  • production-deploy.yml - Mit Actions (aktuell)
  • production-deploy-native.yml - Native (neue Version)

Gitea Actions Konfiguration

Wichtig: Wenn wir die native Version verwenden, brauchen wir DEFAULT_ACTIONS_URL nicht mehr in der Gitea-Konfiguration.

Aber es schadet auch nicht, es drin zu lassen für zukünftige Workflows.

Debugging

Wenn der native Workflow nicht funktioniert:

  1. Prüfe Git Clone:

    # Im Runner Container
    git clone --depth 1 https://git.michaelschiemer.de/michael/michaelschiemer.git /tmp/test
    
  2. Prüfe Docker Buildx:

    docker buildx version
    docker buildx ls
    
  3. Prüfe PHP Installation:

    php --version
    php -m  # Zeigt installierte Module
    

Empfehlung

Für Stabilität: Verwende die native Version (production-deploy-native.yml)

Für Kompatibilität: Bleib bei der Actions-Version (production-deploy.yml)

Die native Version sollte stabiler sein, da sie keine externen Dependencies benötigt.