64 lines
2.4 KiB
YAML
64 lines
2.4 KiB
YAML
name: Build and Push Frontend
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
paths:
|
|
- 'workloads/ecommerce/index.html'
|
|
- 'workloads/ecommerce/Dockerfile'
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 20 # Aumentamos a 20 min para evitar que se corte el clone
|
|
steps:
|
|
- name: Checkout del código
|
|
uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 1 # IMPORTANTE: Solo descarga el último commit, no todo el historial
|
|
|
|
# 1. NUEVO: Generamos la versión semántica dinámica
|
|
- name: Definir Versión Semántica
|
|
id: vars
|
|
run: |
|
|
# Formato v1.0.X (X = número de ejecución del pipeline)
|
|
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 }}
|
|
|
|
# 2. ACTUALIZADO: Usamos la nueva variable para los tags de Docker
|
|
- 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
|
|
|
|
# 3. ACTUALIZADO: Inyectamos la versión limpia en el manifiesto YAML
|
|
- name: Actualizar Manifiesto GitOps (CD)
|
|
run: |
|
|
git config user.name "Cristian Felipe"
|
|
git config user.email "[email protected]"
|
|
|
|
# 1. Recuperamos el estado más reciente del remoto sin hacer merge todavía
|
|
git fetch origin main
|
|
|
|
# 2. Reseteamos nuestra copia local para que coincida exactamente con el remoto
|
|
# Esto elimina cualquier discrepancia de commits que no veíamos
|
|
git reset --hard origin/main
|
|
|
|
# 3. Aplicamos el cambio de versión sobre el archivo ya actualizado
|
|
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 (pero seguro al haber hecho reset)
|
|
git add workloads/ecommerce/frontend.yaml
|
|
git commit -m "chore: release ${{ steps.vars.outputs.VERSION }} [skip ci]"
|
|
git push origin HEAD:main |