name: Deploy to DigitalOcean on: push: branches: - master jobs: build-and-deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Log in to Docker Hub uses: docker/login-action@v1 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Build and push Docker image uses: docker/build-push-action@v2 with: push: true tags: ershisan99/flashcards:latest - name: SSH and Deploy to Droplet uses: appleboy/ssh-action@master with: host: ${{ secrets.DROPLET_IP }} username: root password: ${{ secrets.SSH_PASSWORD }} script: | echo "Pulling latest Docker image..." docker pull ershisan99/flashcards:latest echo "Checking if the container 'flashcards' exists..." if [ $(docker ps -a -q -f name=^/flashcards$) ]; then echo "Container exists. Stopping and removing..." docker stop flashcards docker rm flashcards else echo "No existing container to stop or remove." fi echo "Starting new container..." docker run -d --name flashcards -p 3333:3333 \ -e DATABASE_URL="${{ secrets.DATABASE_URL }}" \ -e DATABASE_URL_UNPOOLED="${{ secrets.DATABASE_URL_UNPOOLED }}" \ -e ACCESS_JWT_SECRET_KEY="${{ secrets.ACCESS_JWT_SECRET_KEY }}" \ -e REFRESH_JWT_SECRET_KEY="${{ secrets.REFRESH_JWT_SECRET_KEY }}" \ -e AWS_SES_SMTP_HOST="${{ secrets.AWS_SES_SMTP_HOST }}" \ -e AWS_SES_SMTP_PORT="${{ secrets.AWS_SES_SMTP_PORT }}" \ -e AWS_SES_SMTP_USER="${{ secrets.AWS_SES_SMTP_USER }}" \ -e AWS_SES_SMTP_PASS="${{ secrets.AWS_SES_SMTP_PASS }}" \ -e ADMIN_LOGIN="${{ secrets.ADMIN_LOGIN }}" \ -e ADMIN_PASSWORD="${{ secrets.ADMIN_PASSWORD }}" \ -e STORAGE_SERVICE_URL="${{ secrets.STORAGE_SERVICE_URL }}" \ -e STORAGE_SERVICE_TOKEN="${{ secrets.STORAGE_SERVICE_TOKEN }}" \ ershisan99/flashcards:latest