3.5 KiB
Native Workflow ohne GitHub Actions
Problem
Der aktuelle Workflow (production-deploy.yml) verwendet GitHub Actions wie:
actions/checkout@v4shivammathur/setup-php@v2actions/cache@v3docker/setup-buildx-action@v3docker/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
- Keine GitHub-Abhängigkeit: Funktioniert komplett offline
- Schneller: Keine Action-Downloads
- Weniger Fehlerquellen: Direkte Shell-Commands statt Actions
- 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
-
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 -
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:
-
Prüfe Git Clone:
# Im Runner Container git clone --depth 1 https://git.michaelschiemer.de/michael/michaelschiemer.git /tmp/test -
Prüfe Docker Buildx:
docker buildx version docker buildx ls -
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.