diff --git a/.gitea/workflows/backend-image.yml b/.gitea/workflows/backend-image.yml index 35eb3ac..8ea8727 100644 --- a/.gitea/workflows/backend-image.yml +++ b/.gitea/workflows/backend-image.yml @@ -4,38 +4,66 @@ on: push: branches: [main] tags: ["v*.*.*"] + workflow_dispatch: jobs: 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: - name: Checkout 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 with: - registry: ${{ vars.REGISTRY }} - username: ${{ secrets.REGISTRY_USERNAME }} - password: ${{ secrets.REGISTRY_PASSWORD }} + registry: ${{ env.REGISTRY_PUSH }} + username: ${{ gitea.actor }} + # 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 uses: docker/metadata-action@v5 with: - images: ${{ vars.REGISTRY }}/${{ github.repository_owner }}/apicore-backend + images: ${{ env.REGISTRY_PUSH }}/${{ steps.image.outputs.name }} tags: | type=raw,value=latest,enable={{is_default_branch}} type=sha,format=short type=semver,pattern={{version}} - - name: Set up Buildx - uses: docker/setup-buildx-action@v3 - - - name: Build and push - uses: docker/build-push-action@v5 + - name: Image bauen und pushen + uses: docker/build-push-action@v6 with: context: ./ApiCore-Backend push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} + cache-from: type=gha + cache-to: type=gha,mode=max diff --git a/.gitea/workflows/frontend-image.yml b/.gitea/workflows/frontend-image.yml index f58d528..0b82383 100644 --- a/.gitea/workflows/frontend-image.yml +++ b/.gitea/workflows/frontend-image.yml @@ -4,36 +4,62 @@ on: push: branches: [main] tags: ["v*.*.*"] + workflow_dispatch: jobs: 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: - name: Checkout 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 with: - registry: ${{ vars.REGISTRY }} - username: ${{ secrets.REGISTRY_USERNAME }} - password: ${{ secrets.REGISTRY_PASSWORD }} + registry: ${{ env.REGISTRY_PUSH }} + username: ${{ gitea.actor }} + # 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 uses: docker/metadata-action@v5 with: - images: ${{ vars.REGISTRY }}/${{ github.repository_owner }}/apicore-frontend + images: ${{ env.REGISTRY_PUSH }}/${{ steps.image.outputs.name }} tags: | type=raw,value=latest,enable={{is_default_branch}} type=sha,format=short type=semver,pattern={{version}} - - name: Set up Buildx - uses: docker/setup-buildx-action@v3 - - - name: Build and push - uses: docker/build-push-action@v5 + - name: Image bauen und pushen + uses: docker/build-push-action@v6 with: context: ./ApiCore-Frontend push: true @@ -41,3 +67,5 @@ jobs: NEXT_PUBLIC_API_URL=${{ vars.NEXT_PUBLIC_API_URL }} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} + cache-from: type=gha + cache-to: type=gha,mode=max diff --git a/deploy/k8s/backend/deployment.yaml b/deploy/k8s/backend/deployment.yaml index f48c837..670a2e5 100644 --- a/deploy/k8s/backend/deployment.yaml +++ b/deploy/k8s/backend/deployment.yaml @@ -16,7 +16,7 @@ spec: spec: containers: - name: apicore-backend - image: git.encry.de/Nick.Rosenloecher/apicore-backend:latest + image: git.encry.de/nick.rosenloecher/apicore-backend:latest ports: - containerPort: 3001 envFrom: diff --git a/deploy/k8s/frontend/deployment.yaml b/deploy/k8s/frontend/deployment.yaml index 6480e43..b99d1ca 100644 --- a/deploy/k8s/frontend/deployment.yaml +++ b/deploy/k8s/frontend/deployment.yaml @@ -16,7 +16,7 @@ spec: spec: containers: - name: apicore-frontend - image: git.encry.de/Nick.Rosenloecher/apicore-frontend:latest + image: git.encry.de/nick.rosenloecher/apicore-frontend:latest ports: - containerPort: 3000 envFrom: