fix: Runner-Label und Registry-Push in Gitea-Actions-Workflows korrigieren
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:
1 parent
8592051f7e
commit
41c82d7dc7
4 files changed
+82
-26
No files matched your search
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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:
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
Reference in new issue
Block a user