name: Smoke Tests

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
      - name: Install Deps
        run: yarn install
      - name: Build
        run: yarn build
      - name: Tests
        run: yarn test
      - name: Release
        run: ./node_modules/.bin/semantic-release
        env:
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Deploy to Now.sh
        env:
          ZEIT_TOKEN: ${{ secrets.ZEIT_TOKEN }}
        run: |
          npx now deploy --token $ZEIT_TOKEN --scope=basalt
          sleep 10
          echo '' && echo '' && echo 'Done deploying'

      - name: Get deploy url
        id: deploy
        env:
          ZEIT_TOKEN: ${{ secrets.ZEIT_TOKEN }}
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          DEPLOY_URL=`npx --package ci-utils ci-utils--now get-latest-deploy --name bfo-design-system --team team_ZFymjd1fbNFF09iW4dCtFEep`
          echo "Deploy url: $DEPLOY_URL"
          # https://help.github.com/en/actions/reference/workflow-commands-for-github-actions#setting-an-output-parameter
          echo "::set-output name=url::$DEPLOY_URL"
          REPO_SLUG=basaltinc/bfo-design-system npx ci-utils gh-status --state success --url "$DEPLOY_URL" --description "Site deploy" --context "deploy"

      - name: Alias now.sh on master
        if: github.ref == 'refs/heads/master'
        env:
          ZEIT_TOKEN: ${{ secrets.ZEIT_TOKEN }}
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          NAME="bfo-design-system"
          DEPLOY_URL="${{ steps.deploy.outputs.url }}"
          PRE_ID="${DEPLOY_URL/.now.sh/}" # my-name-abc123.now.sh => my-name-abc123
          ID="${PRE_ID/$NAME-/}" # my-name-abc123 => abc123
          LOG_URL="https://zeit.co/basalt/$NAME/$ID"
          ALIAS_URL="https://bfo.knapsack.cloud"
          echo "Aliasing $ALIAS_URL to deployment $DEPLOY_URL ..."
          npx now alias set $DEPLOY_URL $ALIAS_URL --scope=basalt --token $ZEIT_TOKEN
