From 4d95af38b44e20d7ec0012253000ae16f9842608 Mon Sep 17 00:00:00 2001 From: Rumazor Date: Sun, 8 Feb 2026 17:05:59 -0300 Subject: [PATCH] Mejora pipeline --- .github/workflows/docker-image.yml | 61 +++++++++++++++++++++++++----- 1 file changed, 52 insertions(+), 9 deletions(-) diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index d0b3b7b..9dcd4c9 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -2,7 +2,7 @@ name: CI Pipeline on: push: - branches: [ "main" ] + branches: ["main"] pull_request: env: @@ -23,33 +23,76 @@ jobs: runs-on: ubuntu-latest steps: - - name: Check out the repository + - name: Checkout repository uses: actions/checkout@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 + # Build images defined in docker-compose (backend + frontend) - name: Build containers run: docker compose -f docker-compose.yml build - - name: Start Postgres and Redis in background + # Start only infra services + - name: Start Postgres and Redis run: docker compose -f docker-compose.yml up -d postgres redis - - name: Wait for Postgres to be ready + - name: Wait for Postgres run: | - echo "Esperando a que Postgres inicie..." + echo "Esperando Postgres..." timeout 60 bash -c 'until docker compose exec -T postgres pg_isready -U postgres -d db_task_manager; do sleep 2; done' - echo "¡Postgres está listo!" + echo "Postgres listo" - - name: Wait for Redis to be ready + - name: Wait for Redis run: | - echo "Esperando a que Redis inicie..." + echo "Esperando Redis..." timeout 30 bash -c 'until docker compose exec -T redis redis-cli ping | grep -q PONG; do sleep 1; done' - echo "¡Redis está listo!" + echo "Redis listo" + # Run NestJS tests - name: Run NestJS tests run: docker compose -f docker-compose.yml run --rm nestjs yarn test - name: Cleanup if: always() run: docker compose -f docker-compose.yml down -v + + push-to-dockerhub: + needs: build-and-test + runs-on: ubuntu-latest + if: github.event_name == 'push' && github.ref == 'refs/heads/main' + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + # 🔥 Backend (NestJS) + - name: Build and push NestJS image + uses: docker/build-push-action@v5 + with: + context: ./backend + file: ./backend/Dockerfile + push: true + tags: | + ${{ secrets.DOCKERHUB_USERNAME }}/task-manager-backend:latest + ${{ secrets.DOCKERHUB_USERNAME }}/task-manager-backend:${{ github.sha }} + + # 🔵 Frontend (Next.js) – opcional + - name: Build and push NextJS image + uses: docker/build-push-action@v5 + with: + context: ./frontend + file: ./frontend/Dockerfile + push: true + tags: | + ${{ secrets.DOCKERHUB_USERNAME }}/task-manager-frontend:latest + ${{ secrets.DOCKERHUB_USERNAME }}/task-manager-frontend:${{ github.sha }}