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
All checks were successful
GKE Deploy / build-and-deploy (push) Successful in 35s
This commit is contained in:
@@ -4,7 +4,7 @@ on: [push]
|
|||||||
env:
|
env:
|
||||||
PROJECT_ID: deployments-485614
|
PROJECT_ID: deployments-485614
|
||||||
REGION: europe-west1
|
REGION: europe-west1
|
||||||
REPO_NAME: gitea-repo
|
REPO_NAME: gitea-repo # Assicurati di aver creato questo repo su Artifact Registry!
|
||||||
IMAGE_NAME: demo-app
|
IMAGE_NAME: demo-app
|
||||||
CLUSTER_NAME: gitea-cluster
|
CLUSTER_NAME: gitea-cluster
|
||||||
CLUSTER_ZONE: europe-west1-b
|
CLUSTER_ZONE: europe-west1-b
|
||||||
@@ -16,34 +16,35 @@ jobs:
|
|||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
# 1. Login su Google Cloud
|
||||||
- name: Google Auth
|
- name: Google Auth
|
||||||
uses: google-github-actions/auth@v1
|
uses: google-github-actions/auth@v1
|
||||||
with:
|
with:
|
||||||
credentials_json: ${{ secrets.GCP_SA_KEY }}
|
credentials_json: ${{ secrets.GCP_SA_KEY }}
|
||||||
|
|
||||||
# --- MODIFICA QUI ---
|
# 2. Setup Strumenti Google
|
||||||
# Diciamo alla action di installare anche kubectl e il plugin auth
|
|
||||||
- name: Set up Cloud SDK
|
- name: Set up Cloud SDK
|
||||||
uses: google-github-actions/setup-gcloud@v1
|
uses: google-github-actions/setup-gcloud@v1
|
||||||
with:
|
with:
|
||||||
install_components: 'gke-gcloud-auth-plugin,kubectl'
|
install_components: 'gke-gcloud-auth-plugin,kubectl'
|
||||||
# --------------------
|
# 3. Configura Docker per Google
|
||||||
|
|
||||||
- name: Docker Auth
|
- name: Docker Auth
|
||||||
run: gcloud auth configure-docker ${{ env.REGION }}-docker.pkg.dev
|
run: gcloud auth configure-docker ${{ env.REGION }}-docker.pkg.dev
|
||||||
|
|
||||||
|
# 4. Build e Push dell'immagine
|
||||||
- name: Build and Push
|
- name: Build and Push
|
||||||
run: |
|
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 }}
|
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 build -t $IMAGE_TAG .
|
||||||
docker push $IMAGE_TAG
|
docker push $IMAGE_TAG
|
||||||
|
|
||||||
# --- MODIFICA QUI ---
|
# 5. Aggiorna Kubernetes
|
||||||
# Abbiamo rimosso 'gcloud components install...' perché ora lo fa lo step sopra
|
|
||||||
- name: Deploy to GKE
|
- name: Deploy to GKE
|
||||||
run: |
|
run: |
|
||||||
# Collega kubectl al cluster
|
|
||||||
gcloud container clusters get-credentials ${{ env.CLUSTER_NAME }} --zone ${{ env.CLUSTER_ZONE }}
|
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 }}
|
kubectl set image deployment/demo-app demo-container=${{ env.REGION }}-docker.pkg.dev/${{ env.PROJECT_ID }}/${{ env.REPO_NAME }}/${{ env.IMAGE_NAME }}:${{ gitea.sha }}
|
||||||
39
Dockerfile
39
Dockerfile
@@ -1,2 +1,37 @@
|
|||||||
FROM nginx:alpine
|
# --- STAGE 1: Build dell'applicazione ---
|
||||||
RUN echo "<h1>Ciao da Gitea Actions su GKE! v1</h1>" > /usr/share/nginx/html/index.html
|
# 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;"]
|
||||||
Reference in New Issue
Block a user