Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 6 additions & 14 deletions .github/workflows/develop-CD.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,26 +17,17 @@ 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
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-dev:stage
run: docker push ${{ secrets.DOCKER_USERNAME }}/frontend-dev:stage-${{ github.sha }}

# 👉 Add VM to known_hosts
- name: Add VM to known_hosts
Expand All @@ -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
63 changes: 19 additions & 44 deletions .github/workflows/master-CD.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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