name: Deploy to server

on:
  push:
    branches:
      - develop
      - stagging
      - master

jobs:
  build-and-push:
    name: Build and Push to ECR Registry
    runs-on: ubuntu-latest
    env:
      REGION: ${{ secrets.AWS_ECR_REGION }}
      AWS_ECR_ACCOUNT_URL: ${{ secrets.AWS_ECR_ACCOUNT_URL }}
    steps:
      - uses: actions/checkout@master
        with:
          fetch-depth: 1
      - name: Docker Build
        run: docker image build --tag ${AWS_ECR_ACCOUNT_URL}/${GITHUB_REPOSITORY#*/}:${GITHUB_REF:11} --file ./prod/Dockerfile  .
      - name: Login to ECR
        if: success()
        id: ecr
        uses: jwalton/gh-ecr-login@v1
        with:
          access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          region: ${REGION}
      - name: Push to ECR
        if: success()
        run: docker push ${AWS_ECR_ACCOUNT_URL}/${GITHUB_REPOSITORY#*/}:${GITHUB_REF:11}
  # for none docker deployment
  deploy-pm2:
    runs-on: ubuntu-18.04
    steps:
      - uses: actions/checkout@v1
      - uses: actions/setup-node@v1
        with:
          node-version: 8.15
      - name: Yarn install
        run: yarn
      - name: Setup SSH
        env:
          SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
        run: |
          set -e
          SSH_PATH="$HOME/.ssh"
          mkdir -p "$SSH_PATH"
          touch "$SSH_PATH/known_hosts"
          `echo $SSH_PRIVATE_KEY | base64 -d > "$SSH_PATH/deploy_key"`
          chmod 700 "$SSH_PATH"
          chmod 600 "$SSH_PATH/known_hosts"
          chmod 600 "$SSH_PATH/deploy_key"
          eval $(ssh-agent)
          ssh-add "$SSH_PATH/deploy_key"
      - uses: webfactory/ssh-agent@v0.1.1
        with:
          ssh-private-key: ${{ secrets.GITHUB_ACTION_DEPLOY }}
      - name: Copy deploy config and setup host
        run: |
          cp ./shipit/config.ci.js ./shipit/config.js
          ssh-keyscan -H ${{ secrets.HOST }} >> ~/.ssh/known_hosts
      - name: Deploy via shipit
        run: |
          yarn shipit ${GITHUB_REF:11} deploy
