name: Multi-Env Deploy on: push: branches: - main - develop env: PROJECT_ID: deployments-485614 REGION: europe-west1 REPO_NAME: gitea-repo CLUSTER_NAME: gitea-cluster CLUSTER_ZONE: europe-west1-b APP_NAME: varco # change this to your app name PROD_DOMAIN: prod.bytebuilder.it STAGING_DOMAIN: demo.bytebuilder.it jobs: build-and-deploy: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Set Environment Variables run: | if [[ "${{ gitea.ref }}" == "refs/heads/main" ]]; then echo "TARGET_NS=default" >> $GITHUB_ENV echo "BASE_DOMAIN=${{ env.PROD_DOMAIN }}" >> $GITHUB_ENV else echo "TARGET_NS=staging" >> $GITHUB_ENV echo "BASE_DOMAIN=${{ env.STAGING_DOMAIN }}" >> $GITHUB_ENV fi - name: Google Auth uses: google-github-actions/auth@v1 with: credentials_json: ${{ secrets.GCP_SA_KEY }} - name: Set up Cloud SDK uses: google-github-actions/setup-gcloud@v1 with: install_components: 'gke-gcloud-auth-plugin,kubectl' - name: Docker Auth run: gcloud auth configure-docker ${{ env.REGION }}-docker.pkg.dev - name: Build and Push run: | # Usiamo il namespace come parte del tag per evitare confusione IMAGE_TAG=${{ env.REGION }}-docker.pkg.dev/${{ env.PROJECT_ID }}/${{ env.REPO_NAME }}/${{ env.APP_NAME }}:${{ env.TARGET_NS }}-${{ gitea.sha }} # Salviamo il nome completo per il passaggio successivo echo "FULL_IMAGE_NAME=$IMAGE_TAG" >> $GITHUB_ENV docker build -t $IMAGE_TAG . docker push $IMAGE_TAG - name: Deploy to GKE run: | gcloud container clusters get-credentials ${{ env.CLUSTER_NAME }} --zone ${{ env.CLUSTER_ZONE }} sudo apt-get update && sudo apt-get install -y gettext-base # Sostituisce APP_NAME, BASE_DOMAIN e FULL_IMAGE_NAME nel template envsubst < k8s/deployment.yaml > final-deploy.yaml echo "Deploying to namespace: ${{ env.TARGET_NS }}" # 3. APPLICA AL NAMESPACE GIUSTO kubectl apply -f final-deploy.yaml -n ${{ env.TARGET_NS }}