diff --git a/.github/workflows/develop-CD.yml b/.github/workflows/develop-CD.yml index fcd361b..70ce8cc 100644 --- a/.github/workflows/develop-CD.yml +++ b/.github/workflows/develop-CD.yml @@ -17,18 +17,9 @@ jobs: with: ref: develop - - name: Set up Node.js - uses: actions/setup-node@v4 - with: - node-version: '20' - - - name: Install and format (No build in develop) - run: | - npm ci - # ๐Ÿ‘‰ Build la imagen Docker - name: Build Docker image - run: docker build -f Dockerfile.prod -t ${{ secrets.DOCKER_USERNAME }}/frontend-dev:stage . + run: docker build -f Dockerfile.prod -t ${{ secrets.DOCKER_USERNAME }}/frontend-dev:stage-${{ github.sha }} . # ๐Ÿ‘‰ Log in to DockerHub - name: DockerHub Login @@ -36,7 +27,7 @@ jobs: # ๐Ÿ‘‰ Push la imagen - name: Push Docker image to DockerHub - run: docker push ${{ secrets.DOCKER_USERNAME }}/frontend-dev:stage + run: docker push ${{ secrets.DOCKER_USERNAME }}/frontend-dev:stage-${{ github.sha }} # ๐Ÿ‘‰ Add VM to known_hosts - name: Add VM to known_hosts @@ -53,6 +44,7 @@ jobs: key: ${{ secrets.GCP_SSH_KEY }} script: | cd /home/proyectosdanils/ - docker compose down - docker pull ${{ secrets.DOCKER_USERNAME }}/frontend-dev:stage - docker compose up -d + docker compose down frontend-dev + docker pull ${{ secrets.DOCKER_USERNAME }}/frontend-dev:stage-${{ github.sha }} + export DOCKER_IMAGE_FRONTEND_DEV=${{ secrets.DOCKER_USERNAME }}/frontend-dev:stage-${{ github.sha }} + docker compose up -d frontend-dev diff --git a/.github/workflows/master-CD.yml b/.github/workflows/master-CD.yml index 017c79b..bd001d3 100644 --- a/.github/workflows/master-CD.yml +++ b/.github/workflows/master-CD.yml @@ -15,62 +15,37 @@ jobs: runs-on: ubuntu-latest steps: - # 1. Checkout del cรณdigo - name: Checkout repository uses: actions/checkout@v4 - # 2. Configurar Node.js - - name: Set up Node.js - uses: actions/setup-node@v4 - with: - node-version: '20' + # ๐Ÿ‘‰ Build la imagen Docker + - name: Build Docker image + run: docker build -f Dockerfile.prod -t ${{ secrets.DOCKER_USERNAME }}/frontend-prod:${{ github.sha }} . - # 3. Instalar dependencias, hacer build y aรฑadir a known_hosts - - name: Install and Build - run: | - npm install - npm run format - npm run build - mkdir prod-dist - cp -r .next public package.json package-lock.json next.config.js prod-dist + # ๐Ÿ‘‰ Log in to DockerHub + - name: DockerHub Login + run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin + + # ๐Ÿ‘‰ Push la imagen + - name: Push Docker image to DockerHub + run: docker push ${{ secrets.DOCKER_USERNAME }}/frontend-prod:${{ github.sha }} + + # ๐Ÿ‘‰ Add VM to known_hosts - name: Add VM to known_hosts run: | mkdir -p ~/.ssh ssh-keyscan ${{ secrets.GCP_VM_IP }} >> ~/.ssh/known_hosts - # 4. Detener PM2 antes de la subida - - name: Stop PM2 before upload + # ๐Ÿ‘‰ Desplegar en la VM + - name: Deploy on GCP VM uses: appleboy/ssh-action@v0.1.4 with: host: ${{ secrets.GCP_VM_IP }} username: ${{ secrets.GCP_VM_USER }} key: ${{ secrets.GCP_SSH_KEY }} script: | - if pm2 list | grep -q "frontend-prod"; then - pm2 delete frontend-prod - fi - - # 5. Enviar archivos a la VM via SSH (usando rsync) - - name: Deploy to GCP VM - uses: appleboy/scp-action@master - with: - host: ${{ secrets.GCP_VM_IP }} - username: ${{ secrets.GCP_VM_USER }} - key: ${{ secrets.GCP_SSH_KEY }} - source: 'prod-dist' - target: '/home/proyectosdanils/frontend-prod' - port: 22 - timeout: 30s - rm: true - - # 6. Reiniciar PM2 en la VM - - name: Restart PM2 - uses: appleboy/ssh-action@master - with: - host: ${{ secrets.GCP_VM_IP }} - username: ${{ secrets.GCP_VM_USER }} - key: ${{ secrets.GCP_SSH_KEY }} - script: | - cd /home/proyectosdanils/frontend-prod - pm2 start "npm run start" --name "frontend-prod" --watch - pm2 save + cd /home/proyectosdanils/ + docker compose down frontend-prod + docker pull ${{ secrets.DOCKER_USERNAME }}/frontend-prod:${{ github.sha }} + export DOCKER_IMAGE_FRONTEND_PROD=${{ secrets.DOCKER_USERNAME }}/frontend-prod:${{ github.sha }} + docker compose up -d frontend-prod \ No newline at end of file