Aggiorna il workflow di deployment per supportare ambienti multipli e aggiungi messaggio di stato nel template Vue
All checks were successful
Multi-Env Deploy / build-and-deploy (push) Successful in 33s

This commit is contained in:
2026-01-29 09:10:37 +01:00
parent 32314842a4
commit 71001d4005
2 changed files with 30 additions and 26 deletions

View File

@@ -1,5 +1,10 @@
name: GKE Auto-Deploy name: Multi-Env Deploy
on: [push]
on:
push:
branches:
- main
- develop
env: env:
PROJECT_ID: deployments-485614 PROJECT_ID: deployments-485614
@@ -7,10 +12,7 @@ env:
REPO_NAME: gitea-repo REPO_NAME: gitea-repo
CLUSTER_NAME: gitea-cluster CLUSTER_NAME: gitea-cluster
CLUSTER_ZONE: europe-west1-b CLUSTER_ZONE: europe-west1-b
APP_NAME: varco # change this to your app name
# --- CONFIGURAZIONE PROGETTO ---
APP_NAME: varco # Nome dell'applicazione
# -------------------------------
jobs: jobs:
build-and-deploy: build-and-deploy:
@@ -19,6 +21,18 @@ jobs:
- name: Checkout - name: Checkout
uses: actions/checkout@v3 uses: actions/checkout@v3
- name: Set Environment Variables
run: |
if [[ "${{ gitea.ref }}" == "refs/heads/main" ]]; then
echo "Stiamo andando in PRODUZIONE"
echo "TARGET_NS=default" >> $GITHUB_ENV
echo "BASE_DOMAIN=prod.bytebuilder.it" >> $GITHUB_ENV
else
echo "Stiamo andando in STAGING"
echo "TARGET_NS=staging" >> $GITHUB_ENV
echo "BASE_DOMAIN=demo.bytebuilder.it" >> $GITHUB_ENV
fi
- name: Google Auth - name: Google Auth
uses: google-github-actions/auth@v1 uses: google-github-actions/auth@v1
with: with:
@@ -27,7 +41,6 @@ jobs:
- 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:
# Installiamo anche 'gettext-base' che contiene il comando envsubst (se manca)
install_components: 'gke-gcloud-auth-plugin,kubectl' install_components: 'gke-gcloud-auth-plugin,kubectl'
- name: Docker Auth - name: Docker Auth
@@ -35,34 +48,24 @@ jobs:
- name: Build and Push - name: Build and Push
run: | run: |
# Costruiamo il nome completo dell'immagine # Usiamo il namespace come parte del tag per evitare confusione
# Lo esportiamo in GITHUB_ENV così diventa disponibile agli step successivi IMAGE_TAG=${{ env.REGION }}-docker.pkg.dev/${{ env.PROJECT_ID }}/${{ env.REPO_NAME }}/${{ env.APP_NAME }}:${{ env.TARGET_NS }}-${{ gitea.sha }}
echo "FULL_IMAGE_NAME=${{ env.REGION }}-docker.pkg.dev/${{ env.PROJECT_ID }}/${{ env.REPO_NAME }}/${{ env.APP_NAME }}:${{ gitea.sha }}" >> $GITHUB_ENV
# Nota: uso la variabile appena creata leggendola dall'ambiente corrente # Salviamo il nome completo per il passaggio successivo
IMAGE_TAG=${{ env.REGION }}-docker.pkg.dev/${{ env.PROJECT_ID }}/${{ env.REPO_NAME }}/${{ env.APP_NAME }}:${{ gitea.sha }} echo "FULL_IMAGE_NAME=$IMAGE_TAG" >> $GITHUB_ENV
docker build -t $IMAGE_TAG . docker build -t $IMAGE_TAG .
docker push $IMAGE_TAG docker push $IMAGE_TAG
# --- PARTE NUOVA: TEMPLATING E APPLY ---
- name: Deploy to GKE - name: Deploy to GKE
run: | run: |
gcloud container clusters get-credentials ${{ env.CLUSTER_NAME }} --zone ${{ env.CLUSTER_ZONE }} gcloud container clusters get-credentials ${{ env.CLUSTER_NAME }} --zone ${{ env.CLUSTER_ZONE }}
# 1. Installiamo envsubst (se non c'è già nell'immagine, di solito c'è ma per sicurezza)
sudo apt-get update && sudo apt-get install -y gettext-base sudo apt-get update && sudo apt-get install -y gettext-base
# 2. Sostituzione variabili # Sostituisce APP_NAME, BASE_DOMAIN e FULL_IMAGE_NAME nel template
# Legge k8s/deployment.yaml, sostituisce ${APP_NAME} e ${FULL_IMAGE_NAME}
# Scrive il risultato in un file temporaneo 'final-deploy.yaml'
envsubst < k8s/deployment.yaml > final-deploy.yaml envsubst < k8s/deployment.yaml > final-deploy.yaml
# (Opzionale) Stampiamo il file per debug echo "Deploying to namespace: ${{ env.TARGET_NS }}"
echo "--- FILE YAML GENERATO ---"
cat final-deploy.yaml # 3. APPLICA AL NAMESPACE GIUSTO
echo "--------------------------" kubectl apply -f final-deploy.yaml -n ${{ env.TARGET_NS }}
# 3. Applica a Kubernetes
# Se il deployment non esiste, lo crea. Se esiste, lo aggiorna.
kubectl apply -f final-deploy.yaml

View File

@@ -5,6 +5,7 @@
<p>Questa è una demo di Vue.js</p> <p>Questa è una demo di Vue.js</p>
<div class="info"> <div class="info">
<p>Stai utilizzando Vue 3 con Vite</p> <p>Stai utilizzando Vue 3 con Vite</p>
<p>Deploy di produzione!</p>
</div> </div>
</div> </div>
</div> </div>