name: Budibase Release

on:
 push:
    branches:
      - master
    paths:
      - '.aws/**'
      - '.github/**'
      - 'charts/**'
      - 'packages/**'
      - 'scripts/**'
      - 'package.json'
      - 'yarn.lock'
      - 'package.json'
      - 'yarn.lock'

env:
  POSTHOG_TOKEN: ${{ secrets.POSTHOG_TOKEN }}
  INTERCOM_TOKEN: ${{ secrets.INTERCOM_TOKEN }}
  POSTHOG_URL: ${{ secrets.POSTHOG_URL }}
  SENTRY_DSN: ${{ secrets.SENTRY_DSN }}

jobs:
  release:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v1
        with:
          node-version: 14.x
      - run: yarn
      - run: yarn bootstrap
      - run: yarn lint
      - run: yarn build
      - run: yarn test

      - 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: eu-west-1

      - name: Publish budibase packages to NPM
        env:
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
        run: |
          # setup the username and email. I tend to use 'GitHub Actions Bot' with no email by default
          git config user.name "Budibase Release Bot"
          git config user.email "<>"
          echo //registry.npmjs.org/:_authToken=${NPM_TOKEN} >> .npmrc
          yarn release

      - name: 'Get Previous tag'
        id: previoustag
        uses: "WyriHaximus/github-action-get-previous-tag@v1"

      - name: Build/release Docker images
        run: | 
          docker login -u $DOCKER_USER -p $DOCKER_PASSWORD
          yarn build
          yarn build:docker
        env:
          DOCKER_USER: ${{ secrets.DOCKER_USERNAME }}
          DOCKER_PASSWORD: ${{ secrets.DOCKER_API_KEY }}
          BUDIBASE_RELEASE_VERSION: ${{ steps.previoustag.outputs.tag }}