name: Build and Push Frontend on: push: branches: - main paths: - 'workloads/ecommerce/index.html' - 'workloads/ecommerce/Dockerfile' jobs: build: runs-on: ubuntu-latest steps: - name: Checkout del código uses: actions/checkout@v3 with: fetch-depth: 0 # Clonar todo para evitar errores de historial - name: Definir Versión Semántica id: vars run: echo "VERSION=v1.0.${{ github.run_number }}" >> $GITHUB_OUTPUT - name: Login en Gitea Registry uses: docker/login-action@v2 with: registry: gitea.cruzcloud.net username: ${{ secrets.REGISTRY_USER }} password: ${{ secrets.REGISTRY_PASSWORD }} - name: Construir y Subir Imagen uses: docker/build-push-action@v4 with: context: workloads/ecommerce/ push: true tags: | gitea.cruzcloud.net/devops/ecommerce-frontend:${{ steps.vars.outputs.VERSION }} gitea.cruzcloud.net/devops/ecommerce-frontend:latest - name: Actualizar Manifiesto GitOps (CD) run: | # 1. Configuración de identidad git config --global user.name "Gitea Actions" git config --global user.email "actions@gitea.cruzcloud.net" # 2. Sincronización agresiva: asegurar que estamos en la rama correcta git checkout main # 3. Aplicar el cambio sed -i -E "s|(image: gitea.cruzcloud.net/devops/ecommerce-frontend:).*|\1${{ steps.vars.outputs.VERSION }}|g" workloads/ecommerce/frontend.yaml # 4. Commit y Push forzado git add workloads/ecommerce/frontend.yaml git commit -m "chore: release ${{ steps.vars.outputs.VERSION }} [skip ci]" || exit 0 git push origin main --force