Aggiungi il supporto per il build dell'applicazione e la configurazione di Nginx nel Dockerfile
All checks were successful
GKE Deploy / build-and-deploy (push) Successful in 35s

This commit is contained in:
2026-01-28 17:54:45 +01:00
parent ec4c89b3e2
commit 6852128ef8
2 changed files with 47 additions and 11 deletions

View File

@@ -4,7 +4,7 @@ on: [push]
env:
PROJECT_ID: deployments-485614
REGION: europe-west1
REPO_NAME: gitea-repo
REPO_NAME: gitea-repo # Assicurati di aver creato questo repo su Artifact Registry!
IMAGE_NAME: demo-app
CLUSTER_NAME: gitea-cluster
CLUSTER_ZONE: europe-west1-b
@@ -16,34 +16,35 @@ jobs:
- name: Checkout
uses: actions/checkout@v3
# 1. Login su Google Cloud
- name: Google Auth
uses: google-github-actions/auth@v1
with:
credentials_json: ${{ secrets.GCP_SA_KEY }}
# --- MODIFICA QUI ---
# Diciamo alla action di installare anche kubectl e il plugin auth
# 2. Setup Strumenti Google
- name: Set up Cloud SDK
uses: google-github-actions/setup-gcloud@v1
with:
install_components: 'gke-gcloud-auth-plugin,kubectl'
# --------------------
# 3. Configura Docker per Google
- name: Docker Auth
run: gcloud auth configure-docker ${{ env.REGION }}-docker.pkg.dev
# 4. Build e Push dell'immagine
- name: Build and Push
run: |
# Costruiamo il tag completo dell'immagine
IMAGE_TAG=${{ env.REGION }}-docker.pkg.dev/${{ env.PROJECT_ID }}/${{ env.REPO_NAME }}/${{ env.IMAGE_NAME }}:${{ gitea.sha }}
# Costruiamo e carichiamo
docker build -t $IMAGE_TAG .
docker push $IMAGE_TAG
# --- MODIFICA QUI ---
# Abbiamo rimosso 'gcloud components install...' perché ora lo fa lo step sopra
# 5. Aggiorna Kubernetes
- name: Deploy to GKE
run: |
# Collega kubectl al cluster
gcloud container clusters get-credentials ${{ env.CLUSTER_NAME }} --zone ${{ env.CLUSTER_ZONE }}
# Ora kubectl esiste e funzionerà!
# Aggiorna l'immagine nel deployment esistente
kubectl set image deployment/demo-app demo-container=${{ env.REGION }}-docker.pkg.dev/${{ env.PROJECT_ID }}/${{ env.REPO_NAME }}/${{ env.IMAGE_NAME }}:${{ gitea.sha }}

View File

@@ -1,2 +1,37 @@
FROM nginx:alpine
RUN echo "<h1>Ciao da Gitea Actions su GKE! v1</h1>" > /usr/share/nginx/html/index.html
# --- STAGE 1: Build dell'applicazione ---
# Usiamo un'immagine con Node per installare le dipendenze e compilare
FROM node:lts-alpine as build-stage
# Impostiamo la cartella di lavoro
WORKDIR /app
# Copiamo prima i file di dipendenze (per sfruttare la cache di Docker)
COPY package*.json ./
# Installiamo le dipendenze
RUN npm install
# Copiamo tutto il resto del codice sorgente
COPY . .
# Compiliamo il progetto per la produzione
# (Questo crea la cartella 'dist' con i file ottimizzati)
RUN npm run build
# --- STAGE 2: Serve con Nginx ---
# Usiamo un'immagine Nginx leggera per servire i file
FROM nginx:stable-alpine as production-stage
# Copiamo la configurazione personalizzata che abbiamo creato al punto 1
COPY nginx.conf /etc/nginx/nginx.conf
# Copiamo i file compilati dallo Stage 1 dentro la cartella pubblica di Nginx
# NOTA: Assicurati che il comando 'build' di Vue crei una cartella 'dist'.
# Se il tuo progetto crea una cartella diversa (es. 'build'), modifica qui sotto.
COPY --from=build-stage /app/dist /app
# Esponiamo la porta 80
EXPOSE 80
# Avviamo Nginx
CMD ["nginx", "-g", "daemon off;"]