name: Dev

concurrency:
  group: dev_environment
  cancel-in-progress: true

on:
  push:
    branches: [ develop ]
  workflow_dispatch:

jobs:

  tsc:

    name: Check types & lint

    runs-on: ubuntu-latest

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

      - name: Install dependencies
        run: yarn install --pure-lockfile

      - name: Typescript
        run: yarn tsc

      - name: ESLint
        run: yarn lint --quiet

  deploy:

    runs-on: ubuntu-latest

    needs: tsc

    steps:
    - uses: actions/checkout@v2

    - name: Copy robots.txt
      run: cp public/robots.txt.development public/robots.txt

    - name: Publish to Registry
      uses: elgohr/Publish-Docker-Github-Action@master
      with:
        name: standardnotes/web
        username: ${{ secrets.DOCKER_USERNAME }}
        password: ${{ secrets.DOCKER_PASSWORD }}
        tags: "latest,${{ github.sha }}"

    - name: Configure AWS credentials
      uses: aws-actions/configure-aws-credentials@v1
      with:
        aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
        aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
        aws-region: us-east-1

    - name: Download task definition
      run: |
        aws ecs describe-task-definition --task-definition app-dev --query taskDefinition > task-definition.json

    - name: Fill in the new image ID in the Amazon ECS task definition
      id: task-def
      uses: aws-actions/amazon-ecs-render-task-definition@v1
      with:
        task-definition: task-definition.json
        container-name: app-dev
        image: "standardnotes/web:${{ github.sha }}"

    - name: Deploy Amazon ECS task definition
      uses: aws-actions/amazon-ecs-deploy-task-definition@v1
      with:
        task-definition: ${{ steps.task-def.outputs.task-definition }}
        service: app-dev
        cluster: dev
        wait-for-service-stability: true

  notify_discord:
    needs: deploy

    runs-on: ubuntu-latest

    steps:
    - name: Run Discord Webhook
      uses: johnnyhuy/actions-discord-git-webhook@main
      with:
        webhook_url: ${{ secrets.DISCORD_WEBHOOK_URL }}
