fix: Runner-Label und Registry-Push in Gitea-Actions-Workflows korrigieren
Backend Image / build-and-push (push) Successful in 4m44s
Frontend Image / build-and-push (push) Successful in 4m58s

runs-on ubuntu-latest passte auf keinen registrierten Runner (Label
docker-builder erforderlich, siehe funktionierendes Referenzprojekt).
Push laeuft jetzt ueber den cluster-internen Service gitea:80 statt
git.encry.de, da der Cloudflare-Proxy Registry-Blob-Uploads mit "413
Payload Too Large" ablehnt. Auth ueber gitea.actor + REGISTRY_TOKEN
(GITEA_TOKEN hat kein Package-Write-Recht). Image-Pfad wird jetzt
kleingeschrieben (OCI verbietet Grossbuchstaben) - betrifft auch den
Owner-Namen in den K8s-Deployment-Manifesten.
This commit is contained in:
Nick Szaunig committed 2026-08-26 16:58:28 +02:00
1 parent 8592051f7e
commit 41c82d7dc7
4 files changed
+82 -26

No files matched your search

+40 -12
View File
@@ -4,38 +4,66 @@ on:
push: push:
branches: [main] branches: [main]
tags: ["v*.*.*"] tags: ["v*.*.*"]
workflow_dispatch:
jobs: jobs:
build-and-push: build-and-push:
runs-on: ubuntu-latest runs-on: docker-builder
env:
# Nur fuer Doku/OCI-Labels, siehe REGISTRY_PUSH fuer den eigentlichen Push.
REGISTRY: git.encry.de
# Cluster-interner Service-Name statt git.encry.de: Registry-Blob-
# Uploads (PUT) vertragen sich nicht mit dem Cloudflare-Proxy vor
# git.encry.de ("413 Payload Too Large" unabhaengig von der Groesse).
# Der Runner-Pod erreicht den Gitea-Service direkt ueber Kubernetes-DNS.
# Push und Pull landen im selben Registry-Pfad (Owner/Repo:Tag), der
# Hostname ist nur die Verbindung, daher bleibt der Pull in den
# k8s-Manifesten unveraendert ueber git.encry.de.
REGISTRY_PUSH: gitea:80
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Log in to registry - name: Image-Namen in Kleinbuchstaben ermitteln
# OCI-Registries erlauben nur Kleinbuchstaben im Repository-Pfad;
# der Gitea-Owner-Name behaelt Gross-/Kleinschreibung bei.
id: image
run: echo "name=$(echo '${{ gitea.repository_owner }}/apicore-backend' | tr '[:upper:]' '[:lower:]')" >> "$GITEA_OUTPUT"
- name: Docker Buildx einrichten
uses: docker/setup-buildx-action@v3
with:
# REGISTRY_PUSH ist Klartext-HTTP (Gitea-Service intern ohne TLS)
# statt HTTPS — BuildKit lehnt das ohne diese Freigabe ab.
config-inline: |
[registry."gitea:80"]
http = true
- name: Bei der Gitea-Container-Registry anmelden
uses: docker/login-action@v3 uses: docker/login-action@v3
with: with:
registry: ${{ vars.REGISTRY }} registry: ${{ env.REGISTRY_PUSH }}
username: ${{ secrets.REGISTRY_USERNAME }} username: ${{ gitea.actor }}
password: ${{ secrets.REGISTRY_PASSWORD }} # GITEA_TOKEN hat kein Package-Write-Recht — separates Personal
# Access Token (Scope "package") als Secret REGISTRY_TOKEN anlegen.
password: ${{ secrets.REGISTRY_TOKEN }}
- name: Docker metadata - name: Metadaten (Tags/Labels) ermitteln
id: meta id: meta
uses: docker/metadata-action@v5 uses: docker/metadata-action@v5
with: with:
images: ${{ vars.REGISTRY }}/${{ github.repository_owner }}/apicore-backend images: ${{ env.REGISTRY_PUSH }}/${{ steps.image.outputs.name }}
tags: | tags: |
type=raw,value=latest,enable={{is_default_branch}} type=raw,value=latest,enable={{is_default_branch}}
type=sha,format=short type=sha,format=short
type=semver,pattern={{version}} type=semver,pattern={{version}}
- name: Set up Buildx - name: Image bauen und pushen
uses: docker/setup-buildx-action@v3 uses: docker/build-push-action@v6
- name: Build and push
uses: docker/build-push-action@v5
with: with:
context: ./ApiCore-Backend context: ./ApiCore-Backend
push: true push: true
tags: ${{ steps.meta.outputs.tags }} tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }} labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
+40 -12
View File
@@ -4,36 +4,62 @@ on:
push: push:
branches: [main] branches: [main]
tags: ["v*.*.*"] tags: ["v*.*.*"]
workflow_dispatch:
jobs: jobs:
build-and-push: build-and-push:
runs-on: ubuntu-latest runs-on: docker-builder
env:
# Nur fuer Doku/OCI-Labels, siehe REGISTRY_PUSH fuer den eigentlichen Push.
REGISTRY: git.encry.de
# Cluster-interner Service-Name statt git.encry.de: Registry-Blob-
# Uploads (PUT) vertragen sich nicht mit dem Cloudflare-Proxy vor
# git.encry.de ("413 Payload Too Large" unabhaengig von der Groesse).
# Der Runner-Pod erreicht den Gitea-Service direkt ueber Kubernetes-DNS.
# Push und Pull landen im selben Registry-Pfad (Owner/Repo:Tag), der
# Hostname ist nur die Verbindung, daher bleibt der Pull in den
# k8s-Manifesten unveraendert ueber git.encry.de.
REGISTRY_PUSH: gitea:80
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Log in to registry - name: Image-Namen in Kleinbuchstaben ermitteln
# OCI-Registries erlauben nur Kleinbuchstaben im Repository-Pfad;
# der Gitea-Owner-Name behaelt Gross-/Kleinschreibung bei.
id: image
run: echo "name=$(echo '${{ gitea.repository_owner }}/apicore-frontend' | tr '[:upper:]' '[:lower:]')" >> "$GITEA_OUTPUT"
- name: Docker Buildx einrichten
uses: docker/setup-buildx-action@v3
with:
# REGISTRY_PUSH ist Klartext-HTTP (Gitea-Service intern ohne TLS)
# statt HTTPS — BuildKit lehnt das ohne diese Freigabe ab.
config-inline: |
[registry."gitea:80"]
http = true
- name: Bei der Gitea-Container-Registry anmelden
uses: docker/login-action@v3 uses: docker/login-action@v3
with: with:
registry: ${{ vars.REGISTRY }} registry: ${{ env.REGISTRY_PUSH }}
username: ${{ secrets.REGISTRY_USERNAME }} username: ${{ gitea.actor }}
password: ${{ secrets.REGISTRY_PASSWORD }} # GITEA_TOKEN hat kein Package-Write-Recht — separates Personal
# Access Token (Scope "package") als Secret REGISTRY_TOKEN anlegen.
password: ${{ secrets.REGISTRY_TOKEN }}
- name: Docker metadata - name: Metadaten (Tags/Labels) ermitteln
id: meta id: meta
uses: docker/metadata-action@v5 uses: docker/metadata-action@v5
with: with:
images: ${{ vars.REGISTRY }}/${{ github.repository_owner }}/apicore-frontend images: ${{ env.REGISTRY_PUSH }}/${{ steps.image.outputs.name }}
tags: | tags: |
type=raw,value=latest,enable={{is_default_branch}} type=raw,value=latest,enable={{is_default_branch}}
type=sha,format=short type=sha,format=short
type=semver,pattern={{version}} type=semver,pattern={{version}}
- name: Set up Buildx - name: Image bauen und pushen
uses: docker/setup-buildx-action@v3 uses: docker/build-push-action@v6
- name: Build and push
uses: docker/build-push-action@v5
with: with:
context: ./ApiCore-Frontend context: ./ApiCore-Frontend
push: true push: true
@@ -41,3 +67,5 @@ jobs:
NEXT_PUBLIC_API_URL=${{ vars.NEXT_PUBLIC_API_URL }} NEXT_PUBLIC_API_URL=${{ vars.NEXT_PUBLIC_API_URL }}
tags: ${{ steps.meta.outputs.tags }} tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }} labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
+1 -1
View File
@@ -16,7 +16,7 @@ spec:
spec: spec:
containers: containers:
- name: apicore-backend - name: apicore-backend
image: git.encry.de/Nick.Rosenloecher/apicore-backend:latest image: git.encry.de/nick.rosenloecher/apicore-backend:latest
ports: ports:
- containerPort: 3001 - containerPort: 3001
envFrom: envFrom:
+1 -1
View File
@@ -16,7 +16,7 @@ spec:
spec: spec:
containers: containers:
- name: apicore-frontend - name: apicore-frontend
image: git.encry.de/Nick.Rosenloecher/apicore-frontend:latest image: git.encry.de/nick.rosenloecher/apicore-frontend:latest
ports: ports:
- containerPort: 3000 - containerPort: 3000
envFrom: envFrom: