Skip to content

mod

mod #22

name: CI/CD Pipeline
on:
push:
branches:
- feat/front-docker-deploy
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Log in to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build and push Docker image
uses: docker/build-push-action@v2
with:
push: true
context: .
file: ./Dockerfile
tags: ${{ secrets.DOCKER_USERNAME }}/zicdding-front:latest
cache-from: type=registry,ref=${{ secrets.DOCKER_USERNAME }}/zicdding-front:cache
cache-to: type=registry,ref=${{ secrets.DOCKER_USERNAME }}/zicdding-front:cache,mode=max
- name: Clean up dangling images
run: docker image prune -f
deploy:
runs-on: ubuntu-latest
needs: build
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Install SSH Client and sshpass
run: sudo apt-get update && sudo apt-get install -y openssh-client sshpass
- name: Add SSH key
uses: webfactory/[email protected]
with:
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
- name: Execute remote SSH commands
env:
SSH_HOST: ${{ secrets.SSH_HOST }}
SSH_PORT: ${{ secrets.SSH_PORT }}
SSH_USER: ${{ secrets.SSH_USER }}
SSH_PASSWORD: ${{ secrets.SSH_PASSWORD }}
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
run: |
sshpass -p $SSH_PASSWORD ssh -o StrictHostKeyChecking=no -p $SSH_PORT $SSH_USER@$SSH_HOST << 'EOF'
docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD
docker stop zicdding-front-app || true
docker rm zicdding-front-app || true
docker rmi $DOCKER_USERNAME/zicdding-front:latest || true
docker pull $DOCKER_USERNAME/zicdding-front:latest
docker run -d --name zicdding-front-app -p 3000:3000 $DOCKER_USERNAME/zicdding-front:latest
docker image prune -f
EOF