diff --git a/.gitea/workflows/main.yml b/.gitea/workflows/main.yml index 386900b..bac1706 100644 --- a/.gitea/workflows/main.yml +++ b/.gitea/workflows/main.yml @@ -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 }} \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 36464a9..c901f55 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,2 +1,37 @@ -FROM nginx:alpine -RUN echo "

Ciao da Gitea Actions su GKE! v1

" > /usr/share/nginx/html/index.html \ No newline at end of file +# --- 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;"] \ No newline at end of file