ITUDevUps/devUps

View on GitHub
.github/workflows/continous-deployment.yml

Summary

Maintainability
Test Coverage
---
name: Continuous Deployment

on:
  push:
    # Run workflow every time something is pushed to the main branch
    branches:
      - main
      - master
  # allow manual triggers for now too
  workflow_dispatch:
    manual: true

# Remember to set the following secrets in your repository's settings:
# https://github.com/your_username/itu-minitwit-ci/settings/secrets/actions
# DOCKER_USERNAME
# DOCKER_PASSWORD
# SSH_USER
# SSH_KEY
# SSH_HOST

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Login to Docker Hub
        uses: docker/login-action@v1
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1

      - name: Build and push minitwit-backend
        uses: docker/build-push-action@v2
        with:

          context: ./minitwit-backend
          file: ./minitwit-backend/Dockerfile
          push: true
          tags: ${{ secrets.DOCKER_USERNAME }}/minitwit-backend:latest
          cache-from: type=registry,ref=${{ secrets.DOCKER_USERNAME }}/minitwit-frontend:webbuildcache
          cache-to: type=registry,ref=${{ secrets.DOCKER_USERNAME }}/minitwit-frontend:webbuildcache,mode=max

      - name: Build and push minitwit-frontend
        uses: docker/build-push-action@v2
        with:
          context: ./minitwit-frontend
          file: ./minitwit-frontend/Dockerfile
          push: true
          tags: ${{ secrets.DOCKER_USERNAME }}/minitwit-frontend:latest
          cache-from: type=registry,ref=${{ secrets.DOCKER_USERNAME }}/minitwit-frontend:mysqlbuildcache
          cache-to: type=registry,ref=${{ secrets.DOCKER_USERNAME }}/minitwit-frontend:mysqlbuildcache,mode=max


      - name: Configure SSH
        run: |
          mkdir -p ~/.ssh/
          echo "$SSH_KEY" > ~/.ssh/minitwit.key
          chmod 600 ~/.ssh/minitwit.key
        env:
          SSH_KEY: ${{ secrets.SSH_KEY }}

      - name: Deploy to server
        # Configure the ~./bash_profile and deploy.sh file on the Vagrantfile
        run: >
          ssh $SSH_USER@$SSH_HOST
          -i ~/.ssh/minitwit.key -o StrictHostKeyChecking=no
          '/minitwit/deploy.sh'
        env:
          SSH_USER: ${{ secrets.SSH_USER }}
          SSH_HOST: ${{ secrets.SSH_HOST }}